1、毕业论文用单片机控制数码管显示数字的设计与研究学生姓名专业年级学号指导教师职业技术学院毕业论文1目录摘要2设计背景与方案3第一章单片机介绍511单片机基础知识学习512AT89S51单片机的主要性能参数713AT89S51芯片内部结构简介714主要引脚功能8第二章数码管的介绍1221数码管分类、结构及工作原理1222数码管的引脚1323驱动方式14第三章KEIL软件简介1631系统概述1632整体结构简介1633建立项目步骤17第四章程序设计及仿真2241设计要求2242利用PROYEUS仿真软件画出电路图2243流程图绘制以及说明2344用KIEL设计程序及仿真结果2345心得体会29附录A
2、30附录B31致谢34参考文献35职业技术学院毕业论文2摘要单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4KBYTES的可系统编程的FLASH只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集FL
3、ASH程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。关键词单片机AT89S51数码管PROTEUSKEIL3职业技术学院毕业论文3设计背景与方案一、设计背景1单片机发展前景目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩
4、具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。2共阳极数码管的显示方法LED数码管是单片机控制系统中最常见的显示器件之一,一般用来显示处理结果或输入输出信号的状态。数码管显示是一个系统工程中必不可少的人机交互环节,因此关于数码管的驱动也就是系统工程中的一个重要的环节。数码管的驱动分为动态驱动和静态驱动两种。所谓静态驱动,就是指无论多少位LED数码管,同时处于显示状态。动态显示驱动是指无论在任何时刻只有一个LED数码管处于显示状态,及单片机采用“扫描”方式控制各个数码管轮流
5、显示。3共阳极数码管的驱动设计将数码管每个LED灯对应单片机的一个I/O口。通过单片机的P口来控制LED灯的亮和灭。I/O口之间互相独立,需要用I/O口直接控制LED。动态显示将数码管的每个引脚一对一连接在一起接单片机的数据,而将各个数码管的公共端单独送至单片机的I/O口进行片选。此外,在此基础上,用单片机与三极管来驱动数码管,从而实现数码管的动态显示。二、设计方案1静态显示静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CP
6、U的开销小。能供给单独锁存的I/O接口电路很多,各数码管的公共极固定接有效电平,各数码管的字形控制端分别由各自的控制信号控制。职业技术学院毕业论文4LED显示亮度温度,容易调节,编程容易,工作是占用CPU时间短。但若直接用单片机输出各位数码管的字形信号时,占用单片机的I/O口线较多。一般仅适用于显示位数较少的应用场合。2动态显示P20端口控制数码管的个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,5V通过驱动三极管给数码管相应的位供电,这是只要P3口送出数字的显示代码,数码管就能正常的显示数字。3动态显示与静态显示对比本设计要求循环显示,要求显示不同数字,所以要求用动态扫描的方式
7、实现,即采用动态的显示方式,就是显示1毫秒,不断循环,这样只要扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到不同数字的稳定显示。数码管的字形控制端对应的并在一起,由一组I/O端口进行控制,公共极相互独立,分别由不同的I/O控制信号控制。为了达到我们的设计要求,实现用单片机控制数码管显示数字的设计,下面我们将从基础知识开始研究。职业技术学院毕业论文5第一章单片机介绍单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器
8、、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机也被称为微控制器(MICROCONTROLLERUNIT),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。11单片机基础知识学习早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。
9、此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTELI960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHZ,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片
10、机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的WINDOWS和LINUX操作系统。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的职业技术学院毕业论文6几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有12部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作单片机
11、的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可用它来做一些控制电器一类不是很复杂的工作足
12、矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。图11单片机芯片目前,很多人对汇编语言并不认可。可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。不过初学者可以不了解单片机的汇编语言,但一定要了解单片机具体性能和特点,不然在单片机领域是比较致命的。如果不考虑单片机硬件资源,在KEIL中用C胡乱编程,结果只能是出了问题无法解决可以肯定的说,最好的C语言单片机工程师都是从职业技术学院
13、毕业论文7汇编走出来的编程者因为单片机的C语言虽然是高级语言,但是它不同于台式机个人电脑上的VC什么的单片机的硬件资源不是非常强大,不同于我们用VC、VB等高级语言在台式PC上写程序毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。还有就是在单片机编程中C语言虽然编程方便,便于人们阅读,但是在执行效率上是要比汇编语言低10到20,所以用什么语言编写程序是要看具体用在什么场合下。总的来说做单片机编程要灵活使用汇编语言与C语言,让单片机的强大功能以最高是效率展示给用户。12AT89S51单片机的主要性能参数AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4
14、KBYTES的可系统编程的FLASH只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集FLASH程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。主要性能参数与单片机产品兼容4K字节FLASH闪速存储器、128字节内部RAM、1000次擦写周期、全静态操作0HZ33HZ、三级加密程序存储器、32个可编程I/O口线、两个数据指针、两个16位定时/计数器、六个中断源、全双工UART串行通道低功耗空
15、闲和掉电模式、掉电后中断可唤醒、看门狗定时器(WDT)、双数据指针、掉电标识符、一个5向量两级中断结构、片内振荡器及时钟电路。同时,AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。13AT89S51芯片内部结构简介AT89S51单片机的片内硬件组成结构如附录A中图1所示。把作为控制应用所必需的基本功能部件都集成在一个尺寸有限的集成电路芯片上。下面介绍附录A中图1里片内各功能部件。一、中央处理器中央处
16、理器CPU是整个单片机的核心部件,是8位数据宽度的处理器,能职业技术学院毕业论文8处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。二、数据存储器内部RAM数据存储器用于存放变化的数据。AT89S51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用。三、程序存储器内部ROM程序存储器用于存放程序和固定不变的常数等。通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。AT89S51内部配置了4KB闪存。四、定时/计数器ROM定时/计数器用于实现定时
17、和计数功能。AT89S51共有2个16位定时/计数器。五、并行输入输出I/O口8051共有4组8位I/O口P0、P1、P2或P3,用于对外部数据的传输。每个口都由1个锁存器和一个驱动器组成。它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。六、全双工串行口AT89S51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。七、时钟电路时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。八、中断系统中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89S51共有5个中断源,其中又2个外部中断源和3
18、个内部中断源。14主要引脚功能AT89S51引脚图如图12所示(1)VCC电源电压(2)GND地线(3)P0口P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“L”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。职业技术学院毕业论文9(4)P1口PL是一个带内部上拉电阻的8位双向I/O口,PL的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“L”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内
19、部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。FLASH编程和程序校验期间,PL接收低8位地址。表1具有第二功能的P1口引脚端口引脚第二功能P15MOSI(用于ISP编程)P16MOSI(用于ISP编程)P17MOSI(用于ISP编程)图12AT89S51引脚图(5)P2口P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据
20、存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVXRI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2职业技术学院毕业论文10寄存器的内容),在整个访问期间不改变。FLASH编程或校验时,P2亦接收高位地址和其它控制信号。(6)P3口P3口是一组带有内部上拉电阻的8位双向I/0口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“L”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/0口线外,更重要的用途是它的
21、第二功能,如下表所示表2具有第二功能的P3口引脚端口引脚第二功能P30RXD(串行输入口)P31TXD(串行输出口)P32/INT0(外中断0)P33/INT1(外中断1)P34T0(定时/计数器0外部输入)P35T1(定时/计数器1外部输入)P36/WR(外部数据存储器写选通)P37/RD外部数据存储器读选通)P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。(7)RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET
22、输出高电平打开状态。(8)ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。(9)PSEN程序
23、储存允许(PSEN)输出是外部程序存储器的读选通信号,职业技术学院毕业论文11当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。(10)EA/VPP外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ASH存储器编程时,该引脚加上12V的编程电压VPP。(11)XTAL1振荡器反相放大器及内部时钟发生器的输入端。
24、职业技术学院毕业论文12第二章数码管的介绍21数码管分类、结构及工作原理一、数码管分类数码管也称LED数码管,数码管是一种半导体发光器件,其基本单元是发光二极管数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极COM的数码管。共阳数码管在应用时应将公共极COM接到5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字
25、段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阳极COM的数码管。共阴数码管在应用时应将公共极PWR接到电源输入PWR上,当某一字段发光二极管的阴极极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。二、数码管结构LED数码管(LEDSEGMENTDISPLAYS)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“1”型。位数有半位、1、2、3、4、5、6、8、10位等等,LED数码管根据LED的接法不同分为共阴和共阳两类,了解L
26、ED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。三、数码管工作原理数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。职业技术学院毕业论文13共阳极数码管中8个发光二极管的阳极(二极管正端)连接一起,即为共阳极接法,简称共阳数码管。通常,公共阳极接高电平(一般接电源),其它管
27、脚接段驱动电路输出端。当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管中8个发光二极管的阴极(二极管负端)连接在一起,即为共阴极接法,简称共阴数码管。通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。22数码管的
28、引脚数码管一般有七段或者八段小数点DP段有就是八段,否则就是ABCDEFG七段。图21共阳极数码管引脚图数码管分共阴极和共阳极两种(共阳极就是把所有LED的阳极连接到共同接点COM,而每个LED的阴极分别为A、B、C、D、E、F、G及DP(小数点);共阴极则是把所有LED的阴极连接到共同接点COM,而每个LED的阳极分别为A、B、C、D、E、F、G及DP(小数点),引脚有A、C、D、E、F、G、H和公共端,如下图H引脚也叫做DP引脚,接的就是小数点职业技术学院毕业论文14图22共阴极数码管引脚图对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为110脚,左上角那个脚便
29、是10脚了,上面两个图中的数字分别与这10个管脚一一对应。注意,3脚和8脚是连通的,这两个都是公共脚。23驱动方式数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。一、静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢,实际应用时必须增加
30、译码驱动器进行驱动,增加了硬件电路的复杂性。二、动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“A、B、C、D、E、F、G、DP”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独职业技术学院毕业论文15立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这
31、就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12MS,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。职业技术学院毕业论文16第三章KEIL软件简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS51单片机的汇编软件有早期的A51,随着单
32、片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,KEIL软件是目前最流行开发MCS51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持KEIL即可看出。KEIL提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些部份组合在一起。运行KEIL软件需要PENTIUM或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语
33、言编程,那么KEIL几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。31系统概述KEILC51是美国KEILSOFTWARE公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全WINDOWS界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的
34、目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。32整体结构简介C51工具包的整体结构,如图31所示,其中UVISION与ISHELL分别是C51FORWINDOWS和FORDOS的集成开发环境IDE,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文职业技术学院毕业论文17件。然后分别由C51及A51编译器编译生成目标文件OBJ。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件ABS。ABS文件由OH51转换成标准的HEX文件,以供调试器DSCOP
35、E51或TSCOPE51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。图31C51工具包的整体结构图33建立项目步骤(1)点击PROJECT菜单,选择弹出的下拉式菜单中的NEWPROJECT,如图32。图32接着弹出一个标准WINDOWS文件对话窗口,在“文件名”中输入您的第一个C程序项目名称,“保存”后的文件扩展名为UV2,这是KEILUVISION2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。(2)选择所要的单片机。(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。如果你没有现成的程序,那么就要新建一个程序文件
36、。职业技术学院毕业论文18(4)点击保存新建的程序,也可以用菜单FILESAVE或快捷键CTRLS进行保存。我们把第一个程序命名为TEST1C,保存在项目所在的目录中,这时你会发现程序单词有了不同的颜色,说明KEIL的C语法检查生效了。如图33,鼠标在屏幕左边的SOURCEGROUP1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。图33(5)C程序文件已被我们加到了项目中了,下面就剩下编译运行了。如图34,图中1、2、3都是编译按钮,不同是1是用于编译单个文件。2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。3是重新编译,每点击
37、一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。6是有一个小放大镜的按钮,这就是开启关闭调试模式的按钮,它也存在于菜单DEBUGSTARTSTOPDEBUGSESSION,快捷键为CTRLF5。图34职业技术学院毕业论文19(6)进入调试模式,软件窗口样式大致如图35所示。图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。3是复位,模拟芯片的复位,程序回到最开头处执行。按4我们可以打开5中的串行调试窗口,这个窗口我们可以看
38、到从51芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。首先按4打开串行调试窗口,再按运行按钮。要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启关闭调试模式按钮。然后我们就可以进行关闭KEIL等相关操作了。(7)生成HEX文件。HEX文件格式是INTEL公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示,常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。图35打开目录,找到TESTUV2的文件就可以打开先前的项目了。然后右击图36中的1项目文件夹,弹出项目功能菜单,选OPTION
39、SFORTARGETTARGET1,弹出项目选项设置窗口,同样先选中项目文件夹图标,这时在PROJECT菜单中也有一样的菜单可选。职业技术学院毕业论文20图36打开项目选项窗口,转到OUTPUT选项页图37所示,图中1是选择编译输出的路径,2是设置编译输出生成的文件名,3则是决定是否要创建HEX文件,选中它就可以输出HEX文件到指定的路径中。图37选好后再将它重新编译一次,很快在编译信息窗口中就显示HEX文件创建职业技术学院毕业论文21到指定的路径中了,如图38这样我们就可用自己的编程器所附带的软件去读取并烧到芯片了,再用实验板看结果。图38职业技术学院毕业论文22第四章程序设计及仿真41设计
40、要求要求利用单片机中断功能控制数码管显示,状态当无外中断时,主程序运行状态为七段数码管的A到G段依次点亮,不断循环,有外中断输入时,显示为0到9,然后返回主程序原断点,继续执行,数码管继续段点亮。42利用PROYEUS仿真软件画出电路图首先添加元器件元件拾取共有两种办法,一种是按类别查找和拾取元件,另一种是直接查找和拾取元件。然后在原理图编辑区单击鼠标左键即完成元件的释放。最后电路连线用鼠标左键单击编辑区元件的一个端点拖动到要连接的另外一个元件的端点,先松开左键后再单击鼠标左键,即完成一根连线,以此类推最终结果如图42所示。图42职业技术学院毕业论文2343流程图绘制以及说明主程序主要分为四部
41、分,包括复位电路部分、独立按键的判别部分、单片机控制主程序部分和译码显示部分,模块流程图如图41所示图41主程序流程图44用KEIL设计程序及仿真结果一、程序如下ORG0000H从0000H单元开始结束返回重新检测按键将单片机处理的数据进行显示单片机主控制电路向单片机申请显示0计数加1,向单片机申请显示该数值。Y是否按键开始N职业技术学院毕业论文24LJMPSTART跳转到真正的程序起点STARTMOVSP,5FH堆栈初始化MOV20H,00H20H作为计数器LOOPCALLDISP调用显示程序CALLDELAY调用延时程序INC20H计数器加1MOVA,20H将计数器中的值送到A中CJNEA
42、,0AH,L1A中的值到了10吗未到转L1MOV20H,00HA中的值到了10让其回0L1LJMPLOOP转LOOP继续循环DISP显示子程序CLRP27由硬件电路要求MOVA,20H取出计数器中的值送AMOVDPTR,50H将字形码表的首地址送到DPTR中MOVCA,ADPTR根据A中的值查表MOVP0,A查出相应字形码送到P0口RET返回DELAY延时子程序MOVR7,10R710D1MOVR6,250R6250D2MOVR5,250R5250D3DJNZR5,D3R5中的值不等于0转本身循环DJNZR6,D2R6中的值不等于0转D2DJNZR7,D1R7中的值不等于0转D1RET返回OR
43、G50H从50H单元开始存放字形码表DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND结束伪指令职业技术学院毕业论文25二、程序仿真及烧录启动KEIL软件,输入源程序,并保存起来;然后建立工程文件,加入源程序,设置工程。打开DEBUG选项卡后,在左侧最下面的PARAMETET文本框中输入“DDPJ”,单击“确定”关闭对话框,如图43所示。图43设置工程文件按F7汇编、链接以获得目标文件,然后选择DEBUGSTART/STORDEBUG菜单项进入调试状态。选择PERIPHERALS“键盘显示实验仿真板”。如图44所示。图44选择实验仿真板职业技术学
44、院毕业论文26再单击“运行”按钮即可开始运行。可以从仿真板上直观地观察到LED上有数字的显示,如图45所示。图45仿真运行显示三、仿真结果如下从仿真板上直观地观察到LED上有数字的显示,显示数字从0到9,如图46所示。职业技术学院毕业论文27职业技术学院毕业论文28职业技术学院毕业论文29图46仿真显示数字0到945心得体会本次设计主要是针对单片机知识,用汇编语言在KEIL中编程,在PROTEUS中绘制原理图并进行仿真,通过对这两个软件的学习,了解了其功能的强大,掌握了AT89S51的内部结构及工作原理,对于我们以后的学习和实践有很大的指导意义。这次课程设计使我在学习新知识的同时,还锻炼了我的
45、意志品质,当调试程序出现错误时,并没有使我灰心,让我放弃,而是通过自己不懈的努力,弄懂了每一部分知识。因此,本次课设对我以后无论是学习还是工作,都有着较大的帮助。通过这次课程设计,使我意识到了课本上的知识远远不能满足当今社会的需要,让我知道了未来学习知识要更加注重实践与实用。通过此次设计给我最大的感触就是做任何事都要自信和认真。自信不可盲目,更不要自大,一切有真实学和能力的人往往对此把握的游刃有余。认真是一种作风和态度,是一个人品质的集中体现,也包含对事业的责任心有时候我们需要的太多,我们不妨从这两方面做起,去挑战自己职业技术学院毕业论文30附录A图1AT89S51结构框图职业技术学院毕业论文
46、31附录B单片机AT89S51汇编指令表数据传送指令序助记符功能字节数振荡周期1MOVA,RN寄存器内容送入累加器1122MOVA,DIRECT直接地址单元中的数据送入累加器2123MOVA,RI间接RAM中的数据送入累加器1124MOVA,TATA立即数送入累加器2125MOVRN,A累加器内容送入寄存器1126MOVRN,DINRECT直接地址单元中的数据送入寄存器2247MOVRN,DATA立即数送入寄存器2128MOVDIRECT,A累加器内容送入直接地址单元2129MOVDIRECT,A寄存器内容送入直接地址单元22410MOVDIRECT,DIRECT直接地址单元中的数据送入另一个
47、直接地址单元32411MOVDIRECT,RI间接RAM中的数据送入另一个直接地址单元22412MOVEIRECT,DATA立即数送入直接地址单元32413MOVRI,A累加器内容送间接RAM单元11214MOVRI,DIRECT直接地址单元数据送入间接RAM单元22415MOVRI,DATA立即数送入间接RAM单元21216MOVDPTR,DATL616位立即数送入地址寄存器32417MOVCA,ADPTR以DPTR为基地址变址寻址单元中的数据送入累加器12418MOVCA,APC以PC位基地址变址寻址单元中的数据送入累加器12419MOVXA,RI外部RAM(8位地址)送入累加器12420
48、MOVXA,DPTR外部RAM(16位地址)送入累加器12421MOVXRI,A累加器器送外部RAM(8位地址)12422MOVXDPTR,A累加器器送外部RAM(16位地址)12423PUSHDIRECT直接地址单元中的数据压入堆栈22424POPDIRECT弹栈送直接地址单元22425XCHA,RN寄存器与累加器交换11226XCHA,DIRECT直接地址单元与累加器交换21227XCHA,RI间接RAM与累加器交换11228XCHDA,RI间接RAM的低半字节与累加器交换112算术操作类指令序助记符功能字节数振荡周期1ADDA,RN寄存器内容加到累加器1122ADDA,DIRECT直接地
49、址单元的内容加到累加器2123ADDA,RI间接RAM的内容加到累加器1124ADDA,DATA立即数加到累加器2125ADDCA,RN寄存器内容带进位加到累加器1126ADDCA,DIRECT直接地址单元的内容带进位加到累加器212职业技术学院毕业论文327ADDCA,RI间接RAM的内容带进位回到累加器1128ADDCA,DATA立即数带进位加到累加器2129SUBBA,RN累加器带借位减寄存器内容11210SUBBA,DIRECT累加器带借位减直接地址单元的内容21211SUBBA,RI累加器带借位减间接RAM中的内容11212SUBBA,DATA累加器带借位减立即数21213INCA累加器加111214INCRN寄存器加111215INCDIRECT直接地址单元加121216INCRI间接RAM单元加111217DECA累加器减111218DECRN寄存器减111219DECDIRECT直接地址单元减121220DECRI间接RAM单元减111221INCDPTR地址寄存器DPTR加112422MULABA乘以B14823DIVABA除以B14824DAA累回器十进制调整112逻辑操作类指令序助记符功能字节数振荡周期1ANLA,RN累加器与寄存器相“与”1122ANLA,RI累加器与直接地址单元相“与”2123ANLA,RI累加器与间接RAM单元单元相