#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^7;//蜂鸣器
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;
//-----------------------------------显示数组
uchar ye=0;//第一页
uchar hang1[]="2000.00.00 0 ";//日期+星期
uchar hang2[]="00:00:00 T:000 C";//时间+温度
uchar hang3[]="lock 00:00 ";//第二页 闹钟
uchar hang4[]="L:000 C H:000 C";//温度阀值
uchar lcd_xian=0;//显示延时变量
//-----------------------------------
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>光标位置
uchar cursor=0;//光标位置
uchar code cursor_num[]={1,3,1,6,1,9,1,12,2,1,2,4,2,7,1,6,1,9,2,4,2,13};//光标位置数组.行+列
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//###################################测量值变量
uchar wendu=0,wen_L=10,wen_H=30;//温度+阀值
uchar shi=6,fen=0;//闹钟
//###################################
//**************************************主函数
void main()
{
uchar two;
//11111111111111111111111111111111基本模块初始化
hang2[14]=0xdf;
hang4[5]=0xdf;
hang4[14]=0xdf;
init_1602();
Ds1302ReadTime();//启动DS1302
TIME[0]=0;
Ds1302Init();
//11111111111111111111111111111111
//22222222222222222222222222222222显示初始化
wen_L=At24c02Read(0); //读取温度阀值
if(wen_L>200)
{
wen_L=10;
At24c02Write(0,wen_L);
Delay1ms(10);
}
wen_H=At24c02Read(1);
if(wen_H>200)
{
wen_H=10;
At24c02Write(1,wen_H);
Delay1ms(30);
}
shi=At24c02Read(2);
if(shi>200)
{
shi=6;
At24c02Write(2,shi);
Delay1ms(10);
}
fen=At24c02Read(3);
if(fen>200)
{
fen=0;
At24c02Write(3,fen);
Delay1ms(10);
}
//22222222222222222222222222222222
//===============定时器初始化
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器while(1)
{
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判断报警
if((wendu>wen_H)||(wendu<wen_L)||((TIME[2]==shi)&&(TIME[1]==fen)))//蜂鸣器判断
beep=0;
else
beep=1;
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//'''''''''''''''''''''''''''''''''''''''''''按键检测
if(!k1) //换页
{
ye=!ye;
if(ye)
cursor=7;//设置光标
else
cursor=0;
while(!k1);
}
if(!k2) //下一个
{
if(ye)
{
if(cursor<10)
cursor++;
else
cursor=7;
}
else
{
if(cursor<6)
cursor++;
else
cursor=0;
}
while(!k2);
}
if(!k3)//加
{
switch(cursor)
{
case 0://设置年
two=(TIME[6]>>4)*10+(TIME[6] &0x0f);
if(two<99)
two++;
TIME[6]=(two/10<<4)+two%10;
Ds1302Init();
break;
case 1://设置月
two=(TIME[4]>>4)*10+(TIME[4] &0x0f);
if(two<12)
two++;
TIME[4]=(two/10<<4)+two%10;
Ds1302Init();
break;
case 2://设置日
two=(TIME[3]>>4)*10+(TIME[3] &0x0f);
if(two<30)
two++;
TIME[3]=(two/10<<4)+two%10;
Ds1302Init();
break;
case 3://设置星期
if(TIME[5]<8)
TIME[5]++;
Ds1302Init();
break;
case 4://设置时
two=(TIME[2]>>4)*10+(TIME[2] &0x0f);
if(two<23)
two++;
TIME[2]=(two/10<<4)+two%10;
Ds1302Init();
break;
case 5://设置分
two=(TIME[1]>>4)*10+(TIME[1] &0x0f);
if(two<59)
two++;
TIME[1]=(two/10<<4)+two%10;
Ds1302Init();
break;
case 6://设置秒
two=(TIME[0]>>4)*10+(TIME[0] &0x0f);
if(two<59)
two++;
TIME[0]=(two/10<<4)+two%10;
Ds1302Init();
break;
case 7://设置时 闹钟
two=(shi>>4)*10+(shi &0x0f);
if(two<23)
two++;
shi=(two/10<<4)+two%10;
At24c02Write(2,shi);
Delay1ms(10);
break;
case 8://设置分
two=(fen>>4)*10+(fen &0x0f);
if(two<59)
two++;
错误是:
compiling shizhong1.c...
shizhong1.c(34): warning C206: 'init_1602': missing function-prototype
shizhong1.c(35): warning C206: 'Ds1302ReadTime': missing function-prototype
shizhong1.c(36): error C202: 'TIME': undefined identifier
shizhong1.c - 1 Error(s), 2 Warning(s). |