全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序完整代码及注释:#includesbit RED = P24;sbit BLUE = P25;sbit GREEN = P26;sbit ADD = P21;sbit SUB = P22;sbit MOD = P20;/*数码管真值表*/unsigned char code LedChar = 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90;/*8灯依次点亮缓冲数组*/unsigned char Led1 = 0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00;/*4个灯依次右移缓冲数组*/unsigned char Led3 = 0xF0,0xE1,0xC3,0x78,0x0F,0x1F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF;unsigned char Led4 = 0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF0,0xE1,0xC3,0x78,0x0F;/*独立显示时的数据缓冲区*/unsigned char LedBuffRed1=0xFF,LedBuffBlue1=0xFF,LedBuffGreen1=0xFF,LedBuffRed2=0xFF,LedBuffBlue2=0xFF,LedBuffGreen2=0xFF;unsigned int speed = 64;unsigned char j = 0;unsigned char mod = 0,modbackup = 0;bit backupAdd = 1,backupSub = 1,backupMod = 1;unsigned int cnt = 0;bit alllight = 0;bit LED = 1;unsigned char i = 0;unsigned char flg = 0;void main()unsigned char k = 0;TMOD = 0x01;/*设置定时器工作模式*/TH0 = 0xFD;/*设置定时器0高位初始值*/TL0 = 0x67;/*设置定时器0低位初始值*/TR0 = 1;/*开启中断0*/EA = 1;/*开启总中断*/ET0 = 1;/*开始计时*/P3 = LedChar0;/*初始化数码管*/BEGIN:modbackup = 0;RED=0;BLUE=1;GREEN=1;while(mod = modbackup)/*模式0*/*如果模式按键等于上次的值,即没有按下模式键,则保持当前模式的循环*/if(cnt+1)%speed) = 0)i+;/*延时,显示下一个字符*/if(i 8)P1 = Led1i;P0 = 0xFF;/*前8个灯点亮*/else if(i 16)P1 = 0x00;P0 = Led1i-8;/*后8个灯点亮*/else i = 0;LED=RED;RED=BLUE;BLUE=GREEN;GREEN=LED;/*变化一次颜色*/modbackup = mod;/*当前模式的值赋给modbackup*/i = 0;while(mod = modbackup)/*模式1*/alllight = 1;/*中断中每20ms换一次颜色,效果为三色灯同时亮起*/if(cnt%speed) = 0)i+;if(i 8)P1 = Led1i;P0 = 0xFF;else if(i 16)P1 = 0x00;P0 = Led1i-8;else if(i 24)P1 = 0x00;P0 = Led124-i;else if(i 32)P1 = Led132-i;P0 = 0xFF;else i = 0;alllight = 0;/*关闭三色同时点亮*/modbackup = mod;i = 0;/*初始化*/while(mod = modbackup)/*模式2*/if(cnt%speed) = 0)i+;switch(i)case 0:RED=1;BLUE=1;GREEN=1;break;case 1:RED=1;BLUE=1;GREEN=0;break;case 2:RED=1;BLUE=0;GREEN=1;break;case 3:RED=1;BLUE=0;GREEN=0;break;case 4:RED=0;BLUE=1;GREEN=1;break;case 5:RED=0;BLUE=1;GREEN=0;break;case 6:RED=0;BLUE=0;GREEN=1;break;case 7:RED=0;BLUE=0;GREEN=0;break;default:i = 0;/*每次换一排(改变颜色)*/modbackup = mod;i = 0;/*变量i初始化*/while(mod = modbackup)/*模式3*/ if(cnt%speed) = 0)i+;P0 = Led1i;P1 = Led1i;/*P0和P1分成两段分别依次点亮*/flg = 1;i = 0;/*中断中开启三色灯独立显示,初始化i*/modbackup = mod;while(mod = modbackup)/*模式4*/ if(cnt%speed) = 0)i+;if(i8)LedBuffRed1 = Led1i;LedBuffBlue1 = 0xFF;LedBuffGreen1 = 0xFF; LedBuffRed2 = 0xFF;LedBuffBlue2 = 0xFF;LedBuffGreen2 = 0xFF;/*依次点亮红色前8个灯,其余全灭*/else if(i16)LedBuffRed1 = 0x00;LedBuffBlue1 = Led1i;LedBuffGreen1 = 0xFF; LedBuffRed2 = 0xFF;LedBuffBlue2 = 0xFF;LedBuffGreen2 = 0xFF;/*前8个红灯亮,依次点亮后8个红灯,其余灭*/else if(i24)LedBuffRed1 = 0x00;LedBuffBlue1 = 0x00;LedBuffGreen1 = Led1i; LedBuffRed2 = 0xFF;LedBuffBlue2 = 0xFF;LedBuffGreen2 = 0xFF;/*红灯全亮,依次点亮前8个绿灯,其余灭*/else if(i32)LedBuffRed1 = 0x00;LedBuffBlue1 = 0x00;LedBuffGreen1 = 0x00; LedBuffRed2 = Led1i;LedBuffBlue2 = 0xFF;LedBuffGreen2 = 0xFF;/*红灯、前8个绿灯亮,依次点亮后8个绿灯,其余灭*/else if(i40)LedBuffRed1 = 0x00;LedBuffBlue1 = 0x00;LedBuffGreen1 = 0x00; LedBuffRed2 = 0x00;LedBuffBlue2 = Led1i;LedBuffGreen2 = 0xFF;/*红灯、绿灯全亮,依次点亮前8个蓝灯,后8个灭*/else if(i= 48)i=0;modbackup = mod;/*因为模式5也是三色独立显示,故在此不关闭flg独立显示*/while(mod = modbackup)/*模式5*/ if(cnt%speed) = 0)i+;if(i8)LedBuffRed1 = Led1i;LedBuffBlue1 = 0xFF;LedBuffGreen1 = 0xFF; LedBuffRed2 = 0xFF;LedBuffBlue2 = 0xFF;LedBuffGreen2 = 0xFF;/*依次点亮前8个红*/else if(i16)LedBuffRed1 = Led1i-8;LedBuffRed2 = Led1i-8;LedBuffGreen1 = 0xFF; LedBuffBlue1 = 0xFF;LedBuffBlue2 = 0xFF;LedBuffGreen2 = 0xFF;/*后8个红依次点亮,前8个依次熄灭*/else if(i24)LedBuffRed1 = 0xFF;LedBuffRed2 = Led1i-16;LedBuffGreen1 = Led1i-16; LedBuffBlue1 = 0xFF;LedBuffBlue2 = 0xFF;LedBuffGreen2 = 0xFF;/*前8个绿依次点亮,后8个红依次熄灭*/else if(i32)LedBuffRed1 = 0xFF;LedBuffBlue1 = 0xFF;LedBuffGreen1 = Led1i-24; LedBuffGreen2 = Led1i-24;LedBuffBlue2 = 0xFF;LedBuffRed2 = 0xFF;/*前8个绿依次熄灭,后8个绿依次点亮*/else if(i40)LedBuffRed1 = 0xFF;LedBuffBlue2 = 0xFF;LedBuffGreen1 = 0xFF; LedBuffGreen2 = Led1i-32;LedBuffBlue1 = Led1i-32;LedBuffRed2 = 0xFF;/*前8个蓝依次点亮,后8个绿依次熄灭*/else if(i= 48)i=0;modbackup = mod;flg = 0;i = 0; alllight = 1;/*关闭独立显示,开启全亮显示*/while(mod = modbackup)/*模式6*/if(cnt%speed) = 0)i+;if(i12)P1 = Led3i;P0 = Led4i;/*Led3和Led4是4个灯一组依次右移*/else if(i=24)i = 0;modbackup = mod;alllight = 0;i = 0;flg = 1;k = 0;/*关闭全部显示,开始独立显示*/while(mod = modbackup)/*模式7*/ if(cnt%speed) = 0)i+;if(i12)LedBuffRed1 = Led3i;LedBuffRed2 = Led4i;/*左移到头,从头开始反复*/if(i4)k = i+8;LedBuffBlue1 = Led3k;LedBuffBlue2 = Led4k;/*如果i-40,即延迟四个灯,则从最后一个开始循环*/else LedBuffBlue1 = Led3i-4;LedBuffBlue2 = Led4i-4;if(i8)k = i+4;LedBuffGreen1 = Led3k;LedBuffGreen2 = Led4k;/*如果i-80,即再延时四个灯,回到最后一个*/else LedBuffGreen1 = Led3i-8;LedBuffGreen2 = Led4i-8;else if(i20)k = i+20;LedBuffBlue1 = Led3k;LedBuffBlue2 = Led4k;/*如果(24-i)-416)k = i+16;LedBuffGreen1 = Led3k;LedBuffGreen2 = Led4k;/*如果(24-i)-8=24)i = 0;modbackup = mod;i = 0;/*同样无需关闭flg*/while(mod = modbackup)/*模式8*/ if(cnt%speed) = 0)i+;if(i 8)LedBuffRed1 = Led1i;LedBuffRed2 = 0xFF;/*前8个红依次点亮*/ LedBuffBlue1 = 0xFF;LedBuffBlue2 = Led17-i; /*后8个绿倒序依次点亮*/ LedBuffGreen1 = Led17-i;LedBuffGreen2 = Led1i; /*前8个绿倒序依次点亮,后八个顺序依次点亮*/else if(i 16)LedBuffRed1 = 0x00;LedBuffRed2 = Led1i-8; LedBuffBlue1 = Led17-i;LedBuffBlue2 = 0x00; /*后8个*/ LedBuffGreen1 = Led17-i;LedBuffGreen2 = Led1i;else if(i 24)LedBuffRed1 = 0xFF;LedBuffRed2 = Led17-i; LedBuffBlue1 = Led1i;LedBuffBlue2 = 0xFF; /*交换方向重新*/ LedBuffGreen1 = Led17-i;LedBuffGreen2 = Led1i;else if(i 32)LedBuffRed1 = Led17-i;LedBuffRed2 = 0x00; LedBuffBlue1 = 0x00;LedBuffBlue2 = Led1i; LedBuffGreen1 = Led17-i;LedBuffGreen2 = Led1i;else i = 0;m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年南京市中小学教师招聘笔试备考试题及答案解析
- 2025年虚拟演唱会版权合作
- 2025年甘孜藏族自治州中小学教师招聘笔试参考题库及答案解析
- 2025年新兴县中小学教师招聘笔试备考试题及答案解析
- 山西林业职业技术学院《马克思主义经典著作选读》2024-2025学年第一学期期末试卷
- 2025年虚拟数字人软件开发合作合同
- 2025年小学教师资格证考试(音乐学科知识与教学能力)考前测验卷后附答案
- 2025年三都水族自治县中小学教师招聘笔试参考试题及答案解析
- 上海市鲁迅中学2026届数学高一第一学期期末联考模拟试题含解析
- 2025年永川合川市教师招聘参考题库及答案解析
- 中小学(中职学校)学生餐饮保障突出问题台账
- GB/T 3672.1-2002橡胶制品的公差第1部分:尺寸公差
- GB/T 26746-2011矿物棉喷涂绝热层
- 黑龙江八一农垦大学-渠文军-答辩通用PPT模板
- 风机基础施工技术讲义方案课件
- 高中会考化学知识点
- 盾构法施工工艺及施工过程分步介绍
- CK0625车床技术参数
- 工程制图—考试题库及答案
- 无机及分析化学06 酸碱平衡与酸碱滴定法ppt课件
- 二十八星宿对照表
评论
0/150
提交评论