模拟彩灯控制.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模拟彩灯控制 模拟彩灯,开发板从左至右 4个按键分别为 S1-S4,从上至下8个灯为L1-L8,按下S1键8 只LED小灯以1HZ频率闪烁,按下S2键8只灯奇偶交替点亮, 间隔0.3S,按下S3键,L1-L4 与L5-L8灯交替点亮,间隔 0.2s,按下S4键熄灭所有灯。 硬件框图软件功能模块图 硬件框图 霧灯模式输岀 8LEDW输出 定时巾断子程序 单片机最小系统4按键输入 单片机最小系统 4按键输入 TO定时50ms中断子程序流程图 TO定时50ms中断 子程序流程图 P1取反闪烁 中断返回 #defi ne S1 OxOe #defi ne S2 0x0d #defi ne S3 OxOb #defi ne S4 0x07 un sig ned char coun t,TH,TL; void delay (un sig ned int t) { un sig nedin ti,j; for(i=0;it;i++) // 延时 t 个 1ms for(j=0;j112;j++); // 延时约 1ms } 〃4个简单按键扫描子程序 un sig ned char Scan Key(void) { un sig ned char key; if((P30x0f)==0x0f) return(Oxff); delay(30); if((P30x0f)==0x0f) return(0xff); key=P30x0f; while((P30x0f)!=0x0f);// 等待弹出 //beep(); return(key); } void initTimer(void)// 定时计数器初始化子程序 { TMOD=0x1; TH0=0x4c; TL0=0xf7; } void timer0(void) interrupt 1// 定时计数器中断子程序 { TH0=TH; //定时计数器重赋初值 TL0=TL; count++; if(count==10) { count=0; P1=~P1; } } void main(void) { initTimer(); // 定时计数器初始化子程序,定时 50ms TR0=1; ET0=1; EA=1; while(1) { unsigned char KeyValue; P3=0xff; KeyValue=Sca nKey();/牍 入键值 switch(KeyValue) { case S1: TH=0x4C;TL=0xf7;P仁OxOO;EA=1; break; // 定时 50ms,对应的初始值 case S2: TH=0x94;TL=0x94;P仁0x55;EA=1; break; // 定时 30ms,对应的初始值 case S3: TH=0xb8;TL=0x63;P仁OxfO;EA=1; break; // 定时 20ms,对应的初始值 case S4: P1=0xff;EA=0;break; default: break; } } }

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档