定时器中断控制键盘扫描实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

定时器中断控制键盘扫描实验实验电路图如下:本实验用定时器1每1ms扫描一次键盘,要求按下s1键时,p3口的8位LED正向流水点亮;按下s2键时,p3口的8位LED反向流水点亮;按下s3键时,p3口的8位LED熄灭;按下s4键时,p3口的8位LED闪烁。实验代码:#includereg51.hunsignedchartab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//段码表sbitS1=P1^4;//将S1位定义为P1.4引脚sbitS2=P1^5;//将S2位定义为P1.5引脚sbitS3=P1^6;//将S3位定义为P1.6引脚sbitS4=P1^7;//将S4位定义为P1.7引脚unsignedcharkey=0;/*流水灯延时*/voiddelay0(){unsignedchari,j;for(i=0;i250;i++)for(j=0;j250;j++);}/*软件消抖延时*/voiddelay1(){unsignedchari,j;for(i=0;i100;i++)for(j=0;j100;j++);}/*正转*/voidzheng(){inti;for(i=0;i8;i++){P3=tab[i];delay0();}}/*反转*/voidfan(){inti;for(i=7;i=0;i--){P3=tab[i];delay0();}}/*关闭*/voidclose(){P3=0xff;}/*闪烁*/voidshan(){P3=0xff;delay0();P3=0x00;delay0();}voidmain(){TMOD=0x10;//定时器1工作与状态1EA=1;//开总中断ET1=1;//开定时器1中断TH1=(65536-1000)/256;//每1毫秒扫描一次TL1=(65536-1000)%256;TR1=1;//启动定时器1while(1){switch(key){case1:zheng();break;case2:fan();break;case3:close();break;case4:shan();break;}}}voidint1()interrupt3using0{P1=0xf0;TR1=0;if((P1&0xf0)!=0xf0)//判断是否有按键按下{delay1();//用软件延时消抖if((P1&0xf0)!=0xf0)//再判断{if(S1==0)key=1;if(S2==0)key=2;if(S3==0)key=3;if(S4==0)key=4;}}TH1=(65536-1000)/256;TL1=(65536-1000)%256;TR1=1;}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功