实验四-键盘与中断参考程序

实验四-键盘与中断参考程序

ID:31798160

大小:72.94 KB

页数:10页

时间:2019-01-18

实验四-键盘与中断参考程序_第1页
实验四-键盘与中断参考程序_第2页
实验四-键盘与中断参考程序_第3页
实验四-键盘与中断参考程序_第4页
实验四-键盘与中断参考程序_第5页
资源描述:

《实验四-键盘与中断参考程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验四-键盘与中断参考程序1、基本要求:在mini80E单片机实验板上实现教材【例4丄1】对应的功能。画岀电路原理图、编写程序、在实验板上实现。【例4.1.1]用数码管前两位显示一个十进制数,变化范围为00-59,开始时显示00,每按下S2(keyl)键一次,数值加1;每按下S3(key2)键一次,数值减1;每按下S4(key3)键一次,数值归零;按下S5(key4)键一次,利用定时器功能使数值开始自动每秒加1,再次按下S5(key4)键,数值停止加1,保持显示原数。(P82)说明:实验室的实验板与教材上程序对应的硬件电路稍有区别,程序

2、耍做少许修改。主要是修改按键和显示器对应的接口定义。请对下面程序中注释部分标有“删除或修改”的地方删除或修改,修改原理见实验报告或QQ群中mini80e实验板的原理图。#include&It;reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitkeyl=P3A4;sbitkey2=P3A5;sbitkey3=P3A6;sbitkey4=P3A7;sbitdula=P2A6;sbitwela=P2A7;//52系列单片机头文件//SI,删除或修改〃S2,删除或修改〃S3

3、,删除或修改〃S4,删除或修改〃删除或修改〃删除或修改//A-Fucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d?0x7d,0x07,0x7f,0x6f,//0-90x77,0x7c,0x39,0x5e,0x79,0x71};voiddelayms(uint);//延时ms函数ucharnumt0,num;{dula=l;〃删除或修改PO=table[shi];//保留ucharshi,ge;〃局部变量'存放要显示的十位、个位数shi=numdis/10;ge=numdis%10;//分离两

4、个分别要显示的数//numtO-对T0定时计数,num■变化的数(0-59)voiddisplay(ucharnumdis)〃显示子函数(电路原理见P58)}dula=0;PO=Oxff;wela=l;PO=Oxfe;wela=0;〃删除或修改〃删除或修改〃修改〃删除或修改〃删除或修改delayms(5);//延时保证亮度(实际延时l-2ms即可)dula=l;dula=0;PO=Oxff;wela=l;PO=Oxfd;wela=0;delayms(5);//删除或修改〃删除或修改〃删除或修改〃修改〃删除或修改〃删除或修改PO=tabl

5、e[ge];〃保留〃以下程序不变voiddelaymsfuintxms){voidinit()〃初始化函数{voidkeyscan(){if(keyl==O)//keyl按下否?〃键处理函数TMOD=0x01;〃设置TO方式1定时〃装初值定时50msTH0=(65536-45872)/256;TL0=(65536-45872)%256;EA=1;ETO=1;〃开总屮断〃开TO屮断uintij;for(i=xms;i>0;i-)//i=xms即延时约xms毫秒for(j=110;j>0;j-);{}if(key2==0){}i

6、f(key3==0){}if(key4==0){delayms(lO);if(key4==0)//key4按下否?delayms(lO);if(key3==0){}num=0;〃清0while(!key3);//key3按下否?delayms(lO);if(key2==0){}if(num==0)〃当到0时重新归60num二60;num-;while(!key2);//key2按下否?delayms(lO);{}num++;//如果keyl按下‘num加1if(num==60)//当到60时重新归0num=0;//等待按键释放while

7、(lkeyl);//延时10ms消抖if(keyl==O)//再判别是否按下}}{}while(!key4);TRO=~TRO;〃启动或停止定时器0voidmain(){}init();while(l){}〃主函数〃初始化〃循环执行程序(注意不要把初始化包括在内)〃按键识别与处理〃刷新显示keyscan();display(num);voidT0_time()interrupt1{}//T0定时50ms中断服务函数TH0=(65536-45872)/256;//重装初值}numtO=O;num++;num=O;TL0=(65536-45

8、872)%256;numtO++;{〃然后把num清0重新再计20次〃1秒到num加1if(numt0==20)〃对50ms计数〃如果到了20次,说明1秒时间到if(num==60)2、创新要求:在mini

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

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

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