基于单片机的转速测量系统程序.doc

基于单片机的转速测量系统程序.doc

ID:51794130

大小:45.95 KB

页数:6页

时间:2020-03-15

基于单片机的转速测量系统程序.doc_第1页
基于单片机的转速测量系统程序.doc_第2页
基于单片机的转速测量系统程序.doc_第3页
基于单片机的转速测量系统程序.doc_第4页
基于单片机的转速测量系统程序.doc_第5页
资源描述:

《基于单片机的转速测量系统程序.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、#include#include"LCD1602.H"//#include"AT24C02.H"#defineucharunsignedchar#defineuintunsignedintuintnum=0;//外部中断次数ucharnum1=0,flag;uintSpeed_dat=0,da=500;uintTotal_Dis=0;sbitk1=P1^4;sbitk2=P1^5;sbitk3=P1^6;sbitbeep=P2^5;voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i

2、--)for(j=110;j>0;j--);}voidkey(){if(!k1){flag=~flag;WRITE_LCD1602_COM(0x01);while(!k1);}while(flag){if(!k1){flag=~flag;init_1602();while(!k1);}WRITE_LCD1602_COM(0x80+6);WRITE_LCD1602_DAT(LCD1602_Table[da/1000]);WRITE_LCD1602_DAT(LCD1602_Table[da%1000/100]);WRITE_LCD1602_

3、DAT(LCD1602_Table[da%100/10]);WRITE_LCD1602_DAT(LCD1602_Table[da%10]);if(!k2){da=da+500;while(!k2);}if(!k3){da=da-500;while(!k3);}}}voidmain(){uchardat=0;floatM_dat=0.0;init_1602();//Init_AT24C02();//dat=Read_AT24C02_Random(0);//Total_Dis=dat*256+Read_AT24C02_Random(1);d

4、is_Mileage();TMOD=0X01;TH0=(65536-1000)/256;//选择12分频的,T=1/(X/12)就是一个指令周期,如果定时没有分频,(65536-Z(初值))*T就是定时的时间比如是12M的晶振那么设置TMOD=0x01;16位定时器模式TH0=(65536-20000)/256;TL0=(65536-20000)%256;就是设置了20ms的定时,请问为什么要除以256,什么意思?回答你问的可真多。一个简单问题牵扯这么多出来。12MHz晶振是分频之后,把这1MHz的频率作为定时器用,所以就是1us增加一

5、个计数。THx和TLx是两个8位寄存器共同组成16位寄存器,当TLx满出时向THx进位一次,THX只计数1次,所以一个定时器时长就是(256-THx)*(256-TLx)。为什么要除以256,因为256*256=65536,而2^8=256,所以不管你怎么装初值,除以256后,商永远不会大于256,这样就能方便的装入8位的THx之中而不会溢出;TL0=(65536-1000)%256;ET0=1;TR0=1;IT0=1;//边沿触发中断EX0=1;EA=1;while(1){if(num1==100){num1=0;M_dat+=(fl

6、oat)(Cur_Speed/36.0);//每0.1s走的米数}if(M_dat>100.0){M_dat-=100.0;Total_Dis+=1;//Write_AT24C02_Byte(0,Total_Dis/256);//Write_AT24C02_Byte(1,Total_Dis%256);dis_Mileage();}display();key();}}voidT0_time()interrupt1//定时器0{TH0=(65536-1000)/256;TL0=(65536-1000)%256;if(num<500)num+

7、+;elseSpeed_dat=0;if(num1<100)num1++;}voidex_0()interrupt0//外部中断0{Speed_dat=(500/num);num=0;if(Speed_dat>(da)/55){beep=~beep;}elsebeep=1;}子程序#defineucharunsignedchar#defineuintunsignedintsbitEN=P1^2;sbitRS=P1^0;sbitRW=P1^1;ucharLCD1602_Table[]="0123456789";//LCD1602显示标尺/

8、/0123456789abcdefucharcodeDIS_TAB1[]={"Speed:r/min"};//显示当前转速ucharcodeDIS_TAB2[]={"Mileage:Km"};//显示总里程

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

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

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