微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用C语言实现键控彩灯系统

用C语言实现键控彩灯系统

时间:08-22 来源:互联网 点击:
用按键(采用外部中断方式)控制彩灯的运行。通过按动按键,彩灯在三种闪亮方式(左移,右移和自定义花样)之间切换。

在主程序中,设置一个判断的的标志变量flag,当没有中断发生时,标志flag的值没有被改变,程序保持运行使彩灯按其中某一种花样闪亮显示。若按下键后,使单片机产生中断,中断函数被调用,则标志flag的值将发生一次改变(这里的中断函数就是修改flag的值),在退出中断后,主程序再次执行到判断标志flag时,由于标志flag的值已经是新的值,所以将执行另一彩灯控制子程序,彩灯将按另一种花样进行显示。

需要说明一点是:如果产生中断的是低电平不是由按键产生的,而是由于其他按键产生的没有抖动的信号,在中断程序中则不需要消抖处理。

源程序:

#include     "reg51.h"#define   uchar  unsigned  charuchar   flag;uchar   light,assum;void  delay05s(){unsigned  char   i,j,k;for(i=5;i>0;i--)for(j=200;j>0;j--)for(k=250;k>0;k--);}void   delay10ms(void){unsigned   char  i,j;for(i=20;i>0;i--)for(j=250;j>0;j--)} void   left(){light=light1;if(light==1)  light=0x01;P2=~light;}void  right(){light=light>>1;if(light==0)  light=0x80;P2=~light;}void  assum(){uchar  code  dispcode[8]={0x7e,0xbd.0xdb,0xe7,0xdb,0xbd,0x7e,0xff};if(assum==7)   assum=0;elseassum++;}void  main(){IT0=1;EX0=1;EA==1;flag=1;light=0x01;assum=0;while(1){switch(flag){case  1:  left();   break;case  2:   right();    break;case  3:   assum()   break;}delay05s();}}void  int-0()   interrupt   0{delay10ms();if(INT0==0){flag++;if(flag>3)   flag=1;}}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top