微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机彩灯控制(包括功能说明、原理及C程序)

51单片机彩灯控制(包括功能说明、原理及C程序)

时间:08-02 来源:互联网 点击:

关闭

GJ=0;//将G LED关闭

BJ=0;//将B LED关闭

TMOD=0X01;//寄存器工作方式

EA=1;//开总中断

TR0=1;//开定时器

ET0=1;//开定时器中断

IT0=1;

EX0=1;

TH0=(65536-50000)/256;//赋值给高位

TL0=(65536-50000)%256;//赋值给低位

if(read(0x2200)==0x03)//开机检测是否是在第三种模式下,如果下则读出断电时的数据(即颜色)

{

m=read(0x2000);//读出断电时的颜色

a=0;//将模式1关闭

b=0;//将模式2关闭

c=1;//将模式3打开

}

else

{

a=1;//将模式1打开

b=0;//将模式2关闭

c=0;//将模式3关闭

}

while(1)

xian();//调用显示子程序

}

void zhong() interrupt 1//T1中断服务程序

{

TH0=(65536-50000)/256;//赋值给高位

TL0=(65536-50000)%256;//赋值给低位

ding3++;//将按键计数器加1

}

void zhongk() interrupt 0

{

/*******************************/

/****按键处理及数据保存子程序***/

/*******************************/

EX0=0;

switch(yin)//执行一键多功能程序

{

case 0://如果0与yin比较相等,则执行break前的所有内容

delay(100);

sector(0x2200);//擦除

program(0x2200,0x02);//在0x2200地址处写入数0x02

delay(100);

yin++;//将变量加1,此句很重要,作用是以使下次按下时好执行下一开关语句

a=0;//将a变为0

c=0;

b=1;//将b变为1,即打开按键程序中的第二段程序

x=0;//清掉颜色计数变量,以便它从红色开始循环

break;//退出开关语句

case 1:

delay(100);

sector(0x2200);//擦除

program(0x2200,0x03);//在0x2200地址处写入数0x03

sector(0x2000);////擦除

program(0x2000,m);//在0x2000地址处写入变量m,以便在模式三下形成断电保护

delay(100);

yin++;//将变量加1,此句很重要,作用是以使下次按下时好执行下一开关语句

b=0;

c=1;//打开第三种模式标志位,即锁定状态

a=0;

x=0;//清掉颜色计数变量,以便它从红色开始循环

break;//退出开关语句

case 2:

delay(100);

sector(0x2200);//擦除

program(0x2200,0x01);//在0x2200地址处写入数0x01

delay(100);

b=0;//将b变为0,即关闭上一次功能

c=0;//关闭上前面的功能

a=1;//打开第1次功能,即0.5秒循环闪烁

yin=0;

x=0;//清掉颜色计数变量,以便它从红色开始循环

break;//退出开关语句

}

delay(255);

EX0=1;

}

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

网站地图

Top