#define LCD_CLEAR_SCREEN 0x01 // 清屏 #define LCD_HOMING
0x02 // 光标返回原点
void LCD_Write(bit style, unsigned char input) { }
/****************设置显示模式***********************/ #define LCD_SHOW 0x04 //显示开 #define LCD_HIDE 0x00 //显示关 #define LCD_CURSOR 0x02 //显示光标 #define LCD_NO_CURSOR 0x00 //无光标 #define LCD_FLASH 0x01 //光标闪动 #define LCD_NO_FLASH 0x00 //光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode) {
LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
LcdEn=0; LcdRs=style; LcdRw=0;
_nop_();
DBPort=input; _nop_();//注意顺序 LcdEn=1; LcdEn=0; LCD_Wait();
_nop_();//注意顺序 _nop_();
}
/****************设置输入模式***********************/ #define LCD_AC_UP 0x02
#define LCD_AC_DOWN 0x00 // default #define LCD_MOVE 0x01 // 画面可平移 #define LCD_NO_MOVE 0x00 //default void LCD_SetInput(unsigned char InputMode) { }
/***************初始化LCD**************************/ void LCD_Initial() { }
/***************液晶字符输入的位置*******************/ void GotoXY(unsigned char x, unsigned char y)
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵 LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动 LCD_Write(LCD_COMMAND, 0x04|InputMode);
{ }
/**************将字符输出到液晶显示*****************/ void Print(unsigned char *str) { }
/***********ds18b20子程序***************************/ /***********ds18b20延迟子函数(晶振12MHz )********/ void delay_18B20(unsigned int i) { }
/**********ds18b20初始化函数**********************/
while(i--); while(*str!='\\0') { }
LCD_Write(LCD_DATA,*str); str++; if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
void Init_DS18B20(void) {
unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delay_18B20(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay_18B20(14);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 }
/******************ds18b20读一个字节********************/ unsigned char ReadOneChar(void) {
uchar i=0; uchar dat = 0; for (i=8;i>0;i--) {
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号 delay_18B20(20);
}
if(DQ) dat|=0x80; delay_18B20(4);
return(dat); }
/****************ds18b20写一个字节*********************/ void WriteOneChar(uchar dat) {
unsigned char i=0; for (i=8; i>0; i--) { } }
/****************读取ds18b20当前温度*******************/ void ReadTemp(void) {
DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1;
基于modbus总线的监测系统的开发



