lcd1602代码

**//单片机stc89c58Rd+

//main.c文件**

#include"config.h"
#include"delay.h"
#include"lcd1602.h"
//uint8 Table[8]={0x00,0x13,0x04,0x08,0x08,0x04,0x03,0x00};//自定义温度负符号void main()
{Lcd1602_Init();	Write_Com(0x80);Write_Data('D');
//	Dip_Str("welA");while(1);
}

//delay.c

#include"config.h"
#include"delay.h"
void Delay5ms()		//@11.0592MHz
{unsigned char i, j;i = 9;j = 244;do{while (--j);} while (--i);
}void Delay15ms()		//@11.0592MHz
{unsigned char i, j;i = 27;j = 226;do{while (--j);} while (--i);
}

//delay.h

#ifndef __DELAY_H__
#define __DELAY_H__
void Delay15ms();
void Delay5ms();
#endif

//lcd1602.c

#include"config.h"
#include"lcd1602.h"
#include"delay.h"
//#include"config.h"
extern uint8 Table[8];
void Lcd1602_Init()
{Delay15ms();Write_Com(0x38);Delay5ms();Write_Com(0x38);Delay5ms();Write_Com(0x38);//显示设置Write_Com(0x38);Write_Com(0x08);//显示关闭Write_Com(0x01);//显示清屏//显示光标移动设置Write_Com(0x06);Write_Com(0x0c);//显示开及光标设置
}
//写指令函数
void Write_Com(uint8 comm)
{while(Busy_Check() == 1);//如果忙就等待RS = 0;RW = 0;E = 0;P0 = comm;_nop_();E = 1;_nop_();E = 0;_nop_();_nop_();
}
//写数据函数
void Write_Data(uint8 Data)
{while(Busy_Check() == 1);//如果忙就等待RS = 1;RW = 0;E = 0;P0 = Data;//syntax error near'data',换成Data不报错,data是关键字,data数据空间_nop_();E = 1;_nop_();E = 0;_nop_();_nop_();
}
//时序延时要求不严,可以不加延时。
/*void Write_Data(int data)
{while(Busy_Check() == 1);//如果忙就等待RS = 0;RW = 0;E = 0;P0 = data;E = 1;E = 0;
}*/
bit Busy_Check()
{bit result;P0 = 0xff;//读数据前,将P0口拉高。RS = 0;RW = 1;E = 0;E = 1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0&0x80);//1:bit没用括号报错。2:lcd的D0-D7中,D7=1为忙碌,0为空闲.E = 0;return result;	
}//忙检测也可以这样写。
/*void Lcd1602_Busy_Check(void){uint8 tmp;lcdPort = 0xff;//读数据前,将P0口拉高.do{RS = 0;RW = 1;EN = 0;EN = 1;_nop_();_nop_();//??CPtmp = lcdPort;_nop_();//??PQEN = 0;_nop_();}while(tmp&0x80);	
}
*/
//写字符串函数
void Dip_Str(uint8 *Str)
{while(*Str !='\0'){Write_Data(*Str++);}	
}//字定义字符
void Ziding(void)
{uint8 i;for(i=0;i<8;i++){Write_Com(0x40+i);Write_Data(Table[i]);}Write_Com(0x80);Write_Data(0x00);
}

//lcd1602.h

#ifndef __LCD1602_H__
#define __LCD1602_H__
//写指令函数
void Write_Com(uint8 comm);
//写数据函数
//void Write_Data(int data);
void Write_Data(uint8 Data);
bit Busy_Check();
void Lcd1602_Init();
void Dip_Str(uint8 *Str);
void Ziding(void);
#endif

//config.h

#ifndef __CONFIG_H__
#define __CONFIG_H__
//包含头文件
#include<reg52.h>
#include<absacc.h>
#include<intrins.h>//类型定义
#define uint8 unsigned char 
//typedef unsigned char uint8;
//lcd1602引脚配置
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
#endif

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部