数字钟显示时间日期温度C语言程序,Ds3231+12864液晶显示AT89C51带温度功能的时钟程序...

这个程序使用C语言,结合Ds3231和12864液晶显示屏,实现了AT89C51单片机上的数字钟显示时间日期及温度的功能。通过I2C通信与DS18B20进行温度读取,并在液晶屏上展示。用户可以通过按键调整时间。程序包含了初始化、数据读取、显示等多个关键函数。
摘要由CSDN通过智能技术生成

Ds3231+12864液晶显示AT89C51带温度功能的时钟程序。

vY1qXKghyyy2qi8BI90YrnU7ypEEoId4

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit LCD_RS=P2^6;

sbit LCD_RW=P2^5;

sbit LCD_EN=P2^4;

sbit LCD_PSB=P2^3;

sbit DQ=P3^7; //18b20

sbit SDA=P1^4; //ds32321 //模拟I2C数据传送位SDA

sbit SCL=P1^3; //模拟I2C时钟控制位SCL

//

sbit K1=P3^2;

sbit K2=P3^3;

sbit K3=P3^4;

sbit K4=P3^5;

//定义变量

uchar numbr[10]="0123456789"; //字模

uchar dis4[]=" "; // 第四行显示 自己添加

uchar t[]=" . ℃" ; //18b20

uint sdata,xiaoshu1,xiaoshu2; //整数、小数1位、小数2位

bit fg=1; //温度正负标志

uchar tempL=0,tempH=0; // 变量

uchar year,month,date,hour,min,sec; // ds3231

uchar a[]="2011年22月33日";

uchar b[]="11时22分33秒";

///函数

/

void write_cmd(uchar cmd)

{

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

P0=cmd;

delay1ms(5);

LCD_EN=1;

delay1ms(5);

LCD_EN=0;

}

void lcd_pos(uchar X, uchar Y)

{

ucharpos;

if(X== 0)

{

X= 0x80;

}

elseif(X == 1)

{

X= 0x90;

}

elseif(X == 2)

{

X= 0x88;

}

elseif(X == 3)

{

X= 0x98;

}

pos= X + Y;

write_cmd(pos); //显示地址

}

void write_dat(uchar dat)

{

LCD_RS=1;

LCD_RW=0;

LCD_EN=0;

P0=dat;

delay1ms(5);

LCD_EN=1;

delay1ms(5);

LCD_EN=0;

}

void lcd_init()

{ uinti;

LCD_PSB=1; //并口方式

write_cmd(0x30); //基本操作指令

delay1ms(5);

write_cmd(0x0c); //打开显示,光标关闭

delay1ms(5);

write_cmd(0x01); //清除LCD显示类容

delay1ms(5);

lcd_pos(3,0);

i=0;

while(dis4[ i]!='\0')

{

delay1ms(1);

write_dat(dis4);

delay1ms(1);

i++;

}

}

void Init_DS18B20(void) //初始化

{

uchar x=0;

DQ=1; //DQ先置高

delay(8); //稍延时

DQ=0; //发送复位脉冲

delay(80); //延时(>480us)

DQ=1; //拉高数据线

delay(5); //等待(15~60us)

x=DQ; //用X的值来判断初

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值