单片机节日彩灯控制器设计彩灯控制器.docVIP

  • 27
  • 0
  • 约2.51千字
  • 约 13页
  • 2017-08-11 发布于重庆
  • 举报

单片机节日彩灯控制器设计彩灯控制器.doc

单片机节日彩灯控制器设计彩灯控制器

单片机节日彩灯控制器设计彩灯控制器一、设计任务与要求 (1)P: 开始,按此键则灯开始流动(由上而下); (2)P: 停止,按此键则停止流动,所有灯为暗; (3)P: 上,按此键则灯由上向下流动; (4)P: 下,按此键则灯由下向上流动。 二、方案设计与论证 图2 单片机彩灯循环控制系统硬件框图 此设计方案中单片机的PD口接4路按键控制电路,实现彩灯花型的切换功能,单片机上的PB口接8路LED发光二极管组成彩灯电路,显示彩灯循环情况。 1、总体流程图设计 图2程序流程图 2、键盘设计论证 方案一、方案二、三、单元电路设计与参数计算 ) 所以必须考虑去抖动的问题,解决方法有如下两种: 消除按键的抖动既可采用硬件方法,也可采用软件的方法。使用硬件消抖的方式,需要在按键连接的硬件设计上增加硬件消抖电路,如采用R-S触发器或RC积分电路等。采用硬件消抖方式增加了系统的成本,而利用软件方式消抖则是比较经济的做法,但增加了软件设计的复杂性。 软件方式消抖的基本原理是在软件中对按键进行两次测试确认,即在第 一次检测到按键按下后,间隔10ms左右再次检测该按键是否按下,只有在 两次都测到按键按下时才最终确认有键按下,从而消除了抖动的影响。 由于用软件方式消抖比较方便,比较经济,而硬件消抖即复杂又不经济,所以本次设计我们采用的是软件消抖。 需特别注意的是: 在按键接口软件中,除了要考虑按键消抖外,一般还要判别按键的释放,只有检测到按键释放以后,才能确定为一次完整的按键动作完成。 硬件按键设计如下: 四、总原理图及元器件清单 1.总原理图 2.元件清单 元件序号 数量 备注 A R1—R9 限流电阻 9 1K LED 发光二极管 8 KEY 按键开关 4 Q1 三极管 1 Pnp型 五、 2、反向:从下向上流动点亮 3、停止:灭灯 六、安装与调试 七、结论与心得、参考文献 1.2. 附录: 1设计程序代码#include iom16v.h #include macros.h #define uint unsigned int #define uchar unsigned char void delay_ms(uint com) { uint i,j; for(i=0;icom;i++) for(j=0;j1194;j++); } uchar key_press() { uchar a; DDRD|=0X0F; PORTD|=0X0F; DDRD=0XF0; a=PIND; a =0x0F; if(a==0X0F) return 0; else return 1; } uchar key_scan() { uchar a; delay_ms(10); if(key_press()) { a=PIND; a =0x0F; switch(a) { case 0x0E: a=1;break; case 0x0D: a=2;break; case 0x0B: a=3;break; case 0x07: a=4;break; default : a=16; } while(key_press()); } else { a=16; } return a; } void zhengxiang(void) { unsigned int i; for(i=0;i8;i++) { PORTB=~BIT(i); delay_ms(255); } } void stop(void) { PORTA=BIT(2); } void fanxiang(void) { unsigned int i; for(i=8;i0;i) { PORTB=~BIT(--i); delay_ms(200); } } void main(void) { uchar i,j=0,a=0; DDRA=BIT(2); PORTA=0x00; DDRB=0XFF; // PORTB=0XFF;

文档评论(0)

1亿VIP精品文档

相关文档