




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、吉首大学本科生毕业论文独创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。论文题目: 作者签名: 日期: 年 月 日论文版权使用授权书本人完全了解吉首大学有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件和磁盘,允许论文被查阅和借阅,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。同意吉首大学可以用不同方式在不同媒体上发表、传播学位论文的全部或部分内
2、容。(保密的学位论文在解密后应遵守此协议)论文题目: 学生签名: 日期: 年 月 日 导师签名: 日期: 年 月 日目 录摘 要IAbstractII第1章 绪 论11.1 社会背景11.2 单片机简介11.3 主要任务和内容2第2章 方案选择42.1 矩阵键盘扫描法选择42.2 显示方案选择4第3章 系统硬件设计63.1 整体硬件设计方框图63.2整体电路设计图63.3AT89C51单片机简介7第4章 系统软件设计124.1 程序设计124.2 LCD显示设计14第5章 调试与仿真185.1 keil和proteus软件简介185.2 Proteus和Keil的联调185.3 Proteus
3、仿真结果20结 语22参考文献23附 录24致 谢25基于单片机的较复杂键盘显示接口设计摘 要本设计主要是基于单片机的较复杂键盘显示接口设计,基于AT89C51单片机及相关译码器构成的多键盘及其用LCD1602实现位置显示的矩阵4×8键盘,用PROTEUS与kiel软件联合调用实现电路图的仿真。其设计中包括了硬件和软件的设计,其中主要有键盘扫描模块、LCD显示模块和输入模块组成。从C51程序上实现键盘的消抖,按键扫描与识别,按键内容的液晶LCD显示以及按键功能的液晶显示,实现简易的计算器功能。本电路克服了以往并行接口设计中占用I/O口键盘控制编程较复杂的缺点,并在构成多按键控制与多控
4、制显示的较大规模单片机应用系统中具有较强的有参考和实用的价值。关键词:键盘;数码管;单片机Microcontroller-based keyboard and display interface design more complex AbstractThis design is more complex microcontroller-based keyboard and display interface design, based on multiple keyboards with LCD1602 AT89C51 microcontroller and its associated d
5、ecoder implementations matrix composed of 4 × 8 position display keyboard, with PROTEUS software combined with kiel call implementation schematic emulation. Its design includes the hardware and software design, where the main keyboard scan module, LCD display module and the input module. Realiz
6、ed from the C51 keyboard debounce program, key scanning and recognition, key content LCD display and LCD display button functions to achieve a simple calculator function. This circuit overcomes the shortcomings of previous designs occupy parallel interface I / O port keyboard control programming mor
7、e complex, and has a strong reference value and practical applications in large-scale single-chip multi-button control and multi-display configuration control .Keywords: Keyboard; LCD display; SCM 25第1章 绪 论1.1 社会背景伴随着我国的社会经济的蓬勃发展,以及在电子信息技术与计算机技术领域的发展,人们生活水平的快速提高。在多方位控制及多方面显示的要求越来越高。多键盘多显示在各个领域中的发展得到
8、了比较全面的应用。而单片机技术的出现是计算机制造技术高速发展的产物,单片机是嵌入式控制系统的核心,就像人的大脑一样,控制着整个系统的运行。如今,单片机已经广泛的融入到了我们生活中的各个领域,比如:科技、电子、汽车、通信、工业等。单片机无声无息在给我们平时生活与科技研究应用带来了方便的同时,却也暴露了许多的漏洞及问题。如今应用到市场上存在许多数字显示键盘的各种应用产品,但其还存在着显示不稳定以及延时显示,键盘功能不能及时响应,而且价格比较高等缺点。现在的市场急需一种可以及时响应,且显示比较稳定且性价比可以接受的数显键盘产品。较复杂键盘显示接口,是单片机应用系统中最常用的基本接口电路。而所谓的键盘
9、即为按有序排列而成的并带有输入功能电路的一组健体开关组合,CPU通过对键盘输入信号的高低电平来进行识别按键信息,然后再通过各种译码和转换方式,最后在LCD显示器上显示其输入的信息。数字显示键盘是单片机应用系统中比较常见的应运器件。本文主要设计一种基于AT89C51单片机的较复杂键盘控制和LCD显示的接口显示电路,并且在其基础上添加了简易的计算器功能。本设计中主要运用了最基本的理论知识,且设计简单,容易实现1。 1.2 单片机简介单片机是单片把微型计算机(Single Chip Microcomputer,SCM)的简称。它是由微型计算机的微处理器、I/O接口、定时器/计数器、串行接口、存储器、
10、中断系统等电路集成在一片集成电路芯片上形成的微型计算机。它与通用的计算机不同,单片机的指令功能是按照工业控制的要求而设计的,所以它也被称为微控制器(Microcontroller),简称MCU。它由中央处理器(CPU)、程序存储器(ROM、EPROM、E2PROM或FLASH)、数据存储器(RAM)、定时/计数器和各种输入/输出接口电路等计算机的主要功能部件都被集成在一块半导体芯片上,构成了完整的计算机系统。单片机的基本组成与基本工作原理与一般的微型计算机相同,但在具体结构和处理过程上又有自己的特点。其主要特点有一下几点:1.2.1 在存储器结构上,存储器采用哈佛(Harvard)结构单片机的
11、片内存储包含RAM(数据存储器)和 ROM(程序存储器)。而RAM和ROM是相互独立的且被严格分工的。RAM称为数据存储器,用于存放数据及工作区。ROM则为程序存储器,只有存放程序指令、数据表格和固定常数的功能。数据存储器(RAM)内的存储空间小,它为随机存储器,只是用来存放用户数据的。程序存储器(ROM)内的存储空间较大,它主要是根据单片机用于控制系统中的特点决定的。两者的访问方式也存在一定的差异,即使用的寻址方式不同,通过的地址指针访问不同2。1.2.2 在芯片引脚上,大部分采用分时复用技术由于单片机芯片主引脚数目有限,为了解决实际的引脚数和需要的引脚数两者之间的矛盾,每根引脚往往设计了两
12、个或两个以上的复用功能。每条引脚的作用是什么,可以当前机器的状态来决定,又可以用指令来决定。因此,单片机芯片内集成了许多功能部件,需要的引脚信也较多。1.2.3 在内部资源访问上,采用特殊功能寄存器(SFR)的形式单片机中集成了PC机的微处理器、计数器、I/O接口、存储器、定时器/串行接口、中断系统等电路为一体,功能比较全面。1.2.4 在指令系统上,采用面向控制的指令系统为了满足控制系统的要求,单片机需要具备很强的控制能力。所以一般都设置一个独立的位处理器在单片机内部,这种处理器又称为布尔处理器,用于位运算。1.2.5 体积小巧,携带方便单片机可以用USB接口通讯及供电,通讯速度快,不需要外
13、接电源。只要在有电源和烧写状态指示灯的情况下,即可直观了解编程器当前状态。1.2.6 单片机有强大的外部扩展能力如果当所用系统要求远远超过单片机内部的各个功能部件所提供的功能时,单片机可以很便捷地在外部扩展各种形式的电路,所以它的扩展能力很强,同时它又能兼容许多通用的微机接口芯片。1.3 主要任务和内容本论文主要研究基于单片机的较复杂显示接口,主要涉及了单片机的控制及键盘显示系统,这个涉及关键在于对矩阵键盘的扫描、键盘的识别以及LCD液晶显示。在此基础上,给整个系统赋予一个简易的计算器功能。因此用4×8矩阵键盘作为研究对象。主要内容如下:1、根据4×8矩阵式键盘的特点,对键
14、盘控制系统的进行整体研究;2、用LCD1602液晶显示器来实时显示按键信息及功能;3 、采用软件编程的方法实现按键信息的提取和显示;4、 采用keil和Proteus软件联合调用实现仿真;5、给每个键赋予相应的功能,实现简易的计算器功能。第2章 方案选择2.1 矩阵键盘扫描法选择矩阵键盘常用的两种方法是键盘逐行扫描法和线反转法。这两种方法各有各自的特点。具体比较如下:2.1.1 逐行扫描法将全部行线置低电平,然后检测列线状态。只要有一列的电平为低电平,就表示矩阵键盘中有按键被按下,而且闭合键的位置位于低电平线和4根行线相交叉的8个按键之中。如果所有的列线的电平均为高电平,则说明键盘中没有按键按
15、下。 判断按键的位置的方法: 在确定有键按下后,就可以进入确定具体闭合键的过程3 。然后,依次从第一行到末行将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。所以在确定了某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。4此方法,所花的时间比较多,如果按键多的话,这将降低程序运行速度。2.1.2 线反转法线反转法又称为行列式法。这个方法是将列线作为输出线,而行线作为输入线。置输出线(列线)状态全部为0,如果行线中呈低电平0为按键所在的行,如果全部没变化都不是0的话,则表示没有按键被按下。如果有一个不变化为0的话,则证
16、明有按键被按下。此时确定这一个按键键码值,进行保存。然后,将第一步反过来,即是将行线用来作为输出线,列线用来作为输入线。设置输出线状态全部为0,此时列线呈低电平状态的列为按键所在的列,然后根据矩阵键盘的具体情况计算键码值。这样,就可以确定了按键的位置(X,Y)。此方法速度比较快,程序简单,大大的提高了程序的运行效率5。综上所述:所以本文设计所用的矩阵键盘扫描法选择的是线反转法。2.2 显示方案选择2.2.1 数码管数码管想要正常的显示,就要使用驱动电路来驱动数码管的各个段码,来显示出我们所要的数字,因此根据不同数码管所用驱动方式也不同,可以分为静态式和动态式两类。1 静态驱动静态驱动我们也称为
17、直流驱动。静态驱动就是指每个数码管中的每个段码都必须由一个单片机的引脚作为I/O端口来进行驱动,或使用BCD码二-十进制译码器译码来进行驱动。所以几乎是每个段码都需要一个单片机引脚,这样很占用引脚,所以其显示功能上比较简单。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×840根I/O端口来驱动,而一个AT89C51单片机可用的I/O端口才32个,这样在实际应用的时候就必须增加译码驱动来进行驱动,增加硬件电路的复杂性6。2 动态驱动方式数码管的动态方式显示接口是单片机应用中最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划
18、"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,其中可以分为共阴极和共阳极两种。位选通由各自独立的I/O线来控制,而当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,就要取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有被选通的数码段就不会亮7。通过分时轮流控制各个数码管的的COM端,这样就使各个数码管轮流受控显示,这就是动态驱动。动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。2.2.1 LCD液晶
19、显示LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它是由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,它可以很好的显示字母、数字和符号,所以可以用来当做一个计算器的显示,来同时显示一个表达式和结果同时显示8。而每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字母、字符和数字)。 综合比较:一个数码管只能显示一位数字,要同时显示几个数字的时候需要几个
20、数码管,且不能显示一些相应的运算符号,以及要占用很多管脚。而LCD1602显示器它是一种专门来显示字母、数字、符号等点阵液晶模块、可以节省管脚、功能强大,可以多个数字同时显示。可以用来显示本设计计算器功能的数字、运算符号、结果同时显示。所以本设计用LCD显示器要比用数码管方便很多。第3章 系统硬件设计3.1 整体硬件设计方框图本系统主要由三部分组成:矩阵键盘电路、单片机AT89C51、LCD1602液晶显示,如图显示:电源电路时钟电路复位电路AT89C51驱动电路蜂鸣器按键电路LCD显示图1 系统硬件图3.2 整体电路设计图图2 电路设计图3.3 AT89C51单片机简介AT89C51是一种带
21、4K字节FLASH存储器的低电压、高性能处理器,称为单片机。其中央处理器(CUP)相当于人的大脑,是单片机的核心部件。AT89C51的功能是只读存储器、可编程和可擦除。AT89C51单片机在实际生活同时为很多嵌入式控制系统提供了价廉且灵活性高的方案9。 由于将多功能8位CPU和闪烁存储器组合在单个芯片中,所以它是一种高效微型控制器,AT89C51是它的一种精简版本。3.3.1、管脚说明:AT89C51有40个引脚接口,其引脚封装如图3所示。 图3 AT89C51的DIP封装P0.0P0.7:P0口是一个8位漏级开路双向I/O口,每脚吸收8TTL门电流。当P0口的管脚第一次写1时,即定义P0口为
22、高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,由于P0口无上拉电阻,而是用2个MOS管串接,P0 口作为原码输入口,当FIASH校验时,此时上拉电阻必须接在P0口外部。 P1.0P1.7:P1口是一个内部提供上拉电阻的8位准双向I/O口,P1口缓冲器可以接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2.0P2.7:P2口为一个内部上拉电阻的8位准双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,
23、当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。当P2口作为I/O口时,与P1口一样。因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时用来接收高八位地址信号和控制信号。 P3.0P3.7:P3口管脚是8个带内部上拉电阻的准双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入
24、,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故10。 P3口也可作为AT89C51的一些特殊功能口,P3口同时为闪烁编程和编程校验接收一些控制信号。如下表1所示: 表1 脚管功能口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST:复位输入引脚。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时,使单片机复位。 ALE/PROG:地址锁存/编程脉
25、冲输入引脚。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低8位字节。就算不访问外部存储器,地址锁存端以时钟频率的1/6周期性输入正脉冲信号。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。当对Flash程序存储器编程时,该
26、引脚用作编程脉冲输入端。 /PSEN:外部程序存储器的读选通信号输出引脚。中央处理器在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在中央处理器访问外部数据存储器时,这两次有效的/PSEN信号将无效。 EA/Vpp:EA为内部程序存储器和外部程序存储器选择端。当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),无论是否有内部存储器,单片机只访问外程序存储器,。注意当加密方式为1时,/EA将内部锁定为RESET;当EA保持高电平时,此间内部程序储存器。在FLASH编程期间,施加12V编程电源也可用于此引脚。 XTAL1:内部时钟工作电路输入及反向振荡放大器输入,
27、接石英晶振一个引脚。 XTAL2:反向振荡器输出,接外部石英晶振的另一个引脚。3.3.2、AT89C51的时钟电路AT89C51的时钟可以通过两种方式产生:内部振荡方式额外部振荡方式。本系统中采用内部振荡方式。即在XTAL1和XTAL2两端引脚之间跨接一个石英晶体和两个微调电容接地,就可以构成稳定的自激振荡器并产生振荡时钟脉冲。其时钟电路如图所示:图4.4 时钟电路图 3.3.3、AT89C51的复位电路复位电路的功能是产生复位信号,让中央处理器及系统其他部件处于确定的初始状态,并从初始状态开始工作。即能在Vcc、振荡器和反偏置发生器稳定后,给RESET引脚提供至少能维持两个状态周期的低电平信
28、号,而后由芯片内上拉电路将RESET引脚的电位拉高以使单片机执行10个状态周期的复位序列。AT89C51通常可以采用上电自动复位和按键手动复位两种方式。图5是系统的单片机复位电路。该复位电路既可以实现上电自动复位,又可以实现人工手动复位。在加电瞬间,电容通过电阻充电,就可以在RESET端出现一定时间的高电平,只要高电平时间足够长,就能使单片机有效的进行复位。当按下开关时,就在RESET端就出现一段时间的高电平,使单片机复位。图5 复位电路图3.3.4、LCD液晶显示电路1602LCD液晶显示器是工业字符型液晶。它能够同时显示16x2即32个字符,每一行显示16个字符。1602液晶也叫1602字
29、符型液晶是一种专门用来显示数字、字母、符号以及少数的希腊字母等的点阵组成的液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都能显示一个字符,而且每位之间有一个点距的间隔,所以它可以同时显示多个字符、字母或者数字。每行之间也有间隔,能起到字符间距和行间距的作用,正因为如此所以它不可以很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指可以显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符、数字和字母)。 现如今,市场上的字符液晶绝大多数是基于HD44780液晶芯片的,控制原理也是完全相同的,所以基于HD4478
30、0写的控制程序能很方便地应用于市面上大部分的字符型液晶。如图6,将LCD显示器的D0D7脚接于单片机P0口,Vcc接一个电源Vss接地,RS、RW、E分别接于单片机P3.5P3.7,实现LCD显示电路。图6 LCD显示电路图3.3.5 矩阵键盘电路如图7为矩阵键盘电路,AT89C51单片机的并行口P1接4×8矩阵键盘的列,P2.0P2.3接矩阵键盘的行。连接好每个按键的一端,这样可以用各种方法来确定按键的位置。图7 矩阵式键盘电路图第4章 系统软件设计4.1 程序设计系统软件采用C语言编写,应按照模块化的设计思路设计。4.1.1 主程序设计程序开始时首先必须对单片机进行初始化,其中初
31、始化的内容包括:各IO口功能的设定。LCD显示器的初始化以及对键盘扫描的一个死循环。判断是否有键按下,如果有键按下,则对键盘进行扫描,确定键码。然后把该按键的功能通过显示器显示。主流程图如图8所示:开始初始化是否按键键盘扫描是否图8 主流程图主程序代码:int main(void)init(); /初始化 key_data(); /键盘扫描及键盘功能设定 return 0; 4.1.2 键盘扫描程序设计主程序初始化之后,进入一个死循环,判断按键是否有键按下,如果没有则继续循环。其中有按键消抖、按键扫描和按键识别。其中按键扫描法用的是线反转法。确定有键按下,则确定进行按键扫描,确定键码。键盘扫描
32、流程如图9所示: 键盘识别去抖动有键按下?确定按下位置计算键码返回NY图9 键盘扫描流程图按键扫描代码:uint key_scan()P1 = 0xff;/P1拉高P2 = 0xf0;/P2.0-P2.3拉低key_no = 34;if(P1 != 0xff)/如果有按键按下,P1就有引脚被拉低,delay(3);/延时,防抖if(P1 != 0xff)key1 = P1;/记下P1口的值P1 = 0x00;P2 |=0x0f;/P1口拉低,P2拉高if(P2&0x0f)!=0x0f)/P2口有引脚被拉低了,说明有按键按下key2 = P2&0x0f;/记下P2后4位的值swi
33、tch(key2)case 0x0e: key_no = 0;break;case 0x0d: key_no = 8;break;case 0x0b: key_no = 16;break;case 0x07: key_no = 24;break;default:key_no = 34;switch(key1)case 0xfe: key_no += 0;break;case 0xfd: key_no += 1;break;case 0xfb: key_no += 2;break;case 0xf7: key_no += 3;break;case 0xef: key_no += 4;break;
34、case 0xdf: key_no += 5;break;case 0xbf: key_no += 6;break;case 0x7f: key_no += 7;break;default: key_no = 34; return key_no;elsereturn 34;elsereturn 34;elsereturn 34;4.2 LCD显示设计4.2.1 LCD指令说明LCD指令说明如表所示:表2 LCD指令表指令指令 码功能RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满"20H",并且设定DDRAM的地址计数器(A
35、C)到"00H"地址归位000000001X设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ON,C=1: 游标ON,B=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容 功能设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作,R
36、E=0: 基本指令操作 设定CGRAM 地址0001AC5AC4AC3AC2AC1AC0设定CGRAM 地址 设定DDRAM 地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数据从内部RAM读取数据D7D0(DDRAM/CGR
37、AM/IRAM/GRAM)4.2.2 LCD字型编码表 LCD字符和符号编码表如图10,根据所要显示的字符和符号进行编码组合。用LCD内部自带写入数据函数将字符设定好。就可以得到所想显示的数据与符号。图10 LCD字型编码4.2.3 LCD显示程序设计LCD1602显示程序,显示一个字符到指定位置函数,显示字符串到指定位置函数,写指令函数,写数据函数,判忙函数(内部等待函数),初试化函数等等。数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H),01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。通过芯片传来的信息确定所要显示的字符或符号到
38、指定位置。其核心代码如下:/*LCD初始化*/void init()write_cmd(0x38);write_cmd(0x0f);write_cmd(0x06);write_cmd(0x01);write_cmd(0x80);BEEP=0;num_1=0;a = 0;/第一个参与运算的数b = 0;/第二个参与运算的数flag = 0;/符号fuhao = 0;/什么符号is_point = 0;/is_point1 = 0;count = 0;count1 = 0;/*LCD 写入命令*/voidwrite_cmd(uchar command)delay(50);LCDE=1;LCDRS
39、=0;LCDRW=0;LCDPORT=command;LCDE = 0;/*LCD 写入数据*/voidwrite_data(uchar dat)delay(50);LCDE=1;LCDRS=1;LCDRW=0;LCDPORT=dat;LCDE=0;第5章 调试与仿真5.1 keil和proteus软件简介5.1.1 Keil软件Keil软件目前比较流行的用于51系列单片机开发的软件之一,它是德国Keil公司推出的单片机编译器,Keil软件提供了包括C编译器、宏汇编、库管理、连接器和一个功能强大的仿真调试器等在内的完整开发方案,它是一个基于Windows系统环境下的一个应用程序,支持汇编语言和
40、C语言的编程,其6.0以上的版本将统一称为uVision。Keil软件主要由以下几部分组成:C51编译器、uVision IDE集成开发环境、LIB51库管理器、A51汇编器、OH51目标文件生成器、BL51连接/定位器、 Monitor-51以及RTX51实时操作系统。应用Keil软件仿真开发的主要步骤为:1、新建一个工程项目文件;2、选择目标器件(如,选择Atmel公司的AT89C51);3、设置软/硬件调试环境;5、保存创建的源程序项目文件;6、把源程序文件添加到项目中;7、进行程序编程。(如果有现成的代码可直接用)。5.1.2 Proteus软件Proteus ISIS是英国Labce
41、nter公司开发的实物仿真与电路分析软件。具有单片机仿真、外围电路组成的系统仿真、模拟电路和数字电路仿真、及其I2C调试器、RS232动态仿真、键盘和LCD系统、SPI调试器仿真的功能。它运行于Windows操作系统环境下,它主要作用就是分析(SPICE)各种模拟器件、集成电路和仿真,软件实现了SPICE电路仿真和单片机仿真相结合11。也提供有各种虚拟仪器,如逻辑分析仪、示波器、信号发生器等,可以变化线路上的信号,以图形的形式显示出来。也提供了各种电子器件,如电容、电阻、晶振、蜂鸣器等。目前支持的单片机类型有:C51系列、68000系列、AVR系列、8051系列、Z80系列、HC11系列、PI
42、C12系列、PIC16系列、PIC18系列以及各种外围芯片。它还具备软件调试功能。在硬件仿真系统中具有单步、全速、断点设置等功能,同时可以观察各个变量、寄存器等当前的状态。当用Proteus软件画图,需要先选定电路图所需的电子元件以及芯片。然后画出自己所需的功能电路图。5.2 Proteus和Keil的联调keil是如今比较实用的的单片机的C语言和汇编语言的开发工具。它不但支持C语言、汇编语言以及混合编程,同时还具备功能十分齐全的软件硬件调试与仿真功能12。但是,实际上我们在使用它的进行仿真功能时仍存在一定的限制。所以我们把这keil和proteus两个软件结合起来用,这样调试软硬件就方便多了
43、。我们只需可以在Proteus中画好电路图,然后根据电路图和所要实现的功能在Keil中进行代码编译生成“.HEX”文件。然后稍微做出一些设置,在proteus软件里面,把“.HEX”文件加载到芯片里面。就可以把Keil和Proteus联合调用起来。进行验证代码的可运行性,以及代码的正确性。同时也方便做出相应的修改。具体的设置步骤如下:1、假若Keil uVision3与Proteus均已正确安装在D:Program Files的目里D:ProgramFilesLabcenterElectronicsProteus7ProfessionalMODELSVDM51.dll复制到D:Program
44、FileskeilCC51BIN目录中,如果没有“VDM51.dll”文件,那么去网上下载一个。 2、打开Keil uVision3,新建Keil项目,选择AT89C51单片机作为CPU;并把编写好的程序导入到“Source Group 1”中;3、需要设置Keil uVision3的选项点击“菜单Project中Options for Target1”选项或点击工具栏的“option for target”选项,弹出窗口,选择“Output”选项中的“Create HEX File”选项和点击“Debug”键,出现如图11所示页面。 图11 Keil uVision4 选项设置在出现的对话框
45、里在右栏下拉菜单里选中“Proteus VSM Simulator”选项。并且点击一下“Use”前面表明选中的圆点。设置完之后,重新编译源程序,修改程序中的错误直至通过。然后链接、生成可执行文件“.HEX”文件。4、Proteus的设置进入Proteus的ISIS,点击菜单“Debug”键, 选中“use romote debuger monitor”, 如图12所示。此后,便可实现Keil 51与Proteus的连接调试。图12 选项设置然后双击AT89C51元件,打开“Eidt Component”对话框,设置单片机的频率为12MHz;同时在该窗口的“Program File”栏中,选择先
46、前在Keil中编译产生的“.HEX”文件。如图13所示。 图13 AT89C51设置5.3 Proteus仿真结果选择好加载的可执行文件后,单片机仿真运行开始。我们能清楚的观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。与按键连接的引脚电频会不定时的有变动,那是在进行键盘扫描,一直扫描,扫描判断有按键按下,如果有按键按下,则就会进一步确定按键位置,读出按键的值,送入LCD显示。上面一行显示的是算式,下面一行显示计算结果。仿真结果如图14所示:图14 仿真结果结 语本设计主要是以AT89C51单片机为核心载体设计4*8键盘显示。其中的系统硬件设计和系统软件设计都离不开对单片机基本知识
47、的了解,虽然我在这次毕业设计中我遇到了一些问题,如:无法键盘扫描,原因是程序进入扫描下一行按键时无法跳出循环。但是,在老师的精心的指导下,和自己不懈的努力下,网上和图书馆查资料,终于把这些问题给解决了。在解决这些问题的过程中,让我对单片机的知识的理解一步一步地更加深刻。在进行对本题目进行设计的时候通过上网以及去图书馆对单片机控制和LCD显示器进行了详细的资料收集,也从技术和产业的两方面对单片机进行了一些了解。而随着我越来越对单片机的了解,我发现现实生活中有很多方面都用到了单片机。从而我认识到单片机是一门当今应用非常广泛而热门的技术,它将会给我们的生活带来很多方便。而且我相信随着科技的快速发展,以后单片机会在各个领域中成熟运用。此次设计我采用了C语言编程,画出主流程图,在总体思路清晰的情况下先一步一步地逐行编程,等到编完后觉得可读性不好,我又将其分模块进行分析,这样就增加代码可阅读性。而且编写程序时一定要很细心,C语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家庭电工实战施工方案
- 槽钢施工方案
- TSHAEPI 012-2024 低碳实践区近零碳排放实践区建设和评价指南
- 幼儿园环境创设家长参与2025年度合作协议
- 二零二五年度剧院包场合同-电影院租赁年度文化合作协议
- 2025年度跨境电商平台国际人才招聘与派遣合同
- 二零二五年度茶山租赁及茶叶种植与农业观光旅游开发合同
- 二零二五年度商业街房地产招商代理执行协议
- 2025年度金融科技股权分红与风险防范协议
- 二零二五年度健身房浴室共享租赁合同范本
- 《采购管理策略》课件
- 《教育强国建设规划纲要(2024-2035年)》解读讲座
- 《义务教育语文课程标准》2022年修订版原版
- GB 30254-2024高压三相笼型异步电动机能效限定值及能效等级
- 天耀中华合唱简谱大剧院版
- (全)电梯安全风险管控清单
- GB/T 24353-2022风险管理指南
- 二年级下册万以内数的认识复习公开课(课堂PPT)
- 橡塑保温材料检验报告模板
- 重庆市城镇老旧小区改造和社区服务提升项目管理办法(试行)
- 加油站应急预案演练
评论
0/150
提交评论