项目十二液晶显示器显示电路设计.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《项目十二液晶显示器显示电路设计.pptx》由会员分享,可在线阅读,更多相关《项目十二液晶显示器显示电路设计.pptx(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机单片机C语言应用技术与实践语言应用技术与实践项目项目12 12 液晶显示器显示电路设计液晶显示器显示电路设计 知识目标知识目标 1.1.熟练使用单片机的定时器。熟练使用单片机的定时器。 2.2.熟练运用字符串、数组、指针。熟练运用字符串、数组、指针。 能力目标能力目标: 1.1.掌握掌握LCM1602LCM1602液晶模块显示西文的原理及使用方法。液晶模块显示西文的原理及使用方法。 2.2.掌握用掌握用8 8位数据模式及位数据模式及4 4位数据模式驱动位数据模式驱动LCM1602LCM1602液晶的液晶的C C语言语言编程方法编程方法 3.3.掌握用掌握用LCM1602LCM1602液晶
2、模块显示数字的液晶模块显示数字的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. 单
3、片机与单片机与LCM1602接口电路设计接口电路设计EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U1AT89S51RP110K12345678910111213141516J1LCD1602VCCVCCVCCRSRWERSRWE图图12.112.18 8位数据显示模式电路原理
4、图位数据显示模式电路原理图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 D
5、PORT 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 分析任务分
6、析任务/*函数声明*/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
7、(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) mDel
8、ay(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; R
9、W=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 分析任务分析任务/
10、*送控制字子程序(不检测忙信号)*/参数: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. 参
11、考源程序参考源程序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; wh
12、ile(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语言编辑软件,建立工程项目,在编辑区中输入上面的源程序,进行编译,得到目标代码
13、。运行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 x
14、Pos, 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;/读写控制选择s
15、bit 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秒后再显示第一屏的内
16、容,如此循环。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/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P26
17、27P2728PSEN29ALE/P30TXD11RXD10U1RP110K12345678910111213141516J1VCCVCCVCCRSERSELCD1602AT89S51RW图12.54位数据显示模式电路原理图任务任务2 LCM1602液晶液晶4位数据显示模式的设计位数据显示模式的设计 液晶显示器接成4位数据显示模式,因此单片机在给LCM1602液晶发送命令数据或发送显示数据时,必须分两次完成,先发送数据的高四位,再发送数据的低四位。由于液晶的RW直接接地,因此单片机在发送命令或发送显示数据时不用检测忙碌标示,只要延时适当的时间即可。 任务任务2 LCM1602液晶液晶4位数据显
18、示模式的设计位数据显示模式的设计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
19、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位数据显示模式的设计位数据
20、显示模式的设计/*液晶初始化函数*/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);
21、 /清屏 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 add
22、ress; 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
23、,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; /
24、写低四位 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
25、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) /
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 十二 液晶显示器 显示 电路设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内