好文档 - 专业文书写作范文服务资料分享网站

基于51单片机的12864显示温度(ds18b20)

天下 分享 时间: 加入收藏 我要投稿 点赞

#ifndef __LCD12864_H #define __LCD12864_H //---包含头文件---// #include //---重定义关键词---// #ifndef uchar

#define uchar unsigned char #endif

#ifndef uint

#define uint unsigned int #endif

//---如果使用画图模式定义这个---// #define LCD12864_PICTURE //---定义使用的IO口---//

#define LCD12864_DATAPORT P1 //数据IO口

sbit LCD12864_RS = P2^6; //(数据命令)寄存器选择输入 sbit LCD12864_RW = P2^5; //液晶读/写控制 sbit LCD12864_EN = P2^7; //液晶使能控制 sbit LCD12864_PSB = P3^2; //串/并方式控制 sbit LCD12864_RST = P3^4; //复位端 //---声明全局函数---//

void LCD12864_Delay1ms(uint c); uchar LCD12864_Busy(void);

void LCD12864_WriteCmd(uchar cmd); void LCD12864_WriteData(uchar dat); void LCD12864_Init();

void LCD12864_ClearScreen(void);

void LCD12864_SetWindow(uchar x, uchar y); void LCD12864_DrowPic(uchar *a);

void LCD12864_DrowPoint(uchar x, uchar y); #endif

#ifndef __TEMP_H_ #define __TEMP_H_ #include //---重定义关键词---// #ifndef uchar

#define uchar unsigned char #endif

#ifndef uint

#define uint unsigned int #endif

//--定义使用的IO口--//

sbit DSPORT=P3^3;

//--声明全局函数--// void Delay1ms(uint ); uchar Ds18b20Init();

void Ds18b20WriteByte(uchar com); uchar Ds18b20ReadByte(); void Ds18b20ChangTemp(); void Ds18b20ReadTempCom(); int Ds18b20ReadTemp(); #endif

#include\

/*******************************************************************************

* 函数名 : LCD12864_Delay1ms * 函数功能 : 延时1MS * 输入 : c * 输出 : 无

*******************************************************************************/

void LCD12864_Delay1ms(uint c) {

uchar a,b; for(; c>0; c--) { for(b=199; b>0; b--) { for(a=1; a>0; a--); } } }

/*******************************************************************************

* 函数名 : LCD12864_Busy * 函数功能 : 检测LCD是否忙 * 输入 : 无

* 输出 : 1或0(1表示不忙,0表示忙)

*******************************************************************************/

uchar LCD12864_Busy(void) { uchar i = 0; LCD12864_RS = 0; //选择命令 LCD12864_RW = 1; //选择读取 LCD12864_EN = 1;

LCD12864_Delay1ms(1);

while((LCD12864_DATAPORT & 0x80) == 0x80) //检测读取到的值 { i++; if(i > 100) { LCD12864_EN = 0; return 0; //超过等待时间返回0表示失败 } } LCD12864_EN = 0; return 1; }

/*******************************************************************************

* 函数名 : LCD12864_WriteCmd * 函数功能 : 写命令 * 输入 : cmd * 输出 : 无

*******************************************************************************/

void LCD12864_WriteCmd(uchar cmd) { uchar i; i = 0; while( LCD12864_Busy() == 0) { LCD12864_Delay1ms(1); i++; if( i>100) { return; //超过等待退出 } } LCD12864_RS = 0; //选择命令 LCD12864_RW = 0; //选择写入 LCD12864_EN = 0; //初始化使能端 LCD12864_DATAPORT = cmd; //放置数据 LCD12864_EN = 1; //写时序 LCD12864_Delay1ms(1); LCD12864_EN = 0; }

/******************************************************************************

*

* 函数名 : LCD12864_WriteData * 函数功能 : 写数据 * 输入 : dat * 输出 : 无

*******************************************************************************/

void LCD12864_WriteData(uchar dat) { uchar i; i = 0; while( LCD12864_Busy() == 0) { LCD12864_Delay1ms(1); i++; if( i>100) {

}

}

return; //超过等待退出

LCD12864_RS = 1; //选择数据 LCD12864_RW = 0; //选择写入 LCD12864_EN = 0; //初始化使能端 LCD12864_DATAPORT = dat; //放置数据 LCD12864_EN = 1; //写时序 LCD12864_Delay1ms(1); LCD12864_EN = 0; }

/*******************************************************************************

* 函数名 : LCD12864_ReadData * 函数功能 : 读取数据 * 输入 : 无

* 输出 : 读取到的8位数据

*******************************************************************************/

#ifdef LCD12864_PICTURE

uchar LCD12864_ReadData(void) { uchar i, readValue; i = 0; while( LCD12864_Busy() == 0) { LCD12864_Delay1ms(1);

i++; if( i>100) { return 0; //超过等待退出 } }

LCD12864_RS = 1; //选择命令 LCD12864_RW = 1; LCD12864_EN = 0;

LCD12864_Delay1ms(1); //等待 LCD12864_EN = 1; LCD12864_Delay1ms(1); readValue = LCD12864_DATAPORT; LCD12864_EN = 0; return readValue; }

#endif

/*******************************************************************************

* 函数名 : LCD12864_Init * 函数功能 : 初始化LCD12864 * 输入 : 无 * 输出 : 无

*******************************************************************************/

void LCD12864_Init() {

LCD12864_PSB = 1; //选择并行输入 LCD12864_RST = 1; //复位 LCD12864_WriteCmd(0x30); //选择基本指令操作 LCD12864_WriteCmd(0x0c); //显示开,关光标 LCD12864_WriteCmd(0x01); //清除LCD12864的显示内容 }

/*******************************************************************************

* 函数名 : LCD12864_ClearScreen * 函数功能 : 在画图模式下,LCD12864的01H命令不能清屏,所以要自己写一个清

* * 屏函数 * 输入 : 无 * 输出 : 无

*******************************************************************************/

#ifdef LCD12864_PICTURE

基于51单片机的12864显示温度(ds18b20)

#ifndef__LCD12864_H#define__LCD12864_H//---包含头文件---//#include//---重定义关键词---//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuin
推荐度:
点击下载文档文档为doc格式
7pn440sc1l036aw5tvxo0daes3y38300x4h
领取福利

微信扫码领取福利

微信扫码分享