LCD(1602)显示屏控制系统设计A

合集下载

LCD1602液晶显示器

LCD1602液晶显示器

实验11:1602液晶显示屏显示(字符型液晶显示器)字符型液晶显示器用于数字、字母、符号并可显示少量自定义符号。

这类液晶显示器通常有16根接口线,下表是这16根线的定义。

字符型液晶接口说明编号符号引脚说明编号符号引脚说明1 Vss 电源地 9 D2 数据线22 Vdd 电源正 10 D3 数据线33 VL 液晶显示偏压信号 11 D4 数据线44 RS 数据/命令选择端 12 D5 数据线55 R/W 读/ 写选择端 13 D6 数据线66 E 使能信号 14 D7 数据线77 D0 数据线0 15 BLA 背光源正极8 D1 数据线1 16 BLK 背光源负极(本学习板配的内部已经接地)下图是字符型液晶显示器与单片机的接线图。

这用了P0口的8根线作为液晶显示器的数据线,用P20、P21、P22做为3根控制线。

字符型液晶显示器与单片机的接线图字符型液晶显示器的使用,字符型液晶显示器一般采用HD44780芯片做为控制器的。

1.字符型液晶显示器的驱动程序这个驱动程序适用于1602型字符液晶显示器,1) 初始化液晶显示器命令(RSTLCD)设置控制器的工作模式,在程序开始时调用。

参数:无。

2) 清屏命令(CLRLCD)清除屏幕显示的所有内容参数:无3) 光标控制命令(SETCUR)用来控制光标是否显示及是否闪烁参数:1个,用于设定显示器的开关、光标的开关及是否闪烁。

4) 写字符命令(WRITECHAR)在指定位置(行和列)显示指定的字符。

参数:共有3个,即行值、列值及待显示字符,分别存放在XPOS、YPOS和A中。

其中行值与列值均从0开始计数,A中可直接写入字符的符号,编译程序自动转化为该字符的ASCII值。

5) 字符串命令(WRITESTRING)在指定位置显示指定的一串字符。

参数:共有3个,即行值、列值和R0指向待显示字符串的内存首地址,字符串须以0结尾。

如果字符串的长度超过了从该列开始可显示的最多字符数,则其后字符被截断,并不在下行显示出来。

基于单片机的1602液晶显示电路设计

基于单片机的1602液晶显示电路设计

本科毕业论文(设计)题目:基于单片机的1602液晶显示电路设计学生姓名:学号:系别:理工部专业:电气工程及其自动化入学时间:2012年09月导师姓名:职称/学位:基于单片机的1602液晶显示电路设计摘要本文是一篇介绍利用AT89S52单片机和LCD1602液晶显示屏设计一种液晶显示电路并编程实现信息的显示功能。

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

1602LCD是指显示的内容为16*2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

从AT89S52单片机与LCD1602液晶显示器性能特点出发,实现两者接口的衔接设计。

经过多次的调试, 使得该设计取得了比较满意的结果, 且系统软硬件设计简单方便、稳定可靠, 可广泛应用于智能化仪器仪表及各种宣传场所, 为嵌入式控制系统提供高灵活、高性价比的解决方案。

关键词:AT89S52单片机;LCD1602液晶显示器;复位电路;时钟电路目录第一章前言 (2)1.1 研究现状 (2)1.2 研究意义 (2)第二章系统硬件电路设计 (3)2.1 AT89S52单片机最小系统 (3)2.1.1 主要性能 (3)2.1.2 功能 (3)2.1.3 引脚说明及实物图 (4)2.2 LCD1602液晶显示器 (7)2.2.1功能 (7)2.2.2 特点 (7)2.2.3 引脚 (7)2.3 复位电路 (9)2.4 时钟电路 (9)第三章软件设计 (10)3.1 软件设计思路 (10)3.1.1 Altium Designer (11)3.1.2 keil (11)3.1.3 AVR_fighter (11)3.2 程序设计 (12)第四章仿真及硬件电路 (15)第五章总结与展望 (17)主要参考文献 (18)致谢 (19)第一章前言本文是一篇研究基于AT89S52单片机的1602液晶显示电路设计,本次设计要求通过对单片机和1602液晶显示模块的学习,设计出完整的电路并焊出电路板,再对单片机写入程序,从而实现在液晶屏上显示出字符。

1602a

1602a

1602A液晶模块文档介绍1602A液晶模块是一种常用的显示设备,主要用于显示文本信息。

它具有16列和2行的显示区域,每个区域可以显示一个字符。

本文档将介绍1602A液晶模块的基本原理、特性以及使用方法。

特性以下是1602A液晶模块的主要特性:•16列2行的显示区域•每个区域可显示一个字符•内置液晶控制器,简化控制电路的设计•低功耗设计,适合长期运行•使用标准的I2C总线进行通信,方便连接到其他设备引脚定义1602A液晶模块包含16个引脚,下面是各个引脚的定义:引脚序号引脚名称功能描述1 VSS 电源地2 VDD 电源正极3 V0 对比度调节4 RS 命令/数据选择5 R/W 读/写选择6 E 使能信号7-14 DB0-DB7 数据总线位15 LED+ 背光电源正极16 LED- 背光电源地控制指令1602A液晶模块的显示内容是由控制指令决定的。

下面是一些常用的控制指令:•光标移动指令–0x80: 将光标移动到第一行的起始位置–0xC0: 将光标移动到第二行的起始位置•清屏指令–0x01: 清除整个显示区域的内容,将光标移动到起始位置•写入数据指令–0x02: 将光标移动到起始位置–0x06: 设置光标移动一次后自动增加•光标显示控制指令–0x0E: 显示光标并设置为闪烁模式–0x0C: 显示光标而不闪烁•功能设置指令–0x38: 设置显示模式为16x2字符模式使用示例下面是一个使用1602A液晶模块的示例程序,使用Arduino开发板控制:```c #include <Wire.h> #include <LiquidCrystal_I2C.h>// 初始化液晶模块 LiquidCrystal_I2C lcd(0x27, 16, 2);void setup() { // 初始化串口通信 Serial.begin(9600); while (!Serial);// 初始化液晶模块 lcd.begin(16, 2); lcd.backlight(); }void loop() { // 显示Hello World!文本 lcd.setCursor(0, 0); lcd.print(。

1602A资料

1602A资料

1602A资料LCD1602的引脚定义想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。

但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。

那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。

第二行也一样用前16个地址。

对应如下:DDRAM地址与显示位置的对应关系我们知道文本文件中每一个字符都是用一个字节的代码记录的。

一个汉字是用两个字节的代码记录。

在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。

什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。

例如“A”字的字模:01110○■■■○10001■○○○■10001■○○○■10001■○○○■11111■■■■■10001■○○○■10001■○○○■上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。

看出是个“A”字了吗?在文本文件中“A”字的代码是41H,PC收到41H的代码后就去字模文件中将代表A字的这一组数据送到显卡去点亮屏幕上相应的点,你就看到“A”这个字了。

刚才我说了想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块在屏幕的阵点上显示“A”字呢?同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM。

HD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(Character Generator RAM)。

下图说明了CGROM和CGRAM与字符的对应关系。

从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是01000001,也就是41H。

LCD液晶显示器1602

LCD液晶显示器1602

3.4.1LCD显示模块LCD显示器分为字段显示和字符显示两种。

其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。

字符显示是根据需要显示基本字符。

本设计采用的是字符型显示。

系统中采用LCD1602作为显示器件输出信息。

与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。

LCD1602可以显示2行16个汉字。

3.4.2LCD1602的引脚功能LCD1602模块的引脚如图3-8所示,其引脚功能如下:RS:数据和指令选择控制端,RS=0命令状态;RS=1数据R/W:读写控制线,R/W=0写操作;R/W=1读操作A:背光控制正电源K:背光控制地E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机间将进行一次数据交换DB0~DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源。

VDD:电源端VEE:亮度控制端(1-5V)VSS:接地端图3-8LCD1602模块3.4.3LCD1602的显示操作1.四种基本操作LCD有四种基本操作,具体如表3-1所示。

表3-1LCD与单片机之间有四种基本操作(1)读状态字执行读状态字操作,如表3-1满足RS=0,R/W=1。

根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。

同时可以保持一段时间,从而实现读状态字的功能。

读状态字流程如图3-9所示。

图3-9读入状态字流程图(2)命令字表3-2所示为命令字,其主要介绍了指令名称、控制信号及控制代码。

其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。

1)清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2)归home位:将光标送到初始位;其中的*号为任意,高低电平均可;3)输入方式:设光标移动方向并指定整体显示,是否移动。

关于液晶LCD(1602A)的一些指令

关于液晶LCD(1602A)的一些指令

或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信 号,当 RS 为高电平 R/W 为低电平时可以写入数据。 第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时, 液晶模块执行命令。 第 7~14 脚:D0~D7 为 8 位双向数据线。 第 15 脚:背光源正极。 第 16 脚:背光源负极。 1602 液晶模块内部的控制器的 11 条控制指令
//初始化函数: void lcd_init()//初始化 { lcd_wcmd(0x38);//功能设置,采用 8 位方式的数据传送 delay(1); lcd_wcmd(0x0c);//设置显示屏,开启显示屏,不显示光标,字 符不反白 delay(1); lcd_wcmd(0x06);//设置输入模式,显示的字符不动,光标右 移,AC+1 delay(1); lcd_wcmd(0x01);//清除显示屏,地址计数器 AC 归零 delay(1); }
LCD 快速掌握————By 拉面
//写指令函数: void lcd_wcmd(unsigned char cmd)//写入指令 { while(lcd_bz());//判断 LCD 是否忙碌,若忙碌一直死循环 rs = 0; rw = 0;//写指令模式 ep = 0; _nop_(); _nop_(); P1 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_();
忙判别函数: bit lcd_bz()//判断是否忙碌,返回值为 bit 类型 { bit result; //声明返回值 rs = 0;//读取指令操作 rw = 1;//读取指令操作 ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P1 & 0x80);//读取 D7 位的值 1 为忙碌 忙碌 ep = 0; return result;//返回值 } 0 为不

单片机代码1602液晶屏显示

单片机代码1602液晶屏显示
lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
**********************************************************/
void lcd_busy()
{
bit busy;
busy = 1;
while (busy)
{
LCD_RS = 0;
{
delayms(15);
lcd_wcmd(0x38, 0); //16*2显示,5*7点阵,8位数据
delayms(5);
lcd_wcmd(0x38, 0); //不进行忙检测,强制执行三次。
delayms(5);
lcd_wcmd(0x38, 0);
delayms(5);
lcd_wcmd(0x38, 1); //进行忙检测
delayms(5);
lcd_wcmd(0x0c, 1); //显示开,关光标
delayms(5);
lcd_wcmd(0x06, 1); //移动光标
delayms(5);
lcd_wcmd(0x01, 1); //清除LCD的显示内容
delayms(5);
}
/**********************************************************
单片机代码:
1602液晶屏显示
#include <reg52.h>
#include <intrins.h>
//#define uchar unsigned char
//#define uint unsigned int
#define DATA_PORT P0

单片机设计_按键顺序控制加减计数(1602_液晶显示)_程序

单片机设计_按键顺序控制加减计数(1602_液晶显示)_程序

#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define LCD_IO P2sbit KK1 = P3^2; //按键输入;sbit KK2 = P3^3; //按键输入;sbit LCD_RS = P3^5;sbit LCD_RW = P3^6;sbit LCD_EN = P3^7;uchar code LCD_line1[] = " The Counter";int idata mydata=0;/************************************************************** * 名称: Delay_1ms()* 功能: 延时子程序,延时时间为1ms * x* 输入: x (延时一毫秒的个数)* 输出: 无***************************************************************/ void Delay_1ms(uint x){uchar i, j;for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);}/************************************************************** * 名称: lcd_bz( )* 功能: 测试忙碌子程序* 输入: 无* 输出: result***************************************************************/ bit lcd_bz(){bit result;LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();_nop_();_nop_();result=(bit)(P3&0x80);LCD_EN = 0;return result;}/*************************************************************** 名称: W_LCD_Com( )* 功能: 写指令子程序* 输入: com* 输出: 无***************************************************************/void W_LCD_Com(uchar com){while(lcd_bz());LCD_RS = 0; LCD_RW=0; LCD_EN = 0; // LCD_RS和R/W同时为低电平时,可以写入指令LCD_IO = com; Delay_1ms(5); //下面用EN输入一个高脉冲LCD_EN = 1; Delay_1ms(5); LCD_EN = 0;}/*************************************************************** 名称: W_LCD_Dat( )* 功能: 写数据子程序* 输入: dat* 输出: 无***************************************************************/void W_LCD_Dat(uchar dat){while(lcd_bz());LCD_RS = 1; LCD_RW=0;LCD_EN = 0; // LCD_RS为高,LCD_RW为低时,可以写入数据LCD_IO = dat; Delay_1ms(5); //下面用EN输入一个高脉冲LCD_EN = 1; Delay_1ms(5); LCD_EN = 0;}/*************************************************************** 名称: W_LCD_STR( )* 功能: 写字符串子程序* 输入: *s* 输出: 无***************************************************************/void W_LCD_STR(uchar *s){while(*s > 0) {W_LCD_Dat(*s); s++;}}/*************************************************************** 名称: LCD_cursor( )* 功能: 设置光标位置子程序* 输入: pos* 输出: 无***************************************************************/void LCD_cursor(uchar pos) //LCD光标定位到处{W_LCD_Com(pos+0x80); //第一行地址是0x80}/*************************************************************** 名称: initial( )* 功能: 初始化子程序* 输入: 无* 输出: 无* 指令:#define LCD_AC_AUTO_INCREMENT 0x06 //数据读、写操作后,AC自动增一#define LCD_DISPLAY_ON 0x0C //显示开#define LCD_DISPLAY_DOUBLE_LINE 0x38 //两行显示***************************************************************/void initial(){W_LCD_Com(0x06|0x04);W_LCD_Com(0x0c|0x08);W_LCD_Com(0x38);W_LCD_STR(LCD_line1);}/*************************************************************** 名称: Main()* 功能: 主函数***************************************************************/void main(){bit flag;uchar temp;uchar pos;Delay_1ms(10) ;initial();while(1){pos=0x4f;if(mydata>255)mydata=0;else if(mydata<0)mydata=255;if(mydata>127) //把mydata当做-128~127的有符号数来显示{flag=1;temp=256-mydata;}else {temp=mydata;flag=0;}LCD_cursor(pos);W_LCD_Dat((temp%10)+'0');pos--;//光标左移(其实光标不显示,只是为了输出高位)Delay_1ms(10);if(temp/100 || temp/10){LCD_cursor(pos);W_LCD_Dat((temp/10)%10+'0');pos--;}Delay_1ms(10);if(temp/100){LCD_cursor(pos);W_LCD_Dat((temp/100)%10+'0');pos--;}if(flag){LCD_cursor(pos);W_LCD_Dat('-');//负号}else{ LCD_cursor(pos);W_LCD_Dat(' ');//清除负号(空格代替)}if(!KK1){while(KK2);while(!KK2);mydata++;}else if(!KK2){while(KK1);while(!KK1);mydata--;}} }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书
设计题目
LCD(1602)显示屏控制系统设计A
学生姓名所在学院机械工 Nhomakorabea学院专业、年级、班
机械电子11-2
设计要求:
在1602液晶显示屏上第一行第一列开始显示“jixiedianzi2010”,打开光标,关闭闪烁。
学生应完成的任务:
1.根据要求设计总体方案;
2.绘制硬件电路原理图;
3.画出软件程序流程图;
4.马忠梅.单片机的C语言应用程序设计(第5版)[M].北京:北京航空航天大学出版社,2013
工作计划:
1.布置任务,查找资料,确定总体方案;1天
2.硬件电路原理图设计;1天
3.软件代码的编写与系统调试;2天
4.撰写和打印设计说明书。1天
任务下达日期:年月日
任务完成日期:年月日
指导教师(签名):学生(签名):
4.编写软件源代码(必须有注释);
5.在Proteus软件下仿真运行或在做出的实物上运行;
6.编写符合学院要求的课程设计说明书。
参考文献:
1.张毅刚.单片机原理及应用[M].北京:高等教育出版社,2010
2.皮大能.单片机课程设计指导书[M].北京:北京理工大学出版社,2010
3.肖婧.单片机系统设计与仿真:基于Proteus[M].北京:北京航空航天大学出版社,2010
相关文档
最新文档