C51程序设计课程设计-流水灯设计_第1页
C51程序设计课程设计-流水灯设计_第2页
C51程序设计课程设计-流水灯设计_第3页
C51程序设计课程设计-流水灯设计_第4页
C51程序设计课程设计-流水灯设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

..C51程序设计课程报告——流水灯设计学院:电信学院班级:09电信本1班学号:__..摘要自计算机问世以来,单片机技术在社会各领域中得到了广泛的应用。在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式市发展速度,成为日后此系统中的核心部分。由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。本文主要讲的是单片机,课题名称为多按键花样流水灯,它使我们学会了如何使用单片机控制我们日常生活中的多设备设施的应用。通过本课题的设计以后,使我了解到了单片机的许多方面的应用。关键词:单片机、可编程控制器、交通型号灯、可靠性高。..目录绪论11.相关元件及电路设计21.1AT89C51芯片功能特性及应用21.2MCS-51单片机31.2.1内部结构31.2.2引脚定义31.2.3外部总线构成51.3单片机时钟电路及时钟时序单位61.4单片机的复位81.4.1复位状态81.4.2复位电路92.流水灯电路及程序设计102.1电路原理图设计103.2电路程序设计11总结15参考文献16。。绪论当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。本设计用AT89C51单片机自制了一款简易的花样流水灯,介绍了其硬件电路及软件编程方法,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料。本课题将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的花样流水灯设计。1.相关元件及电路设计1.1AT89C51芯片功能特性及应用单片机在我们的日常生活和工作中无处不在、无处不有:家用电器中的电子表、洗衣机、电饭褒、豆浆机、电子秤;住宅小区的监控系统、电梯智能化控制系统;汽车电子设备中的ABS、GPS、ESP、TPMS;医用设备中的呼吸机,各种分析仪,监护仪,病床呼叫系统;公交汽车、地铁站的IC卡读卡机、滚动显示车次和时间的LED点阵显示屏;电脑的外设,如键盘、鼠标、光驱、打印机、复印件、机、调制解调器;计算机网络的通讯设备;智能化仪表中的万用表,示波器,逻辑分析仪;工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;导弹的导航装置,飞机上的各种仪表等等。有资料表明:20XX全球单片机的产值达到151亿美元,我国单片机的销售额达到400亿元人民币,我国每年单片机的需求量达50至60亿片,是全球单片机的最大市场。可以说单片机已经渗透到了我们生活的各个领域。在AT89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率通常是1.2~12MHz。若晶体振荡器频率高,则系统的时钟频率也高,单片机的运行速度也就快1.2MCS-51单片机1.2.1内部结构MCS-51系列单片机内部采用模块式结构,其结构组成框图如图1所示。图1MCS-51系列单片机组成框图由图1可见,MCS-51系列单片机主要由以下部件通过片内总线连接而成:中央处理器〔CPU、数据存储器〔RAM、程序存储器〔ROM、并行输入/输出口〔P0口~P3口、串行口、定时器/计数器、中断控制、总线控制及时钟电路。1.2.2引脚定义引脚是单片机和外界进行通信的通道连接点,用户只能通过引脚组建控制系统。从应用的角度来看,引脚的应用是单片机应用的一个重要基础。因此熟悉引脚是学习应用单片机的基础。MCS-51系列单片机的引脚封装主要有:PDIP40、PLCC44和PQFP/TQFP44。不同封装的芯片其引脚的排列位置有所不同,但他们的功能和特性都相同。方形封装〔PLCC44和POFP/TQFP44有44引脚,其中4个NC为空引脚。采用40引脚PDIP封装的80C51单片机的引脚排列及逻辑符号如图2所示。由于工艺及标准化等原因,芯片的引脚数量是有限的,但单片机为实现控制所需要的信号数目却远远超过其引脚数目。为解决这一矛盾,单片机的某些信号引脚被赋以双重功能。1电源及电源复位引脚:〔1VCC〔40脚:正常操作时接+5V直流电源。〔2VSS<20脚>:接地端。图240引脚PDIP封装的80C51单片机的引脚排列及逻辑符号图〔3RST/VPD〔9脚:复位信号输入端。在该引脚上输入一定时间〔约两个机器周期的高电平将使单片机复位。该引脚的第二功能是VPD,即备用电源输入端。当主电源发生故障,降低到低电平规定值时,可将+5V备用电源自动接入VPD端,以保护片内RAM中的信息不丢失,使复电后能继续正常运行。〔4/VPP〔31脚:访问程序存储器控制信号/编程电源输入。当保持高电平时,访问内部程序存储器,访问地址范围在0~4KB内;当PC〔程序计数器值超过0FFFH,即访问地址超出4KB时,将自动转向执行外部程序存储器内的程序;当保持低电平时,不管单片机内部是否有程序存储器,则只访问外部程序存储器〔从0000H地址开始。由此可见,对片内有可用程序存储器的单片机而言,端应接高电平,而对片内无程序存储器的单片机,可将接地。对于EPROM型单片机,在EPROM编程期间,此引脚用于施加21V的编程电源〔VPP。2时钟振荡电路引脚XTAL1和XTAL2:〔1XTAL1〔19脚:外接石英晶体和微调电容引脚1。它是片内振荡电路反向放大器的输入端。采用外部振荡器时此引脚接地。〔2XTAL2〔18脚:外接石英晶体和微调电容引脚2。它是片内振荡电路反向放大器的输出端。采用外部振荡器时此引脚为外部振荡信号输入端。3>〔30脚:低8位地址锁存控制信号/编程脉冲输入。在系统扩展时,ALE用于把P0口输出的低8位地址锁存起来,以实现低8位地址和数据的隔离。在访问外部程序存储器期间,ALE信号两次有效;而在访问外部数据存储器期间,ALE信号一次有效。对于EPROM型单片机,在EPROM编程期间,此引脚用于输入编程脉冲。4〔29脚:外部程序存储器的读选通信号输出端,低电平有效。在从外部程序存储器取指令〔或常数期间,此引脚定时输出负脉冲作为读取外部程序存储器的信号,每个机器周期两次有效,此时地址总线上送出的地址为外部程序存储器地址;在此期间,如果访问外部数据存储器和内部程序存储器,不会产生信号。5并行双向输入/输出<I/O>口引脚:〔1P0口的P0.0~P0.7引脚〔39~32脚:8位通用输入/输出端口和片外8位数据/低8位地址复用总线端口。〔2P1口的P1.0~P1.7引脚〔1~8脚:8位通用输入/输出端口。〔3P2口的P2.0~P2.7引脚〔28~21脚:8位通用输入/输出端口和片外高8位地址总线端口。〔4P3口的P3.0~P3.7引脚〔10~17脚:8位通用输入/输出端口,具有第二功能。1.2.3外部总线构成所谓总线,就是连接单片机与各外部器件的一组公共的信号线。当系统要求扩展时,单片机要与一定数量的外部器件和外围设备连接。如果各部件及每一种外围设备都分别用各自的一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路的设计和系统结构,常用一组线路,并配以适当的接口电路来与各个外部器件和外围设备连接,这组共用的连接线路就是总线。采用总线结构便于扩展外部器件和外围设备,而统一的总线标准则使不同设备间的互连更容易实现。利用片外引脚可以构造MCS-51系列单片机的三总线结构。单片机的引脚除了电源端VCC、接地端VSS、复位端RST、晶振接入端XTAL1和XTAL2、通用I/O口的P1.0~P1.7以外,其余的引脚都是为实现系统扩展而设置的。用这些引脚构造的单片机系统的三总线结构如3所示。图3MCS-51系列单片机片外三总线结构1地址总线〔AddressBus,AB:MCS-51系列单片机总共有16根地址线A15~A0,片外存储器可寻址范围达64KB〔216=65536字节,由P2口直接提供高8位地址A15~A8,P0口经地址锁存器提供低8位地址A7~A0。2数据总线〔DataBus,DB:MCS-51系列单片机总共有8根数据线D7~D0,全由P0口提供。由于P0口是分时复用总线,分时输送低8位地址〔通过地址锁存器锁存和高8位数据信息。3控制总线〔ControlBus,CB:控制总线由P3口的第二功能<P3.6>、<P3.7>和3根独立的控制线、ALE、组成。1.3单片机时钟电路及时钟时序单位1>时钟电路单片机本身如同一个复杂的同步时序电路,为了保证同步工作,电路应在唯一的时钟信号控制下,严格地按规定时序工作。而时钟电路就用于产生单片机工作所需要的时钟信号。MCS-51单片机时钟电路示意图如图4所示。图4MCS-51单片机时钟振荡电路示意图在MCS-51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是1.2~12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用。振荡脉冲在片内通过一个时钟发生电路二分频后才作为系统的时钟信号。片内时钟发生电路实质上是一个二分频的触发器,其输入来自振荡器,输出为二相时钟信号,即状态时钟信号,其频率为fosc/2;状态时钟三分频后为ALE信号,其频率为fosc/6;状态时钟六分频后为机器周期,其频率为fosc/12。在图4中,使用晶体振荡器时,C1、C2取值30±10pF;使用陶瓷振荡器时,C1、C2取值40±10pF。C1、C2的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值20~30pF。在设计印制电路板时,晶振和电容等应尽可能靠近芯片,以减少分布电容,保证振荡器振荡的稳定性。也可以由外部时钟电路向片内输入脉冲信号作为单片机的振荡脉冲。这时外部脉冲信号是经XTAL1引脚引入的,而XTAL2引脚悬空或接地。对外部信号的占空比没有要求,但高低电平持续的时间不应小于20ns。这种方式常用于多块芯片同时工作,便于同步。其外部脉冲接入方式如图5所示。图5MCS-51单片机外部时钟输入接线图所谓时序,是指在指令执行过程中,CPU的控制器所发出的一系列特定的控制信号在时间上的先后关系。CPU发出的控制信号有两类:一类是用于单片机内部的,用户不能直接接触此类信号,不必对它作过多了解;另一类是通过控制总线送到片外的,人们通常以时序图的形式来表示相关信号的波形及出现的先后次序。为了说明信号的时间关系,需要定义时序单位。89C51的时序单位共有四个,从小到大依次是拍节、状态、机器周期和指令周期。如图4所示。1.4单片机的复位1.4.1复位状态复位是单片机的初始化操作,其主要功能是将程序计数器PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化外,当程序运行出错或操作错误使系统处于死锁状态时,也须重新启动单片机,使其复位。单片机复位后,除P3~P0的端口锁存器被设置成FFH、堆栈指针SP设置成07H和串行口的SBUF无确定值外,其它各专用寄存器包括程序计数器PC均被设置成00H。片内RAM不受复位的影响,上电后RAM中的内容是随机的。记住这些特殊功能寄存器的复位状态,对熟悉单片机操作,简短应用程序中的初始化部分是十分必要的。1.4.2复位电路单片机的复位操作有上电自动复位和手动按键复位两种方式。上电自动复位操作要求接通电源后自动实现复位操作。如图1.5-1所示。图6〔a所示为最简单的复位电路。上电瞬间由于电容C上无储能,其端电压近似为零,RST获得高电平,随着电容器C的充电,RST引脚上的高电平将逐渐下降,当RST引脚上的电压小于某一数值后,单片机就脱离复位状态,进入正常工作模式。只要高电平能保持复位所需要的时间〔约两个机器周期,单片机就能实现复位。相比于图6〔a,图6〔b所示的电路只是增加了外接二极管VD和电阻R。其优越性在于停电后,二极管VD给电容C提供了快速放电通路,保证再上电时RST为高电平,从而保证单片机可靠复位。正常工作时,二极管反偏,对电路没影响。断电后,VCC逐渐下降,当VCC=0时,电容C通过VD迅速放电,恢复到无电量的初始状态,为下次上电复位做好准备。<a><b>图6上电自动复位电路手动按键复位要求在电源接通的条件下,用按钮开关操作使单片机复位,如图7所示。其工作原理为:复位键按下后,电容C通过R2放电,放电结束后,RST引脚的电位由R1和R2分压决定,由于R2<<R1,因此,RST引脚为高电平,单片机进入复位状态,松开按键后,电容充电,RST上的电位降低,经过一定的延时,单片机就脱离复位状态,进入正常工作模式。R2的作用在于限流,避免按键按下的瞬间电容C放电产生火花,保护按键的触点。图7手动按键复位电路系统上电运行后,若需要复位,一般是通过手动复位来实现的。通常采用手动复位和上电自动复位结合。复位电路虽然简单,但其作用十分重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出〔瞬时的,还可以通过改变复位电路阻容值的方法进行检测。2.流水灯电路及程序设计2.1电路原理图设计按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到"流水"效果了。设计原理图如图8所示:图8流水灯硬件原理图3.2电路程序设计程序流程图如图9所示:程序中LIGHT7为多种亮灯方式结合循环延时子程序DELAY为100毫秒延时,延时子程序DELAY1为100毫秒延时LIGHT1~LIGHT6亮灯方式程序中有标注图9程序流程图程序代码://*******************************************************////流水灯左移使用顺序程序实现//********************************************************//#include<AT89X51.h>voiddelay1s<void> //延时1秒子程序{unsignedchari,j,k;for<i=0;i<4;i++>for<j=0;j<100;j++>for<k=0;k<250;k++>;}voidmain<>{P1=0xff;while<1>{P1_0=0;delay1s<>;P1_0=1;P1_1=0;delay1s<>;P1_1=1;P1_2=0;delay1s<>;P1_2=1;P1_3=0;delay1s<>;P1_3=1;P1_4=0;delay1s<>;..P1_4=1;P1_5=0;delay1s<>;P1_5=1;P1_6=0;delay1s<>;P1_6=1;P1_7=0;delay1s<>;P1_7=1;}}<2>移位实现P1口的8个发光二极管<低电平有效>左移循环显示时的数据,如下表所示,可以看出只需要将有效数据左移一位就可以让下一个灯亮。P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0说明L8L7L6L5L4L3L2L111111110L1亮11111101L2亮11111011L3亮11110111L4亮11101111L5亮11011111L6亮10111111L7亮01111111L8亮对于高电平有效的发光二极管处理起来比较简单,只需要让 P1=P1<<1或P1=P1>>1就可以实现左移或右移,在C51没有专用的环移位指令,并且不管左移还是右移,补充的数据都是0,对于低电平..有效的数据就不能单纯的用一条移位指令完成了,不过可以通过逻辑运算来实现自己需要的数据,低电平有效的移位常见的有两种处理方法,一种是或运算,一种是取反,程序代码如下:通过或运算计算输出数据:temp=0xfe;//左移for<cnt=0;cnt<8;cnt++>{a=temp<<cnt;b=temp>><8-cnt>;P1=a|b;delay1s<>;}通过移位和取反计算输出数据:temp=0x01;//左移delay1s<>;for<cnt=1;cnt<8;cnt++>{temp=temp<<1;P1=~temp;delay1s<>;}程序代码://*******************************************************////流水灯左移右移使用移位实现<低电平有效>//********************************************************//#include<AT89X51.H>unsignedcharcnt; //亮灯选择变量unsignedchartemp;//临时变量unsignedchara,b;..voiddelay1s<void> //延时1秒子程序{unsignedchari,j,k;for<i=0;i<4;i++>for<j=0;j<100;j++>for<k=0;k<250;k++>;}voidmain<void>{while<1> //低电平有效{temp=0xfe;//左移for<cnt=0;cnt<8;cnt++>{a=temp<<cnt;b=temp>><8-cnt>;P1=a|b;delay1s<>;}temp=0x7f;//右移for<cnt=1;cnt<8;cnt++>{a=temp>>cnt;b=temp<<<8-cnt>;P1=a|b;delay1s<>;}}}<3>查表实现所谓的查表法是将一些特定的数据,即LED展示的变化组合数..据事先存在程序存储器中,再以指令到程序存储器中取出分别的样本数据输出到LED输出端口,便完成流水灯展示的效果。由于展示的样本数据,可以随意组合,因此用查表法来做流水灯控制的变化较多,展示效果较佳。在C语言中,由于C语言没有像汇编那样有专门的移位指令,所以只能每一个显示花样用一个8位数据来控制P1口八个管脚的每个脚的高低电平了。程序代码://*******************************************************//// 流水灯左移右移使用查表方式实现//********************************************************//#include<AT89X51.H>unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0x00,0xff,0x00,0x11};//低电平有效/*unsignedcharcodetable[]={0x01,0x02,0x04

温馨提示

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

评论

0/150

提交评论