当前位置:首页 > 以作息时间控制为主的多功能任务设计
#include
#define uint unsigned int //宏定义符号,类似于替换 #define uchar unsigned char
sbit key1=P3^4; //宏定义位,也即IO口定义 sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; sbit fm=P2^3; sbit dula=P2^6; sbit wela=P2^7; sbit bear=P2^3;
uint i; //定义各符号 uchar aa,bb,numdu,numwe;
uchar sec1,min1,hour1,year1,mon1,day1,temp1,temp2,sec2,min2,hour2; //主功能符号定义 uchar code tablew[]={0x71,0x6d,0x5b,0x3f, 0x6d,0x5b,0x06, };
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar code table[]={0x3f,0x06,0x5b,0x4f, //主功能数组定义 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71};
void w1(); //子函数声明 void w2(); void w3(); void w4();
void delayms(uint xms); void timer0();
void delay(uint z); //主功能子函数声明 void init();
void display(uchar hour,uchar min,uchar sec); void keyscan(); void alarm(); void time1();
/*--------------------------------------
主函数
----------------------------------------*/
void main() { key1=1; key2=1; key3=1; key4=1; while(1) { while(!key1)w1(); while(!key2)w2(); while(!key3)w3(); while(!key4)w4(); } }
/*-------------------------------------- 按键控制蜂鸣器过程 ----------------------------------------*/ void w1() { if(!key1) {
delayms(300); if(key1) { fm=!fm; } } }
/*-------------------------------------- 按键控制流水灯过程 ----------------------------------------*/ void w2() { loop1:P1=0xff; if(!key2) { delayms(300); if(key2)
//延时防抖,松手检测
{
aa=0xfe; while(1) { P1=aa;
//赋初值11111110 //大循环
delayms(100); //延时500毫秒 aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa //相应的cror是循环右移一位 if(!key2) { delayms(300); if(key2) goto loop1; } } } } }
/*-------------------------------------- 按键控制数码管过程 ----------------------------------------*/ void w3() {
loop2:wela=1; P0=0xff; if(!key3) { delayms(300); if(key3) { numdu=0; numwe=0; while(1) {
numdu++; if(numdu==7) numdu=1; dula=1; P0=tablew[numdu]; dula=0; wela=1; P0=tablewe[numwe]; //开段锁存器 //送段码 //锁存段码 //开位锁存器 //送位码
wela=0; //锁存位码 numwe++; if(numwe==6) numwe=0; delayms(5); if(!key3) { delayms(300); if(key3) goto loop2; } } } } }
/*--------------------------------------
按键控制作息时间过程 ----------------------------------------*/ void w4() { if(!key4) { delayms(300); if(key4) { init(); //主功能主程序 while(1) { keyscan(); alarm(); } } } }
/*------------------------------------------
延时函数(用于按键,蜂鸣器,流水灯等的延时) ------------------------------------------*/ void delayms(uint xms) { uint i,j;
共分享92篇相关文档