用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;}}
- 基于TMS320C62X DSP的混合编程研究(07-12)
- 语音识别及其定点DSP实现(06-14)
- C语言编译过程中的错误分析(08-25)
- 单片机的图形化编程方法分析(05-03)
- 基于数字信号处理器的汇编程序优化方案(03-24)
- C语言在FPGA上实现DSP的解决方案(04-09)