第37节:数码管作为仪表盘显示跑马灯的方向,速度和状态
时间:11-22
来源:互联网
点击:
- 9=0;//第9个灭
- ucLed_update=1;//更新显示
- ucLedStep_09_16=0; //返回上一个步骤
- }
- }
- break;
- case 2:
- if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
- {
- uiTimeCnt_09_16=0; //时间计数器清零
- if(ucLedDirFlag==0)//正方向
- {
- ucLed_dr10=0;//第10个灭
- ucLed_dr11=1;//第11个亮
- ucLed_update=1;//更新显示
- ucLedStep_09_16=3; //切换到下一个步骤
- }
- else//反方向
- {
- ucLed_dr9=1;//第9个亮
- ucLed_dr10=0;//第10个灭
- ucLed_update=1;//更新显示
- ucLedStep_09_16=1; //返回上一个步骤
- }
- }
- break;
- case 3:
- if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
- {
- uiTimeCnt_09_16=0; //时间计数器清零
- if(ucLedDirFlag==0)//正方向
- {
- ucLed_dr11=0;//第11个灭
- ucLed_dr12=1;//第12个亮
- ucLed_update=1;//更新显示
- ucLedStep_09_16=4; //切换到下一个步骤
- }
- else//反方向
- {
- ucLed_dr10=1;//第10个亮
- ucLed_dr11=0;//第11个灭
- ucLed_update=1;//更新显示
- ucLedStep_09_16=2; //返回上一个步骤
- }
- }
- break;
- case 4:
- if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
- {
- uiTimeCnt_09_16=0; //时间计数器清零
- if(ucLedDirFlag==0)//正方向
- {
- ucLed_dr12=0;//第12个灭
- ucLed_dr13=1;//第13个亮
- ucLed_update=1;//更新显示
- ucLedStep_09_16=5; //切换到下一个步骤
- }
- else//反方向
- {
- ucLed_dr11=1;//第11个亮
- ucLed_dr12=0;//第12个灭
- ucLed_update=1;//更新显示
- ucLedStep_09_16=3; //返回上一个步骤
- }
- }
- break;
- case 5:
- if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
- {
- uiTimeCnt_09_16=0; //时间计数器清零
- if(ucLedDirFlag==0)//正方向
- {
- ucLed_dr13=0;//第13个灭
- ucLed_dr14=1;//第14个亮
- ucLed_update=1;//更新显示
- ucLedStep_09_16=6; //切换到下一个步骤
- }
- else//反方向
- {
- ucLed_dr12=1;//第12个亮
- ucLed_dr13=0;//第13个灭
- ucLed_update=1;//更新显示
- ucLedStep_09_16=4; //返回上一个步骤
- }
- }
- break;
- case 6:
- if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
- {
- uiTimeCnt_09_16=0; //时间计数器清零
- if(ucLedDirFlag==0)//正方向
- {
- ucLed_dr14=0;//第14个灭
- ucLed_dr15=1;//第15个亮
- ucLed_update=1;//更新显示
- ucLedStep_09_16=7; //切换到下一个步骤
- }
- else//反方向
- {
- ucLed_dr13=1;//第13个亮
- ucLed_dr14=0;//第14个灭
- ucLed_update=1;//更新显示
- ucLedStep_09_16=5; //返回上一个步骤
- }
- }
- break;
- case 7:
- if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
- {
- uiTimeCnt_09_16=0; //时间计数器清零
- if(ucLedDirFlag==0)//正方向
- {
- ucLed_dr15=0;//第15个灭
- ucLed_dr16=1;//第16个亮
- ucLed_update=1;//更新显示
- ucLedStep_09_16=0; //返回到开始处,重新开始新的一次循环
- }
- else//反方向
- {
- ucLed_dr14=1;//第14个亮
- ucLed_dr15=0;//第15个灭
- ucLed_update=1;//更新显示
- ucLedStep_09_16=6; //返回上一个步骤
- }
- }
- break;
- }
- }
- }
- void T0_time() interrupt 1
- {
- TF0=0;//清除中断标志
- TR0=0; //关中断
- if(uiTimeCnt_09_16<0xffff)//设定这个条件,防止uiTimeCnt超范围。
- {
- if(ucLedStartFlag==1)//此变量为1时代表启动
- {
- uiTimeCnt_09_16++;//累加定时中断的次数,
- }
- }
- key_scan(); //按键扫描函数
- if(uiVoiceCnt!=0)
- {
- uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止。才停止鸣叫
- beep_dr=0;//蜂鸣器是PNP三极管控制,低电平就开始鸣叫。
- // beep_dr=1;//蜂鸣器是PNP三极管控制,低电平就开始鸣叫。
- }
- else
- {
- ; //此处多加一个空指令,想维持跟if括号语句的数量
数码管仪表盘跑马 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)