基于单片机的跑马灯控制系统设计课程设计_第1页
基于单片机的跑马灯控制系统设计课程设计_第2页
基于单片机的跑马灯控制系统设计课程设计_第3页
基于单片机的跑马灯控制系统设计课程设计_第4页
基于单片机的跑马灯控制系统设计课程设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 江西环境工程职业学院大专毕业生毕业论文(毕业设计) 题目: 基于单片机的可控制跑马灯的设计 摘 要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。本课程设计是基于mcs51系列单片机所设计的,用at89s52芯片控制跑马灯(流水灯),整个系统有8种跑马灯模式可以选择,k1是选择模式键,并将相应的模式在led七段数码管中显示出来,k2可以对跑马灯的速度进行加速,k3可以对跑马灯的速度进行减速。整个系统可以实现对跑马灯模式的多层控制,还可以进行加减速。关键词:mcs51、跑马灯、加减速、七段数

2、码管 目录摘要.2绪论.4第一章 本设计意义和主要任务、内容概述.51.1设计内容概述.51.2设计的主要任务.51.3设计要求.5第二章 系统总体方案及硬件电路设计.62.1 at89c51的硬件结构.6 2.2 at89c51的工作模式.92.3 at89c51程序存储器的加密.102.4 数码管显示原理.102.5 单片机控制原理.12 2.6 硬件电路设计.13第三章 系统的软件设计.14 3.1 程序流程图.14 3.2 定时/计数器.15 3.3 程序代码.15第四章 总结.16 致谢.17附录.18参考文献.22 绪论 在生活和生产的各领域中,凡是有制动控制要求的地方都会有单片机

3、的身影出现;从简单到复杂,从空中、地面带地下,凡是能想象到的地方几乎都有使用单片机的需求。现在尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而没有实现的项目,因此,单片机的应用大有想象和拓展空间。单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保真安全等。但是单片机应用的意义绝不仅限于它的广阔范围以及所带来俄经济效益上,更重要的意义还在于:单片机的应用正从根本上改变者传统的控制系统设计思想和设计方法。从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件方法来实现了。这种以软件取代硬

4、件并提高系统系能的控制系统软化技术,称之为微控制技术。微控制技术是一种全新的概念,是对传统控制技术的一次革命。随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。在众多的微控技术中,我选择了较为熟悉的at89z51单片机,由于按键硬件去抖效果逊色于软件去抖,所以我选用软件去抖,根据任务书描述的功能设计的外围资源较少,而led电路接到i0口的方法。总体下来软、硬件都较为简易,这样设计时,成功率课大大增高。 第一章 本设计的意义和主要任务 1.1设计内容概述 本设计选择采用at89c51单片机为核心。at89c51是一个低电压、高性能cmos8位单片机带有k字节的可反复擦写的程序

5、存储器。和128字节的存取数据存储器ram,这种器件采用atmel公司的高密度、不容易丢失存储技术生产,并且能够与mcs-51系列的单片机兼容。片内含有8位 中央处理器和闪烁存储单位,有较强的功能的at89c51单片机能够被应用到控制领域中at89c51提供以下的功能标准:4k字节闪烁存储器,128字节随机存取数据存储器,32个i/o口,2个16位定时/计数器,1个 5向量两级中断结构,1个串行通信口,片内振荡器和时钟电路。另外,at89c51还可以进行ohz的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继

6、续工作。掉电方式保存随机存取数据存储器中的内容,但振荡器停止工作并禁止其它所有部件的工作直到下一个复位。1.2设计任务 选择采用at89c51单片机为核心,使用简单的程序实现跑马灯显示效果设计。1.3设计要求 实现16个红色led的亮、灭显示等。安排3个按键,其中一个按键用于控制16只led灯模式的输出,另二个用于控制16只led灯速度的输出。最后还有1个7段共阴数码管,用于显示模式,根据显示模式的变化,16只led灯循环显示不同,还用于显示速度的大小,显示的数字越大,则16只led灯流动的更快,否则就慢。 第二章 系统总体方案及硬件电力设计2.1 at89c51的硬件结构 at89c51共有

7、40条引脚,引脚排列如图2-1所示。 图2-1 at89c51的引脚排列图 at89c51主要特性如下: 1. 与mcs-51兼容。 2. 4k字节可编程闪烁存储器。 3. 寿命:1000写/擦循环。 4. 数据保留时间为10年。 5. 全静态工作为ohz-24mhz。 6. 三级程序存储器锁定。 7. 128乘18位内部ram。 8. 32可编程i/o线。 9. 两个16位定时器/计数器。 10.5个中断源。 11.可编程串行通道。 12.低功耗的闲置和掉电模式。 13.片内振荡器和时钟电路。 po口为了一个8位漏极开路双向i/o口,每脚课吸收8ttl门电流。当po口的管脚第一次写1时,被定

8、义为高阻输入。po能够用于外部程序数据存储器,它可被定义为数据/地址的第八位。在fiash编程时,po口作为原码输入口,当fiash进行校验时,po输出原码,此时po外部必须被拉高。 p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器嫩接收输出4ttl门电流。p1口管脚写入1后,被内部上拉高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口为一个内部上拉电阻的8位双向i/o口,p2缓冲器可接收,输出4个ttl门电流,当p2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入是,p2口的

9、管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址高八位。在给出地址1时它利用内部上位优势,当对外部八位地址数据存储器进行续写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口:p3.0rxd(串行输入口);p3.1tx

10、d(串行输出口);p3.2/int1(外部中断0);p3.3/int1(外部中断1);p3.4t0(记时器0外部输入);p3.5t1(记时器1外部输入);p3.6/wr(外部数据存储器写选通);p3.7/rd(外部数据存储器选通)。 表2-1p3口第二功能列表 端口引脚 第二功能 p3.0 rxd p3.1 txd p3.2 into p3.3 int1 p3.4 t0 p3.5 t1 p3.6 wr p3.7 rd rst为复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。atl/prog为当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程

11、期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期书出正脉冲信号,此频率为振荡器频率的1/6,因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0.此时ale只有在执行movx,movx指令是 ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,位置无效。 psen为外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 ea/vpp为当/ea保持低电平时,则在此

12、期间外部程序存储器,不管是否有内部程序存储器,注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部存储器。在flash编程期间,次引脚也用于施加12v编程电源(vpp)。xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。at89c51中有一个用于构成内部振荡器的高增益反相放大器,引脚xtal1和xtal2分别是该放大器的输入端和输出端,这个放大

13、器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然振动器。外接石英晶体及电容c1,c2接在放大器的反馈回路中构成并联振荡电路。对外接电容c1,c2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30pf+_10pf,而如果使用陶瓷振荡器建议选择40pf+-10pf。用户也可采用外部时钟。采用外部时钟的电路如图所示。这种情况下,外部时钟脉冲接到xtal1端,即内部时钟发生器的输入端,xtal2则悬空。由于外部时钟信号是通过一个二分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊

14、要求,但小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。2.2 at89c51的工作模式 at89c51共用2种工作模式,分别为闲散节电模式和掉电模式。下面进行介绍。at89c51有两种可用软件编程的省电模式,它们是闲散模式和掉电工作模式。这两种方式是控制专用寄存器pcon中的pd和idl位来实现的。pd是掉电模式,当pd=1时,激活带掉电工作模式,单片机进入掉电工作状态。idl是闲散等待方式,当idl=1,激活闲散工作状态,单片机进入睡眠状态。如需要同时进入两种工作模式,即pd和idl同时为1,则先激活掉电模式。在闲散工作模式状态,中央处理器cpu保持睡眠状态,而所有片内的外

15、设仍保持激活状态,这种方式由软件产生。此时,片内随机存取数据存储器和所有特殊功能寄存器的内容保持不变,闲散模式可由任何允许的中断请求或硬件复位终止,终止闲散工作模式的方法有两种,一是任何一条被允许中断的事件激活,idl被硬件清除,即刻终止闲散工作模式。程序会首先影响中断,进入终端服务程序,执行完中断服务程序,并紧随reti指令后,下一条要执行的指令就是使单片机进入闲散工作模式,那条指令后面的一条指令。二是通过硬件复位也可将闲散工作模式终止,需要注意的是:当硬件复位来终止闲散工作模式时,中央处理器cpu通常是从激活空闲模式那条指令的下一条开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持

16、两个机器周期有效,在这种情况下,内部禁止中央处理器cpu访问内ram,而允许访问其它端口,为了避免可能对端口产生的意外写入:激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的希望如指令。 在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内ram和特殊功能寄存器的内容在中指掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将从新定义全部特殊功能寄存器但不改变ram中的内容,在vcc恢复到正常工作电平前,复位应无效且必须保持一定时间以使振荡器从新启动并稳定工作。 闲散和掉电模式外部引脚状态如表2-2所示。 模式程序存储器ale psen p0 p1

17、 p2 p3闲散模式 内部 1 1 数据 数据 数据 数据闲散模式 内部 1 1 浮空 数据 地址 数据掉电模式 外部 0 0 数据 数据 数据 数据掉电模式 外部 0 0 数据 数据 数据 数据 表2-2闲散和掉电模式外部引脚状态2.3 at89c51程序存储器加密 at89c51可使用对芯片上的三个加密位lb1,lb2,lb3进行编程(p)或不编程(u)得到如表2-3所示。程序加密位程序加密位程序加密位程序加密位保护类型 1 u u u没有程序保护功能 2 p u u禁止从外部程序存储器中执行movc指令读取内部程序指令存储器的内容 3 p p u除上表功能外,还禁止程序校验 4 p p

18、p除以上功能外,同时禁止外部执行 表2-3程序加密位的配置工作,被锁存的ea电平与这个引脚当前辑电平一致。机密位只能通过整片擦除的方法清除 当lb1被编程时,在复位期间,ea端的电平被锁存,如果单片机上电后一直没有复位,锁存起来的初始值是一个不确定数,这个不确定数会一直保存到真正位置。为了是单片机正常2.4 数码管显示原理 数码管实际上是由7个发光管组成8节字形构成的,加上小数点就是8个,我们分别把它们命名为a、b、c、d、e、f、g。图2-2数码管内部结构图 假设我们显示一个数字2,那么a、b、g、e、d这5个段的发光管两就可以了,c、f、h不亮,同时由于接法为共阴接法,那么为低电平时灭,为

19、高电平是亮。从高往低排列,p1.7-p1.0写成二进制为01011011,把他转化为16进制则为0x5b。我们可以根据硬件的接线把数码管显示数字编制成一个表格,见下表,以后直接调用就行了。 显示p聱1.7小数点p1.6 gp1.5小fp1.4 e p1.3 dp1.2 cp1.1 bp1.0 a16进制代码 0 0 0 1 1 1 1 1 1 0x3f 1 0 0 0 0 0 1 1 0 0x06 2 0 1 0 1 1 0 1 1 0x5b 3 0 1 0 0 1 1 1 1 0x4f 4 0 1 1 0 0 1 1 0 0x66 5 0 1 1 0 1 1 0 1 0x6d 6 0 1 1

20、 1 1 1 0 1 0x7d 7 0 0 0 0 0 1 1 1 0x07 8 0 1 1 1 1 1 1 1 0x7f 9 0 1 1 0 1 1 1 1 0x6f a 0 1 1 1 0 1 1 1 0x77 b 0 1 1 1 1 1 0 0 0x7c c 0 0 1 1 1 0 0 1 0x39 d 0 1 0 1 1 1 1 0 0x5e e 0 1 1 1 1 0 1 1 0x7b f 0 1 1 1 0 0 0 1 0x71 - 0 1 0 0 0 0 0 0 0x40 表2-4共阴极数码管显示 数码管的接口有静态和动态两种接口。静态接口为固定显示方式,无闪烁,其电路可采用一个

21、并行口接一个数码管,数码管的公共端按共阳接vcc,本次课程设计由于所需数码管较多,故不可用些种方法接线。这种接法占用接口多,仅能接少量数码管。 动态接口采用各数码管循环轮流显示的方法,当循环显示的频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出,另一个接口完成各数码管的轮流点亮,本设计采用此方法。2.5 单片机控制原理at89c51按键控制复位晶振16只led 显示数码管显示 图2-5 可调控的跑马灯电路原理图2.6 硬件电路设计 本设计使用at89c51芯片作为控制芯片,利用p0口和p1口共连接16个发光二极管,且p0口还连接了一个7段数码管,还有p2

22、口1脚、2脚、3脚分别连接了3个按键。按键是用来控制跑马灯的显示模式和跑马灯的运行速度,数码管是用来显示跑马灯运行模式,应用proteus软件画出电路原理图如2-6所示。 图2-6所示 可以调控的跑马灯原理图 第三章 系统的软件设计 由设计给出的功能要求,并结合硬件电路图设计和资源分配,来进行软件设计。步骤为先画出软件流程,然后根据流程图在keil uvision3开发环境下使用c语言进行编写代码和仿真调试,最后在手中已有的51开放板上进行脱机实验。进过不断修改之后,代码趋于完善。3.1 程序流程图 mus 初 始 化16只led灯显示模式按键一只数码管显示加速按键减速按键图3-1 所示 程序

23、流程图 3.2 定时/计数器 可调控的跑马灯其实就是一个计数器,本次论文设计就是利用单片机中的定时/计数器来实现其计数模式的功能。在51单片机中有两个16位的定时/计数器to,t1,分别由tho、tl1和th1、tl1组成,它们均是8位寄存器,在特殊功能寄存器中占地址8ah-8dh。它们由于存放定时或计数的初始值。此外,内部还有一个8位的方式寄存器tmod和一个8位的控制寄存器tcon。用于选择和控制定时/计数器的工作。其格式见下面两表:gatec/tm1mogatec/tm1mo门控开关计数/定时方式选择方式选择门控开关计数/定时方式选择方式选择 表3-1方式控制寄存器tmodtf1tr1t

24、fotroie1it1ieoitot1请求有/无t1工作启/停t1请求有/无to工作启/停int1请求有/无int1方式下沿int1请求有/无int1方式下沿 表3-2控制寄存器可调控的跑马灯用单片机的计数器进行工作。计数器对外部脉冲的下降沿进行加1计数,直至计满回0。作为可编程器件,单片机中的定时/计数器初始化编程步骤如下:根据定时时间要求或计数要求计算计数器初值;将工作方式控制字写入tmod寄存器;将计数初值写入th1和 tl1寄存器;启动定时/计数器,即将tr1置位。如果工作于中断方式,需置位ea(中断总开关)及etx(允许定时/计数器中断),并编写中断服务程序。3.3 程序代码/名称:

25、可以调控的跑马灯说明:单击模式按键可在0-7号模式中选择,加速和减速可调整led滚动显示的速度。(见附录) 第四章 总结 为期近两个月的课程设计终于落下了帷幕。万事开头难。在刚开始课程设计的时候,大家都有点茫然而且无从下手的感觉。首先是题目的选择,在没有决定题目之前,查找资料毫无目的,基本是查查这个资料,待会又搜索另一个。这大大的浪费来我我的时间。最后,但经过老师的指导及自己查阅相关的资料,逐渐有了自己的设计想法,制定出了系统的结构框图。终于定下了题目。定下了题目之后,做起来就比较有目的。在指导老师的提示下,我们在网上查到了一些相关的资料,再综合书本上学到的一些知识,参考网上的程序,经过调试修

26、改后,最终实现了题目设计的要求。调试成功后,就可以进行实物的焊接,看开始时,对焊锡的融化比较难以把握,不过熟练后,就比较简单了。通过学习单片机这门课程设计,不仅了解了at89c51的功能、还加强了单片机的理论知识得了解,而且进一步接触并了解到了软硬件的结合这个实践问题。不仅如此,此次设计也加强了我们动手培养了我的动手能力及分析思考和解决问题的能力,更令我的创造性思维得到拓展。我衷心感谢恩师赖武军三年来在学业和生活上给予我的帮助和关怀。恩师在生活中的一言一行是我学习的榜样和前进的动力。恩师宽广的心胸、严于律己宽于待人的品格、勤勉的工作作风和严谨的治学态度深深影响和感染了我。恩师不仅授我以文,而且

27、教我做人,虽历时三载,却给以终生受益无穷之道。对赖武军的感激之情是无法用言语表达的。本课题在选题及研究过程中得到赖武军老师的悉心指导。赖武军老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。赖武军老师敏锐的思想、一丝不苟的工作态度和善于思考的良好习惯给我留下了深刻的印象,让我受益匪浅。赖武军老师还在关于学术价值观和人生价值观的思考方面给了我很大的启发。这些,都将使我在以后的工作和学习中受益匪浅。 致谢 毕业设计的完成,为我的大学学习生活画下了最后一笔,应该感谢的人很多,首先学院给我们提供了一个展现自己的舞台,给我们一次难得的锻炼机会,使我们的动手能力和专业技能都有了

28、很大的提高。其次要感谢赖武军老师对我的细心教导,为我创造了良好的学习和完成毕业设计的环境,使我能够顺利的完成课题的设计工作和制作,在此向我的指导老师致以诚挚的谢意。同时还要感谢我的提供帮助的老师和同学,你们的支持和鼓励使我对这次的设计完成有了信心和动力,在此深表谢意。最后,还有特别感谢我的父母,养育之恩,无以为报,你们永远健康快乐是我最大的心愿。正是他们在我大学学习期间给予了各方面的关心和支持,才让我得以全身心投入学习中,顺利完成学业。 所有的这些,都激励我在将来的工作岗位上勤奋实干,积极进取,用优异的成绩来回报大家对我的关心和帮助。附录#include #define uchar unsig

29、ned char#define uint unsigned intuchar modeno;/模式编号uint speed;uint tcount=0;uchar idx;/速度取值索引uchar mb_count=0;/移动位数bit dirtect=1;/滚动方向/段码管uchar code dsy_code=0xc0,0xf9,0xa4,0x9b0,0x99,0x92,0x82,0xd8,0x90;/ 调速表uint code stable =0,1,3,5,7,9,15,30,50,100,200,230,280,300,350;/延时void delay(uint x) uchar i,j; for(i=x;i0;i-) for(j=0;i8);/显示高八位/定时器2void t0_int() interrupt 1if(+tcountspeed) return;tcount=0;switch(modeno)case 0:led_demo(0x0001mb_count);break;case 2:if(dirtect)led_demo(0x000fmb_count);if(mb_count=15) dirtect=!dirtect;break;case 3:if(dirtect)led_demo(0x000fmb_count);if(mb_count=15) di

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论