




免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于stc89c51rc的可编程定时计数器的设计与实现作者姓名:* 专业班级:* 指导老师:*摘要在当今社会随着物质生活的提高,人们对精神文化的需求也越来越高。比如在各种体育竞技中,人们不仅关注运动员的精湛的竞技水平,也关注竞技比赛的一些辅助设施,比如各种球类比赛中的计时计分器。本文以篮球赛计时计分器为例,介绍了基于stc89c51rc的可编程定时计数器的设计与实现。篮球赛计时计分器是为了解决篮球比赛中时计分与计时准确的问题。此装置利用单片机stc89c51rc完成了计时和计分的功能。本文详细地介绍了系统硬件与软件的设计过程,采用该装置可根据实际情况进行比分修改和时间的准确显示,能够完成开始和暂停等功能,具有倒计时和到时报警功能。该设计具有低功耗,可靠性,安全性以及低成本等特点。此类业余篮球赛的计时计分系统在中小学和大学篮球赛中具有很重要的推广意义。关键词:单片机,led数码管,篮球赛计时,篮球赛计分 i目 录第1章 前言11.1选题意义11.2 研究现状11.3 论文所做工作2第2章 设计目标及方案32.1 设计目标32.2 设计方案32.2.1系统构成框图32.2.2器件选择5第3章 硬件电路设计63.1 单片机stc89c51rc简介63.1.1 stc89c51rc特性介绍73.1.2 管脚说明83.2 计时电路部分103.2.1.振荡电路103.2.2计时电路原理113.2.3计时电路原理图113.2.4 计时电路的工作原理133.3计分电路部分143.3.1 串行接口工作原理143.3.2比分校正控制电路153.3.3计分电路原理图163.3.4 计分电路的工作原理173.4球赛计时计分器的工作过程193.4.1赛程时间设置193.4.2赛程时间启动 / 暂停设置203.4.3比分交换控制203.4.4比分刷新控制203.4.5计时计分显示213.4.6赛程结束报警213.4.7系统总体电路图21第4章 软件编程及调试244.1开发环境介绍244.1.1汇编语言特点简介244.1.2开发软件介绍254.2 软件设计254.2.1 编程设置及总流程框图254.2.2主要模块说明284.3系统调试294.3.1软件调试294.3.2仿真调试30结论32致 谢34参考文献35iii前言1.1选题意义单片机的应用是具有高度现实意义的。单片机极高的可靠性,微型性和智能性(我们只要编写不同的程序后就能够完成不同的控制工作),单片机已成为工业控制领域中普遍采用的智能化控制工具,已经深深地渗入到我们的日常生活当中体育比赛中的计时计分系统是对体育比赛过程中所产生的时间、比分等数据信息进行快速采集、加工处理、传递和利用的系统。此系统能否清晰、稳定、精确的反应体育比赛中的客观数据,直接影响到比赛的公平性和公正性。因此,对球赛计时计分系统的研究具有高度的现实意义。 虽然这种简单的计时计分系统不能达到国际重要比赛的要求,但能使用在一些较小型的赛事,比如中小学篮球比赛甚至大学篮球比赛中。具有很高的推广意义。1.2 研究现状在当今社会随着物质生活的提高,人们对精神文化的需求也越来越高。这同样体现在各种竞技比赛中,人们不仅追求精彩激烈的比赛,同样对比赛辅助设施的要求也越来越高。同时,运动员竞技水平的不断提高,竞赛的激烈程度也不断提高,同样对计时计分系统的精确度和稳定性提出了更高的要求。这也促使计时计分系统设计技术不断提高,能达到的精确度也不断提高。如今,在重大的竞技比赛中,计时计分已出现了由电脑控制的大型计时计分显示系统,其精确度和稳定性能达到很高的水平。但是在一般的基层单位,又特别是在农村的中小学所使用的计时计分器却很简陋。这类业余比赛的计时计分器大都比较的复杂,所用芯片太多,造成整体的价格提高,而且软件设计比较的复杂。导致性价比不是很高,很难得到广泛的推广。我所设计的这个篮球比赛计时器一改他们的缺点,硬件比较的简单,软件也很容易。因此,实用性比较大。1.3 论文所做工作随着单片机在各个领域的广泛应用,许多用单片机做控制的球赛计时计分系统也应运而产生,如用单片机控制lcd液晶显示器计时计分器,用单片机控制led七段显示器计时计分器等。本次设计用由stc89c51rc编程控制led七段数码管作显示的球赛计时计分系统。该系统具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩以及赛后成绩暂存等功能。它具有价格低廉,性能稳定,操作方便并且易于携带等特点。广泛适合各类学校或者小型团体作为赛程计时计分。通过本次基于c51系列篮球计时计分器的设计,可以了解、熟悉有关单片机开发设计的过程,并加深对单片机的理解和应用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下一些方面:(1) 篮球赛计时计分系统包含了8051系列单片机的最小应用系统的构成,同时在此基础上扩展了一些使用性强的外围接口。(2) 可以了解到led显示器的结构、工作原理以及这种显示器的接口实例与具体连接与编程方法。(3) 怎样利用串行口来扩展显示接口等。25)设计目标及方案2.1 设计目标整个设计主要实现下列目标:(一)采用单片机控制,响应迅速,判别精确;主控台面上有按键控制,可同时对比赛时的分数显示进行加分减分,能显示整个赛程的比赛时间,暂停时间和比赛的节数。(二)在比赛的过程中能够随时刷新各队在整个赛程中的比分,通过按键输入比分,显示在数码管上;按键分别为加1分、减1分键和改变当前记分球队功能键。(三)具有计时功能,能正确设置倒计时时间和比赛的节数,每节总时间倒计时,24s倒计时,倒计时到报警。(四)具有开始、暂停功能。2.2 设计方案2.2.1系统构成框图基于单片机系统的篮球赛计时计分器的系统构成框图如图所视。 图2-1 系统构成图本系统采用单片机stc89c51rc作为本设计的核心元件。利用七段共阴led作为显示器件。在本次设计中,共接入十个七段共阴led显示器,其中6个用于计录甲、乙两队的分数,每队3个led显示器分数范围可达到0999分,足够满足赛程需要。另外4个led显示器则用于计录赛程的时间,其中两个用于显示分钟;2个用于显示秒钟。赛程计时采用倒计时方式。即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。根据设计,计时范围可达099分钟,也完全满足赛程的需要。其次,为了配合计时器和计分器校正、调整时间和比分,特定在本设计中设立了7个按键。其中4个用于输入甲、乙两队的分数;另外3个则用于完成设置、调整、启动和暂停赛程时间等功能。2.2.2器件选择本系统在设计的过程中主要选取了以下一些器件:单片机:stc89c51rc显示器件:7段led显示器按键:欧姆龙按键其他:三极管,二极管,电阻,电容。硬件电路设计系统硬件由以下几个部分组成:(1)单片机 stc89c51rc(2)计时电路(3)计分电路(4)按键开关说明:整个系统只用一片stc89c51rc;电路图是用0rcad画的,采用的是网络标号的形式。将计时电路与计分电路分别介绍,能够更好的更清晰的说明问题。 3.1 单片机stc89c51rc简介本课题中用到的芯片是at系列中的stc89c51rc单片机芯片。stc89c51rc是一个低电压,高性能cmos 8位单片机,片内含4k bytes的可反复擦写的flash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,内置功能强大的微型计算机的stc89c51rc提供了高性价比的解决方案。如图所示,图2-1为stc89c51rc单片机基本构造,其基本性能介绍如下:图3-1 stc89c51rc引脚图stc89c51rc本身内含40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中端口,3个16位可编程定时计数器,2个全双工串行通信口,stc89c51rc可以按照常规方法进行编程,但不可以在线编程。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。3.1.1 stc89c51rc特性介绍stc89c51rc的主要特性如下表所示:兼容mcs51指令系统32个可编程i/o线4k字节可编程闪烁存储器可编程uarl通道三个16位可编程定时/计数器中断时钟频率0-24mhz2个外部中断源,共8个中断源2568bit内部ram2个读写中断口线可直接驱动led软件设置睡眠和唤醒功能低功耗空闲和掉电模式表3-1 stc89c51rc主要功能描述3.1.2 管脚说明stc89c51rc为40脚双列直插封装的8位通用微处理器,采用工业标准的c51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主ic内部寄存器、数据ram及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号ir的接收解码及与主板cpu通信等。主要管脚有:xtal1(19脚)和xtal2(18脚)为振荡器输入输出端口,外接12mhz 晶振。rst/vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。vcc(40脚)和vss(20脚)为供电端口,分别接+5v电源的正负端。p0p3 为可编程通用i/o脚,其功能用途由软件定义,在本设计中,p0端口(3239脚)被定义为n1功能控制端口,分别与n1的相应功能管脚相连接,13脚定义为ir输入端,10脚和11脚定义为i2c总线控制端口,分别连接n1的sdas(18脚)和scls(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板cpu的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。p0口:p0口是一组8位漏极开路型双向i/o 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个ttl逻辑门电路,对端口p0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在flash 编程时,p0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1口:p1是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。与at89c51不同之处是,p1.0和p1.1还可分别作为定时/计数器2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex)。flash编程和程序校验期间,p1接收低8位地址。p2口:p2是一个带有内部上拉电阻的8 位双向i/o口,p2的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口p2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行movx dptr指令)时,p2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行movx ri指令)时,p2口输出p2锁存器的内容。flash编程或校验时,p2亦接收高位地址和一些控制信号。p3口:p3口是一组带有内部上拉电阻的8位双向i/o口。p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3口将用上拉电阻输出电流(iil)。p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能p3口还接收一些用于flash 闪速存储器编程和程序校验的控制信号。rst:复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。ale/prog:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ale仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个al脉冲。对flash存储器编程期间,该引脚还用于输入编程脉冲(prog)。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置位,可禁止ale操作。该位置位后,只有一条 movx 和movc指令才能将ale激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。psen:程序储存允许(psen)输出是外部程序存储器的读选通信号,当stc89c51rc由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次psen信号。ea/vpp:外部访问允许。欲使cpu仅访问外部程序存储器(地址为0000hffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu则执行内部程序存储器中的指令。flash存储器编程时,该引脚加上+12v的编程允许电源vpp,当然这必须是该器件是使用12v编程电压vpp。xtal1:振荡器反相放大器的及内部时钟发生器的输入端。xtal2:振荡器反相放大器的输出端。3.2 计时电路部分3.2.1.振荡电路本次设计要使用到stc89c51rc单片机的时钟振荡功能。stc89c51rc中有一个用于构成内部震荡器的高增益反相放大器,引脚xtal1和xtal2分别是该放大器的输入和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。振荡电路如下图所示图3-2 时钟振荡电路如图3-2,外接石英晶体或者陶瓷谐振器以及电容c1,c2接在放大器的反馈电路中构成并联谐振电路。本次设计使用的是石英晶体谐振器,采用22pf的电容, 12mhz晶振。3.2.2计时电路原理本次设计中的计时部分采用的是7段共阴led显示数码管构成。由于本次设计采用的是静态显示,因此在连接电路时将led输入端,即显示数据口经驱动电路后与stc89c51rc的p2.0p2.3一一对应接上同时,便可实现对输入数据的显示。3.2.3计时电路原理图因为在做图过程中,为了使电路图简洁,采用的网络标号的形式。下面分块给出计时电路的原理图:单片机stc89c51rc部分:图3-3 计时单片机部分原理图按键开关及蜂鸣器:图3-4 计时按键开关及蜂鸣器显示部分: 图3-5 显示部分3.2.4 计时电路的工作原理计时电路如图3-3,图3-4,图3-5所示,计时部分由开关key1key3控制,单片机stc89c51rc,led显示器构成。其工作过程如下:当比赛准备开始的时候,当调时(十位)开关key1按下时,产生一个低电平;立即数00h取出,同时对应调分(十位)控制端p2.0的le输出高电平, 高电平促使三极管导通,把数据送led显示器显示即可。调时按键开关每按一次,数字自动加1,直到调到需要设置的时间即可。调时(个位)的操作方法与上面一样时间设置完成后,启动定时器t0开始定时计数。计时采用倒计时,比如:设置的时间为12分钟,则在led上显示1200四位数。定时t0计数60秒后中断返回,继续定时计数下一个60秒;同时则在4位led显示器上显示1159四位数,表示时间已过去1秒钟,即为11分59秒。这样一直持续下去,直到变为“0000”时表示赛程结束。如果比赛中,裁判叫暂停,则只要按一下key3键,即可暂停计时。3.3计分电路部分8051系列单片机除了有4个8位并行口外,还有一个能同时进行串行发送和接收的全双工串行通信口。它能同时发送和接收数据,还能作为同步移位寄存器使用。3.3.1 串行接口工作原理mcs-51系列单片机片内有一个串行io端口,通过引脚 rxd(p30)和txd(p31)可与外设电路进行全双工的 串行异步通信。 8051单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同应用场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的io电路;方式1多用于双机之间或与外设电路的通信;方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统。串行端口有两个控制寄存器(scon和pcon),用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。串行端口有一个数据寄存器sbuf(在特殊功能寄存器中的字节地址为99h),该寄存器为发送和接收所共同。发送时,只写不读;接收时,只读不写。在一定条件下,向sbuf写入数据就启动了发送过程;读sbuf就启动了接收过程。串行通信的波特率可以程控设定。在不同工作方式中,由时钟振荡频率的分频值或由定时器t1的溢出率确定,使用十分方便灵活。表3-3为寄存器scon内容定义表,表3-4为寄存器pcon位地址:表3-3 scon各位内容定义位 d7 d6 d5 d4 d3 d2 d1 d0位地址9fh9eh9dh9ch9bh9ah99h98hsm0sm1sm2rentb8rb8tiri表3-4 pcon位地址 d7 d0smod本次设计的计分电路中,我们使用单片机输出高电平导通三极管,使led显示。3.3.2比分校正控制电路本次设计中的比分校正控制电路由4个按键控制单片机输入完成的,其中key4、key5键接 stc89c51rc的p1.3,p1.4脚,完成甲队加、减分控制;key6、key7键接stc89c51rc的p1.5,p1.6脚,完成乙队加、减分控制。3.3.3计分电路原理图同计时电路一样,采用分块说明:stc89c51rc部分:图3-6 计分单片机部分电路图按键开关部分:图3-7 计分按键开关部分电路图显示部分: 图3-8 计分显示部分电路图3.3.4 计分电路的工作原理 计分电路主要由单片机stc89c51rc,led显示器,以及按键开关组成。其工作过程如下:按键开关key4key7组成甲、乙两队加减分控制。按键key4key7一端接地,另一端与单片机stc89c51rc的p1.3,p1.4,p1.5,p1.6。当按键开关key4key7四个按键的任何一个一位按下时,都会产生低电平使单片机中断,从而使相应led显示。因为按键开关按下时为低电平。例如:现在先在以甲队加分为例,来说明整个过程。假设比赛刚开始,双方比分为000 000,当某一时刻之后,当甲队加分时,则按下key4键,这时key4=0(低电平),输出低电平到stc89c51rc的p1.3脚,使其外部中断int0发生中断,从而调用中断服务程序,将要显示的数据从程序中定义的led显示常数表tab中取出数据06h(因为led显示常数表tab的偏移地址为36h,36h首先是指向led显示常数表tab中第一个数据3fh的,当key4按下时,相当于将33h地址加1,这时便指向第二数据06h,即对应字母代码关系表中的的加1)。使p2.4口输出高电平,使三极管导通,选通甲队个位对应的数码管,使其加1。最终显示为001000 其对应的程序原理如下阐述:因为,在程序中定义了33h,34h,35h,36h,37h,38h,6地址单元分别对应乙队、甲队3个led显示器在程序中定义的led显示常数表tab4的偏移首地址。单片机的rxd每次发送6个数据,分别对应以33h,34h,35h,36h,37h,38h为偏移首地址单元里的数据。例如:甲队加分表示以36h为偏移首地址的单元加1,指向第二个数据06h,其他以33h,34h,35h,37h,38h为偏移首地址单元的数据仍然指向第一个数据3fh,这样将这六个数据:3fh,3fh,3fh,06h,3fh,3fh,经单片机的rxd发送出去,再在单片机rd/p3.7输出的6次高电平作用下产生6次移位,得到显示代码:3fh,3fh,06h,3fh,3fh,3fh。然后在rd/p3.7输出,经驱动电路给led显示为001 000。3.4球赛计时计分器的工作过程整个篮球计时计分器的工作过程如下:首先在比赛之前,接通电源,系统自动复位,此时计时电路与计分电路中的共阴极数码管全部显示为0000和000 000;然后我们按照计时电路中的key1键来设置比赛时间的十位数,例如比赛时间第一节12分钟,则通过key1键,使数码管1显示“1”即可;再按下key2键,设置比赛时间的个位数,使数码管2显示“2”即可。时间设置好时,等待赛程开始,当裁判吹响哨声时,启动计时,这时计时电路便开始工作,计时采用到计时方式,即从12分钟减为0分钟表示第一节结束。上半场结束时,蜂鸣器会发出10秒钟响声,通知上第一节结束,这时按下key3键,便完成了甲、乙两队的分数交换。在整个赛程中,我们还要对两队比分进行及时刷新,这时我们通过计分电路中的key4key7键完成此功能,key4和key5键完成甲队加分、减分,key6和key7键完成乙队加分、减分。按键每按一下,表示加上或者减去1分。由于加分、减分我们采用中断完成,且加、减分的中断优先权小于计时电路中的中断优先权,所以不会对计时电路造成影响。如果在赛程过程中,一方的教练申请暂停时,经裁判批准,我们立即按下key3键,即可以暂停计时,暂停时间到时,再按下key3键继续计时,直至上半场赛程结束,蜂鸣器会发出10秒的响声。下半场的流程和上半场基本上是一样的。下面介绍下这个设计的基本功能:3.4.1赛程时间设置在计时电路中。按键开关key1、key2用来设置赛程时间。比如:比赛时间上半场时间12分钟,则通过按键key1键,使数码管1显示“1”即可;再按k6键,设置比赛时间的个位数,使数码管2显示“2”即可。当比赛结束时,如果由于一些特殊原因需要增加比赛时间,这时增加比赛时间同样由按键key1、key2来设置,并且设置方法与上面所述一眼,但一般情况下只需要按key2键来设置即可,因为加时比赛一般只有几分钟而已。3.4.2赛程时间启动 / 暂停设置当时间设置完成后,比如设置赛程时间为12分钟,则在图3-4所示的led显示器上显示为1200,12表示分钟,00表示秒钟。这时,如果裁判吹响开始的哨声时,则应立即按下按键key3,表示赛程开始,计时显示则由1200变成1159,1158一直计时直到计为0000时表示赛程结束。按键key3为赛程启动和暂停控制。3.4.3比分交换控制比分交换控制由key3键完成。我们知道,因为比分交换是在上半场赛程结束后进行的,也就是说比分交换受赛程时间控制,只有当上半场计时器指示为0000时,按key3键,则会自动交换甲、乙两队的比分。如果上半场赛程时间没有到0000时,则此时按下key3键,只会暂停比赛,不能交换分数。如果要继续比赛,再按一次key3即可。因此,key3键完成三重功能,即:启动,暂停,比分交换。3.4.4比分刷新控制由于在比赛中,甲、乙两队的比分是不断在变化的,所以需要设置比分刷新控制装置;此部分功能由图所示的计分电路中的按键开关key4key7来完成的:key4键:完成甲队加1分操作key5键:完成甲队减1分操作key6键:完成乙队加1分操作key7键:完成乙队减1分操作 3.4.5计时计分显示计时计分显示器是采用七段共阴led显示器来显示的。其中计分是用6个led显示器。计时采用4个led显示器;显示格式为000 000和00 00。3.4.6赛程结束报警当比赛结束时,系统会自动发出10秒钟报警声,提示赛程结束。3.4.7系统总体电路图 下面是用orcad画的总体电路图(采用分块说明):单片机部分:图3-9 总体电路图单片机部分振荡电路和复位电路:图3-10 震荡电路(左)和复位电路(右)按键电路和报警电路:图3-11 按键电路和报警电路显示电路:图3-12 显示部分电路第4章 软件编程及调试软件的编程设计是单片机系统设计的核心部分,也是能否实现预定功能的关键。单片机编程常用的语言是c语言和汇编语言,最终都要转为intel hex格式或二进制格式(binary)文件拷入单片机芯片内。这里我们使用的是汇编语言进行编程设计。4.1开发环境介绍4.1.1汇编语言特点简介汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言主要是相对于汇编语言而言的。高级语言是目前绝大多数编程者的选择,和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。c语言就属于高级语言。作为最基本的编程语言之一,汇编语言虽然应用的范围不大,但仍然具有重要性,因为它能够完成许多其它语言所无法完成的功能。汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的。汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:(1)能够直接访问与硬件相关的存储器或 i/o 端口;(2)能够不受编译器的限制,对生成的二进制代码进行完全的控制;(3)能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁;(4)能够根据特定的应用对代码做最佳的优化,提高运行速度; (5)能够最大限度地发挥硬件的功能。4.1.2开发软件介绍用于进行单片机编程调试的软件有很多种,但其操作平台和使用方法都大同小异。其中使用最普遍,支持芯片种类也最全面的就是wave调试软件了。我在完成本课题的程序仿真及调试时使用的就是这款软件。wave软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,plm语言和c语言的程序设计,界面友好,易学易用。4.2 软件设计4.2.1 编程设置及总流程框图编程前,必须设置好地址、数据以及控制信号。编程单元的地址加在p1口和p2口的p2.0p2.3(11位地址范围为0000h0fffh),数据从p0口输入,引脚p2.6、p2.7、p3.6、p3.7的电平设置参考校验电路,/psen为低电平,rst保持高电平,ea/vpp引脚是编程电源的输入端,按要求加上编程电压,ale/prog引脚输入编程脉冲。编程时,可采用420mhz的时钟振荡器,本次设计采用12mhz的石英晶体振荡器。具体过程是:(1)在地址线上加上要编程单元的地址信号,这里为33h,34h,35h,36h,37h,38h,6个地址符。(2)在数据线上加上要写入的数据字节,比如甲队加一分就是在36h地址上加上(偏移)一个字符06h。(3)激活相应的控制信号。(4)在高电压编程方式时,将ea/vpp端加上+12v编程电压。(5)改变编程单元的地址和写入的数据,重复15步骤,直到全部文件编程结束,每个字节写入周期是自身定时的,通常约为1.5ms。本次设计的程序流程图如下:图4-2 程序流程图4.2.2主要模块说明计时部分模块流程如下:图4-3 计时部分流程图记分部分模块流程:图4-4 计分部分流程图4.3系统调试4.3.1软件调试上电时对系统中进行检测是单片机程序中的一个良好设计。在硬件设计时也应该细细考虑将各个使用到的芯片、接口设计成容易使用软件进行测试的模式。很多有经验的单片机设计者都会在系统上电时(特别是第一次上电时)进行全面的检测,或者更进一步,将系统的运行状态中分为测试模式和正常运行模式,通过加入测试模式对系统进行详细的检测,使得系统的批量检测更为方便容易。检测内容包括:(1)检测ram 中的单元。这主要通过写入和读出的数据保持一致。(2)检测单片机与ram 之间的地址数据总线。总线即没有互相短路,也没有连接到“地”上。另外,很多芯片,都提供了测试的方法。如串行通信芯片uart,都带环路测试的功能。另外,在仿真前要做好充分的准备。单片机硬件仿真器给单片机开发者带来了极大的方便,同时也很容易造成人的依赖性。很多时候,没有仿真器却能促使工程师写出更高质量的程序。在硬件仿真调试之前,下面准备工作将是必要的:(1)程序编完后,对代码仔细逐行检查。检查代码的错误,建立自己的代码检查表,对经常易错的地方进行检查。检查代码是否符合编程规范。(2)对各个子程序进行测试。测试的方法:用程序测试程序,编制一个调用该子程序的代码,建立要测试子程序的入口条件,再看看它是否按预期输出结果。(3)如果代码有修改,再次对代码进行检查。4.3.2仿真调试仿真开始,具体流程如下:1.系统进入初始化,程序从start开始,关闭了所有用户,into中断一直为高优先级,系统一直处于idle状态。由于这是软仿真,无法加入into信号,所以我们手动把p3.2的数值由1修改为0,程序才得以执行。如图4-4。 图4-5 仿真系统图(1)2调用延时程序,程序跳转到light01。判断引脚p3.0的数值,因为p3.0连接计分电路部分中的cd4094的data脚,使用软件仿真,将p3.0的数值由1修改为0。而p3.0数值仍然为1,如图4-6图4-6仿真系统图(2)3.程序进入计分中断服务程序,由于系统工作方式为方式0,p3.0与p3.1同时输出信号,p3.1为多位时钟脉冲信号。信号经由cd4094传输到显示器上,系统完成一次操作。如图4-8。图4-5 仿真系统图(3)4.仿真结束,系统再次进入idle状态,闲置,等待下次into的输入。仿真结果表明程序运行正常。成都理工大学毕业设计(论文)结论在本次毕业设计,我通过基于典型单片机stc89c51rc的设计和应用,对于单片机工作原理,功能有了宏观的了解,并对单片机汇编程序的应用有了新的、进一步的认识。在本次设计的过程中,我发现很多的问题,给我的感觉就是下手很难,很不顺手,看似很简单的电路,要动手把它给设计出来,是很难的一件事,主要原因是我们没有经常动手设计过电路。另外单片机系统的知识似懂非懂,而且很多知识当时弄明白了,现在要用的时候又不记得,造成我用了大量的时间去查阅各种资料和程序命令,因此整个过程时间安排不合理。由于设计的计划没有安排好,设计的时间极为仓促,尤其是在硬件调试的过程中出现了很大的问题。另外资料的查找也是一大难题,这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 账户印章与支票的管理
- 光伏轻质组件施工方案
- 天津大学《发酵工艺学》2023-2024学年第二学期期末试卷
- 三峡电力职业学院《精神病与精神卫生》2023-2024学年第一学期期末试卷
- 2025至2031年中国洋甘菊精油行业投资前景及策略咨询研究报告
- 2025惠州市租房合同范本
- 甘肃彩色混凝土施工方案
- 浙江工贸职业技术学院《行草》2023-2024学年第二学期期末试卷
- 2025至2031年中国棉布男式便服套装行业投资前景及策略咨询研究报告
- 西南交通大学希望学院《动画影视欣赏》2023-2024学年第一学期期末试卷
- 风湿免疫病患者结核病诊治及预防实践指南(2025版)解读课件
- 大建安-大连市建筑工程安全档案编制指南
- 上海2024-2025学年五年级数学第二学期期末联考模拟试题含答案
- 2025-2030中国律师事务所行业深度分析及发展前景与发展战略研究报告
- GB/T 45421-2025城市公共设施非物流用智能储物柜服务规范
- 代生孩子合同标准文本
- 北京市丰台区2025届高三一模试卷语文试题(含答案)
- 安徽省合肥市高三下学期第二次教学质量检测数学试卷(含答案)
- 中职生对口升学模拟考试医学类专业课综合试卷
- (完整版)特殊教育与随班就读
- 旋流风口RA-N3选型计算表格
评论
0/150
提交评论