欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    项目十二液晶显示器显示电路设计.pptx

    • 资源ID:5973617       资源大小:2.08MB        全文页数:71页
    • 资源格式: PPTX        下载积分:50金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要50金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    项目十二液晶显示器显示电路设计.pptx

    单片机单片机C语言应用技术与实践语言应用技术与实践项目项目12 12 液晶显示器显示电路设计液晶显示器显示电路设计 知识目标知识目标 1.1.熟练使用单片机的定时器。熟练使用单片机的定时器。 2.2.熟练运用字符串、数组、指针。熟练运用字符串、数组、指针。 能力目标能力目标: 1.1.掌握掌握LCM1602LCM1602液晶模块显示西文的原理及使用方法。液晶模块显示西文的原理及使用方法。 2.2.掌握用掌握用8 8位数据模式及位数据模式及4 4位数据模式驱动位数据模式驱动LCM1602LCM1602液晶的液晶的C C语言语言编程方法编程方法 3.3.掌握用掌握用LCM1602LCM1602液晶模块显示数字的液晶模块显示数字的C C语言编程方法。语言编程方法。 任务任务1 LCM16021 LCM1602液晶液晶8 8位数据显示模式的设计位数据显示模式的设计 1. 单片机与单片机与LCM1602接口电路设计接口电路设计用AT89S51驱动LCM1602液晶显示器,使液晶屏在第一行显示“welcome AT89S51!,在第二行显示LCD1602test.OK。1.2 1.2 分析任务分析任务1.1 1.1 提出任务提出任务1.2 分析任务分析任务 用单片机的P0口接LCM1602液晶显示器的8位数据线,P2.5接RS,P2.6接RW,P2.7接E。电路原理图如图12.1所示。1. 单片机与单片机与LCM1602接口电路设计接口电路设计EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U1AT89S51RP110K12345678910111213141516J1LCD1602VCCVCCVCCRSRWERSRWE图图12.112.18 8位数据显示模式电路原理图位数据显示模式电路原理图1.2 分析任务分析任务软件程序设计要严格按照LCM1602液晶显示器的读操作时序和写操作时序来编写。单片机所用的晶体振荡器频率不同,在编写延时程序时延时参数要作适当的修改,使之符合LCM1602的时序要求。编写程序时尽量按照模块化的编程思想进行编程。其程序流程如图12.2所示。 2. 2. 软件程序设计软件程序设计图图12.212.28 8位数据显示模式显示流程图位数据显示模式显示流程图1.2 分析任务分析任务#include #include #define uchar unsigned char#define uint unsigned int#define DPORT P0 /数据接口sbit RW=P26; /读写控制选择sbit E=P27;/便能端sbit RS=P25;/数据寄存器与指令寄存器选择控制端sbit RS=P25;/数据寄存器与指令寄存器选择控制端uchar *s=welcome AT89S51!;uchar *s1=LCD1602test.OK;const uchar NoDisp=0; /无显示const uchar NoCur=1; /有显示无光标const uchar CurNoFlash=2; /有光标不闪烁const uchar CurFlash=3; /有光标且闪烁3. 3. 参考源程序参考源程序1.2 分析任务分析任务/*函数声明*/void LcdPos(uchar, uchar);/确定光标位置void LcdWd(uchar); /写字符void LcdWc(uchar); /送控制字(检测忙)void LcdWcn(uchar); /送控制字(不检测忙)void mDelay(uint); /延时m毫秒void WaitIdle(); /检测LCD控制器状态/*在指定行列显示指定字符*/参数:xPox 光标所在列 yPos 光标所在行 c 待显示字符void WriteChar(uchar c, uchar xPos, uchar yPos) LcdPos(xPos, yPos); LcdWd(c);3. 3. 参考源程序参考源程序1.2 分析任务分析任务/*显示字符串*/参数: *s 指向待显示字符串;yPos光标所在行;xPos光标所在列void WriteString(uchar *s, uchar xPos, uchar yPos) uchar i; if(*s=0) /遇到字符串结束 return; for(i=0;i+) if(*(s+i)=0) break; WriteChar(*(s+i), xPos, yPos); xPos+; if(xPos15) break; /*设置光标*/参数:Para 4种光标类型void SetCur(uchar Para) mDelay(2); switch(Para) case 0: LcdWc(0 x08); /关显示 break; case 1: LcdWc(0 x0c); /开显示无光标 break; 3. 3. 参考源程序参考源程序1.2 分析任务分析任务 case 2: LcdWc(0 x0e); /开显示光标不闪 break; case 3: LcdWc(0 x0f); /开显示光标闪 break; default: break; /*清屏*/void ClrLcd() LcdWc(0 x01);/*正常读/写操作前检测LCD控制器状态*/void WaitIdle() uchar tmp; RS=0; RW=1; E=1; _nop_(); for(;) tmp=DPORT; tmp&=0 x80; if(tmp=0) break; E=0;3. 3. 参考源程序参考源程序1.2 分析任务分析任务/*写字符*/参数:c待写字符void LcdWd(uchar c) WaitIdle(); RS=1; RW=0; DPORT=c; /数据送端口 E=1; _nop_(); _nop_(); E=0;/*送控制字子程序(检测忙信号)*/功能:。参数:c控制字void LcdWc(uchar c) WaitIdle(); LcdWcn(c);3. 3. 参考源程序参考源程序1.2 分析任务分析任务/*送控制字子程序(不检测忙信号)*/参数:c控制字void LcdWcn(uchar c) RS=0; RW=0; DPORT=c; E=1; _nop_(); E=0;/*设置第(xPos,yPos)个字符的地址*/参数:xPos为显示第几列,yPos为显示第几行void LcdPos(uchar xPos, uchar yPos) uchar tmp; xPos&=0 x0f; /x:0-15 yPos&=0 x01; /y:0-1 if(yPos=0) /显示第1行 tmp=xPos; else tmp=xPos+0 x40; tmp|=0 x80; LcdWc(tmp);3. 3. 参考源程序参考源程序1.2 分析任务分析任务/*复位函数*/void RstLcd() mDelay(15); DPORT=0; LcdWcn(0 x38); /显示模式设置 mDelay(5); LcdWcn(0 x38); /显示模式设置 mDelay(5); LcdWcn(0 x38); /显示模式设置 mDelay(5); LcdWc(0 x08); /显示关闭 LcdWc(0 x01); /显示清屏 LcdWc(0 x06); /显示移动位置 LcdWc(0 x0c); /显示开及光标设置 /*延时函数*/ / 功能: void mDelay(uint j) uchar i=0; while(j-)for(i=0;i124;i+) ; 3. 3. 参考源程序参考源程序1.2 分析任务分析任务/*主程序*/void main() uchar xPos, yPos; xPos=0; yPos=0; RstLcd(); ClrLcd(); SetCur(CurFlash); /开光标闪 WriteString(s,xPos,yPos); xPos=0; yPos=1; WriteString(s1,xPos,yPos); while(1); 3. 3. 参考源程序参考源程序1.2 分析任务分析任务运行C语言编辑软件,建立工程项目,在编辑区中输入上面的源程序,进行编译,得到目标代码。运行Proteus,在编辑窗口中绘制如图12.3所示的电路图并存盘。然后选中单片机AT89S51,加载编译得到的目标代码,点击模拟调试按钮的运行按钮“”,进入调试状态。此时可看到如图12.3所示的效果。连接实际的LCM1602液晶显示器,运行双龙下载软件SL ISP下载程序到单片机中,可以看到液晶显示器显示如图12.4所示内容。1.3 1.3 程序调试与电路仿真程序调试与电路仿真1.2 分析任务分析任务/*延时函数*/ 功能:void mDelay(uint j) uchar i=0; while(j-)for(i=0;i124;i+) ;/*主程序*/void main() uchar xPos, yPos; xPos=0; yPos=0; RstLcd(); ClrLcd(); SetCur(CurFlash); /开光标闪 WriteString(s,xPos,yPos); xPos=0; yPos=1; WriteString(s1,xPos,yPos); while(1); 1.3 1.3 程序调试与电路仿真程序调试与电路仿真1.2 分析任务分析任务#include #include #define uchar unsigned char#define uint unsigned int#define DPORT P0 /数据接口sbit RW=P26;/读写控制选择sbit E=P27; /便能端sbit RS=P25;/数据寄存器与指令寄存器选择控制端uchar *s=welcome AT89S51!;uchar *s1=LCD1602test.OK 1.2 分析任务分析任务图12.3 仿真运行效果图1.2 分析任务分析任务图图12.4 12.4 实物运行效果图实物运行效果图任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计 用AT89S51驱动LCM1602液晶显示器,使液晶屏第一屏显示Welcome!、AT89S51! 5秒后第二屏显示happy new year!、”2009.2 Test OK!”,5秒后再显示第一屏的内容,如此循环。2.1 2.1 提出任务提出任务用单片机的P0.4P0.7接LCM1602液晶显示器数据线的DB4DB7,P0.2接RS, P0.3接E。电路原理图如图12.5所示。2.2 2.2 分析任务分析任务1. 1. 单片机与单片机与LCM1602LCM1602接口电路设计接口电路设计EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U1RP110K12345678910111213141516J1VCCVCCVCCRSERSELCD1602AT89S51RW图12.54位数据显示模式电路原理图任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计 液晶显示器接成4位数据显示模式,因此单片机在给LCM1602液晶发送命令数据或发送显示数据时,必须分两次完成,先发送数据的高四位,再发送数据的低四位。由于液晶的RW直接接地,因此单片机在发送命令或发送显示数据时不用检测忙碌标示,只要延时适当的时间即可。 任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计2. 2. 软件程序设计软件程序设计任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计#include #include#define LCD_EN_PORT P0#define LCD_RS_PORT P0#define LCD_DATA_PORT P0#define LCD_EN P0_3#define LCD_RS P0_2 /*函数声明*/void LCD_init (void);/液晶初始化函数void LCD_en_write (void);/液晶使能函数void LCD_write_char (unsigned char command,unsigned char Data);/写命令或写数据函数void LCD_set_xy (unsigned char x, unsigned char y); /设置显示位置函数void LCD_write_string (unsigned char X,unsigned char Y,unsigned char *s);/写字符串函数void delay_nus (unsigned int n);/延时函数void delay_nms (unsigned int n);/延时函数3. 3. 参考源编辑参考源编辑任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计/*液晶初始化函数*/void LCD_init(void) delay_nms(15); LCD_DATA_PORT=0; LCD_write_char(0 x28,0); delay_nms(5); LCD_write_char(0 x28,0); delay_nms(5); LCD_write_char(0 x28,0); delay_nms(5); LCD_write_char(0 x28,0); /4位显示 delay_nms(5); LCD_write_char(0 x0c,0); /显示开 delay_nms(5); LCD_write_char(0 x01,0); /清屏 delay_nms(5);/*写字符串函数*/参数:X为显示在第几列,Y为显示在第几行,s为待显示字符串void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) LCD_set_xy( X, Y ); /写地址 while (*s) / 写显示字符 LCD_write_char( 0, *s );s +; 3. 3. 参考源编辑参考源编辑/*设置显示地址函数*/ void LCD_set_xy( unsigned char x, unsigned char y ) unsigned char address; if (y = 0) address = 0 x80 + x; else address = 0 xc0 + x; LCD_write_char( address, 0 ); /*液晶使能函数*/void LCD_en_write(void) LCD_EN=1; delay_nus(2); LCD_EN=0;任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计3. 3. 参考源编辑参考源编辑/*写命令和写数据函数*/参数:command=0,写数据,command!=0写命令,void LCD_write_char(unsigned char command,unsigned char Data) unsigned char command_temp,data_temp; command_temp=command; data_temp=Data; delay_nus(3); if(command=0) LCD_RS=1; /RS=1,选择数据寄存器 LCD_DATA_PORT&=0X0f; LCD_DATA_PORT|=data_temp&0 xf0; /写高四位 LCD_en_write(); data_temp=data_temp4; LCD_DATA_PORT&=0X0f; LCD_DATA_PORT|=data_temp&0 xf0; /写低四位 LCD_en_write(); else LCD_RS=0; /RS=0,选择指令寄存器任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计3. 3. 参考源编辑参考源编辑任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计 LCD_DATA_PORT&=0X0f; LCD_DATA_PORT|=command_temp&0 xf0; /写高四位 LCD_en_write(); command_temp=command_temp4; LCD_DATA_PORT&=0 x0f; LCD_DATA_PORT|=command_temp&0 xf0; /写低四位 LCD_en_write(); /*延时函数*/系统时钟:12MHZvoid delay_nus(unsigned int n) /N us延时函数 unsigned int i=0; for (i=0;in;i+) _nop_(); 3. 3. 参考源编辑参考源编辑 void delay_nms(unsigned int n) /N ms延时函数 unsigned char i=0; while(n-) for (i=0;i125;i+); /*主函数*/void main(void) LCD_RS=1; LCD_EN=1; LCD_init(); while(1) /循环 LCD_write_char(0 x01,0); delay_nms(10);任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计3. 3. 参考源编辑参考源编辑 LCD_write_string(0,0,Welcome!); LCD_write_string(0,1,AT89S51!); delay_nms(5000); LCD_write_string(0,0,happy new year!); LCD_write_string(0,1,2009.2 Test OK!); delay_nms(5000); 3. 3. 参考源编辑参考源编辑任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计先按图12.5连接好硬件电路。运行C语言编辑软件,建立工程项目,在编辑区中输入上面的源程序,进行编译,得到目标代码。用双龙SLISP下载软件把目标代码下载到单片机中。由于单片机的运行速度比液晶的快,所以程序下载后可能会出现液晶没有显示或显示乱码的现象,只要按一下单片机的复位键便可稳定的显示。稳定显示后的效果如12.6所示。 2.3 2.3 程序调试程序调试第一屏显示内容第二屏显示内容图12.6实物运行效果图任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计3.13.1提出任务提出任务用用AT89S51AT89S51单片机设计一个单片机设计一个2424小时时钟,用小时时钟,用LCM1602LCM1602液晶显示器显液晶显示器显示计时时间。示计时时间。3.23.2分析任务分析任务1.1.单片机与单片机与LCM1602LCM1602接口电路设计接口电路设计硬件电路采用图硬件电路采用图12.512.5所示的电路。所示的电路。 任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计要使LCM1602液晶显示器显示出数字,必须把数字09变换成ASCII码。方法是用一个函数将数字转换成ASCII码,存放在字符型数组中,然后把字符型数组的ASCII码显示出来。从ASCII码表中可以看出,要把数字09转换成ASCII码,只要把数字09分别加上十六进制数0 x30就行了。参考源程序中的BCDtostring(unsigned char i,unsigned char j,unsigned char k,unsigned char *p);就是用来将数字09转换成相应的ASCII码的函数,在主程序中调用它就可以了。在参考源程序中用定时器T0来计时,定时器0工作在方式2,定时器溢出中断周期为250us,中断累计4000次(即1s)对秒计数值进行加1操作,满60s时对分进行加1操作,満60分时对时进行加1操作,満24小时时钟清0,从新开始新的循环。2.2.软件程序设计软件程序设计任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计#include #include#define LCD_EN_PORT P0#define LCD_RS_PORT P0#define LCD_DATA_PORT P0#define LCD_EN P0_3#define LCD_RS P0_2unsigned char Data1=0,0,0,0,0,0,0,0,0;unsigned char hour=12,min=10,sec=59;/设置时间计时初始值/*函数声明*/void LCD_init (void);/液晶初始化函数void LCD_en_write (void);/液晶使能函数void LCD_write_char (unsigned char command,unsigned char Data);/写命令或写数据函数void LCD_set_xy (unsigned char x, unsigned char y); /设置显示位置函数void LCD_write_string (unsigned char X,unsigned char Y,unsigned char *s);/写字符串函数void delay_nus (unsigned int n);/延时函数void delay_nms (unsigned int n);/延时函数3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计/*液晶初始化函数*/void LCD_init(void) delay_nms(15); LCD_DATA_PORT=0; LCD_write_char(0 x28,0); delay_nms(5); LCD_write_char(0 x28,0); delay_nms(5); LCD_write_char(0 x28,0); delay_nms(5); LCD_write_char(0 x28,0); /4位显示 delay_nms(5); LCD_write_char(0 x0c,0); /显示开 delay_nms(5); LCD_write_char(0 x01,0); /清屏 delay_nms(5);3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计/*写字符串函数*/参数:X为显示在第几列,Y为显示在第几行,s为待显示字符串void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) LCD_set_xy( X, Y ); /写地址 while (*s) / 写显示字符 LCD_write_char( 0, *s );s +; /*设置显示地址函数*/ void LCD_set_xy( unsigned char x, unsigned char y ) unsigned char address; if (y = 0) address = 0 x80 + x; else address = 0 xc0 + x; LCD_write_char( address, 0 ); 3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计/*液晶使能函数*/void LCD_en_write(void) LCD_EN=1; delay_nus(2); LCD_EN=0;/*写命令和写数据函数*/参数:command=0,写数据,command!=0写命令,void LCD_write_char(unsigned char command,unsigned char Data) unsigned char command_temp,data_temp; command_temp=command; data_temp=Data; delay_nus(3); if(command=0) LCD_RS=1; /RS=1,选择数据寄存器 LCD_DATA_PORT&=0X0f; LCD_DATA_PORT|=data_temp&0 xf0; /写高四位 LCD_en_write(); data_temp=data_temp4; LCD_DATA_PORT&=0X0f;3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计 LCD_DATA_PORT|=data_temp&0 xf0; /写低四位 LCD_en_write(); else LCD_RS=0; /RS=0,选择指令寄存器 LCD_DATA_PORT&=0X0f; LCD_DATA_PORT|=command_temp&0 xf0; /写高四位 LCD_en_write(); command_temp=command_temp4; LCD_DATA_PORT&=0 x0f; LCD_DATA_PORT|=command_temp&0 xf0; /写低四位 LCD_en_write(); /*延时函数*/系统时钟:12MHZvoid delay_nus(unsigned int n) /N us延时函数 unsigned int i=0; for (i=0;in;i+) _nop_(); void delay_nms(unsigned int n) /N ms延时函数 unsigned char i=0; while(n-) for (i=0;i125;i+); 3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计/*将十进数转换为ASCII表中对应的值*/void BCDtostring(unsigned char i,unsigned char j,unsigned char k,unsigned char *p)p0=i/10+0 x30; p1=i%10+0 x30; p2=:; p3=j/10+0 x30; p4=j%10+0 x30; p5=:; p6=k/10+0 x30; p7=k%10+0 x30; /*定时器0初始化函数*/void TIMER0_init()TMOD=0 x02;TH0=0 x06;TL0=0 x06;IE=0 x82;TR0=1;3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计/*定时器0中断函数*/void TIMER0_OVER(void) interrupt 1 unsigned int count; / 中断次数计数值 count+; if(count=4000) count=0; sec+;/秒加1 if(sec=60) sec=0; min+;/分加1 if(min=60) min=0; hour+;/ 时加1 if(hour=24) hour=0; /时清0 3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计 /*主函数*/ void main(void) TIMER0_init(); LCD_RS=1; LCD_EN=1; LCD_init(); while(1) /循环 LCD_write_char(0 x01,0); /清除液晶屏 delay_nms(10);BCDtostring(hour,min,sec,Data1); /将时、分、秒转换为ASCII码 LCD_write_string(0,0,Data1); /显示时、分、秒 delay_nms(500); 1 3 3、参考源程序、参考源程序任务任务3 LCM1602液晶显示数字的设计液晶显示数字的设计先按图先按图12.5连接好硬件电路。运行连接好硬件电路。运行C语言编辑软件,建立工程项目语言编辑软件,建立工程项目,在编辑区中输入上面的源程序,进行编译,得到目标代码。用双龙,在编辑区中输入上面的源程序,进行编译,得到目标代码。用双龙SLISP下载软件把目标代码下载到单片机中。由于单片机的运行速下载软件把目标代码下载到单片机中。由于单片机的运行速度比液晶的快,所以程序下载后可能会出现液晶没有显示或显示乱码度比液晶的快,所以程序下载后可能会出现液晶没有显示或显示乱码的现象,只要按一下单片机的复位键便可稳定的显示出时间。液晶稳的现象,只要按一下单片机的复位键便可稳定的显示出时间。液晶稳定显示后的效果如定显示后的效果如12.7所示。所示。 1.31.3程序调试程序调试图图12.712.7实物运行效果图实物运行效果图 知识链接知识链接 LCM1602液晶点阵字符显示器用57点阵图形来显示西文字符,可显示2行16个西文字符。单片机通过写控制方式访问驱动控制器来实现对显示屏的控制。LCM的主要由三部分组成:LCD控制器、LCD控制器、LCD显示装置。如图12.8所示。 液晶显示器的基本知识液晶显示器的基本知识一、一、16021602字符型液晶显示模块字符型液晶显示模块(LCM)(LCM)的基本组成的基本组成LCD控制器LCD驱动器LCD显示装置VssVDDVLRSR/WEDB0 DB7图 12.8 LCM的 组 成LED+LED- 知识链接知识链接以HD44780为控制器的1602字符型液晶显示器的引脚排列如图12.9所示。1602字符型液晶显示器的引脚功能说明如表12.1所示。二、二、 LCM1602LCM1602字符型液晶显示器引脚及功能字符型液晶显示器引脚及功能表12.1. 162LCM管脚说明字符LCD 液晶显示和接口 12345678910111213141516VSS VDD VORS R/WEDB0 DB1ADB3DB2DB5DB4DB7DB6KLCD模块模块Vss: +5V电源管脚(Vcc)VDD: 地管脚(GND)Vo: 液晶显示驱动电源(0V5V)字符LCD 液晶显示和接口 12345678910111213141516VSS VDD VORS R/WEDB0 DB1ADB3DB2DB5DB4DB7DB6KLCD模块DB0DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源,本实验中采用的是八位连接方法。字符LCD 液晶显示和接口 12345678910111213141516VSS VDD VORS R/WEDB0 DB1ADB3DB2DB5DB4DB7DB6KLCD模块A:背光控制正电源K:背光控制地字符LCD 液晶显示和接口 12345678910111213141516VSS VDD VORS R/WEDB0 DB1ADB3DB2DB5DB4DB7DB6KLCD模块单片机与LCD模块之间有四种基本操作: 写命令写命令 读状态读状态 写显示数据写显示数据 读显示数据读显示数据字符LCD 液晶显示和接口 12345678910111213141516VSS VDD VORS R/WEDB0 DB1ADB3DB2DB5DB4DB7DB6KLCD模块RSR/W操作操作00写写命令命令操作(初始化、光标定位操作(初始化、光标定位等)等)01读读状态状态操作(读忙标志)操作(读忙标志)10写写数据数据操作(要显示的内容)操作(要显示的内容)11读数据读数据操作(可以把显示存储区操作(可以把显示存储区中的数据反读出来)中的数据反读出来)字符LCD 液晶显示和接口 12345678910111213141516VSS VDD VORS R/WEDB0 DB1ADB3DB2DB5DB4DB7DB6KLCD模块RS:数据和指令选择控制端,RS=0:命令/状态;RS=1:数据R/W:读写控制线,R/W=0:写操作;R/W=1:读操作E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机之间将进行一次数据交换字符LCD 液晶显示和接口 初始化操作 LCD初始工作方式设置显示状态设置清屏返回输入方式设置001DL N F * *设置单片机与LCD接口数据位数DL、显示行数N、字型FDL=1:8位、DL=0:4位; N=1:2行、N=0:1行F=1:510、F=0:57例:00111000B(38H)设置数据位数8位,2行显示,57点阵字符00001DCB设整体显示开关D、光标开关C、光标位的字符闪耀BD=1:开显示;C=0:不显示光标;B=0:光标位字符不闪烁例:00001100B(0CH)打开LCD显示,光标不显示,光标位字符不闪烁清屏命令字01H,将光标设置为第一行第一列000001 I/D S设光标移动方向并确定整体显示是否移动I/D=1:增量方式右移、I/D=0:减量方式左移S=1:移位、S=0:不移位例:00000110B(06H)设置光标增量方式右移,显示字符不移动字符LCD 液晶显示和接口 读状态操作 状态字的最高位的BF为忙标志位,1表示LCD正在忙,0表示不忙。通过判断最高位BF的0、1状态,就可以知道LCD当前是否处于忙状态,如果LCD一直处于忙状态,则继续查询等待,否则进行下面的操作。查询忙状态程序段如下:do i=lcd_r_start(); / 调用读状态函数,读取LCD状态字 i&=0 x80; / 采用与操作屏蔽掉低7位 delay(2);/ 延时 while(i!=0); / LCD忙,继续查询,否则退出循环字符LCD 液晶显示和接口 写命令操作 LCD上电时,都必须按照一定的时序对LCD进行初始化操作,主要任务是设置LCD的工作方式、显示状态、清屏、输入方式、光标位置等。 字符LCD 液晶显示和接口 写命令操作 void lcd_w_cmd(unsigned char com) unsigned char i; do / 查LCD忙操作 i=lcd_r_start(); / 调用读状态字函数 i=i&0 x80; / 与操作屏蔽掉低7位 delay(2); while(i!=0); / LCD忙,继续查询,否则退出循环 RW=0; delay1(); RS=0; / RW=1,RS=0,写LCD命令字 delay1(); E=1; /E端时序 delay1(); P1=com; /将com中的命令字写入LCD数据口 delay1(); E=0; delay1(); RW=1; delay(255); 知识链接知识链接表12.1. 162LCM管脚说明管脚编号名称方向功能操作1VSS电源电源接地0V2VDD电源电源正极5V3VL电源LCD亮度调整电压输入电压越低,屏幕越亮4RS输入寄存器选择信号1选择数据寄存器0选择指令寄存器5R/W输入Read/Write1Read/读取0Write/写入6E输入LCD/响应信号1响应LCD0禁用LCD710DB0DB3输入/输出低四位总线可用4bit输入数据、命令及地址1114DB4DB7输入/输出高四位总线配合DB0DB3的8位输入数据、命令及地址15LED输入背光源正极5V16LED输入背光源负极0V 知识链接知识链接 用单片机来控制LCD模块,方法十分方便。LCD模块其内部可以看成两组寄

    注意事项

    本文(项目十二液晶显示器显示电路设计.pptx)为本站会员(修****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开