標題:
時鐘溫室度計1602顯示
[打印本頁]
作者:
jubaolun
時間:
2017-6-10 09:50
標題:
時鐘溫室度計1602顯示
干貨,上代碼。
#include <reg52.h>
#include"1602.h"
#include"delay.h"
#include "ds1302.h"
#include "key.h"
#include"dh11.h"
#include <intrins.h>
sbit BEEP=P3^7;
extern uchar S1num,flag,second,minute,hour,week,day,month,year;//秒、分、時、星期、日、月、年
extern bit keyflag;
/////////////////////////////////////////////////////
extern uchar RHL,RHH,CL,CH;
extern uint m,n;
/////////////////////////////////////////////////////////
uchar num;
//uchar fan;
////////////////////////////////////////////////////////////////
uchar code line1_data[] = {" : : "}; //定義第2行顯示的字符
extern bit k4flag;
extern uchar second1,minute1,hour1;
/////////////////////////////////////////////////////
void beep()
{
BEEP=!BEEP;
Delay_ms(200);
BEEP=!BEEP;
Delay_ms(200);
}
/*****************讀出秒的十進制數(shù)***************************/
uchar readsecond()
{
uchar dat;
dat=read_1302add(0x81);
second=((dat&0x70)>>4)*10+(dat&0x0f);
return second;
}
/*****************讀出分的十進制數(shù)***************************/
uchar readminute()
{
uchar dat;
dat=read_1302add(0x83);
minute=((dat&0x70)>>4)*10+(dat&0x0f);
return minute;
}
/*****************讀出小時的十進制數(shù)***************************/
uchar readhour()
{
uchar dat;
dat=read_1302add(0x85);
hour=((dat&0x70)>>4)*10+(dat&0x0f);
return hour;
}
/*****************讀出天的十進制數(shù)***************************/
uchar readday()
{
uchar dat;
dat=read_1302add(0x87);
day=((dat&0x70)>>4)*10+(dat&0x0f);
return day;
}
/*****************讀出月的十進制數(shù)***************************/
uchar readmonth()
{
uchar dat;
dat=read_1302add(0x89);
month=((dat&0x70)>>4)*10+(dat&0x0f);
return month;
}
/*****************讀出周的十進制數(shù)***************************/
//uchar readweek()
//{
//uchar dat;
//dat=read_1302add(0x8b);
//week=((dat&0x70)>>4)*10+(dat&0x0f);
//return week;
//}
/*****************讀出年的十進制數(shù)***************************/
uchar readyear()
{
uchar dat;
dat=read_1302add(0x8d);
year=((dat&0xf0)>>4)*10+(dat&0x0f);
return year;
}
/************************讀出所有時間**********************/
void readtime()
{
readsecond();
readminute();
readhour();
// readday();
// readmonth();
// readweek();
// readyear();
}
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH0=0xb0; //給定初值,這里使用定時器最大值從0開始計數(shù)一直到65535溢出
TL0=0xc3;
EA=1; //總中斷打開
ET0=1; //定時器中斷打開
// TR0=1; //定時器開關(guān)打開
}
void main()
{
uchar i;
Init_Timer0();
LCD_Init(); //初始化液晶
Delay_ms(20); //延時有助于穩(wěn)定
LCD_Clear(); //清屏
init_1302();
LCD_Write_Com(0x40|0x80); //設(shè)置顯示位置為第2行第0列
i = 0;
while(line1_data[i] != '\0') //在第2行0~3列顯示"****"
{
LCD_Write_Data(line1_data[i]); //顯示第2行字符
i++; //指向下一字符
}
Delay_ms(1000);
while(1)
{
if(k4==0)
{
Delay_ms(10);
if(k4==0)
{
while(!k4);
k4flag=~k4flag;
}
}
if(k4flag==1)
{
TR0=1;
if(((second1==0)&minute1==0)&hour1==0)
{
beep();
}
}
else TR0=0;
keyscan();
if(keyflag==0)
{
readtime(); //讀取年,月,日,時,分,秒
// write_DTC();
write_second(); //寫秒
write_minute(); //寫分
write_hour(); //寫時
// write_day(); //寫日
// write_month(); //寫月
// write_year(); //寫年
// write_week();
// write_second1(); //寫秒
// write_minute1(); //寫分
// write_hour1(); //寫時
disp_nz();
}
Delay_ms(100);
receive();
}
}
復制代碼
時鐘溫室度.rar
2017-6-10 09:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
90.42 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1