失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C51单片机实验——LCD 1602液晶显示器

C51单片机实验——LCD 1602液晶显示器

时间:2019-06-08 02:31:26

相关推荐

C51单片机实验——LCD 1602液晶显示器

实验名称:利用1602实现数字时钟

实验环境:普中实验系统;Keil μVision 4软件;

实验目的:

(1)掌握1602液晶显示器的工作原理和接口方法。

(2)利用本课程前面所学的知识,实现数字时钟功能。

硬件连线:

LCD1602的RS、R/W*和E这3个引脚分别接在P2.0、P2.1和P2.2引脚

数据口D0-D7接p3.0-3.7

实验主要代码:

Main.c

/*************************************************************************************** LCD1602液晶显示实验 *实现现象:下载程序后插上LCD1602液晶在开发板上,即可显示注意事项:如果不想让点阵模块显示,可以将74HC595模块上的JP595短接片拔掉。 ***************************************************************************************/#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器#include "lcd.h"typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;u8 Disp1[]="hello world ";u8 Disp2[]="12 03 happyday";/******************************************************************************** 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*******************************************************************************/void main(void){u8 i;LcdInit();if(i<40){LcdWriteCom(0x80);}else{LcdWriteCom(0xC0);}for(i=0;i<40;i++){LcdWriteData(Disp1[i]);}for(i=40;i<80;i++){LcdWriteData(Disp2[i-40]);}while(1);}

Lcd.c

#include "lcd.h"/******************************************************************************** 函 数 名 : Lcd1602_Delay1ms* 函数功能 : 延时函数,延时1ms* 输 入 : c* 输 出 : 无* 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。*******************************************************************************/void Lcd1602_Delay1ms(uint c) //误差 0us{uchar a,b;for (; c>0; c--){for (b=199;b>0;b--){for(a=1;a>0;a--);}}}/******************************************************************************** 函 数 名 : LcdWriteCom* 函数功能 : 向LCD写入一个字节的命令* 输 入 : com* 输 出 : 无*******************************************************************************/#ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时void LcdWriteCom(uchar com) //写入命令{LCD1602_E = 0;//使能LCD1602_RS = 0; //选择发送命令LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = com;//放入命令Lcd1602_Delay1ms(1);//等待数据稳定LCD1602_E = 1;//写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E = 0;}#elsevoid LcdWriteCom(uchar com) //写入命令{LCD1602_E = 0; //使能清零LCD1602_RS = 0; //选择写入命令LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = com;//由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = com << 4; //发送低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;}#endif/******************************************************************************** 函 数 名 : LcdWriteData* 函数功能 : 向LCD写入一个字节的数据* 输 入 : dat* 输 出 : 无*******************************************************************************/ #ifndef LCD1602_4PINS void LcdWriteData(uchar dat)//写入数据{LCD1602_E = 0;//使能清零LCD1602_RS = 1;//选择输入数据LCD1602_RW = 0;//选择写入LCD1602_DATAPINS = dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E = 0;}#elsevoid LcdWriteData(uchar dat)//写入数据{LCD1602_E = 0; //使能清零LCD1602_RS = 1; //选择写入数据LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = dat;//由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4; //写入低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;}#endif/******************************************************************************** 函 数 名 : LcdInit()* 函数功能 : 初始化LCD屏* 输 入 : 无* 输 出 : 无*******************************************************************************/ #ifndefLCD1602_4PINSvoid LcdInit() //LCD初始化子程序{LcdWriteCom(0x38); //开显示LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点LcdWriteCom(0x28);}#elsevoid LcdInit() //LCD初始化子程序{LcdWriteCom(0x32); //将8位总线转为4位总线LcdWriteCom(0x28); //在四位线下的初始化LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点LcdWriteCom(0x28);}#endif

实验结果与心得:

实验效果:LCD液晶显示器第一行显示hello world ,第二行显示12 03 happyday字样

心得:1.单片机控制LCD 1602显示字符,只需将待显示字符的ASCII码写入显示数据存储器(DDRAM),内部控制电路就可将字符在显示器上显示出来。

2.LCD 1602的引脚包括8条数据线、3条控制线和3条电源线。

3.让液晶显示器显示字符,首先对其进行初始化设置:对有、无光标、光标移动方向、光标是否闪烁及字符移动方向等进行设置,才能获得所需显示效果。

4.命令6:功能设置命令。N—显示器行数选择控制位。0:单行显示,1:两行显示。

5.命令8:DDRAM地址设置。命令格式:80H+地址码。第二行格式80H+40H+地址码即0xC0H为起始地址

如果觉得《C51单片机实验——LCD 1602液晶显示器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。