112864LCD显示键盘按键的计算器学生姓名:学号:学院:物理电子工程学院专业:电子信息工程指导教师:职称:教授摘要:简易计算器是一种非常广泛日常工具,对现代社会越来越流行。它可以进行一些简易的计算。该电路采用AT89C51单片机作为核心,功耗小,能在5V的低压工作,电压可选用3~5V电压供电。本系统硬件部分由AT89C52单片机、LCD12864液晶屏、矩阵和独立键盘、蜂鸣器等部分构成。软件部分在keil环境下用C51语言编写,包括简易计算显示等。关键词:AT89C51;液晶屏LCD12864;矩阵键盘1引言众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本设计要制作的就是单片机于生活中最为常见的异种应用——简易计算器。本简易计算器AT89S52单片机作为核心,可以进行简易的计算并作出相应的显示。简易计算器显示电路由LCD12864组成,硬件方面AT89C51单片机,晶振,电源,液晶屏LCD1602。1.1AT89C51单片机AT89C51是一种低功耗、高性能CMOS8位微控制器,具有4K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C52具有以下标准功能:4k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52可降至0Hz2静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。主要性能1、与MCS-51单片机产品兼容2、8K字节在系统可编程Flash存储器3、1000次擦写周期4、全静态操作:0Hz~33Hz5、三级加密程序存储器6、32个可编程I/O口线7、三个16位定时器/计数器8、八个中断源9、全双工UART串行通道10、低功耗空闲和掉电模式l1、掉电后中断可唤醒l2、看门狗定时器l3、双数据指针l4、掉电标识符引脚结构3P0口: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.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)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口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。4引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT0(外部中断0)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89c51从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。1.LCD接口液晶显示器件(LCD)独具的低压、微功耗特性使他在单片机系统中特得到5了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。本课设所选择的LCD是LGM12641的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口如图3-1所示。图3-1LCD电路图6表3.1LGM12641接口说明表管脚号管脚电平说明1CS1H/L片选择信号,高电平时选择前64列2CS2H/L片选择信号,高电平时选择后64列3GND0V逻辑电源地4VCC5.0V逻辑电源正5V0LCD驱动电压,应用时在VEE与V0之间加一2K可调电阻6RSH/L数据\指令选择:高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行7R/WH/L读\写选择:高电平:读数据;低电平:写数据8EH/L读写使能,高电平有效,下降沿锁定数据9DB0H/L数据输入输出引脚10DB1H/L数据输入输出引脚11DB2H/L数据输入输出引脚12DB3H/L数据输入输出引脚13DB4H/L数据输入输出引脚14DB5H/L数据输入输出引脚15DB6H/L数据输入输出引脚16DB7H/L数据输入输出引脚17RSTL复位信号,低电平有效18VOUT-10VLCD驱动电源2.指令描述(1)显示开/关设置CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0功能:设置屏幕显示开/关。DB0=H,开显示;DB0=L,关显示。不影响显示RAM(DDRAM)中的内容。(2)设置显示起始行CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LLHH行地址(0~63)功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。(3)设置页地址LLLLHHHHHH/L7CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LLHLHHH页地址(0~7)功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。地址就是DDRAM的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。DDRAM地址映像表如表3.2所示。表3.2RAM地址映像表Y地址012………616263DB0∫PAGE0DB7X=0DB0∫PAGE1DB7X=1……………………DB0∫PAGE6DB7X=6DB0∫PAGE7DB7X=7(4)设置列地址CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LLLH列地址(0~63)功能:DDRAM的列地址存储在Y地址计数器中,读写数据对列地址有影响在对DDRAM进行读写操作后,Y地址自动加一。(5)状态检测CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0HLBFLON/OFFRSTLLLL功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。BF=H:内部正在执行操作;BF=L:空闲状态。RST=H:正处于复位初始化状态;RST=L:正常状态。ON/OFF=H:表示显示关闭;ON/OFF=L:表示显示开。(6)写显示数据CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB08LHD7D6D5D4D3D2D1D0功能:写数据到DDRAM,DDRAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DDRAM前,要先执行“设置页地址”及“设置列地址”命令。(7)读显示数据CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0HHD7D6D5D4D3D2D1D0基本操作时序:①读状态:输入: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=H,R/W=L,D0~D7=数据,CS1或CS2=H,E=高脉冲输出:无由RAM地址映射表可知LCD显示屏由两片控制器控制,分别用CS1和CS2控制。每个内部带有64X64位(512字节)的RAM缓冲区,对应关系如图3-2所示。图3-2LCD地址映射图整个屏幕分左、右两个屏,每个半屏右8页,每页有8行,注意数据是竖行排列,如表3.2。显示一个字要16*16点,全屏有128*64个点,故可显示32个中文汉字。每两页显示一行汉字,可显示4行汉字,每行8个汉字,共32个汉字。而显示LCD128*64点IC18页*64列64*64点IC28页*64