51单片机:proteus仿真1602LCD的显示

本文介绍了51单片机使用Proteus仿真1602LCD显示的过程,包括1602LCD的引脚定义、CGRAM和DDRAM的区别、内部指令解析以及在Proteus中的仿真注意事项。文中还提供了关键模块的介绍,如自定义函数、字模定义和主函数,并强调了8条数据线上设置上拉电阻的重要性。
摘要由CSDN通过智能技术生成

51单片机:proteus仿真1602LCD的显示

这是我自己用proteus仿真学习了1602的中英文显示后自己的一些感悟和经验总结,欢迎讨论交流。
工程文件下载

1602lcd的介绍

1.引脚定义
在这里插入图片描述
主要要注意RS、RW、E的作用

2.CGRAM,CGROM和DDRAM
在这里插入图片描述CGROM:用于储存最常用的一些字符:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),在keil中可用0x41表示。

CGRAM:看起来有16个字节可供使用,但是CGRAM字符码规定0-2位为地址,第3位就为无效,4-7位为零,所以实际上只有0000X0000-0000X111(X为无效位,但表中有1,0)一共八个字节,也就是说如果一个自定义汉字占4个字节的话(一个字节代表DDRAM上的一个字模),CGRAM一次最多只能显示两个自定义汉字.
在这里插入图片描述
DDRAM:代表了放置符号的位置,例如要在图上00位置显示一个阿拉伯数字1该怎么做呢,首先确定显示的位置,如果把位置定义为00000000是错误的,因为写入显示地址时,要求最高位D7恒为高电平1,所以第一行第一个字符的位置是00000000B+1000000B=10000000B(0x80),同理,第二行第一列的字符位置为11000000B(0xc0),再把数字1的CGROM码00110001B(0x31)送入DDRAM地址即可

3.字模
在这里插入图片描述
一个字模由7x5的点阵组合而成,是1602lcd显示的最小单位,一块1602lcd就是由16x2个字模组合而成。
如图A的显示可用一个字模完成,但是对于复杂的汉字,就可能需要4个字模拼接而成。

4.内部指令介绍
在这里插入图片描述
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 DL:高电平时为8位总线,低电平时为4位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。

指令主要体现在1602lcd初始化的过程中

主要模块介绍

1.自定义函数

void delay(uint n)    //延时函数                           
{
    
    uint x,y; 
    for(x=n;x>0;x--) 
            for(y=110;y>0;y--); 
} 
void lcd_wcom(uchar com)    //指令写入函数               
{
    
    rs=0; //输入指令
    rw=0; 
    P0=com; 
    delay(5); 
    en=1; 
    en=0; 
} 
void lcd_wdat(uchar dat)  //数据写入函数        
{
    
    rs=1;  //输入数据
    rw=0; 
    P0=dat; 
    delay(5); 
    en=1; 
    en=0; 
} 
void lcd_init()    //1602lcd初始化函数                 
{
    
         lcd_wcom(0x38);  //功能设定指令:1.数据总线8位  2.显示两行  3. 5*8总线字符           
         lcd_wcom(0x0c);   //控制整体显示并且关闭光标        
         lcd_wcom(0x06);   //屏幕上的文字左移或者右移无效          
         lcd_wcom(0x01);  //清显示,光标复位到地址00H位置           
} 

3.字模定义

uchar  code table2[]={
   0x0f,0x09,0x0f,0x09,0x0f,0x09,0x13,0x00,  
                      0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值