第37节:数码管作为仪表盘显示跑马灯的方向,速度和状态
时间:11-22
来源:互联网
点击:
- w2=uiSetTimeLevel_09_16%100/10;//显示速度的十位
- }
- else
- {
- ucDigShow2=10; //显示空
- }
- ucDigShow1=uiSetTimeLevel_09_16%10; //显示速度的个位
- }
- }
- void key_scan()//按键扫描函数 放在定时中断里
- {
- if(key_sr1==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
- {
- ucKeyLock1=0; //按键自锁标志清零
- uiKeyTimeCnt1=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
- }
- else if(ucKeyLock1==0)//有按键按下,且是第一次被按下
- {
- uiKeyTimeCnt1++; //累加定时中断次数
- if(uiKeyTimeCnt1>const_key_time1)
- {
- uiKeyTimeCnt1=0;
- ucKeyLock1=1;//自锁按键置位,避免一直触发
- ucKeySec=1; //触发1号键
- }
- }
- if(key_sr2==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
- {
- ucKeyLock2=0; //按键自锁标志清零
- uiKeyTimeCnt2=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
- }
- else if(ucKeyLock2==0)//有按键按下,且是第一次被按下
- {
- uiKeyTimeCnt2++; //累加定时中断次数
- if(uiKeyTimeCnt2>const_key_time2)
- {
- uiKeyTimeCnt2=0;
- ucKeyLock2=1;//自锁按键置位,避免一直触发
- ucKeySec=2; //触发2号键
- }
- }
- if(key_sr3==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
- {
- ucKeyLock3=0; //按键自锁标志清零
- uiKeyTimeCnt3=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
- }
- else if(ucKeyLock3==0)//有按键按下,且是第一次被按下
- {
- uiKeyTimeCnt3++; //累加定时中断次数
- if(uiKeyTimeCnt3>const_key_time3)
- {
- uiKeyTimeCnt3=0;
- ucKeyLock3=1;//自锁按键置位,避免一直触发
- ucKeySec=3; //触发3号键
- }
- }
- if(key_sr4==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
- {
- ucKeyLock4=0; //按键自锁标志清零
- uiKeyTimeCnt4=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
- }
- else if(ucKeyLock4==0)//有按键按下,且是第一次被按下
- {
- uiKeyTimeCnt4++; //累加定时中断次数
- if(uiKeyTimeCnt4>const_key_time4)
- {
- uiKeyTimeCnt4=0;
- ucKeyLock4=1;//自锁按键置位,避免一直触发
- ucKeySec=4; //触发4号键
- }
- }
- }
- void key_service() //按键服务的应用程序
- {
- switch(ucKeySec) //按键服务状态切换
- {
- case 1:// 改变跑马灯方向的按键 对应朱兆祺学习板的S1键
- if(ucLedDirFlag==0) //通过中间变量改变跑马灯的方向
- {
- ucLedDirFlag=1;
- }
- else
- {
- ucLedDirFlag=0;
- }
- ucWd1Part2Update=1; //及时更新显示方向
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 2:// 加速按键 对应朱兆祺学习板的S5键 uiSetTimeLevel_09_16越小速度越快
- uiSetTimeLevel_09_16=uiSetTimeLevel_09_16-10;
- if(uiSetTimeLevel_09_16<50)//最快限定在50
- {
- uiSetTimeLevel_09_16=50;
- }
- ucWd1Part3Update=1; //及时更新显示速度
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 3:// 减速按键 对应朱兆祺学习板的S9键uiSetTimeLevel_09_16越大速度越慢
- uiSetTimeLevel_09_16=uiSetTimeLevel_09_16+10;
- if(uiSetTimeLevel_09_16>550)//最慢限定在550
- {
- uiSetTimeLevel_09_16=550;
- }
- ucWd1Part3Update=1; //及时更新显示速度
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 4:// 启动和暂停按键 对应朱兆祺学习板的S13键ucLedStartFlag为0时代表暂停,为1时代表启动
- if(ucLedStartFlag==1)//启动和暂停两种状态循环切换
- {
- ucLedStartFlag=0;
- }
- else //启动和暂停两种状态循环切换
- {
- ucLedStartFlag=1;
- }
- ucWd1Part1Update=1; //及时更新显示系统的运行状态,是运行还是暂停.
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- }
- }
- voi
数码管仪表盘跑马 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)