标题:
时钟温室度计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);
}
/*****************读出秒的十进制数***************************/
uchar readsecond()
{
uchar dat;
dat=read_1302add(0x81);
second=((dat&0x70)>>4)*10+(dat&0x0f);
return second;
}
/*****************读出分的十进制数***************************/
uchar readminute()
{
uchar dat;
dat=read_1302add(0x83);
minute=((dat&0x70)>>4)*10+(dat&0x0f);
return minute;
}
/*****************读出小时的十进制数***************************/
uchar readhour()
{
uchar dat;
dat=read_1302add(0x85);
hour=((dat&0x70)>>4)*10+(dat&0x0f);
return hour;
}
/*****************读出天的十进制数***************************/
uchar readday()
{
uchar dat;
dat=read_1302add(0x87);
day=((dat&0x70)>>4)*10+(dat&0x0f);
return day;
}
/*****************读出月的十进制数***************************/
uchar readmonth()
{
uchar dat;
dat=read_1302add(0x89);
month=((dat&0x70)>>4)*10+(dat&0x0f);
return month;
}
/*****************读出周的十进制数***************************/
//uchar readweek()
//{
//uchar dat;
//dat=read_1302add(0x8b);
//week=((dat&0x70)>>4)*10+(dat&0x0f);
//return week;
//}
/*****************读出年的十进制数***************************/
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开始计数一直到65535溢出
TL0=0xc3;
EA=1; //总中断打开
ET0=1; //定时器中断打开
// TR0=1; //定时器开关打开
}
void main()
{
uchar i;
Init_Timer0();
LCD_Init(); //初始化液晶
Delay_ms(20); //延时有助于稳定
LCD_Clear(); //清屏
init_1302();
LCD_Write_Com(0x40|0x80); //设置显示位置为第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, 下载次数: 6, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1