第37节:数码管作为仪表盘显示跑马灯的方向,速度和状态
时间:11-22
来源:互联网
点击:
- d led_update()//LED更新函数
- {
- if(ucLed_update==1)
- {
- ucLed_update=0; //及时清零,让它产生只更新一次的效果,避免一直更新。
- if(ucLed_dr1==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x01;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0xfe;
- }
- if(ucLed_dr2==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x02;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0xfd;
- }
- if(ucLed_dr3==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x04;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0xfb;
- }
- if(ucLed_dr4==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x08;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0xf7;
- }
- if(ucLed_dr5==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x10;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0xef;
- }
- if(ucLed_dr6==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x20;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0xdf;
- }
- if(ucLed_dr7==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x40;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0xbf;
- }
- if(ucLed_dr8==1)
- {
- ucLedStatus08_01=ucLedStatus08_01|0x80;
- }
- else
- {
- ucLedStatus08_01=ucLedStatus08_01&0x7f;
- }
- if(ucLed_dr9==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x01;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0xfe;
- }
- if(ucLed_dr10==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x02;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0xfd;
- }
- if(ucLed_dr11==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x04;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0xfb;
- }
- if(ucLed_dr12==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x08;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0xf7;
- }
- if(ucLed_dr13==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x10;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0xef;
- }
- if(ucLed_dr14==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x20;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0xdf;
- }
- if(ucLed_dr15==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x40;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0xbf;
- }
- if(ucLed_dr16==1)
- {
- ucLedStatus16_09=ucLedStatus16_09|0x80;
- }
- else
- {
- ucLedStatus16_09=ucLedStatus16_09&0x7f;
- }
- hc595_drive(ucLedStatus16_09,ucLedStatus08_01);//74HC595底层驱动函数
- }
- }
- void display_drive()
- {
- //以下程序,如果加一些数组和移位的元素,还可以压缩容量。但是鸿哥追求的不是容量,而是清晰的讲解思路
- switch(ucDisplayDriveStep)
- {
- case 1://显示第1位
- ucDigShowTemp=dig_table[ucDigShow1];
- if(ucDigDot1==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0xfe);
- break;
- case 2://显示第2位
- ucDigShowTemp=dig_table[ucDigShow2];
- if(ucDigDot2==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0xfd);
- break;
- case 3://显示第3位
- ucDigShowTemp=dig_table[ucDigShow3];
- if(ucDigDot3==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0xfb);
- break;
- case 4://显示第4位
- ucDigShowTemp=dig_table[ucDigShow4];
- if(ucDigDot4==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0xf7);
- break;
- case 5://显示第5位
- ucDigShowTemp=dig_table[ucDigShow5];
- if(ucDigDot5==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive
数码管仪表盘跑马 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)