基于51单片机的秒表程序.pdf

基于51单片机的秒表程序.pdf

ID:58314166

大小:90.54 KB

页数:5页

时间:2020-09-06

基于51单片机的秒表程序.pdf_第1页
基于51单片机的秒表程序.pdf_第2页
基于51单片机的秒表程序.pdf_第3页
基于51单片机的秒表程序.pdf_第4页
基于51单片机的秒表程序.pdf_第5页
资源描述:

《基于51单片机的秒表程序.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于51单片机的秒表程序#includesbitADDR3=P1^3;//单片机I/O口sbitENLED=P1^4;sbitKEY1=P2^4;sbitKEY2=P2^5;sbitKEY3=P2^6;sbitKEY4=P2^7;unsignedcharcodeLedChar[]={//数码管显示字符转换表0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};unsignedcharLedBuff[6]={//数码管显示缓冲区0xFF,0xFF,0xFF,0xF

2、F,0xFF,0xFF};unsignedcharKeySta[4]={1,1,1,1};bitStopwatchRefresh=1;bitStopwatchRunning=0;unsignedcharDecimalPart=0;unsignedintIntegerPart=0;unsignedcharT0RH=0;unsignedcharT0RL=0;voidConfigTimer0(unsignedintms);voidStopwatchDisplay();voidKeyDriver();voidmain(){EA=1;//使能总中断ENLED=0;ADDR3=1;P2=0XFE;

3、ConfigTimer0(2);while(1){if(StopwatchRefresh){StopwatchRefresh=0;StopwatchDisplay();}KeyDriver();}}voidConfigTimer0(unsignedintms){unsignedlongtmp;tmp=11059200/12;tmp=(tmp*ms)/1000;tmp=65536-tmp;tmp=tmp+18;T0RH=(unsignedchar)(tmp>>8);T0RL=(unsignedchar)tmp;TMOD&=0XF0;TMOD

4、=0X01;TH0=T0RH;TL0=T0RL

5、;ET0=1;TR0=1;}voidStopwatchDisplay(){signedchari;unsignedcharbuf[4];LedBuff[0]=LedChar[DecimalPart%10];LedBuff[1]=LedChar[(DecimalPart/10)%10];buf[0]=IntegerPart%10;buf[1]=(IntegerPart/10)%10;buf[2]=(IntegerPart/100)%10;buf[3]=(IntegerPart/1000)%10;for(i=3;i>=1;i--){if(buf[i]==0)LedBuff[i+2]=0XF

6、F;//高位消零elsebreak;}for(;i>=0;i--){LedBuff[i+2]=LedChar[buf[i]];}LedBuff[2]&=0X7F;//第三个数码管显示小数点}//秒表开始函数voidStopwatchAction(){if(StopwatchRunning)StopwatchRunning=0;elseStopwatchRunning=1;}//秒表复位函数voidStopwatchReset(){StopwatchRunning=0;DecimalPart=0;IntegerPart=0;StopwatchRefresh=1;}//检测按键是否有动作,

7、主函数中调用此函数voidKeyDriver(){unsignedchari;staticunsignedcharbackup[4]={1,1,1,1};for(i=0;i<4;i++){if(backup[i]!=KeySta[i]){if(backup[i]!=0){if(i==1)StopwatchReset();elseif(i==2)StopwatchAction();}backup[i]=KeySta[i];}}}//按键扫描函数,需在定时中断中调用,推荐调用间隔1msvoidKeyScan(){unsignedchari;staticunsignedcharkeybuf[

8、4]={0xFF,0xFF,0xFF,0xFF};//将一行的4个按键值移入缓冲区keybuf[0]=(keybuf[0]<<1)

9、KEY1;keybuf[1]=(keybuf[1]<<1)

10、KEY2;keybuf[2]=(keybuf[2]<<1)

11、KEY3;keybuf[3]=(keybuf[3]<<1)

12、KEY4;//消抖后更新按键状态for(i=0;i<4;i++)//每行4个按键,所以循环4次{if(keybuf[i]==0x00){

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

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

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