基于图形点阵液晶显示的单片机开发系统的设计.docx
《基于图形点阵液晶显示的单片机开发系统的设计.docx》由会员分享,可在线阅读,更多相关《基于图形点阵液晶显示的单片机开发系统的设计.docx(36页珍藏版)》请在冰豆网上搜索。
![基于图形点阵液晶显示的单片机开发系统的设计.docx](https://file1.bdocx.com/fileroot1/2023-1/29/9fccaa26-450d-4589-8e65-64b5ba544674/9fccaa26-450d-4589-8e65-64b5ba5446741.gif)
基于图形点阵液晶显示的单片机开发系统的设计
基于图形点阵液晶显示的单片机开发系统的设计
摘要
单片机开发系统主要是采用ATEML公司生产的AT89C55系列单片机为主控制芯片,显示系统采用图形点阵式液晶,采用键盘管理芯片进行键盘控制,在芯片本身提供的系统资源的基础上,进行了并行总线的扩展,和串行总线的扩展。
同时基于此系统作了简单的时钟显示,和A/D,D/A的控制,在作A/D,D/A时主要是基于一语应录放板进行了语音录放的实验
关键词:
液晶显示单片机AT89c55开发系统
ABSTRACT
ThedevelopmentsystemofMCUisprimarilybasedonthemaincontrolchipoftheseriesofAT89C51thatisproducedbythecompanyofATMEL.TheManifestationsystemusesLCD.AndusingachipnamedHD7279Aproceedskeyboards.MakethebestuseoftheresourceofMCUandexpandthecollateralbus.OfcoursethisMCUsystemusesI2CbustoemploypartsofanapparatusthataccordwithI2Cbus.Atthesametime,basedonthesystem,ImakethesimpleclockshowsonLCDbyusingarealtimeclockchipnamedDS12C887.IalsodoanexperimentonA/DandD/A.Byusingasoundsystem,Imakeanexperimentthatrecordthesoundandplay.
Keyphrase:
LCDMCUofAT89C55Thedevelopmentsystem
一单片机最小系统的硬件设计
利用单片机完成复杂系统的设计,一般是基于一定的软硬件平台,在硬件方面,主要是体现在,基于的开发系统,也可以说是事先就有的单片机最小系统的开发平台,如果有了此开发平台,就有如高楼大厦的地基,正是基于这点此次毕业设计首先进行了单片机最小系统的设计,其基本的硬件电路设计如图1。
图1单片机最小系统设计
图1的总体设计思想采用了单片机并行总线﹑串行总线的扩展模式。
其中单片机最小系统的主控芯片采用了ATMEL公司推出的带20K字节可擦除、可编程Flash程序存储器,256字节的数据存储器的AT89C55。
其芯片内含有丰富的硬件资源,带有足够大的程序存储器,这在对液晶进行编程时,可以充分利用程序存储器大的特点,可以得到足够字模的存储空间,而不需要在扩展程序存储器;并且支持0~33MHZ的时钟频率选择范围,可以进一步提高信号的处理速度;并且有足够的输入/输出口可以进行外扩展,可以完成设想的大部分电路的开发设计。
图1中Y1晶振(11.059MHZ)与C1﹑C2组成振荡电路;C4﹑C5﹑R1﹑C6﹑反相器及复位键组成上电复位,和手动复位电路;并通过相应的电路完成并行总线和串行总线的扩展。
⒈单片机并行总线扩展硬件实现
在本单片机开发系统中,外挂的静态随机存取储存器为512k字节的存储器HM628512,其地址线为19条,单片机本身的地址只有16条,要驱动HM628512就必须进行地址扩展。
在图1中采用两片74LS373及一片74LS138来实现,首先U2芯片进行低8位地址与数据的分离,产生A0~A7低8位地址,同时与A8~A14(P2.0~P2.6)组成15位地址,在利用P2.7﹑A7﹑A6﹑A5﹑A4控制74LS138与写信号WR将高4位地址A16~A18所存在U3上,这样就可以控制HM628512,通过此方法也可以控制更大的存储器(A0~A22)。
在实际电路设计中巧妙利用P2.7,A7区分了不同的器件,在P2.7位高电平时两片74LS138无效,此时选中随机存取储存器,进行存储,在P2.7为低电平时,配以A7,可以选中不同的74LS138,进行译码,控制其它的芯片,比如说A/D0809﹑D/A0832,或其他芯片。
⒉单片机串行总线扩展硬件实现
由于并行总线在对外扩展时,占用的口线地址资源比较多,有时在设计时会成生冲突,只给设计者带来了很多不便,由于芯片集成工艺的飞速发展,产生了相应串行协议的芯片,现在常用的主要有一线,二线,三线的控制芯片。
所谓一线控制芯片就是地址数据通过一条数据线与微控制器相连接,通过芯片与微控制器之间的固定通信协议,进行数的读写,此类芯片有DS18B20﹑DS2890等。
二线制芯片应用最广是满足I2C总线接口标准的器件,其中二线分别是时钟线(SCL)﹑数据线(SDA)。
三线制是满足SPI总线接口的器件,分别是地址线(SDI)﹑数据线(SDO)﹑时钟线(SCLK)。
在设计中串行总线主要采用的是I2C总线,用P1口实现,详细内容将在第四部分讲述,同时单片机提供了串行通信接口(UATR),可以与个人计算机机进行通信,或几个单片机互联,实现多单片机之间的通信。
二系统资源的初次分配及结构框图
⒈AT89C55内部资源的分配
AT89C55内部含有20K字节程序存储器,除用来存放号程序代码外,主要是存放液晶显示的数据码,其中包括汉字字模,图形码等;内部还有256字节的随机存取储存器,可以进行部分数据的暂存,其中高128字节(地址80H~FFH)只能采用间接寻址的方式,而用使用直接寻址是指访问特殊功能寄存器。
⒉系统外部资源的分配
外部进行并行地址扩展后主要是挂接了一大的外部数据存储器,这样可以存储数目较大数据,同时利用不同的片选地址控制系统需要的不同功能的芯片,在这次设计中,主要并行芯片有DS12C887,AD0809,ADC0832。
P1口利用P1.6﹑P1.7模拟I2C总线,挂I2C器件,系统主要使用有时钟芯片PCF8563,存储芯片AT24C256。
人机界面接口主要是液晶显示和键盘,其中液晶器件也通过总线方式,进行连接;键盘由于是工作方式是串行的,所以连结在P1口,采用键盘管理芯片HD7279A实现键控。
⒊系统的结构框图如下:
电路图见附录1
三最小系统中主要功能模块的介绍
㈠液晶显示模块
显示功能是单片机最小系统中必不可少的一部分,显示的方法多种多样,现在常用的有两种方法:
一是LED显示,二是LCD显示。
在LCD显示应用不普遍时,主要是采用LED显示,但LED显示需要的电流比较大,在系统中功耗比较高,在电池供电的系统中显得有些不适用。
随着生产工艺的更新,LCD的价格随之下降,LCD的应用也因为其本身的优点而被广泛的应用。
液晶显示器具有体积小、质量轻、功耗低和可靠性高的优点,在便携式电子信息产品中得到了广泛的应用。
特别是在电池供电的单片机产品中,液晶模块是首选的显示器件。
液晶显示器种类很多,内部结构复杂,但液晶模块的接口比较规范,在使用液晶时,只需要针对液晶模块接口设计接口电路并进行软件编写,就可以达到应用液晶的目的。
液晶模块主要有段式、字符式、图形式三种,在不同的应用场合可以选择不同的液晶,由于图形式液晶在借助子模提取软件可以任意的显示汉字和各种图形,故在系统设计时选用了图形点阵式液晶,由长沙太阳人电子有限公司生产的图形点阵式液晶,型号为SMG12864。
下面针对此模块进行介绍:
⒈接口信号说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
12
DB5
DATAI/O
2
VDD
电源正极
13
DB6
DATAI/O
3
VO
液晶显示偏压
14
DB7
DATAI/O
4
RS
数据命令选择端
15
CS1
片选IC1信号
5
R/W
使能信号
16
CS2
片选IC2信号
6
E
DATAI/O
17
RST
复位信号L
7
DB0
DATAI/O
18
VEE
负电源输出
8
DB1
DATAI/O
19
NC
空脚
9
DB2
DATAI/O
20
NC
空脚
10
DB3
DATAI/O
21
BLA
背光源正极
11
DB4
DATAI/O
22
BLK
背光源负极
⒉控制器接口说明
⑴基本操作时序
1读状态:
输入:
RS=L,R/W=H,CS1&CS2=H,E=H
输出:
D0~D7=状态字
②写指令:
输入:
RS=L,R/W=L,D0~D7=指令,CS1&CS2=H,E=高脉冲
输出:
无
③读数据:
输入:
RS=H,R/W=H,CS1&CS2=H,E=H输出:
D0~D7=数据
④写数据:
输入:
RS=L,R/W=L,D0~D7=数据,CS1&CS2=H,E=高脉冲
输出:
无
⑵状态字说明
STA0~4未用STA5液晶显示状态1为关闭0为显示STA6未用
STA7读写操作使能1为禁止0为允许
注:
对控制器每次进行读写操作之前,都必须进行读写检测,确保STA=0
⑶指令说明
①初始化设置
写指令C0H:
设置显示初始行;
写指令3FH:
开显示;
写指令3EH:
关显示;
②数据设置
控制器内部设有一个数据地址页指针和一个数据地址列指针,用可通过他们访问内部的全部512字节随机存取储存器;数据指针的设置:
指令B8H+页码(0~7)设置数据地址页指针;指令40H+列码(0~64)设置数据地址列指针
⒊液晶显示模块的读写时序
⑴读操作时序
⑵写操作时序
⑶时间参数表
时序参数
符号
极限值
单位
测试条件
最小值
典型值
最大值
E信号周期
tc
1000
-
-
ns
引脚E
E脉冲宽度
tpw
450
-
-
ns
E上升沿/下降沿宽度
tr,tp
-
-
25
ns
地址建立时间
tsp1
140
-
-
ns
引脚E、RS、CSX、R/W
地址保持时间
THD1
10
-
-
ns
数据建立时间(读操作)
tD
-
-
320
ns
引脚DB0~DB7
数据保持时间(读操作)
Thd2
20
-
-
ns
数据建立时间(写操作)
Tsp2
200
-
-
ns
数据保持时间(写操作)
Thd2
10
-
-
ns
⒋SMG128×64的参考连接图如下:
⑴总线方式:
见图2
⑵模拟口线方式:
见图3
在此系统中采用总线方式连接,见图1的液晶显示模块的连接。
图2总线方式
图3模拟口线方式
⒌液晶显示的实现
⑴硬件实现
根据液晶的接口及系统电路,液晶的硬件接口电路如图1,采用总线方式连接,这样连接,对整个系统来说节约了资源,同时在编程方面也提供了良好的接口。
⑵软件的实现
软件主要是完成对液晶的初始化,初始化主要包括液晶开显示,清屏,初始化显示行与列,然后调用显示子程序完成图形、汉字的显示。
在软件编写,一项重要的工作是制作这合适显示模,在制作提取显示码时,采用了液晶显示码专用提取软件(可以在网站下载到),利用该软件可以得到较为理想的显示码机显示效果。
㈡键盘控制模块简介及应用
实现键盘控制有许多不同的方法,在设计中考虑到手边现有的资源采用了键盘管理芯片进行键盘识别﹑管理,键盘管理芯片型号为HD7279A。
HD7279是一片具有串行接口的可同时驱动8位共阴式数码管或只独立的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示﹑键盘接口的全部功能。
HD7279A内部含有译码器可直接接受BCD码或16进制码,并同时具有2种译码方式,此外具有多种控制指令。
同时,HD7279A具有片选信号,可方便的实现多于8位的显示或多于64键接口。
⑴芯片特点:
1串行接口,无需外围元器件可直接驱动引导
2各位独立控制译码/不译码及消隐和闪烁属性
3(循环)左移/(循环)右移指令
4具有段寻址指令,方便控制独立引导
564键键盘控制器,内含去抖动电路
⑵基本电路:
图4HD7279连接电路
⑶系统中的芯片应用
HD7279芯片具有比较强大的功能,而在本电路设计中,只用其键盘的管理功能,在HD7279的基本应用电路的基础上作了相应的修改,去掉数码管显示部分,串行接口接在P1口上,电路图见5
图5键盘电路图
⑷功能应用说明及实现
①引脚说明
引脚
名称
说明
1.2
VDD
正电源
3.5
NC
空脚无连接必须悬空
4
VSS
接地
6
CS
片选输入端,此引脚为低电平时,可向芯片发送指令及读取键盘数据。
7
CLK
同步时钟输入端
8
DATA
串行数据输入/输出端
9
KEY
按键有效输出端,平时为高电平,监测到有效按键便为低电平
10-16
SG~SA
段g~段a输出
17
DP
小数点驱动输出
18-25
DIG0~7
数码0~7输出
26
CLKO
震荡输出端的
27
RC
RC振荡器连接端
28
RESET
复位端
②串行接口与指令
HD7279采用串行的方式与微处理器通信,串行数据从数据引脚送入芯片,并由CLK端同步,当片选信号变为低电平后,数据因脚上的数据在CLK引脚上的上升沿被写入HD7279的缓冲寄存器。
HD7279的指令结构有三种类型:
Ⅰ不带数据的纯指令,指令的宽度为8个一点点,即微处理器需要发送8个CLK脉冲。
Ⅱ带有数据的指令,宽度为16个一点点,即微处理器需要发送16个CLK脉冲。
Ⅲ读取键盘数据指令,宽度为16个一点点,前8个为微处理器发送到HD7279的指令,后8个一点点为HD7279返回的键盘代码。
执行此指令时,HD7279的数据端在第9个CLK脉冲的上升沿变为输出状态,并与第16个脉冲的下降沿恢复为输入状态,等待接收下一指令。
串行接口的时序如下:
Ⅰ纯指令
Ⅱ带数据的指令
Ⅲ读键盘指令
③键盘的初始化及编程应用
在系统中主要是应用其键盘管理功能,首先在上电后,应使键盘复位,即向其写入复位命令(A4H)然后单片机检测键盘中断,在有键按下时,KEY脚以平时的高电平变为低电平,向单片机发出中断,当单片机检测到就进入中断读取键盘数据。
其中发送命令子程序:
SEND:
MOVR6,#08H
MOVA,#03H
MOVDPTR,#002fH
MOVX@DPTR,A
ACALLL_DELAY
S_LOOP:
MOVA,RAM
MOVC,ACC.7
MOVDAT,C
SETBCLK
RLA
MOVRAM,A
ACALLS_DELAY
CLRCLK
ACALLS_DELAY
DJNZR6,S_LOOP
CLRDAT
RET
接收数据子程序:
RECEIVE:
MOVR6,#08H
SETBDAT
ACALLL_DELAY
R_LOOP:
SETBCLK
ACALLS_DELAY
MOVA,RAM1
RLA
MOVC,DAT
MOVACC.7,C
MOVRAM1,A
CLRCLK
ACALLS_DELAY
DJNZR6,R_LOOP
CLRDAT
RET
延时程序:
L_DELAY:
MOVR7,#28H
DJNZR7,$
RET
S_DELAY:
MOVR7,#08H
DJNZR7,$
RET
四I2C总线应用
I2C总线的应用非常广泛,在很多的器件上都配有I2C总线接口,使用这些器件时一般都需要通过I2C总线进行控制。
由于I2C器件的广泛应用,许多微处理器本就带有标准的I2C接口,而现在用的AT89C55自身不带有I2C总线接口,在实现对I2C器件控制时,主要是根据I2C总线的通信协议,来模拟I2C总线。
⒈I2C总线的特点与应用
I2C总线是一种具有自动寻址﹑高低速设备同步和仲裁等功能的高性能串行总线,能够实现完善的全双工数据传输,它在各种总线中使用信号线较少,只有两根线同步时钟线SCL和数据线SDA,因此构成控制系统十分的方便、灵活。
I2C总线具有标准的规范及种类较齐全的带有I2C接口的外围器件,如E2PROM,RAM,日历时钟,A/D,D/A等,在各类实际产品中有着广泛的应用。
2.I2C总线的基本原理
I2C总线只有两根信号线,数据线SDA和时钟线SCL,所有进入I2C总线系统中的设备都带有I2C总线接口,符合I2C总线电器规范的特性,只需将I2C总线上所有节点的串行数据线SDA和时钟线SCL分别与总线的SDA和SCL相连接即可。
各节点供电可以不同,但需要共地,另外SDA、SCL需分别接上拉电阻。
当执行数据传送时,启动数据发送并产生时钟信号的器件称为主器件,被寻址的任何器件都可看作从器件,发送数据到总线上的器件称为发送器,从总线上接收数据的器件称为接收器。
I2C总线是多主机总线,可以有两个或更多的能够控制总线的器件与总线连接,同时I2C总线还具有仲裁功能,当一个以上的主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏。
I2C总线的寻址采用纯软件的寻址方法,无需片选线的连接,这样就简化了总线数量。
主机在发送完启动信号(STA)后,立即发送寻址字节来寻址被控器件,并规定数据传送方向。
寻址字节由7位从机地址D7~D1和1位方向位D0组成,当主机发送寻址字节时,总线上所有器件都将该寻址字节中的高7位地址与自己器件的地址比较,若两者相同,则该器件认为被主机寻址,并根据读、写位确定是从发送器或从接收器。
连接到I2C总线上的每一个器件都有一个唯一的地址,以区别总线上的其它器件.I2C总线地址统一由I2C总线委员会分配,例如对于E2PROM芯片规定其高4位D7~D4地址是1010低3位D3~D1地址根据芯片引脚A2、A1、A0的接法而定,若A2、A1、A0均接地则该器件的7位
⒊I2C总线的数据传输
在I2C总线上每传输一位数据都有一个时钟脉冲相对应。
注意这里的时钟脉冲不像一般的时钟一样必须是周期性的,它的时钟间隔可以不同。
总线备用时(即处于非忙状态),SDA和SCL都必须保持高电平状态,关闭I2C总线时才使SCL嵌位在低电平。
只有当总线处于“非忙”状态时,数据传输才能被初始化。
在数据传输期间,只要时钟线为高电平,数据线都必须保持稳定,只有在时钟线为低电平时,才允许数据线上的电平状态变化。
在时钟线保持高电平期间,数据线出现下降沿为启动信号,上升沿为停止信号,启动和停止信号都由主机产生,总线上带有I2C总线接口的器件很容易检测到这些信号。
I2C总线数据传输时必须遵循规定的数据传送格式如图3.1,所示启动信号表明一次传送的开始,其后为寻址字节,该寻址字节由高7位地址和最低1位方向位组成,方向位为“0”表明主机对从机的写操作,为“1”表示读操作,接下来是从器件给出的应答位,然后依次是由方向位指定读、写操作的数据字节与应答位,在数据传送完成后为停止信号。
其中在起动与停止信号之间传输的数据字节数由主机决定,字节数理论上没有限制,一般具有I2C接口的器件都设置有对内部单元地址操作时的自动加减功能,主机可以连续操作多个单元。
注:
第1组1~7为从器件地址(SLAW)8为读/写标志9应答位后面1~8为数据
图3.1I2C总线的数据传输
I2C总线上的应答信号是比较重要的,在编制控制程序时应该着重考虑.I2C总线上每传送一个字节数据后,SDA都必须有应答信号,此时主机的SCL应产生一个与这个应答位相对应的额外的时钟脉冲.接收器输出低电平为应答信号(ACK),输出高电平为非应答信号(A/C/K/).发送器应在第9个时钟位上释放数据线,使其处于高电平状态,以便接收器在这一位上送出应答信号.当从机为接收器时,若由于某种原因不能产生应答时,必须释放总线,以便主机产生一个停止信号来终止总线数据的传输;当主机为接收器时,接收到最后一个数据字节后,必须发送一个非应答位(A/C/K/),使从发送器释放数据线,以便主机发送停止信号来终止数据的传输.下面介绍三种常用的数据传送格式.
1主控器的写操作
主控器向被寻址的被控器件发送n个数据字节,整个传输过程中数据传输过程中数据传送方向不变。
其数据格式如下
其中黑体:
主控器发送,被控器接收
非黑体:
主控器接收,被控器发送
A应答信号|A非应答信号S起始信号P停止信号SLAW寻址字节(写)
data1~datan写入被控器的n个数据字节。
2主控器的读操作
主控器从被控器中读出n个字节的操作,整个传输过程中除寻址字节外,都是被控器件发送,主控器件接收。
数据格式如下:
其中黑体:
主控器发送,被控器接收
非黑体:
主控器接收,被控器发送
data1~datan被控器件读出的n个字节
主控器件发送停止信号前应发送非应答位,向被控器表明读操作结束。
3主控器的读写操作
在一次数据传输过程中需要改变传送方向的操作,这时,起始信号和寻址字节都会重复一次,但两次读写方向相反。
数据传输格式如下:
其中:
SR重复起始位
图中未标注数据字节的传送方向,其方向决定于寻址字节的方向。
⒋单片机与I2C总线连接的硬件实现
单片机的使用种类比较多,有些单片机自身带有I2C总线接口,这样就可以把带有I2C接口的器件直接接到I2C总线上就可以,在此设中采用的AT89C55芯片自身没有I2C接口,它类型的单片机也有好多没有I2C接口,但可以根据I2C总线上的传输协议来模拟I2C总线,其硬件连接十分简单,有单片机的P1口上任意两条口线,连接SCL,SDA即可,但须注意影子总线上加相应的上拉电阻,其连接如图4.1,主要连接器件有AT24C256,PCF8563
图4.1I2C总线硬件连接
⒌模拟I2C总线软件的实现
对标准的I2C总线的数据传送,规定了严格的时序要求,以保证数据传送的可靠性。
再用单片机实现I2C总线协议时,就是按照I2C总线的时序进行数据的传输。
由于模拟I2C总线有比较完整的软件包,这里不再重复,软件包见附录三
⒍实验应用的I2C器件简介
在此毕业设计中,主要应用的I2C器件是AT24CXX系列的E2PROM,和时钟芯片PCF8365。
1AT24CXX系列E2PROM
AT24CXX系列EEPROM为I2C总线存储器,具有I2C总线的单片机,编程较简单,如果无I2C总线接口的单片机,只要具有两个I/O口均可