超's profile朱雀陛下的空间PhotosBlogListsMore Tools Help

朱雀陛下的空间

笃信好学,守死善道。危邦不入,乱邦不居。天下有道则见,无道则隐。

超 薛

Occupation
Location
Interests
人生虽落魄 梦降帝王家
December 02

我的高中MM

97年9月由于中考失利,我不得不背上干粮来到离家40里外的一所普通中学开始我的高中生涯。但到了高中我惊奇地发现,不上重点高中也有不上重点高中的好处。。
在这里,我不需要多么努力的学习,也能得到老师的表扬,哈哈。。塞翁失马呀。。。
  入学后,学校进行一系列的考试,什么摸底啦,竞赛啦。。侥幸的是,每次光荣榜上都有我的名字。。尤其是一次化学竞赛,我竟然得了个第一名。。这使我立刻成了年级里的名人。同时我认识了一些其他班级的名人。。也就是到这些名人朋友班级找他们的时候,我发现了隔壁班的MM。后来有事无事总喜欢到他们班级去。。有时候,我收送作业到办公室,看到有人给她写的信,我总会欣喜若狂地拿来送给她。。有时候,当我正和其他同学玩耍的时,她正好路过,我会立刻问我身边的同学:我脸红不。有时候,我明明自己有的东西,我也要跑他们班跟她借。。
  高二分科了,我毫不犹豫地选择了理科,但是令我失望的是,我喜欢的那个MM虽然也是理科,但跟我不是一个班。。于是乎我找老师要求调班,理由是我不喜欢现在这个班老师的上课风格。。显然,这个理由很牵强,当时的班主任也不同意。于是我又找到MM班的班主任,向他说明了我想到他们班的想法。没想到他倒很欢迎我。他的认可,给了我莫大的鼓励。一天上完晚自习,我找了个同学把我的桌子和课本啥的统统地搬到MM班。想不到的是,老天有眼,正好那MM边上空了个位置。就这样,我顺理成章地跟我心仪的MM成了同桌。当然,事情不可能这么顺利。原来的班主任知道我私自转班后,大发雷霆。对我那是威逼利诱,软硬兼施。三番五次要求我搬回去。这事在全年级,乃至全校很快砸了锅。。记得当时教导主任都因此找我谈了话。。但是,为了我心仪的MM,我豁出去了。。不管你用什么招,罚站我一整天也好,要处分我也好。我就是不回去了。。最后,这事以我的全面胜利而宣告结束。当然这里要感谢MM班的班主任和各位任课老师对我的默许。更要感谢那些鼓励我,帮助我,给我出谋划策的同学们。。
  高三新学期开始,不知道啥原因又重新分了次班,所幸的是,我跟她还是同班,但不是同桌了。最遗憾的是,尽管我跟她同桌了一年,但她似乎对我并不感冒。。当然,凭我当时的勇气跟胆量,我完全可以直截了当的向她吐露真情。但是我没那么做。。我觉得那样做太老土。。像我这样风流倜傥的人,怎么能做那么老土的事呢?于是我做了一些足以让我后悔一辈子的事。我当时的表现如果用轻浮来形容,那轻浮这个词肯定要举双手双脚反对!!后来,我知道我对她的那些行为可以叫做调戏。。如果放到现在,人家完全可以告我性骚扰。而更可恶的是,我完全没有意识到自己的可恶,我是越来越放肆,逃学,赌博,酗酒,打架,看录像。。等等,当时高中生能做的坏事我全做过。还不时传出我跟文科班一MM的绯闻。一时间,我臭名远扬。。。这些,都应该是我跟MM越来越疏远的原因。。
  后来,快高考了。我知道我应该收敛了。。但是天意弄人。。用我老爸的话说,我是一到关键时刻就会掉链子。中考如此,高考亦如此。。我们那时候高考前需要先进行一次全省的九科会考,九门课必须全部通过,不通过的可以补考一次,补考还不通过就没有高考资格。。当时有个文科班的哥们生物跟化学没通过,补考的时候找我替他考,我当然是义不容辞啊。。可没想到,在考场被抓了个现行。。按有关规定,会考作弊者,三年不得高考。。学校也还煞有其事地贴了个布告,说是给了我一个留校察看的处分。(后来才知道,是校内处分,没记入档案)我当时的想法是,反正不能高考了,上学还有个P用啊。于是天天逃学,赌博,喝酒。我抽烟也是在那时候学会的。。当然,当时最着急的是我的父母。他们一方面帮我找路子,一方面托人找我。我记得我父母找到我后,并没有责备我,而是一直安慰我。可能他们是怕我想不开。还特意请了一些亲戚来做我的思想工作。。他们通过关系,先帮我转到另外一个学校继续复习。当时的想法是通过高考移民的方式,到安徽去报名参加高考。。后来不知道啥原因,没有报上名。最后还是灰溜溜地回到原先的学校报名。由于我的成绩还不算太差,那些亲爱的老师们并没怎么太刁难我,让我顺利的报上了名。接下来的日子,我安分了许多。很快就到了高考的日子。由于考场在县城里,按照惯例,学校安排我们吃住在一个离考场不远的宾馆里,考试要进行三天,不知道是第几天的晚上,我去找了MM,本来是考虑考试结束后,可能就很难再见面了,叫她出来请她吃个饭,顺便说声对不起。可能的话再表露下真情啥的。。可惜被她严词拒绝了。。我当时那个郁闷啊。。自己一个人,喝了个大醉。。当时都不知道是怎么爬回住处的。。所幸的是没耽误第二天的考试。。
高考结果出来后,我因5分之差没有过本科线,以我当时的傲劲,非本科不念。。大专的通知书寄到学校,我没有去拿。正好我从小就向往的那所重点高中办补习班。我拿着我的成绩单,很顺利地报了名并且开始复习。但是从没留级经验的我,特别不适用那个环境。。。于是我复习了两个星期后,回家跟父母商量,去常州念了大专。临出发的那天,我偷偷地打了个电话给她,告诉她我要去常州了。她也告诉我,她也准备到山东去念书了。
我最不喜欢说母校的坏话,但是实事求是的说,我到了大学,心里的落差还是蛮大的。毕竟这和我的想像的大学相差太远。。说实话,在大学里,除了后来学会了上网,迷上了做网站,做FALSH。。。其他我找不到丝毫乐趣。。郁闷的是大学里竟然还要做作业,不交作业考试还不让及格。。要知道,即使在高中我都没怎么交过作业。。这些都让我很怀念高中生活,怀念高中又让我不得不思念在山东的MM。后来我打听到他的联系方式,经常给她打电话,写信,还写诗。。这些本应该在高中做的事,我到大学才做。似乎是有点晚了,因为始终没有能打动她。但是我觉得她对我也并不是恨之入骨。因为她每次都能接我的电话,跟我聊上几句。。要说最让我感动的是她刚到南京某医院工作那段日子,每次值夜班都会发短信跟我聊一会,告诉我她值班病房里的孕妇生了个大胖小子。但是好景不长,后来,她嫁给了一位医生,我也有了现在的MM。从此,我们就再也没联系过。。。尽管这些都过去了很长时间,但每次回忆起来,却又如此的清晰,让人始终不能忘怀...

December 12

软件实现滤波的几种方法

1、限幅滤波法(又称程序判断滤波法)
    A、方法:
        根据经验判断,确定两次采样允许的最大偏差值(设为A)
        每次检测到新值时判断:
        如果本次值与上次值之差<=A,则本次值有效
        如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
    B、优点:
        能有效克服因偶然因素引起的脉冲干扰
    C、缺点
        无法抑制那种周期性的干扰
        平滑度差
   
2、中位值滤波法
    A、方法:
        连续采样N次(N取奇数)
        把N次采样值按大小排列
        取中间值为本次有效值
    B、优点:
        能有效克服因偶然因素引起的波动干扰
        对温度、液位的变化缓慢的被测参数有良好的滤波效果
    C、缺点:
        对流量、速度等快速变化的参数不宜

3、算术平均滤波法
    A、方法:
        连续取N个采样值进行算术平均运算
        N值较大时:信号平滑度较高,但灵敏度较低
        N值较小时:信号平滑度较低,但灵敏度较高
        N值的选取:一般流量,N=12;压力:N=4
    B、优点:
        适用于对一般具有随机干扰的信号进行滤波
        这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动
    C、缺点:
        对于测量速度较慢或要求数据计算速度较快的实时控制不适用
        比较浪费RAM
       
4、递推平均滤波法(又称滑动平均滤波法)
    A、方法:
        把连续取N个采样值看成一个队列
        队列的长度固定为N
        每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)
        把队列中的N个数据进行算术平均运算,就可获得新的滤波结果
        N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4
    B、优点:
        对周期性干扰有良好的抑制作用,平滑度高
        适用于高频振荡的系统   
    C、缺点:
        灵敏度低
        对偶然出现的脉冲性干扰的抑制作用较差
        不易消除由于脉冲干扰所引起的采样值偏差
        不适用于脉冲干扰比较严重的场合
        比较浪费RAM
       
5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
    A、方法:
        相当于“中位值滤波法”+“算术平均滤波法”
        连续采样N个数据,去掉一个最大值和一个最小值
        然后计算N-2个数据的算术平均值
        N值的选取:3~14
    B、优点:
        融合了两种滤波法的优点
        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
    C、缺点:
        测量速度较慢,和算术平均滤波法一样
        比较浪费RAM


6、限幅平均滤波法
    A、方法:
        相当于“限幅滤波法”+“递推平均滤波法”
        每次采样到的新数据先进行限幅处理,
        再送入队列进行递推平均滤波处理
    B、优点:
        融合了两种滤波法的优点
        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
    C、缺点:
        比较浪费RAM

7、一阶滞后滤波法
    A、方法:
        取a=0~1
        本次滤波结果=(1-a)*本次采样值+a*上次滤波结果
    B、优点:
        对周期性干扰具有良好的抑制作用
        适用于波动频率较高的场合
    C、缺点:
        相位滞后,灵敏度低
        滞后程度取决于a值大小
        不能消除滤波频率高于采样频率的1/2的干扰信号
       
8、加权递推平均滤波法
    A、方法:
        是对递推平均滤波法的改进,即不同时刻的数据加以不同的权
        通常是,越接近现时刻的数据,权取得越大。
        给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
    B、优点:
        适用于有较大纯滞后时间常数的对象
        和采样周期较短的系统
    C、缺点:
        对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号
        不能迅速反应系统当前所受干扰的严重程度,滤波效果差

9、消抖滤波法
    A、方法:
        设置一个滤波计数器
        将每次采样值与当前有效值比较:
        如果采样值=当前有效值,则计数器清零
        如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)
            如果计数器溢出,则将本次值替换当前有效值,并清计数器
    B、优点:
        对于变化缓慢的被测参数有较好的滤波效果,
        可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
    C、缺点:
        对于快速变化的参数不宜
        如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导
入系统

10、限幅消抖滤波法
    A、方法:
        相当于“限幅滤波法”+“消抖滤波法”
        先限幅,后消抖
    B、优点:
        继承了“限幅”和“消抖”的优点
        改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统
    C、缺点:
        对于快速变化的参数不宜

C语言关键字解释

以前有网友在论坛上提出这个问题,后来我逐一做了解释。现在转发到空间,如果有不准确的地方请指正!

auto :声明自动变量 一般不使用
double :声明双精度变量或函数
int: 声明整型变量或函数
struct:声明结构体变量或函数
break:跳出当前循环
else :条件语句否定分支(与 if 连用)
long :声明长整型变量或函数    
switch :用于开关语句 
case:开关语句分支  
enum :声明枚举类型   
register:声明积存器变量 
typedef:用以给数据类型取别名(当然还有其他作用)
char :声明字符型变量或函数
extern:声明变量是在其他文件正声明(也可以看做是引用变量)  
return :子程序返回语句(可以带参数,也看不带参数)  
union:声明联合数据类型  
const :声明只读变量  
float:声明浮点型变量或函数
short :声明短整型变量或函数
unsigned:声明无符号类型变量或函数
continue:结束当前循环,开始下一轮循环 
for:一种循环语句(可意会不可言传)      
signed:生命有符号类型变量或函数  
void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
default:开关语句中的“其他”分支 
goto:无条件跳转语句    
sizeof:计算数据类型长度  
volatile:说明变量在程序执行中可被隐含地改变 
do :循环语句的循环体
while :循环语句的循环条件
static :声明静态变量
if:条件语句 
September 05

学习PIC笔记

从上个星期开始看PIC资料。主要是一些datasheet。看的也不是很明白。后来在网上下了编译工具(MPLAB IDE v7.10+PICC8。05)开始学习使用这些工具。再后来打电话申请了3片PIC12F675。自己搭了一很简单的电路。如图所示。又写了一段程序,本来我打算先学写汇编的,能够更好的熟悉寄存器,但是由于我以前一直用C写51的程序,现在突然要改写汇编,反而有些不顺手,于是我放弃计划,直接写C,程序如下:
 
#include <pic.h>
#define led1 GPIO0
#define led2 GPIO1

void delay(unsigned int i);
void readkey();
void keyrun();
unsigned char key=0;
bit ledflag1,ledflag2;
volatile bit gpio;
// Configuration Bits
__CONFIG(
UNPROTECT & // Data memory code protection is disable & Program Memory code protection is disable
BOREN &     // Brown-out Detect Enabled
MCLRDIS &   // memory clear function disabled
PWRTEN &    // Power-up Timer enabled
WDTDIS &    // Watchdog Timer enabled
INTIO       // use internal oscillator : GP4 pin and GP5 pin used by I/O pin
);

// Initialize PIC Function
void init(void){
BOD = 1; // Brown-out Reset Enable
POR = 1; // Power-on Reset Enable
OSCCAL = _READ_OSCCAL_DATA(); // Oscillatior calibration function
CMCON  = 0b00000111; // Comparator Off
ANSEL  = 0;//b00000000;
WPU    = 0b00010100; // GP2,GP4 Weak pull-up
TRISIO = 0b00111100;
  // GP0 : output
  // GP1 : output
  // GP2 : input
  // GP3 : input
  // GP4 : input
  // GP5 : intput
GPIO   = 0xff;
   
}
void main(void){
init();
CLRWDT();

led1=0;
led2=0;
delay(200);
led1=1;
led2=1;
while(1){
  CLRWDT();
        readkey();
  keyrun();
}
}
 
void readkey(){
 
 if(GPIO2)return;
 else{
  delay(50);
  
  if(GPIO2) return;
  else{
   if(key<7)
    key++;
   else
    key=0;
   }
  }
 while(!GPIO2){CLRWDT();}
 return;
}
void keyrun(){
 switch(key){
   case 0:
    led1=1;
    led2=1;
    break;
   case 1:
    led1=0;
    led2=1;
    break;
   case 2:
    led1=1;
    led2=0;
    break;
   case 3:
    led1=0;
    led2=0;
    break;
   case 4:
    led2=1;
    led1=0;
    delay(200);
    led1=1;
    delay(200);
    break;
   case 5:
    led1=1;
    led2=0;
    delay(200);
    led2=1;
    delay(200);
    break;
   case 6:
    led1=0;
    led2=0;
    delay(200);
    led1=1;
    led2=1;
    delay(200);
    break;
   case 7:
    led1=0;led2=1;
    delay(200);
    led1=1;led2=0;
    delay(200);
    break;
   
    }
   
   
 }
  
 void delay(unsigned int i){
  unsigned int j;
 // i=500;
  while(i--){
   for(j=0;j<255;j++)
    asm("clrwdt");
   
  
   }
  
  }

 

程序功能很简单,就是通过一个键来控制两个LED的状态。我想用这个程序来入门那是很合适的。

编译后烧片,运行结果还不错,但是不一会就出现问题了。发现key值似乎回自动变化。用万用表一量发现GIIO2脚电压才2点几伏。后来我在这个脚上加了一个10K的上拉电阻,问题解决。至此,我的第一个PIC程序成功完成。


June 07

帝国留言板

你是本站第Hit  Counter位访客
感谢你的光临,请留下你的足迹!

 
Photo 1 of 3