




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序完整代码及注释:#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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆市渝北区中医院招聘笔试真题2024
- 新疆和田地区大学生乡村医生专项计划招聘笔试真题2024
- 丽江市玉龙县公安局招聘警务辅助人员笔试真题2024
- 2025年国际贸易实务试题
- 矿业政策创新对区域经济的影响-洞察阐释
- 重庆电力钢缆生产线项目可行性研究报告(参考)
- 文化用纸企业经营管理方案
- 2025至2030年中国瓜盘行业投资前景及策略咨询报告
- 2022年天津市教育工作重点调研课题
- 2025至2030年中国液压多刀车床(单刀架)行业投资前景及策略咨询报告
- 半条被子(红军长征时期故事) PPT
- 加入民盟的申请书完整版
- 商业秘密保护课件
- 电梯安装标准合同模板
- 《交流电气化铁道牵引供电系统》教学课件合集
- 松下NPM贴片机基本操作培训教程课件
- 中国哲学史考研笔记
- 掘进机整机出厂检验报告
- 《群落生态学》PPT课件(完整版)
- 旅行社的导游管理制度
- DB4201∕T 645-2021 房地产经纪服务规范
评论
0/150
提交评论