
题 目: 基于单片机的1602液晶显示电路设计
学生: 学号:
系 别: 理工部 专业: 电气工程及其自动化
入学时间: 2021 年 09 月
导师: 职称/学位:
基于单片机的1602液晶显示电路设计
摘要
本文是一篇介绍利用ATS52单片机和LCD1602液晶显示屏设计一种液晶显示电路并编程实现信息的显示功能。ATS52是一种低功耗、高性能CMOS8位微控制器,具有8K系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得ATS52在众多嵌入式控制应用系统中得到广泛应用。1602LCD是指显示的内容为16*2,即可以显示两行,每行16个字符液晶模块〔显示字符和数字〕。从ATS52单片机与LCD1602液晶显示器性能特点出发,实现两者接口的衔接设计。经过屡次的调试, 使得该设计取得了比拟满意的结果, 且系统软硬件设计简单方便、稳定可靠, 可广泛应用于智能化仪器仪表及各种宣传场所, 为嵌入式控制系统提供高灵活、高性价比的解决方案。
关键词:ATS52单片机;LCD1602液晶显示器;复位电路;时钟电路
第一章 前 言
本文是一篇研究基于ATS52单片机的1602液晶显示电路设计,本次设计要求通过对单片机和1602液晶显示模块的学习,设计出完整的电路并焊出电路板,再对单片机写入程序,从而实现在液晶屏上显示出字符。
1.1 研究现状
随着科技的开展,单片机的开展越来越迅猛。诞生于20世纪70年代末的单片机,开展至今,几乎渗透到我们生活的各个领域,小到日常生活的 、计算器,大到国家的国防军事,航空航天等随处可看到单片机的身影。单片机的应用不仅给人们带来了便利,也为国家的平安提供了保障。它的出现使得许多原本花费很高的复杂电路以及繁多的电气元器件都被取缔,取而代之的是一块小小的芯片。
ATS52单片机是Atmel公司新近推出的高档、增强型产品。它是一个低功耗、高性能CMOS8位微控制器,片内含通用8位处理器和ISPFLASH存储单元,8kb ISP的可反复擦写1000次的FLASH只读程序存储器,片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。器件采用Atmel公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得ATS52为众多嵌入式控制应用系统提供高灵活、高性价比的解决方案。
单片机液晶显示主要是指单片机以及由单片机驱动的点阵式液晶显示屏所组成的一个显示系统。作为信息传递的一种方式,液晶显示在我们日常生活中也随处可见,电子仪表,计算器上面都有显示器的身影。LCD是典型的发光器件,它一材料科学为根底,综合利用了精密机械,光电及计算机技术,并正在微机械,微光学,纤维光学等前沿领域研究根底上,向高集成化,智能化方向开展。本文主要研究以ATS52单片机驱动LCD1602液晶显示器,使LCD1602液晶显示屏上显示出作者的学号与。
1.2 研究意义
当下社会,由于单片机的快速开展,单片机在以后的应用中将会更加广泛,对于单片机的应用也将更加普遍。本次的研究使读者了解ATS52单片机和LCD1602液晶显示器的根本工作原理与特点,并且懂得两者接口的应用等。为以后对单片机和液晶显示器的深入研究打下坚实的根底!
第二章 系统硬件电路设计
本研究的硬件电路主要包括ATS52单片机最小系统,LCD1602液晶显示电路,复位电路和晶振电路。具体内容如下:
2.1 ATS52单片机最小系统
ATS52单片机是ATMEL公司新近推出的高档型ATS系列单片机中的增强型产品,是一种低功耗、高性能CMOS 8位微控制器,具有8K 系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得ATS52在众多嵌入式控制应用系统中得到广泛应用。
2.1.1 主要性能
1、与MCS-51单片机产品兼容;
2、8K字节在系统可编程Flash存储器;
3、1000次擦写周期;
4、全静态操作:0Hz-33MHz;
5、三级加密程序存储器;
6、32个可编程I/O口线;
7、三个16位定时器/计数器;
8、8个中断源;
9、全双工UART串行通道;
10、低功耗空闲和掉电模式;
11、掉电后中断可唤醒;
12、看门狗定时器;
13、双数据指针;
14、掉电标识符。
2.1.2 功能
8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,ATS52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.1.3 引脚说明及实物图
ATS52单片机共有40个引脚,如图2-1:
图2-1 ATS52单片机引脚图
VCC:电源电压
P0:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1〞时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。
P1:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入〔P1.0/T2〕和定时器/计数器2 的触发输入〔P1.1/T2EX〕。 在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能:
P1.0 T2〔定时器/计数器T2的外部计数输入〕,时钟输出
P1.1 T2EX〔定时器/计数器T2的捕捉/重载触发信号和方向控制〕
P1.5 MOSI〔在系统编程用〕
P1.6 MISO〔在系统编程用〕
P1.7 SCK〔在系统编程用〕
P2:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1〞时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔IIL〕。 在访问外部程序存储器或用16位地址读取外部数据存储器〔例如执行MOVX @DPTR〕 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址〔如MOVX @RI〕访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。 P3口亦作为ATS52特殊功能〔第二功能〕使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INTO(外中断0)
P3.3 INT1(外中断1)
P3.4 TO(定时/计数器0)
P3.5 T1(定时/计数器1)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
PST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE〔地址锁存允许〕输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲〔PROG〕。如有必要,可通过对特殊功能存放器〔SFR〕区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:程序储存允许〔PSEN〕输出是外部程序存储器的读选通信号,当ATS52由外部程序存储器取指令〔或数据〕时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器〔地址为0000H-FFFFH〕,EA端必须保持低电平〔接地〕。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平〔接Vcc端〕,CPU那么执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:振荡器反相放大器以及内部时钟电路的输入端。
XTAL2:振荡器反相放大器的输出端。
GND:地
ATS52单片机实物图如图2-2,2-3:
图2-2ATS52反面
图2-3ATS52正面
ATS52单片机最小系统尺寸:长85mm*宽55mm*高18mm
2.2 LCD1602液晶显示器
LCD1602,工业字符型液晶,指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块〔显示字符和数字〕。液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
2.2.1功能
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线15脚的Vcc和16脚的GND,本次研究采用16引脚的LCD。专门用来显示字母、数字、符号等的点阵型液晶模块,通过驱动模块与显示器的有效连接,能直观的显示出程序中要求的内容。
2.2.2 特点
显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器〔CRT〕那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。
数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来到达显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
2.2.3 引脚
本次研究采用16引脚LCD1602液晶显示器。引脚图如图2-4:
图2-4 LCD1602液晶显示器引脚图
1602LCD主要技术参数:
显示容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最正确工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
引脚功能:
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会产生“鬼影〞,使用时可以通过一个10K的电位器调整比照度。
第4脚:RS为存放器选择,高电平时选择数据存放器、低电平时选择指令存放器。即电平=0为输入指令;电平=1为输入数据。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,1时读取信息,当E端由高电平跳变成低电平时,即当1→0〔下降沿)液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。7号引脚为最低位,14号引脚为最高位。
第15脚:背光源正极。
第16脚:背光源负极。
下面是LCD1602液晶显示器实物图正面图2-5,反面图2-6:
图2-5 LCD1602正面
图2-6 LCD1602反面
2.3 复位电路
单片机复位电路就好比电脑的重启局部,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。本次研究所采用的复位电路如图2-7所示,其中C3=10μF,目的就是防抖,此复位电路高电平有效,低电平复位。
图2-7 复位电路
2.4 时钟电路
时钟电路是用来配合外部晶体实现震荡的电路,这样可以为单片机提供运行时钟,如果运行时钟为0,单片机就不工作,超出单片机的工作频率也会导致单片机不工作。单片机的时钟连接方式一般分为两种:内部时钟方式和外部时钟方式。如图2-8,图2-9所示。
图2-8 内部时钟方式
图2-9 外部时钟电路
本次研究采用的是内部时钟方式,晶振采用12M晶振,电容为30ƤF,电路图如图2-8。
第三章 软件设计
本次研究设计主要涉及到电路图的设计,程序的编写,程序的烧录,分别用到Altium Designer ,keil, AVR_fighter。下面将对这三个软件一一进行简单的介绍。
3.1 软件设计思路
通过对ATS52单片机和LCD1602的根本了解,利用Altium designer软件绘制出电路图进行仿真,根据电路图焊接出电路板,并进行测试。利用keil软件编写c程序,程序编写无误后,将程序生成.hex文件,利用AVR_fighter烧录软件将程序烧录到单片机,得到设计结果,即LCD1602液晶显示屏上显示出字符。
3-1 原理框图
3.1.1 Altium Designer
Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。
主要功能有:
1 原理图设计
2 印刷电路板设计
3 FPGA的开发
4 嵌入式开发
5 3D PCB设计
3.1.2 keil
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境〔μVision〕将这些局部组合在一起。
优点:
⒈Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。
⒉与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
3.1.3 AVR_fighter
AVR_fighter是AVR单片机ISP下载编程软件,此软件必须将编写的c程序利用keil软件生成.hex文件才能烧录到单片机,操作界面如图3-2所示:
图3-2 AVR_fighter
3.2 程序设计
利用keil软件编写程序,程序如下:
#include #include typedef unsigned char BYTE; //用BYTE代替unsigned char typedef unsigned int WORD;//WORD代替unsigned int typedef bit BOOL ;//用BOOL代替bit sbit rs = P2^6; //复位端 sbit rw = P2^5; //写数据端 sbit ep = P2^7; //使能端 BYTE code dis1[] = {"Nie Shuai"}; BYTE code dis2[] = {"24124021"}; /*******************延时函数********************/ delay(BYTE ms) { BYTE i; while(ms--) { for(i = 0; i< 250; i++) { _nop_(); _nop_(); //空执行消耗CPU时间到达等待的效果 _nop_(); _nop_(); } } } /*******************LCD侧忙函数********************/ BOOL lcd_bz() { BOOL result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x08); //检测P0最高位是否为1 ep = 0; return result;//返回侧忙结果 } lcd_wcmd(BYTE cmd) { // 写入指令数据到LCD while(lcd_bz()); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = ((cmd<<4)|(cmd>>4)); //将8位指令通过P0口传给1602 _nop_(); _nop_();//用于产生一个脉冲宽度 _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } lcd_pos(BYTE pos) { //设定显示位置 lcd_wcmd(pos | 0x80); } lcd_wdat(BYTE dat) { //写入字符显示数据到LCD while(lcd_bz()); rs = 1; rw = 0; ep = 0; P0 = ((dat<<4)|(dat>>4));//将8位数据通过P0口传给1602 _nop_(); _nop_(); _nop_(); //用于产生一个脉冲宽度 _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } lcd_init() { //LCD初始化设定 lcd_wcmd(0x38); ////16*2显示,5*7点阵,8位数据 delay(1); lcd_wcmd(0x0c); //显示开,关光标 delay(1); lcd_wcmd(0x06); //移动光标 delay(1); lcd_wcmd(0x01); //去除LCD的显示内容 delay(1); } main() { BYTE i; lcd_init(); //初始化LCD delay(10); lcd_pos(4); //设置显示位置为第一行的第5个字符 i = 0; while(dis1[i] != '\\0') { //显示字符"Nie Shuai" lcd_wdat(dis1[i]); i++; } lcd_pos(0x41); //设置显示位置为第二行第二个字符 i = 0; while(dis2[i] != '\\0') { lcd_wdat(dis2[i]); //显示字符" 24124021 " i++; } while(1); // } 程序编写无误后,生成.hex文件,即如图3-3: 图3-3 程序生成hex文件 利用烧录软件AVR_fighter将程序烧录到单片机。 第四章 仿真及硬件电路 利用Altium Designer软件绘制设计电路,研究电路图如图4-1所示: 图4-1 电路图 元器件清单: ATS52单片机 1个 LCD1602液晶显示器 1个 洞洞板〔万能板〕 1个 电阻 R1=R4=10KΩ 2个 R2=1KΩ 1个 R3=10K 3296精密电位器 1个 电容C1=10μF 1个 C2=C3=30ƤF 2个 开关 自锁开关 1个 复位开关 1个 晶振 12M 1个 LED灯 红色 1个 杜邦线 假设干 排针排母 假设干 下载器 1个 焊接电路板,设计硬件电路。如图4-2所示: 图 4-2 硬件实物图 第五章 总结与展望 本次研究介绍了ATS52单片机和LCD1602液晶显示器的根本特性和功能,从本次的设计研究中发现,对于ATS52单片机的程序烧录必须使用专用的下载器即USB ASP下载器。 从选题到现在,这个设计主要经历了以下几个过程:广泛查阅资料、文献综述、总体思路确实定、方案的具体化及论证、方案确实定、设计制板及硬件电路的完成、软件的调试、系统的调试,还包括论文的定稿,我认为整个过程是一个联系非常紧密的过程,前一过程的结果为后一过程奠定了根底。 本次设计虽然不是特别的复杂,但是由于初次涉及这样的设计,没有任何的经验,过程还是倍感吃力的。首先就是ATS52单片机的选择,因为之前没有学习过这样的器件,算是一个新的概念,所以认识不全,有些不知所措。然后研究如何获取正确的参数,其中图片的取模就很令我苦恼,最后在老师的辅导下才得以提取正确。程序有了之后,再进行相关的变换,最终得到新颖的效果。 在这次的设计过程中虽然尝到了设计的困难,但是更重要的是让我感受到了它的魅力,不知不觉的就想要做出更多的把戏,特别是成功仿真后,着实有一种成就感。在此次过程中不仅稳固了我对Word及单片机的使用,同时也让我对LCD1602显示有了一个较为清晰的了解,弥补了我的一个盲区,让我对专业知识有脸很大的提升,使我有了知识和精神双方面的收获。 本系统的设计与制作工作已经全部完成,根本到达了预期的目的与要求。但是在系统的调试方面还不够健全。但是由于时间仓促、条件有限,设计结果并不是很好,还存在诸如:显示内容的单一,亮度不够、显示效果不明显等问题,我准备在今后的工作实践过程中来进一步完善此设计。 从选题到现在,这个设计主要经历了以下几个过程:广泛查阅资料、文献综述、总体思路确实定、方案的具体化及论证、方案确实定、设计制板及硬件电路的完成、软件的调试、系统的调试,还包括论文的定稿,我认为整个过程是一个联系非常紧密的过程,前一过程的结果为后一过程奠定了根底。 总之,通过这次的毕业论文设计课题的设计与制作,本人在理论知识方面和思想方面都有很大的收获。 主要参考文献 [1] 郭天祥. 51单片机C语言教程——入门、提高、开发、拓展全攻略[M]. 北京:电子工业出版社,2021.1 [2]李平等.单片机入门与开发[M].机械工业出版社,2021. [3]李荣正.王诚杰.戴国银.PIC单片机原理及应用〔第4版〕. [4]杨文龙.单片机原理级应用学习指导[M].西安:西安电子科技大学出版社. [5].叶晓斌.LCD显示器件驱动电路中的电压调整和电压控制器件设计. [6].51系列单片机系统设计与应用技巧[M].北京:北京航空航天大学出版社. [7]ATS52数据手册.45-47. [8]赵亮.液晶显示模块LCD1602应用.电子制作,2007,〔3〕:58-58 [9]赵志海.液晶显示器及其应用[J].国际光电与显示.2001. [10]杨,刘培兴等.液晶显示器原理与应用[J].大连东显电子 [11]马忠梅等.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,2001 致 谢 这次毕业设计能顺利完成,其中凝聚了很多人的心血,没有他们的帮助,我将很难完成这次毕业设计,在此我表示由衷的感谢。 首先,衷心感谢我的指导老师张晶晶老师,从毕业设计的开始到毕业论文的最终定稿,给了我细心的指导和帮助。由于经验的缺乏,有很多地方考虑不到,是你耐心的指导让我完成了这次的设计。您严谨的治学态度,开阔的思维,渊博的知识深深感染了我,让我终生受用。在此,我向我的指导老师致以诚挚的谢意和深深的敬意。其次,我要感谢学校方面给予的支持和帮助,为每个设计小组安排专门的指导老师,帮助我们完成整个设计任务。最后,我要身边的同学给予我的关心和支持。这段时间将是我学习过程中一段有价值的时光。
