- #include"reg51.h"//51单片机头文件
- /*相关引脚的定义*///该部分可以自己去定义,我是学习51单片机时选择普中单片机开发板。
- sbit rs=P2^6; //命令/数据选择
- sbit rw=P2^5; //读写口
- sbit e=P2^7; //锁存控制
- sbit tou=P2^4;
- /*函数声明*/
- void LCD1602_SetArea(unsigned char X,unsigned char Y);
- void LCD1602_ShowChar(unsigned char X,unsigned char Y,unsigned char Char);
- void LCD1602_ShowString(unsigned char X,unsigned char Y,unsigned char *String);
- //void LCD1602_ShowArray(unsigned char X,unsigned char Y,unsigned char *Array,unsigned char Count);
- //void LCD1602_ShowNumber_Integer(unsigned char X,unsigned char Y,int IntegerNumber,unsigned char Count);
- void InitLCD();
- /*延迟函数的定义*/
- void DELAY_nUS(unsigned int Time)
- {
- while(--Time);
- }
- void DELAY_nMS(unsigned int time)
- {
- unsigned int i,j;
- for(i=0;i<time;i++)
- for(j=0;j<939;j++);
- }
- //向LCD写一命令
- void wcode(unsigned char t)
- {
- rs=0; // 写的是命令
- rw=0; // 写状态
- e=1; //使能
- P0=t; //写入命令
- DELAY_nMS(2); //等待写入,如果时间太短,会导致液晶无法显示
- e=0; //数据的锁定
- }
- //向LCD写一数据
- void wdata(unsigned char t)
- {
- rs=1; // 写的是数据
- rw=0; // 写状态
- e=1; //使能
- P0=t; //写入数据
- DELAY_nMS(2); //等待写入,如果时间太短,会导致液晶无法显示
- e=0; //数据的锁定
- }
- //LCD设置坐标位置
- void LCD1602_SetArea(unsigned char X,unsigned char Y)
- {
- switch(Y)
- {
- case 0: wcode(0x80 + X); break;
- case 1: wcode(0xC0 + X); break;
- default:break;
- }
- }
- //LCD显示字符
- void LCD1602_ShowChar(unsigned char X,unsigned char Y,unsigned char Char)
- {
- LCD1602_SetArea(X,Y); // 设置显示坐标
- wdata(Char); // 显示指定字符
- }
- //LCD显示字符串
- void LCD1602_ShowString(unsigned char X,unsigned char Y,unsigned char *String)
- {
- LCD1602_SetArea(X,Y); // 设置显示坐标
- while(*String)
- {
- wdata(*String);
- String++;
- }
- }
- //LCD初始化
- void InitLCD()
- {
- wcode(0x01); //清屏
- wcode(0x06); //输入方式控制,增量光标不移位
- wcode(0x0e); //显示开关控制
- wcode(0x38); //功能设定:设置16x2显示,5x7显示,8位数据接口
- }
- /*******************************************************************************
- * 函 数 名 : main()
- * 函数功能 :主函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void main()
- {
- InitLCD();
- LCD1602_ShowString(0,0,"hello world");
- while(tou);
- wcode(0x01); //清屏
- }
复制代码
我这有个lcd1602的代码,你可以参考参考,还有你那个写入数据和使能太快了,可能会出错 |