基于51单片机的1602液晶显示温度和时间的C程序 下载本文

内容发布更新时间 : 2024/5/6 18:36:00星期一 下面是文章的全部内容请认真阅读。

.

//液晶显示温度

#include \#define Ddata P0

sbit RS=P2^7; //命令数据控制端 sbit RW=P2^6; //读写选择端 sbit LCDE=P2^5; //液晶使能端

sbit DQ=P2^0; //ds18b20与单片机连接口 #define uchar unsigned char #define uint unsigned int

unsigned char hour=0,min=0,sec=0; //定义初值 unsigned int count=0;

unsigned char line1[16]={\\ //16个字符 unsigned char line2[16]={\00:00:00\ //16个字符 unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9'}; //数组

uchar data disdata[5];

uint tvalue; //温度值 uchar tflag; //温度正负标志 void time();

/*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒(不够精确的) {

unsigned int i,j; for(i=0;i

1页

.

void delay5ms()//延时5毫秒(不够精确的) {

unsigned int i; for (i=0;i<1000;i++); }

void delay50us() {

register int i; for (i=0;i<20;i++); }

void delay() {unsigned char m,n; for(m=255;m>0;m--) for(n=255;n>0;n--); }

void wr_com(unsigned char comm) //********写控制字符程序 E=1 RS=0

RW=0 **********//

{

LCDE=0; //使能端

RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。

RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。 LCDE=1; Ddata=comm; RS=0; RW=0; LCDE=0;

2页

.

}

void wr_data(unsigned char dat)//*****当前位置写字符子程序:E=1 RS=1 RW=0 {

LCDE=0;

RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。

RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。 RS=1; RW=0; LCDE=1;

Ddata=dat; //将dat赋给P0口 LCDE=0; RS=0; RW=0; }

unsigned char busycheck()//*****忙状态检查*******// {

unsigned char i; LCDE=0; RS=0; RW=0; RS=0; RW=1; LCDE=1; i=Ddata; LCDE=0; return(i); }

3页