单片机显示屏设计.docx
《单片机显示屏设计.docx》由会员分享,可在线阅读,更多相关《单片机显示屏设计.docx(32页珍藏版)》请在冰豆网上搜索。
单片机显示屏设计
引言ﻫ
在电子行业中,越来越多的产品开始重视人机信息交换的输入输出设备。
其中高像素液晶屏也越来越广泛的采用。
手机、GPS、PDA等电子设备均已使用320*240或更高像素的18位色屏幕。
而目前大学生设计电子产品或毕业论文中常采用赌显示电路却是LED数码管,显然已跟不上时代的发展,文本设计的LCD12864液晶显示模块可提供大部分电子产品及电器的显示功能。
MCS-51单片机是美国INTE公司于1980年推出的产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
虽然目前51系列单片机已无法满足目前某些功能或环境的要求,但是51系列的单片机仍然是最为成功的单片机芯片,它的影响力一直延续到现在,以至于被越来越多的人熟悉。
而从目前市场价格及普及程度等方面因素考虑,本文采用AT89C51单片机作为显示模块的控制核心。
目前众多电子类产品用于显示功能常用数码管LED与液晶LCD。
虽然数码管LED的结构简单、显示方便,但已无法满足科技进步而产生的现实要求。
并且LED常用动态显示,在复杂的系统中十分耗费系统资源,已逐渐被淘汰。
而在LCD方面,常见的有LCD12864,LCD12232,LCD12864等。
LCD12864可以在LCD显示屏上完整显示32个英文字符和日文等一些字符适合显示英文文字信息量小的地方。
可以应用在计算器、频率计、时钟等产品上。
LCD12232也只适合文字量少的场合。
而LCD2864的分辨率达到了128*64,对于16*16的字体可显示4行8列,已能满足大部分设备显示的要求。
LCD12864在市场上主要分为两种,一种采用st7920控制器,它带有中文库字模,价格略高一点,另一种是采用KS0108控制器,它只是点整模式,不带字库。
而本文无需专门显示文本且菜单文字比较简单,因此采用常见的KS0108控制器的LCD12864来完成显示模块的设计。
1.设计内容和要求
本设计是以STC89C52芯片的电路为基础,外部加上时钟振荡电路、上电+按键复位电路以及由LCD12864液晶显示器显示电路组成的。
通过编写C语言程序控制硬件电路显示中英文。
1.1设计显示屏的意义
液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。
近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。
液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。
字符型LCD是一种用8×16点阵图形来显示字符的液晶显示器。
点阵型液晶可显示用户自定义的任意符号和图形,并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于实时检测和显示的仪器仪表中。
支持汉字显示的点阵型液晶在现代单片机应用系统中是一种十分常用的显示设备,汉字BP机、手机上的显示屏就是点阵型LCD。
点阵型LCD是现代单片机应用系统中最常用的人机交互界面之一。
1.2设计方案
根据设计的要求,以及设计的便捷性,本设计采用单片机与LCD12864并行连接的方式,基于C语言的编程,通过控制单片机AT89C52的P0,P2,口直接对显示模块AMPIRE12864进行操作。
2.系统总体结构
2.1系统设计框图
经过方案论证和比较后,最终确定的系统框图如图1所示,主要由STC89C52单片机、LCD12864以及电源组成。
主要系统结构设计框图如图所示。
图2.1.1 系统设计框图
2.2主要设计软件介绍
本设计利用KEIL编程软件对频率计源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,两种软件的简介如下:
2.2.1PROTEUS软件简介
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
2.2.2KEIL简介
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势
3.系统硬件设计
3.1单片机部分硬件设计
3.1.1STC89C52简介
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32 位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接。
单片机正常工作时,都需要有一个时钟电路和一个复位电路。
本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机的最小电路。
如图3.1.1所示
图3.1.1 STC89C52单片机管脚图
3.1.2单片机最小系统设计
单片机最小系统是能补足单片机工作的最简单电路,它由单片机、电源、晶体振荡器、复位电路等构成。
它是本系统的处理单元也是控制单元,负责处理信号、外设的接口与制,同时它也是所有软件的载体。
如图3.1.2
图3.1.2单片机最小系统
3.1.3时钟振荡电路和复位电路
时钟振荡电路 STC89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
本设计采用了内部时钟振荡器电路。
如图3.2
图3.1.3时钟振荡电路
复位电路 当STC89C52通电,时钟电路开始工作,在STC89C52单片机的RST引脚加上大于24个时钟周期以上的正脉冲,STC89C52单片机系统即初始复位。
初始化后,程序计数器PC指向0000H,P0~P3输出口全部为高电平,堆栈指针写入07H,其他专用寄存器被清零。
RST由高电平下降为低电平后,系统从0000H地址开始执行程序。
单片机的外部复位电路有上电自动复位和按键手动复位两种。
本次设计采用的是上电+按键复位。
如图3.2.2为STC89C52单片机的上位+按键复位电路,复位端与正电源接通,迅速放电,使RST引脚为高电平,复位按钮弹起后,电源通过10K电阻对10uf重新充电,RST引脚端出现复位正脉冲。
图3.1.4上电+按键复位电路
3.2液晶LCD12864显示电路
3.2.1 LCD12864管脚说明
液晶屏上如何显示一些汉字或图画,这也许是所有LCD12864初学者都最先思考的一个问题。
在数字电路中,所有数据都是由0和1保存的,同样LCD也利用了这一方法。
在点阵LCD上显示的只有两种颜色,因此可利用0和1来表示这两种颜色。
假设空格是由16*16个0组成的,在显示16*16的字体时,将其中某些点置为1便可在视觉上形成一个汉字,这些二进制数称为代位码。
而这些由0和1转换而成的16进制数据便是字模。
不同的汉字有不同的字模,相同的汉字不同的字体也有不同的字模。
而将字模设为16*16像素是因为这样基本可以将汉字显示清楚准确,更高像素则更为清楚准确,但是却更多地占用了LCD的面积。
与汉字不同的是,一个字符只需要16*8的像素便即可。
如何将这16*16
或者16*8个0、1保存下来也是是初学者所需要了解的,假设要在LCD12864屏幕上准确正确的显示出汉字,则需要将16*16的汉字分为两行,每行由16列组成,这16列每列存8个点,用2位16进制数(8位二进制数)表示这8个点,16个16进制数可表示1行,32个16进制数则能表示整个汉字。
通过LCD12864,则可将这些字模信息还原成汉字或图像。
LCD12864的管脚共有20个之多,但是连接的电路并不复杂。
但是需要注意的是LCD的电源共有2组,一组是用于驱动LCD显示,另一组用于背光显示。
可将这两组连在一起或者背光电源省略。
另外有个输入管脚V0需要接入LCD调整电压来调节对比度。
通常刚使用液晶时的问题是由此引起的,对比度过高于或过低均会使屏幕无法正常显示。
它可接至10K-20K电位器的调整端,电位器两端分别接至VDD与VEE。
目前市场上某些LCD12864的对比度可由单片机操作其寄存器调节,可根据不同的条件进行选择。
其余的端口均连接至单片机。
下面是LCD12364的引脚图以及引脚功能表。
图3.2.1LCD12864引脚图
表3.2 LCD12864引脚功能
管脚名称
LEVER
管脚功能描述
VSS
0
电源地
VDD
+5.0V
电源电压
V0
-
液晶显示器驱动电压
D/I(RS)
H/L
D/I=“H”,表示DB7∽DB0为显示数据
D/I=“L”,表示DB7∽DB0为显示指令数据
R/W
H/L
R/W=“H”,E=“H”数据被读到DB7∽DB0
R/W=“L”,E=“H→L”数据被写到IR或DR
E
H/L
R/W=“L”,E信号下降沿锁存DB7∽DB0
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
DB0
H/L
数据线
DB1
H/L
数据线
DB2
H/L
数据线
DB3
H/L
数据线
DB4
H/L
数据线
DB5
H/L
数据线
DB6
H/L
数据线
DB7
H/L
数据线
CS1
H/L
H:
选择芯片(右半屏)信号
CS2
H/L
H:
选择芯片(左半屏)信号
RET
H/L
复位信号,低电平复位
VOUT
-10V
LCD驱动负电压
LED+
-
LED背光板电源
LED-
-
LED背光板电源
3.2.2 LCD12864硬件连接
由P0口控制DB0-CB7的数据输入口,当空闲时向LCD12864里写入程序或数据。
由P2^2、P2^1控制片选口。
P2^6控制时能端。
当使能端从1-0时实现锁屏显示。
P2^3控制复位信号,低电平时复位。
P2^5控制R/W口。
当R/W=“H”,E=“H”则数据被读到DB7-DB0。
当R/W=“L”,E=“H→L”则数据被写到IR或DR。
P2^4控制D/I口。
当D/I=“H”,则DB7-DB0为显示数据。
当D/I=“L”,则DB7-DB0为显示指令数据。
图3.2.2液晶LCD12864显示电路
3.2.3电源电路
系统硬件电路实现功能如下,如图3.2.3所示
1)由PNP三极管与10K电阻构成的放大电路。
2)振荡电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。
3)高电平为5V工作电源,利用变压器将220V交流电源变成5V工作电源。
如图3.4.1
图3.2.3变压整流电路
4.系统软件设计
4.1资源分配表
表4.1资源分配表
I/O口
作用
P0
LCD12864数据接口
P2.1
LCD12864 片选C1接口
P2.2
LCD12864 片选C2接口
P2.3
LCD12864RST接口
P2.4
LCD12864RW接口
P2.5
LCD12864RS接口
P2.6
LCD12864 E接口
4.2LCD12864的基本指令
1、显示开/关设置
CODE:
表4-1显示开/关设置
R/W
D/1
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
H
H
H
H
H
H
功能:
设置屏幕显示开/关。
DB0=H,开显示;DB0=L,关显示。
不影响显示RAM(DDRAM)中的内容。
2、设置显示起始行
CODE:
表4-2设置显示起始行
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
H
H
行地址(0-63)
功能:
执行该命令后,所设置的行将显示在屏幕的第一行。
显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。
Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。
3、设置页地址
CODE:
表4-3设置页地址
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
H
L
H
H
H
页地址(0-7)
功能:
执行本指令后,下面的读写操作将在指定页内,直到重新设置。
页地址就是DDRAM的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。
4、设置列地址
CODE:
表4-4设置列地址
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
H
列地址(0-63)
功能:
DDRAM的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DDRAM进行读写操作后,Y地址自动加一。
5、状态检测
CODE:
表4-5状态检测
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
H
L
BF
L
ON/OFF
RET
L
L
L
L
功能:
读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。
BF=H:
内部正在执行操作; BF=L:
空闲状态。
RST=H:
正处于复位初始化状态; RST=L:
正常状态。
ON/OFF=H:
表示显示关闭; ON/OFF=L:
表示显示开。
6、写显示数据
CODE:
表4-6写显示数据
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:
写数据到DDRAM,DDRAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。
D7-D0位数据为1表示显示,数据为0表示不显示。
写数据到DDRAM前,要先执行“设置页地址”及“设置列地址”命令。
7、读显示数据
CODE:
表4-7读显示数据
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
H
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:
从DDRAM读数据,读指令执行后Y地址计数器自动加1。
从DDRAM读数据前要先执行“设置页地址”及“设置列地址”命令。
4.3字模提取
在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。
对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。
而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢,这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如中文的“你”在字模中的记载如图所示:
根据芯片的不同取模的方式不同,有多种取模方式。
本系统采用纵向取模,字节正序方式,用LCD点阵汉字生成器生成字模“杨”的C语言代码为:
/*-- 文字:
杨--*/
/*-- 宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x08,0x08,0xc8,0xff,0x48,0x88,0x0a,0x42,0x62,0xd2,0x4a,0xd6,0x42,0x40,0x00,0x00,
0x04,0x03,0x00,0xff,0x00,0x01,0x08,0x24,0x13,0x08,0x06,0x41,0x80,0x7f,0x40,0x00,
4.4主程序流程框图
图4.4.1主程序流程图
5.系统仿真及调试
5.1硬件调试
ﻩ1)硬件制作完成后,测试其效果,LCD显示器无反应。
2)用电表检测各引脚电位后,发现STC89C52芯片损坏。
3)修改后,调节LCD显示器对比度,正常显示。
5.2软件调试
ﻩ1.根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确。
2.将所有程序组织起来,在软件环境下运行,检查程序是否正确。
通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成HEX文件装载到单片机中,对硬件进行仿真。
具体操作为:
①利用STC烧录软件,打开应用程序出现以下窗口如图5.1.1
图5.2.1
②选择对应的HEX文件,选择Download将程序烧录到CPU当中
5.3仿真结果
图5.3.1仿真结果
6、心得与体会
通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
通过这次对LCD液晶显示屏的设计与制作,让我了解了设计电路的程序,也让我了解了关于LCD12864的基本原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。
但是最后的成品却不一定与仿真时完全一样, 因为,在实际接线中有着各种各样的条件制约着。
而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。
所以,在设计时尽可能应考虑两者的差异,从中找出最适合的设计方法。
此外,仿真时应注意相同元件的不同型号,往往存在差异性。
通过这次学习,让我对各种电路都有了大概的了解, 所以说, 心动不如行动, 对于这些电路还是应该自己动手实际操作才会有深刻理解。
7、参考文献
⑴ 张齐 朱宁西.单片机应用系统设计技术——基于C51的Proteus仿真(第二版),电子工业出版社,2009.1.
⑵张齐朱宁西 单片机应用系统设计技术——基于C51的Proteus仿真实验与解题指导电子工业出版社,2009.1.
⑶常敏王涵单片机应用程序开发与实践,电子工业出版社,2009.3
[4] 杨凌霄.微软计算机原理及应用.中国矿业大学出版社 2004.08
[5] 何立民.单片机应用技术选编.北京航空航天大学出版社 2000.08
[6] 万光毅.单片机实验与实践教程.北京航空航天大学出版社 2005.01
[7] 周航慈.单片机程序设计基础.北京航空航天大学出版社 1991.11
[8] 黄遵熹.单片机原理接口与应用.西北工业大学出版社 1997.05
[9]杨振江,杜铁军,李群.流行单片机实用子程序及应用实例[M].西安电子科技大学出版社 2002
附录1:
元件清单
序号
名称
型号、参数
备注
价格
数量
1
CPU
STC89C52
DIP40封装
4.4
1
2
管座
DIP-40
0.3
1
3
晶振
11.0592MHZ
492型
0.6
1
4
整流桥
2W10
2A圆桥
0.5
1
5
稳压IC
LM7805
TO-220
0.8
1
6
原片电容
30pf
0.05
2
7
电解电容
100