您当前的位置:五五电子网电子知识单片机-工控设备51单片机18B20温度LCD显示程序 正文
18B20温度LCD显示程序

18B20温度LCD显示程序

点击数:7580 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   51单片机

18B20温度LCD显示程序

#include <AT89X51.H>    //器件配置文件
#include <intrins.h>
sbit LCM_RS=P3^3;      //引脚定义
sbit LCM_RW=P3^4;     //引脚定义
sbit LCM_EN=P3^5;      //引脚定义
sbit OUT=P3^6;            //控制继电器
sbit TSOR=P3^7;            //温度测试端
#define Busy 0x80        //常量定义
#define uchar unsigned char
#define uint unsigned int
#define DATAPORT P1 
#define reset() {WDT=0x1e;WDT=0xe1;}// 看门狗启动/复位宏定义
sfr WDT=0xa6;//看门狗寄存器定义
bit ON_OFF;
bit outflag;
//==============================================
uchar temp1,temp2;
uchar cnt;
uchar dEDA,sec;        //时间变量
char min,hour;
char set,T;
uchar ReadStatusLCM(void);//读数据到MCU子函数声明
uchar code str0[]={"---  :  :  ---  "};//待显字符串
uchar code str1[]={"SET:  C SA:  . C"};
uchar code str2[]={"                "};//待显空字符串
//====================函数声明=======================
void fun0(void);
void fun1(void);
void fun2(void);
void fun3(void);
void set_adj(void);
void inc_key(void);
void dec_key(void);
void key(void);
void gettempTS(void);
void initTS(void);
uchar readBTS(void);
void writeBTS(uchar byte);
void resetTS(void);
bit reaDTS(void);
void write1TS(void);
void write0TS(void);
void delay15us(void);
void delay60us(void);

//********延时K*1mS,12.000MHz*********
void delay(uint k)//函数名为delay的延时子函数。定义k为无符号整型变量
{                 //delay函数开始
uint i,j;        //定义i、j为无符号整型变量
for(i=0;i<k;i++)
{       //for循环语句开始
for(j=0;j<60;j++)      // for循环语句开始
{;}
reset()}             //两个for循环体
}                   //delay函数结束
/*-----------------------------写指令到LCM子函数-------------------------------*/
void WriteCommandLCM(uchar WCLCM, uchar BusyC) /*函数名为WriteCommandLCM 的写指令到LCM子函数。定义WCLCM、BusyC 为无符号字符型变量*/
{                       //WriteCommandLCM函数开始
if(BusyC)ReadStatusLCM();     /*若BusyC为"1",则调用ReadStatusLCM子函数进行忙检测*/
DATAPORT=WCLCM;        //将变量WCLCM中的指令传送至P1口
LCM_RS=0;             //选中指令寄存器
LCM_RW=0;            //写模式
LCM_EN=0;             //置LCM_EN端为低电平
LCM_EN=0;             //置LCM_EN端为低电平,延时一会儿
LCM_EN=1;             //置LCM_EN端为高电平,写入使能
}                       // WriteCommandLCM函数结束
/*----------------------------写数据到LCM子函数-------------------------------*/
void WriteDataLCM(uchar WDLCM)  /*函数名为WriteDataLCM 的写数据到LCM子函数。定义WDLCM 为无符号字符型变量*/
{                        // WriteDataLCM函数开始
ReadStatusLCM();         //调用ReadStatusLCM子函数检测忙信号
DATAPORT=WDLCM;          //将变量WDLCM中数据传送至P1口
LCM_RS=1;              //选中数据寄存器
LCM_RW=0;              //写模式
LCM_EN=0;              //置LCM_EN端为低电平
LCM_EN=0;              //置LCM_EN端为低电平,延时一会儿
LCM_EN=1;              //置LCM_EN端为高电平,写入使能
}                        // WriteDataLCM函数结束
/*--------------------------------读数据到MCU子函数---------------------------*/
/*uchar ReadDataLCM(void) //函数名为ReadDataLCM的读数据到MCU子函数
{                        // ReadDataLCM函数开始
LCM_RS=1;              //选中数据寄存器
LCM_RW=1;              //读模式
LCM_EN=0;              //置LCM_EN端为低电平
LCM_EN=0;              //置LCM_EN端为低电平,延时一会儿
LCM_EN=1;              //置LCM_EN端为高电平,读使能
return(DATAPORT);                //返回P1口的内容
}*/                      // ReadDataLCM函数结束

/*--------------------------------读状态到MCU子函数-----------------------------*/
uchar ReadStatusLCM(void) //函数名为ReadStatusLCM的读状态到MCU子函数
{                        //ReadStatusLCM函数开始
DATAPORT=0xFF;           //置P1口为全1
LCM_RS=0;               //选中指令寄存器
LCM_RW=1;              //读模式
LCM_EN=0;               //置LCM_EN端为低电平
LCM_EN=0;              //置LCM_EN端为低电平,延时一会儿

[1] [2] [3] [4]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机