欢迎光临深圳市昶丰科技有限公司官方网站!现在的时间是:
 
 
服务与支持
  技术文章
  成功案例
  解决方案
  下载专区
 
  技术文章
多功能钟控程序

#include "Prinipal.h" ­

sbit CS_12887=P2^7; ­

sbit Noise=P3^2;   //用于蜂鸣器响声 ­

/*------ 函数声明 -----------------*/ ­

void System(void);   //系统设置 ­

void Time(void);   //时间设置 ­

void Calendar(void);  //日历设置 ­

void Luminance(void);  //亮度设置 ­

void Alarm_xlock(void); //钟设置 ­

void Hour_sytem(void);  //时制设置 ­

void Alarm_xlock_1(void); /*第一组闹钟*/ ­

void Alarm_xlock_2(void); /*第二组闹钟*/ ­

void Alarm_xlock_3(void); /*第三组闹钟*/ ­

void ies(void);    // ­

void Make_the_bell(void); //闹铃响 ­

void Aswitch(void);   //三组开/关闹铃设置 ­

void Buzzer(unsigned short,unsigned short);//蜂鸣器声 ­

void show(void);    //显示 ­

void bbbb(void);    //查闹铃 ­

/*------- 全局变量 --------------------------*/ ­

unsigned char at24c02_A[6]; //用于各设置状况数组 ­

unsigned char at24c02_B[6]; //用于各设置状况数组 ­

unsigned char State[4];  //用于进入系统设置后,显示状态栏 ­

unsigned char Setup[8];  //用于设置显示栏的显示数组 ­

unsigned char aa;    //用于中断显示计次 ­

unsigned short cv;    //用于显示标志 ­

unsigned int aab;    //用于定时计数 ­

unsigned short cc;    //用于退出整个菜单的延时标志位 ­

unsigned short bbb;    //用于定时到了就置1,用于在闹钟启动后开始用定时中断标志位 ­

unsigned int Disengaging; //用于外中断闹钟启动后计时退出 ­

unsigned long Account_A;  //用于闹定计时退出 ­

unsigned short che=0x00;  //chen用于选择显示状态标志 ­

/***************--- 主函数 ----********************************************/ ­

void main(void) ­

{ P0=0xff; ­

P1=0xff; ­

P2=0xff; ­

P3=0xfb; ­

CS_12887=0; //12887片选 ­

/*--- 24C02的读出 -------*/ ­

Read24c02(at24c02_A,0,6); //读 ­

Read24c02(at24c02_B,9,6); //读 ­

/*-----MAX6954初始化寄存器--------------*/ ­

send(0x07,0x01);  //开始显示测试(0x07寄存器地址,0x01数据) ­

send(0x02,at24c02_A[2]);//全局亮度控制寄存器,控制亮度 ­

send(0x04,0x01);  //启动显示器驱动器,同时将工作方式设置为全局亮度控制、禁止闪烁 ­

send(0x0c,0x00);  //位娄型设为设置成驱动7段显示器的模式 ­

Delay(500);    //调用延迟 ­

send(0x07,0x00);  //退出显示测试 ­

/*----DS12C877初始化,设置DV2、DV1、DV0为010,打开芯片DS12C877内部晶振-----*/ ­

REG_A = REG_A&0xaf; // DV2=DV0=0 ­

REG_A = REG_A|0x20; // DV1=0 ­

// DS_CS = 0; ­

REG_B = REG_B | 0x80; // SET=1,芯片DS12C887处于设置状态 ­

REG_B = REG_B & 0xfa; // DM=0,二进制数据模式,DSE=0 ­

REG_B = REG_B & 0x7f; // SET=0,芯片DS12C887恢复正常数据更新状态 ­

TMOD=0x01;  //TMOD工作于模式1 ­

TH0=0x3c; ­

TL0=0xb0;  //65536-15536=50000=50mS ­

ET0=1;   //允许T0中断 ­

TR0=1;   //打开总中断 ­

EA=1;   //启动T0开始计数 ­

cv=0;   //使显示走时状态,用于显示标志 ­

while(1) ­

{ unsigned short key; ­

unsigned long cdfh; ­

show();    //调用显示 ­

key=keyscan(); ­

switch(key) ­

{   /* 响声    待按键放开 */ ­

case 0x11:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"1" ­

case 0x21:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"2" ­

case 0x41:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"3" ­

case 0x81:{ Buzzer(1,50); ­

for(;key==keyscan();) ­

{ show();  //调用显示 ­

cdfh++; ­

if(cdfh>=150) ­

System(); //调用系统设置 ­

} cdfh=0; ­

­

}break;   //键盘号"A" ­

case 0x12:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"4" ­

case 0x22:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"5" ­

case 0x42:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"6" ­

case 0x82:{ if(at24c02_A[1]==0x0b) ­

at24c02_A[1]=0; ­

else ­

at24c02_A[1]=0xb; ­

Buzzer(1,200); ­

Write24c02(at24c02_A,0,6);   //从a2数组首地址;写入24C02的0x10地址开始写入7个字节到24C02中     ­

for(;key==keyscan();){} }break; //键盘号"B" ­

case 0x14:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"7" ­

case 0x24:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"8" ­

case 0x44:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"9" ­

case 0x84:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"C" ­

case 0x18:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"*" ­

case 0x28:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"0" ­

case 0x48:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"#" ­

case 0x88:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"D" ­

} ­

show();   //调用显示 ­

bbbb();   //调用查闹铃 ­

­

/*---- 电池低电压检测 ---*/ ­

//  if(REG_D==0)  //如果DS12887电池电压低就调用Cell()低电池电压检测 ­

//  { Buzzer(10,50); //响10声 ­

//  Delay(800);  //延时 ­

//  } ­

­

} ­

} ­

/*********************** 子函数 *****************************************************************************************************/ ­

/*--- 用于查闹铃时间到了没有  -----*/ ­

/*---------------------------------*/ ­

void bbbb(void) ­

{ ­

if(at24c02_A[1]==0x0b)  //查看闹铃状态有没有开启,如开启就调用查阅Make_loudly(); ­

{ ­

if(SECOND<=0x02)   //如果秒小于2秒就做以下工作 ­

{ ­

if(at24c02_A[3]==1)    //查第一组闹铃开/闭标志位有没有打开 ­

{ if(HOUR==at24c02_B[0])  //查第一组闹铃时有没有到了? ­

{ if(MIN==at24c02_B[1]) //查第一组闹铃分有没有到了? ­

{ bbb=1;    //使在闹钟启动后开始用定时中断标志位赋1开始定时中断计时 ­

Make_the_bell(); //时间到调用闹铃函数 ­

} ­

} ­

} ­

­

if(at24c02_A[4]==1)    //查第二组闹铃标志位有没有打开 ­

{ if(HOUR==at24c02_B[2])  //查第二组闹铃时有没有到了? ­

{ if(MIN==at24c02_B[3]) //查第二组闹铃分有没有到了? ­

{ bbb=1;    //使在闹钟启动后开始用定时中断标志位赋1开始定时中断计时 ­

Make_the_bell(); //时间到调用闹铃函数 ­

} ­

} ­

} ­

­

if(at24c02_A[5]==1)    //查第三组闹铃标志位有没有打开 ­

{ if(HOUR==at24c02_B[4])  //查第三组闹铃时有没有到了? ­

{ if(MIN==at24c02_B[5]) //查第三组闹铃分有没有到了? ­

{ bbb=1;    //使在闹钟启动后开始用定时中断标志位赋1开始定时中断计时 ­

Make_the_bell(); //时间到调用闹铃函数 ­

} ­

} ­

}   ­

}   ­

} ­

} ­

/*-------------------------------------------------*/ ­

/*-----  显示程序  --------*/ ­

/*-------------------------------------------------*/ ­

void show(void) ­

{ ­

if(aa>=8) ­

{ aa=0; ­

switch(cv) ­

{ //用于显示走时 ­

case 0:{ ­

send(0x2e,SECOND&0x0f);  //秒个位送到LED6(寄存器6a) ­

send(0x26,SECOND>>4);  //秒十位送到LED5(寄存器6) ­

send(0x2d,MIN&0x0f);  //分个位送到LED4(寄存器5a) ­

send(0x25,MIN>>4);   //分十位送到LED3(寄存器5) ­

if(at24c02_A[0]==0x0f) ­

{ ­

send(0x2c,HOUR&0x0f);  //时个位送到LED2(寄存器4a) ­

send(0x24,HOUR>>4);   //时十位送到LED1(寄存器4) ­

} ­

else ­

{ if(HOUR>=0x13) ­

{ ­

send(0x2c,(((HOUR>>4)*10+(HOUR&0x0f))-12)%10 ); //时个位送到LED2(寄存器4a) ­

send(0x24,(((HOUR>>4)*10+(HOUR&0x0f))-12)/10 ); //时十位送到LED1(寄存器4) ­

} ­

else ­

{ send(0x2c,HOUR&0x0f); //时个位送到LED2(寄存器4a) ­

send(0x24,HOUR>>4);  //时十位送到LED1(寄存器4) ­

} ­

} ­

send(0x20,YEAR>>4);   //年十位送到LED9(寄存器0) ­

send(0x28,YEAR&0x0f);  //年个位送到LED10(寄存器0a) ­

send(0x21,MONTH>>4);  //月十位送到LED11(寄存器1) ­

send(0x29,MONTH&0x0f);  //月个位送到LED12(寄存器1a) ­

send(0x22,DAYOFMONTH>>4); //日十位送到LED13(寄存器2) ­

send(0x2a,DAYOFMONTH&0x0f); //日个位送到LED14(寄存器2a) ­

send(0x23,0x0d);   //星期个位送到LED15(寄存器3) ­

if(DAYOFWEEK==7) ­

send(0x2b,0x08);  //星期个位送到LED16(寄存器3a) ­

else ­

send(0x2b,DAYOFWEEK);  //星期个位送到LED16(寄存器3a) ­

­

­

send(0x27,at24c02_A[0]);  //时制位送到LED6(寄存器7) ­

send(0x2f,at24c02_A[1]);  //闹钟位送到LED6(寄存器7a) ­

}break; ­

//用于显示进入系统 ­

case 1:{send(0x20,State[0]); ­

send(0x28,State[1]); ­

}break; ­

//用于显示设置系统 ­

case 2:{send(0x20,State[0]); //状态显示 ­

send(0x28,State[1]); ­

send(0x24,Setup[0]); //设置显示 ­

send(0x2c,Setup[1]); ­

send(0x25,Setup[2]); ­

send(0x2d,Setup[3]); ­

send(0x26,Setup[4]); ­

send(0x2e,Setup[5]); ­

send(0x27,Setup[6]); ­

send(0x2f,Setup[7]); ­

}break; ­

//用于显示各组钟时间   ­

case 3:{send(0x20,State[0]); //状态显示 ­

send(0x28,State[1]); ­

send(0x21,State[2]); //状态显示 ­

send(0x29,State[3]); ­

send(0x24,Setup[0]); //设置显示 ­

send(0x2c,Setup[1]); ­

send(0x25,Setup[2]); ­

send(0x2d,Setup[3]); ­

send(0x26,Setup[4]); ­

send(0x2e,Setup[5]); ­

send(0x27,Setup[6]); ­

send(0x2f,Setup[7]); ­

}break; ­

} ­

} ­

} ­

/*-----------------------------------------------*/ ­

/*----- 系统设置  ----------------------------*/ ­

/*-----------------------------------------------*/ ­

void System(void) ­

{ unsigned short key; ­

cc=0;    //用于退出一层菜单的延时标志位 ­

cv=1;    //使显示系统设置状态 ­

send(0x04,0x21); //使显示走时状态 ­

State[0]=0x0a; State[1]=0x00; //使状态栏显示所赋的值 ­

show();     //调用显示 ­

Buzzer(1,200);   //长响一声 ­

for(aab=800;aab>0; ) ­

{ show();    //调用显示 ­

key=keyscan(); ­

switch(key) ­

{ ­

case 0x11:{Time();   /*调用时间设置*/  }break; //键盘号"1" ­

case 0x21:{Hour_sytem(); /*时制设置*/   }break; //键盘号"2" ­

case 0x41:{Calendar();  /*调用日历设置函数*/ }break; //键盘号"3" ­

case 0x81:{Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"A" ­

­

case 0x12:{Alarm_xlock();/*调用闹钟设置*/   }break; //键盘号"4" ­

case 0x22:{Aswitch(); /*调用三组闹铃开/闭设置*/ }break; //键盘号"5" ­

case 0x42:{ ies();  /*调用显示三组闹钟*/  }break; //键盘号"6" ­

case 0x82:{ aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"B" ­

case 0x14:{ Luminance();/*调用亮度设置*/     }break; //键盘号"7" ­

case 0x24:{ aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"8" ­

case 0x44:{ aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"9" ­

case 0x84:{aab=0; }break; //键盘号"C" ­

case 0x88:{aab=0; }break; //键盘号"D" ­

} ­

} ­

cv=0;    //使显示走时状态 ­

send(0x04,0x21); //使显示走时状态 ­

Buzzer(3,50);  //长响一声 ­

} ­

/*-----------------------------------------------*/ ­

/*-------- 时间设置  -------------------------*/ ­

/*-----------------------------------------------*/ ­

void Time(void) ­

{ unsigned short key,i=0; ­

cv=2;       //使显示系统设置状态 ­

send(0x04,0x21);    //使显示走时状态 ­

State[0]=0x0a; State[1]=0x01; //使状态栏显示 ­

Setup[0]=Setup[1]=Setup[2]=Setup[3]=Setup[4]=Setup[5]=0x0f; ­

Setup[6]=Setup[7]=0x11;   //使不显示 ­

show();   //调用显示 ­

Buzzer(1,200); //长响一声 ­

for(aab=800;aab>0;) ­

{ show();   //调用显示 ­

key=keyscan(); ­

switch(key) ­

{ /*        查赋值到了那位  赋值使延时 响声   待按键放开 */ ­

case 0x11:{Setup[i]=1; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"1" ­

case 0x21:{Setup[i]=2; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"2" ­

case 0x41:{Setup[i]=3; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"3" ­

case 0x81:{          aab=800; Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"A" ­

­

case 0x12:{Setup[i]=4; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"4" ­

case 0x22:{Setup[i]=5; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"5" ­

case 0x42:{Setup[i]=6; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"6" ­

case 0x82:{          aab=800; Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"B" ­

case 0x14:{Setup[i]=7; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"7" ­

case 0x24:{Setup[i]=8; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"8" ­

case 0x44:{Setup[i]=9; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"9" ­

case 0x84:{aab=0; cc=1; }break; //键盘号"C" ­

case 0x18:{ Setup[0]=Setup[1]=Setup[2]=Setup[3]=Setup[4]=Setup[5]=0x0f; ­

i=0; aab=800; Buzzer(1,200); for(;key==keyscan();){} }break; //键盘号"*" ­

case 0x28:{ Setup[i]=0; i++; if(i==6)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"0" ­

case 0x48:{ REG_B = REG_B|0x80;   // SET=1,芯片DS12C887处于设置状态 ­

HOUR = (Setup[0]<<4) | Setup[1]; //时 ­

MIN  = (Setup[2]<<4) | Setup[3]; //分 ­

SECOND = (Setup[4]<<4) | Setup[5]; //秒 ­

REG_B = REG_B&0x7f;   /* SET=0,芯片DS12C887恢复正常数据更新状态*/ ­

aab=800; Buzzer(1,200); ­

for(;key==keyscan();){} }break; //键盘号"#" ­

case 0x88:{ aab=0;     }break; //键盘号"D" ­

} ­

} ­

cv=1;  //使显示走时状态 ­

send(0x04,0x21); //使显示走时状态 ­

State[0]=0x0a; State[1]=0x00; //使状态栏显示所赋的值 ­

/*-- 查是否按了C键做完全退出设置菜单动作 --*/ ­

if(cc==0) ­

{ Buzzer(3,50);  //长响一声 ­

aab=800;   //使上一层菜单重新计数延时 ­

} ­

} ­

/*-------------------------------------*/ ­

/*----- 时制设置  ------------------*/ ­

/*-------------------------------------*/ ­

void Hour_sytem(void) ­

{ unsigned short key,i=0; ­

cv=2;      //使显示系统设置状态 ­

send(0x04,0x21);    //使显示走时状态 ­

State[0]=0x0a; State[1]=0x02; //使状态栏显示 ­

Setup[0]=0x00; ­

Setup[1]=0x00; ­

Setup[2]=Setup[3]=Setup[4]=Setup[5]=Setup[6]=Setup[7]=0x11;  //使不显示 ­

show();   //调用显示 ­

Buzzer(1,200); //长响一声 ­

for(aab=800;aab>0; ) ­

{ show();   //调用显示 ­

key=keyscan(); ­

switch(key) ­

{ ­

case 0x11:{ at24c02_A[0]=0x0a; ­

Setup[0]=0x01; ­

Setup[1]=0x02; ­

Buzzer(1,50); ­

for(;key==keyscan();){} }break; //键盘号"1" ­

case 0x21:{ at24c02_A[0]=0x0f; ­

Setup[0]=0x02; ­

Setup[1]=0x04; ­

Buzzer(1,50); ­

for(;key==keyscan();){} }break; //键盘号"2" ­

case 0x41:{ Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"3" ­

case 0x84:{ aab=0; cc=1;  }break; //键盘号"C" ­

case 0x88:{ aab=0;    }break; //键盘号"D" ­

} ­

} ­

Write24c02(at24c02_A,0,6);  //从a2数组首地址;写入24C02的0x10地址开始写入7个字节到24C02中 ­

cv=1;  //使显示走时状态 ­

send(0x04,0x21);    //使显示走时状态 ­

State[0]=0x0a; State[1]=0x00; //使状态栏显示所赋的值 ­

/*-- 查是否按了C键做完全退出设置菜单动作 --*/ ­

if(cc==0) ­

{ Buzzer(3,50);  //长响一声 ­

aab=800;   //使上一层菜单重新计数延时 ­

} ­

­

} ­

/*日历设置*/ ­

void Calendar(void) ­

{ unsigned short key,i=0; ­

cv=2;        //使显示系统设置状态 ­

send(0x04,0x21);     //使显示走时状态 ­

State[0]=0x0a; State[1]=0x03;  //使状态栏显示   ­

Setup[0]=Setup[1]=Setup[2]=Setup[3]=Setup[4]=Setup[5]=Setup[6]=0x0f; ­

Setup[7]=0x11;   //使不显示 ­

show();   //调用显示 ­

Buzzer(1,200); //长响一声 ­

for(aab=800;aab>0; ) ­

{ show();   //调用显示 ­

key=keyscan(); ­

switch(key) ­

{ /*        响声  待按键放开 */ ­

case 0x11:{Setup[i]=1; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"1" ­

case 0x21:{Setup[i]=2; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"2" ­

case 0x41:{Setup[i]=3; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"3" ­

//  case 0x81:{          aab=800; Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"A" ­

­

case 0x12:{Setup[i]=4; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"4" ­

case 0x22:{Setup[i]=5; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"5" ­

case 0x42:{Setup[i]=6; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"6" ­

case 0x82:{          aab=800; Buzzer(2,50); for(;key==keyscan();){} }break; //键盘号"B"  case 0x14:{Setup[i]=7; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"7" ­

case 0x24:{Setup[i]=8; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"8" ­

case 0x44:{Setup[i]=9; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"9" ­

case 0x84:{ aab=0; cc=1; }break; //键盘号"C" ­

case 0x18:{ Setup[0]=Setup[1]=Setup[2]=Setup[3]=Setup[4]=Setup[5]=Setup[6]=0x0f; //使显示所赋的值 ­

i=0; aab=800; Buzzer(1,200); for(;key==keyscan();){} }break;  //键盘号"*" ­

case 0x28:{ Setup[i]=0; i++; if(i==7)i=0; aab=800; Buzzer(1,50); for(;key==keyscan();){} }break; //键盘号"0" ­

case 0x48:{ REG_B = REG_B|0x80;   // SET=1,芯片DS12C887处于设置状态 ­

YEAR  =(Setup[0]<<4) | Setup[1]; //年 ­

MONTH  =(Setup[2]<<4) | Setup[3]; //月 ­

DAYOFMONTH =(Setup[4]<<4) | Setup[5]; //日 ­

DAYOFWEEK = Setup[6];     //星期 ­

REG_B = REG_B&0x7f;   /* SET=0,芯片DS12C887恢复正常数据更新状态*/ ­

aab=800; Buzzer(1,200); ­

for(;key==keyscan();){} }break; //键盘号"#" ­

case 0x88:{   aab=0;  }break; //键盘号"D" ­

} ­

} ­

cv=1;  //使显示走时状态 ­

send(0x04,0x21); //使显示走时状态 ­

State[0]=0x0a; State[1]=0x00; //使状态栏显示所赋的值 ­

/*-- 查是否按了C键做完全退出设置菜单动作 --*/ ­

if(cc==0) ­

{ Buzzer(3,50);  //长响一声 ­

aab=800;   //使上一层菜单重新计数延时 ­

} ­

} ­

/*闹钟设置*/ ­

void Alarm_xlock(void) ­

{ unsigned short key,i=0; ­

cv=2;      //使显示系统设置状态 ­

send(0x04,0x21);    //使显示走时状态 ­

State[0]=0x0a; State[1]=0x04; //使状态栏显示 ­

Setup[0]=0x01; ­

Setup[1]=0x02; ­

Setup[2]=0x03; ­

Setup[3]=Setup[4]=Setup[5]=Setup[6]=Setup[7]=0x11;  //使不显示 ­

show();   //调用显示 ­

Buzzer(1,200); //长响一声 ­

for(aab=800;aab>0; ) ­

{ show();   //调用显示 ­

key=keyscan(); ­

switch(key) ­

{ /*        响声  待按键放开 */ ­

case 0x11:{Alarm_xlock_1();  }break; //键盘号"1" ­

case 0x21:{Alarm_xlock_2();   }break; //键盘号"2" ­

case 0x41:{Alarm_xlock_3();   }break; //键盘号"3" ­

case 0x81:{aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"A" ­

case 0x12:{aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"4" ­

//  case 0x22:{aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"5" ­

//  case 0x42:{aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"6" ­

//  case 0x82:{aab=800; Buzzer(2,50); for(;key==keyscan();){}}break; //键盘号"B" ­

case 0x84:{ aab=0; cc=1;  }break; //键盘号"C" ­

case 0x88:{ aab=0;    }break; //键盘号"D" ­

} ­

} ­

cv=1;  //使显示走时状态 ­

send(0x04,0x21); //使显示走时状态 ­

State[0]=0x0a; State[1]=0x00; //使状态栏显示所赋的值 ­

/*-- 查是否按了C键做完全退出设置菜单动作 --*/ ­

if(cc==0) ­

{ Buzzer(3,50);  //长响一声 ­

aab=800;   //使上一层菜单重新计数延时 ­

} ­

}

上一条新闻:PIC串口中断中,发送中断后,TXIF一直为1,岂不无法退出? 2014-10-13
下一条新闻:HT6221(红外)解码程序 2014-10-21
友情链接:掉货检测
Copyright © 2013-2015 深圳市昶丰科技有限公司 All Rights Reserved. 粤ICP备2023005930号    深圳网络公司-龙腾盛世提供技术支持
地址:深圳市宝安区福海街道展城社区福园一路35号天瑞工业园A5栋912    电话:0755-29308961    传真:0755-29308961    邮箱:chn_cf@163.com    
热门关键字:掉货检测