基于AT89C51多功能LCD时钟设计.doc
文本预览下载声明
//*************************************************************//
// 基于单片机的多功能LCD时钟设计 // //
//*************************************************************//
#includereg52.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
/***********定义LCD功能管脚************************************/
sbit rs=P2^0; //控制LCD数据或命令的读写
sbit rw=P2^1; //控制LCD读写信号
sbit e=P2^2; //使能LCD
/***********定义DS1302功能管脚*********************************/
sbit DSRST = P1^0; //DS1302复位管脚
sbit DSCLK = P1^1; //DS1302时钟
sbit DSIO = P1^2; //控制DS1302数据传输
sbit dq=P3^7; //温度传感器I/O口定义
uint numh=110,numl=50; //上下限温度
uchar bai,shi,ge,xiaoshu,fuhao;
uchar th_temp,tl_temp;
uchar secondh,secondl,minuteh,minutel,hourh,hourl,second,minute,hour;
uint monthl,monthh,month,day,datel,dateh,date,year,yearl,yearh;
void delay_ms(uint z);
void delay_us(uchar z);
void lcd1602_init();
bit judge_lcd();
void write_com(uchar com);
void write_date(uchar date);
void HELLO_lcd();
void ds18b20_init();
void write_byte(uchar dat);
uchar read_byte();
void display();
void convert_temp();
void beyond();
void ds1302_init();
uchar read_ds1302();
void init_ds1302();
void write_ds1302() ;
void read1302_write1602 ();
void HELLO();
/*********************延时函数*****************/
void delay_us(uchar z)
{
while(z--);
}
void delay_ms(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
/********************lcd1602初始化***************************/
void lcd1602_init()
{
write_com(0x01);
delay_ms(50);
write_com(0x38);
delay_ms(50);
write_com(0x0c);
delay_ms(50);
write_com(0x06);
delay_ms(50);
}
/***********************lcd1602忙碌判断子程序*******************/
bit judge_lcd()
{
bit flag;
e = 0;
rs = 0;
rw = 1;
e = 1;
delay_ms(1);
flag=(bit)(P00x80); //状态位第7位为1时禁止读写,为0时可读写
e = 0;
return flag;
}
/**********************lcd1602写指令子程序*******************/
void write_com(uchar addr)
{
显示全部