测速与显示程序

测速与显示程序

ID:37773599

大小:27.50 KB

页数:4页

时间:2019-05-30

测速与显示程序_第1页
测速与显示程序_第2页
测速与显示程序_第3页
测速与显示程序_第4页
资源描述:

《测速与显示程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include            #defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlonguchara,b,c,d;#defineLED_DATP0sbitpin_SpeedSenser=P3^5;//速度传感器脉冲信号输出端接在T1上#defineTIME_CYLC100//12M晶振,定时器10ms中断一次我们1秒计算一次转速,1000ms/10ms=100#definePLUS_PER2//码盘的齿数,这里假定码盘上有2个齿,即传感器检测到2个脉冲,认为

2、1圈#defineK1.0  //校准系数sbitzhen1=P1^0;sbitfan1=P1^1;sbiten1=P1^2;ucharcodeloops[]={0x7f,0xbf,0xdf,0xef};      //定义显示位控制驱动码ucharcodetable[]={0x14,0xd7,0x4c,0x45,0x87,0x25,0x24,0x57,0x04,0x05};      //0,1,2,3,4,5,6,7,8,97段码表,这个单片机开发板上的LED数码管的接法和一般的有点不一样,这个表是正确的,已经测试过了                uintTc

3、ounter=0;  //时间计数器bitFlag_Fresh=0;//刷新标志bitFlag_clac=0;//计算转速标志bitFlag_Err=0;//超量程标志//在数码管上显示一个四位数voidDisplayFresh();//计算转速,并把结果放入数码管缓冲区voidClacSpeed();//初始化定时器voidinit_timer();//延时函数voidDelay(uintms);voidit_timer0()interrupt1//定时器0中断的响应函数{TF0=0;    //定时器T0用于数码管的动态刷新    TH0=0xD8;      

4、  //初始化TL0=0xF0;4Flag_Fresh=1;Tcounter++;if(Tcounter>TIME_CYLC){  Flag_clac=1;//周期到,该重新计算转速了}}voidit_timer1()interrupt3//中断地址是0x001b{TF1=0;  //定时器T1用于单位时间内收到的脉冲数,要速度不是很快,T1永远不会益处Flag_Err=1;  //如果速度很高,我们应考虑另外一种测速方法:脉冲宽度算转速}voidmain(void){init_timer();while(1){  zhen1=1;                 

5、       fan1=0;  en1=1;  Delay(30);  en1=0;  Delay(170);  if(Flag_Fresh)  {  Flag_Fresh=0;  DisplayFresh();  //定时刷新数码管显示  }  if(Flag_clac)  {        Flag_clac=0;        ClacSpeed();//计算转速,并把结果放入数码管缓冲区          Tcounter=0;//周期定时清零        TH1=TL1=0x00;//脉冲计数清零  }  if(Flag_Err)      //超量程处

6、理  {        //数码管显示字母'EEEE',开机时初始化为00004        a=0x2c;        b=0x2c;        c=0x2c;        d=0x2c;  while(1)  {    DisplayFresh();//等待复位,不再测速  }  }}}//在数码管上显示一个四位数voidDisplayFresh(){                  P2=loops[0];      LED_DAT=table[a];      Delay(20);      P2=loops[1];      LED_DAT=t

7、able;      Delay(20);      P2=loops[2];      LED_DAT=table[c];      Delay(20);      P2=loops[3];      LED_DAT=table[d];      Delay(20);}//计算转速,并把结果放入数码管缓冲区voidClacSpeed(){      uintspeed;      ulongPlusCounter;      PlusCounter=TH1*256+TL1;      speed=K*(PlusCounter/PLUS_PER);//K是校准系

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。