毕业设计论文范文(液晶显示的乘法口诀测试仪)(4)
来源:56doc.com 资料编号:5D4689 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9A5D4689
资料介绍
第3章 硬件设计 电路硬件设计包括AT89S52主芯片、LCD1602显示电路、矩阵键盘电路、单片机复位电路,外加一个蜂鸣器。 3.1 主芯片AT89S52介绍 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。 AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。 与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符[15]。 3.1.1 引脚功能特性描述 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。 P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器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位地址读取外部数据存储器,P2口送出高八位地址。 P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用。在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闪存编程和程序校验的控制信号[6]。 ALE/PROG——当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的 1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必需保持低电平(接地)。 RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 VCC:电源。 GND:接地。 3.1.2 AT89S52的引脚图 图3-1 AT89S52芯片引脚图 3.1.3 AT89S52存储器结构 存储器结构:MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址[2]。 程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于AT89S52,如EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。 数据存储器:AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址。 3.1.4 AT89S52定时、振荡分析 看门狗定时器:WDT是一种需要软件控制的复位方式。WDT由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。 定时器0和定时器1:在AT89S52中,定时器0和定时器1的操作与AT89C51和AT89C52一样。定时器2:定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择。定时器2有三种工作模式:捕捉方式、自动重载(向下或向上计数)和波特率发生器。工作模式由T2CON中的相关位选择。定时器2有2个8位寄存器,分别是TH2和TL2。在定时工作方式中,每个机器周期,TL2 寄存器都会加1。由于一个机器周期由12个晶振周期构成,因此,计数频率就是晶振频率的1/12。 时钟振荡器:AT89S52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器在一起构成自激振荡器。 用户也可以采用外部时钟。在这种情况下,外接石英晶体(或陶瓷振荡器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。 图3-3 振荡电路图tu 图3-2 振荡电路图 由于外部时钟信号是通过一个2分钟触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间产品技术条件的要求。 3.1.5AT89S52 节电模式 空闲节电模式:AT89S52有两种可用软件编程的省电模式,它们是空闲模式和掉点工作模式。这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCON.1)和IDL(PCON.0)位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机模式,即PD和IOL同时为1,则先激活掉电模式。 在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止[11]。 3.1.6 AT89S52编程与中断 编程方法: 1.在地址线上输入编程单元地址信号。 2.在数据线上输入正确的数据。 3.激活相应的控制信号。 4.把EA/Vpp升至12V。 5.每给Flash写入一个字节或程序加密位时,都要给ALE/PROG一次脉冲。字节写周期时自身定制的,典型值仅仅50us。改变地址、数据重复第1步到第5步,知道全部文件结束。 中断原理: AT89S52有6个中断源:两个外部中断(INT0和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。 3.2 矩阵键盘简介 矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。相比较独立式键盘占用大量的I/O系统资源而言,矩阵键盘是很普及得到应用的,一般应用到按键较多的系统之中。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按钮加以连接。这样,一个端口(如P1 口)就能组成4*4=16个按钮,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,若再多加一条线就能组成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 3.2.1 矩阵键盘的电路和外观图 图3-3 矩阵键盘电路 上图已经明确了该键盘电路和AT89S52的接线原理了,从P1.0到P1.7按顺序连接,与之对应的是键盘外观排列图,如图3-4所示: 图3-4 矩阵按键排列 3.2.2 4×4矩阵键盘的工作原理 先从AT89S52单片机的P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取键盘状态。再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。 举例说明如何得到按键的特征编码:假设“1”键被按下,找其按键的特征编码。 从单片机AT89S52的P1口的高四位输出低电平,即P1.4-P1.7为输出口。低四位输出高电平,即P1.0-P1.3为输入口。读P1口的低四位状态为“1101”,其值为“0DH”。再从P1口的高四位输出高电平,即P1.4-P1.7为输入口。低四位输出低电平,即P1.0-P1.3为输出口,读P1口的高四位状态为“1110”,其值为“E0H”。将两次读出的P0口状态值进行逻辑或运算就得到其按键的特征编码为“EDH”。用同样的方法可以得到其它15个按键的特征编码。 根据按键的特征编码,查表得到按键的顺序编码:将用上述方法得到的16个按键的特征编码依照按键排列的顺序排成一张特征编码与顺序编码的对应关系表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它所在的位置就是对应的顺序。 3.2.3 矩阵键盘键值查找程序设计的思路 识别键盘有无按键按下,若无键按下返回。如果有键按下,找出具体的按键值,通过查找程序我们就可以知道那个案件按下去了,并可以通过具体公式计算出来。 扫描一个按键通常为几微妙,而测试者用手来按键盘时候大概需要零点几秒来完成,所以在每次扫描键盘时候就得看看先前的那个按下的按钮是否有放开。 3.2.4 如何扫描矩阵键盘按键 从总电路图接线上可以看到键盘设计的0—9,ABCDFE,16个键依次顺序排列,第一行为:0-3,第二行为:4-7,第三行为:8、9、A、B,第四行为C、D、E、F。 当扫描第一行0、1、2、3四个按键:此时使单片机AT89S52P的P1.4输出“0”,当P1.4输出“0”时,只要把0、1、2、3四个键中任意一键按下,那么从P1口输入到ACC(累加器)的值的高4位D4-D7中就会有“0”出现。此时把ACC值依次送入进位信号中检查,每送入检查一次后,将 R0的值加1。R0最先值为00H,所以第一次扫描“0”号键时,R0为00H,再扫描“1”号键时,R0的值为01H。当4个键盘都扫描完后,如果有键盘按下,则跳转到KEYIN处执行,在判断有键闭合时,调用软件延时程序去除键盘抖动,若该键仍然处于闭合状态,则该键按下。用同样的依次方法去扫描确定第二、第三、第四行键盘。 但是如何识别键盘键值是设计乘法口诀键盘的关键地方,其识别公式是:键值N=所在行的首键号+列号(0-3)。如第二行的第一列的按键被按下,我们可以判断,第二行的首键号是4,列号是1,所以键值N=4+1=5,与设计吻合。 |