1、课程设计说明书 第 I 页花样流水灯的设计摘 要城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心即使单片机。单片机的最明显的优势,就是想入到各种仪器,设备中。本课程是利用 AT80C51 单片机的自动控制功能,并结合其它电子元器件以及软件实现的流水灯,实现不同种类的流水现象。关键字:AT80C51 单片机,LED,花样流水灯课程设计说明书 第 II 页目录1 绪论 .12 相关元件及电路设计 12.1 AT89C51 芯片功能特性及
2、应用 12.2 MCS-51 单片机 22.2.1 内部结构 22.2.2 引脚定义 22.2.3 外部总线构成 52.3 单片机时钟电路及时钟时序单位 62.4 单片机的复位 82.4.1 复位状态 82.4.2 复位电路 83 电路及程序设计 .103.1 电路原理图设计 103.2 电路程序设计 11总结 18致谢 19参考文献 20课程设计说明书 第 1 页1 绪论当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规
3、模地兴起。本设计用 AT89C51 单片机自制了一款简易的花样流水灯,介绍了其硬件电路及软件编程方法,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料。本课题将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的花样流水灯设计。2 相关元件及电路设计2.1 AT89C51 芯片功能特性及应用单片机在我们的日常生活和工作中无处不在、无处不有:家用电器中的电子表、洗衣机、电饭褒、豆浆机、电子秤;住宅小区的
4、监控系统、电梯智能化控制系统;汽车电子设备中的 ABS、GPS、ESP、TPMS;医用设备中的呼吸机,各种分析仪,监护仪,病床呼叫系统;公交汽车、地铁站的 IC 卡读卡机、滚动显示车次和时间的 LED 点阵显示屏;电脑的外设,如键盘、鼠标、光驱、打印机、复印件、传真机、调制解调器;计算机网络的通讯设备;智能化仪表中的万用表,示波器,逻辑分析仪;工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;导弹的导航装置,飞机上的各种仪表等等。有资料表明:2007 年全球单片机的产值达到 151 亿美元,我国单片机的销售额达到400 亿元人民币,我国每年单片机的需求量达 50 至 60 亿片
5、,是全球单片机的课程设计说明书 第 2 页最大市场。可以说单片机已经渗透到了我们生活的各个领域。在 AT89C51 芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚 XTAL1,输出端为引脚 XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容 C1、C2 形成反馈电路,可构成稳定的自激振荡器,振荡频率通常是 1.212MHz。若晶体振荡器频率高,则系统的时钟频率也高,单片机的运行速度也就快2.2 MCS-51 单片机2.2.1 内部结构MCS-51 系列单片机内部采用模块式结构,其结构组成框图如图 1 所示。中断控制定时 / 计数器 1定时 / 计数器 0程
6、序存储器 数据存储器4 K / 8 K 字节 R O M1 2 8 / 2 5 6 字节 R A M串行口时钟电路C P U总线控制并行 口P 0 P 1 P 2 P 3T X D R X D控制图 1 MCS-51 系列单片机组成框图由图 1 可见,MCS-51 系列单片机主要由以下部件通过片内总线连接而成:中央处理器(CPU) 、数据存储器(RAM) 、程序存储器(ROM) 、并行输入/输出口(P0 口P3 口) 、串行口、定时器/计数器、中断控制、总线控制及时钟电路。2.2.2 引脚定义引脚是单片机和外界进行通信的通道连接点,用户只能通过引脚组建控制系统。从应用的角度来看,引脚的应用是单
7、片机应用的一个重要基础。因此熟悉引脚是学习应用单片机的基础。 课程设计说明书 第 3 页MCS-51 系列单片机的引脚封装主要有: PDIP40、PLCC44 和PQFP/TQFP44。不同封装的芯片其引脚的排列位置有所不同,但他们的功能和特性都相同。方形封装(PLCC44 和 POFP/TQFP44)有 44 引脚,其中 4 个 NC 为空引脚。采用 40 引脚 PDIP 封装的 80C51 单片机的引脚排列及逻辑符号如图 2 所示。由于工艺及标准化等原因,芯片的引脚数量是有限的,但单片机为实现控制所需要的信号数目却远远超过其引脚数目。为解决这一矛盾,单片机的某些信号引脚被赋以双重功能。1)
8、电源及电源复位引脚:(1)V CC(40 脚):正常操作时接 +5V 直流电源。(2)V SS (20 脚):接地端。P 1 P 0P 3 P 2R S T A L EX T A L 1X T A L 2V C CV S SNI / OI / OI / OI / O图 2 40 引脚 PDIP 封装的 80C51 单片机的引脚排列及逻辑符号图(3)RST/V PD(9 脚):复位信号输入端。在该引脚上输入一定时间(约两个机器周期)的高电平将使单片机复位。该引脚的第二功能是 VPD,即备用电源输入端。当主电源发生故障,降低到低电平规定值时,可将+5V 备用电源自动接入 VPD端,以保护片内 RA
9、M 中的信息不丢失,使复电后能继续正常运行。(4) /VPP(31 脚):访问程序存储器控制信号/编程电源输入。当EA保持高电平时,访问内部程序存储器,访问地址范围在 04KB 内;当PC(程序计数器)值超过 0FFFH,即访问地址超出 4KB 时,将自动转向执行外课程设计说明书 第 4 页部程序存储器内的程序;当 保持低电平时,不管单片机内部是否有程序存储EA器,则只访问外部程序存储器(从 0000H 地址开始) 。由此可见,对片内有可用程序存储器的单片机而言, 端应接高电平,而对片内无程序存储器的单片机,可将 接地。EA对于 EPROM 型单片机,在 EPROM 编程期间,此引脚用于施加
10、21V 的编程电源(V PP) 。2)时钟振荡电路引脚 XTAL1 和 XTAL2:(1)XTAL1(19 脚):外接石英晶体和微调电容引脚 1。它是片内振荡电路反向放大器的输入端。采用外部振荡器时此引脚接地。(2)XTAL2(18 脚):外接石英晶体和微调电容引脚 2。它是片内振荡电路反向放大器的输出端。采用外部振荡器时此引脚为外部振荡信号输入端。3) (30 脚):低 8 位地址锁存控制信号/编程脉冲输入。在系ALE/PROG统扩展时,ALE 用于把 P0 口输出的低 8 位地址锁存起来,以实现低 8 位地址和数据的隔离。在访问外部程序存储器期间,ALE 信号两次有效;而在访问外部数据存储
11、器期间,ALE 信号一次有效。对于 EPROM 型单片机,在 EPROM 编程期间,此引脚用于输入编程脉冲 。PROG4) (29 脚):外部程序存储器的读选通信号输出端,低电平有效。PSEN在从外部程序存储器取指令(或常数)期间,此引脚定时输出负脉冲作为读取外部程序存储器的信号,每个机器周期 两次有效,此时地址总线上送出的SEN地址为外部程序存储器地址;在此期间,如果访问外部数据存储器和内部程序存储器,不会产生 信号。PSEN5)并行双向输入/输出(I/O)口引脚:(1)P0 口的 P0.0P0.7 引脚(3932 脚):8 位通用输入/输出端口和片外 8 位数据/低 8 位地址复用总线端口
12、。(2)P1 口的 P1.0P1.7 引脚(18 脚):8 位通用输入/输出端口。(3)P2 口的 P2.0P2.7 引脚(2821 脚):8 位通用输入/输出端口和片外高 8 位地址总线端口。(4)P3 口的 P3.0P3.7 引脚(1017 脚):8 位通用输入/输出端口,具有第二功能。课程设计说明书 第 5 页2.2.3 外部总线构成所谓总线,就是连接单片机与各外部器件的一组公共的信号线。当系统要求扩展时,单片机要与一定数量的外部器件和外围设备连接。如果各部件及每一种外围设备都分别用各自的一组线路与 CPU 直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路的设计和系统结构,
13、常用一组线路,并配以适当的接口电路来与各个外部器件和外围设备连接,这组共用的连接线路就是总线。采用总线结构便于扩展外部器件和外围设备,而统一的总线标准则使不同设备间的互连更容易实现。利用片外引脚可以构造 MCS-51 系列单片机的三总线结构。单片机的引脚除了电源端 VCC、接地端 VSS、复位端 RST、晶振接入端 XTAL1 和 XTAL2、通用I/O 口的 P1.0P1.7 以外,其余的引脚都是为实现系统扩展而设置的。用这些引脚构造的单片机系统的三总线结构如 3 所示。地址锁存器数据总线地址总线控制总线P 2P 0A L EPSNRDWM C S - 5 1单片机图 3 MCS-51 系列
14、单片机片外三总线结构1)地址总线(Address Bus,AB):MCS-51 系列单片机总共有 16 根地址线 A15 A0,片外存储器可寻址范围达 64KB(2 16=65536 字节) ,由 P2 口直接提供高 8 位地址 A15 A8,P0 口经地址锁存器提供低 8 位地址 A7 A0。2)数据总线(Data Bus,DB):MCS-51 系列单片机总共有 8 根数据线D7D0,全由 P0 口提供。由于 P0 口是分时复用总线,分时输送低 8 位地址(通过地址锁存器锁存)和高 8 位数据信息。 3)控制总线(Control Bus,CB):控制总线由 P3 口的第二功能课程设计说明书
15、第 6 页(P3.6)、 (P3.7)和 3 根独立的控制线 、ALE、 组成。WRDEAPSN2.3 单片机时钟电路及时钟时序单位1) 时钟电路单片机本身如同一个复杂的同步时序电路,为了保证同步工作,电路应在唯一的时钟信号控制下,严格地按规定时序工作。而时钟电路就用于产生单片机工作所需要的时钟信号。MCS-51 单片机时钟电路示意图如图 4 所示。 XTAL1XTAL2fOSC二 分 频三 分 频六 分 频状 态 时 钟机 器 周 期ALE236C1C2晶 振 反 相放 大器图 4 MCS-51 单片机时钟振荡电路示意图在 MCS-51 芯片内部有一个高增益反相放大器,用于构成振荡器。反相放
16、大器的输入端为引脚 XTAL1,输出端为引脚 XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容 C1、C2 形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是 1.212MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用。振荡脉冲在片内通过一个时钟发生电路二分频后才作为系统的时钟信号。片内时钟发生电路实质上是一个二分频的触发器,其输入来自振荡器,输出为二相时钟信号,即状态时钟信号,其频率为 fosc/2;状态时钟三分频后为 ALE 信号,其频率为 fosc/6;状态时钟六分频后为机器周期,其频率
17、为 fosc/12。在图 4 中,使用晶体振荡器时,C1、C2 取值 3010pF;使用陶瓷振荡器时,C1、C2 取值 4010pF。C1、C2 的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值 2030pF。在设计印制电路板时,晶振和电容等应尽可能靠近芯片,以减少分布电容,保证振荡器振荡的稳定性。课程设计说明书 第 7 页也可以由外部时钟电路向片内输入脉冲信号作为单片机的振荡脉冲。这时外部脉冲信号是经 XTAL1 引脚引入的,而 XTAL2 引脚悬空或接地。对外部信号的占空比没有要求,但高低电平持续的时间不应小于 20ns。这种方式常用于多块芯片同时工作,便于同步
18、。其外部脉冲接入方式如图 5 所示。X T A L 1X T A L 2M C S - 5 1V S SO C 门外部脉冲信号V C C图 5 MCS-51 单片机外部时钟输入接线图所谓时序,是指在指令执行过程中,CPU 的控制器所发出的一系列特定的控制信号在时间上的先后关系。CPU 发出的控制信号有两类:一类是用于单片机内部的,用户不能直接接触此类信号,不必对它作过多了解;另一类是通过控制总线送到片外的,人们通常以时序图的形式来表示相关信号的波形及出现的先后次序。为了说明信号的时间关系,需要定义时序单位。89C51 的时序单位共有四个,从小到大依次是拍节、状态、机器周期和指令周期。如图 4
19、所示。P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2P 1 P 2P 1 P 2 P 1 P 2P 1 P 2P 1 P 2P 1 P 2S 1 S 2 S 3 S 4 S 5 S 6 S 1 S 2 S 3 S 4 S 5 S 6机器周期 机器周期f O S C( X T A L 2 )P 1 P 2课程设计说明书 第 8 页2.4 单片机的复位2.4.1 复位状态复位是单片机的初始化操作,其主要功能是将程序计数器 PC 初始化为0000H,使单片机从 0000H 单元开始执行程序。除了进入系统的正常初始化外,当程序运行出错或操作错误使系统处于
20、死锁状态时,也须重新启动单片机,使其复位。单片机复位后,除 P3P0 的端口锁存器被设置成 FFH、堆栈指针 SP 设置成07H 和串行口的 SBUF 无确定值外,其它各专用寄存器包括程序计数器 PC 均被设置成 00H。片内 RAM 不受复位的影响,上电后 RAM 中的内容是随机的。记住这些特殊功能寄存器的复位状态,对熟悉单片机操作,简短应用程序中的初始化部分是十分必要的。2.4.2 复位电路单片机的复位操作有上电自动复位和手动按键复位两种方式。上电自动复位操作要求接通电源后自动实现复位操作。如图 1.5-1 所示。图 6(a)所示为最简单的复位电路。上电瞬间由于电容 C 上无储能,其端电压
21、近似为零,RST 获得高电平,随着电容器 C 的充电,RST 引脚上的高电平将逐渐下降,当 RST 引脚上的电压小于某一数值后,单片机就脱离复位状态,进入正常工作模式。只要高电平能保持复位所需要的时间(约两个机器周期) ,单片机就能实现复位。相比于图 6(a) ,图 6(b)所示的电路只是增加了外接二极管 VD和电阻R。其优越性在于停电后,二极管 VD给电容 C 提供了快速放电通路,保证再上电时 RST 为高电平,从而保证单片机可靠复位。正常工作时,二极管反偏,对电路没影响。断电后,V CC逐渐下降,当 VCC=0 时,电容 C 通过 VD迅速放电,恢复到无电量的初始状态,为下次上电复位做好准
22、备。课程设计说明书 第 9 页V C CV S S+ 5 VM C S - 5 1R S TV C CV S S+ 5 VM C S - 5 1R S T+2 2 FCR8 . 2 K V DC+2 2 F(a) (b)图 6 上电自动复位电路手动按键复位要求在电源接通的条件下,用按钮开关操作使单片机复位,如图 7 所示。其工作原理为:复位键按下后,电容 C 通过 R2 放电,放电结束后,RST 引脚的电位由 R1 和 R2 分压决定,由于 R2R1,因此,RST 引脚为高电平,单片机进入复位状态,松开按键后,电容充电,RST 上的电位降低,经过一定的延时,单片机就脱离复位状态,进入正常工作模
23、式。R2 的作用在于限流,避免按键按下的瞬间电容 C 放电产生火花,保护按键的触点。V C CV S S+ 5 VM C S - 5 1R S TS+2 2 FCR 22 7 0 R 18 . 2 K V D图 7 手动按键复位电路系统上电运行后,若需要复位,一般是通过手动复位来实现的。通常采用手动复位和上电自动复位结合。复位电路虽然简单,但其作用十分重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。初步检查可用示波器探头监视 RST 引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的) ,课程设计说明书 第 10 页还可以通过改变复位电路阻容值的方法进行检测。3 电路及程序设计
24、3.1 电路原理图设计按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51 单片机是美国 ATMEL 公司生产的低电压、高性能 CMOS 8 位单片机,具有丰富的内部资源:4kB 闪存、128BRAM、32 根I/O 口线、2 个 16 位定时/计数器、5 个向量两级中断结构、2 个全双工的串行口,具有 4.255.50V 的电压工作范围和 024MHz 工作频率,使用 AT89C51 单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片
25、机。从原理图中可以看出,如果要让接在 P1.0 口的LED1 亮起来,那么只要把 P1.0 口的电平变为低电平就可以了;相反,如果要接在 P1.0 口的 LED1 熄灭,就要把 P1.0 口的电平变为高电平;同理,接在P1.1P1.7 口的其他 7 个 LED 的点亮和熄灭的方法同 LED1。因此,要实现流水灯功能,我们只要将发光二极管 LED1LED8 依次点亮、熄灭,8 只 LED 灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。设计原理图如图 8 所示:课
26、程设计说明书 第 11 页图 8 流水灯硬件原理图3.2 电路程序设计程序流程图如图 9 所示:程序中 LIGHT7 为多种亮灯方式结合循环延时子程序 DELAY 为 0.5 秒延时,延时子程序 DELAY1 为 2 秒延时LIGHT1LIGHT6 亮灯方式程序中有标注课程设计说明书 第 12 页开 始跳至主程序,设置外部中断 0 有效,电平触发主程序等待中断中断到来?继续等待中断P3.0=0?P3.1=0?P3.3=0?P3.4=0?P3.5=0?P3.6=0?P3.7=0?中断?继续循环LIGHT1LIGHT2LIGHT3LIGHT4LIGHT5LIGHT6LIGHT7相应亮灯方式图 9
27、程序流程图程序如下:ORG 0000HAJMP MAIN ;系统上电,执行主程序ORG 0003H ;外部中断 0 入口AJMP LOOP ;转移至中断服务程序MAIN:SETB EX0 ;允许 INT0 中断课程设计说明书 第 13 页SETB IT0 ;INT0 中断选用电平触发SETB EA ;CPU 开中断HALT: SJMP HALT ;等待中断LOOP: ;判 0 转移到相应亮灯方式SETB P3.2JNB P3.0 ,LIGHT1JNB P3.1 ,LIGHT2JNB P3.3 ,LIGHT3JNB P3.4 ,LIGHT4JNB P3.5 ,LIGHT5JNB P3.6 ,LI
28、GHT6JNB P3.7 ,LIGHT7LIGHT1: ;一个正流水(2 秒延时)SETB P3.0MOV DPTR,#TAB1MOV R0,#8LIGHT11:MOVX A,DPTRMOV P1,ALCALL DELAYINC DPTRDJNZ R0,LIGHT11JNB P3.0,LOOPSJMP LIGHT1LIGHT2: ;两个正流水(2 秒延时)SETB P3.1MOV DPTR,#TAB2MOV R0,#4LIGHT22:MOVX A,DPTRMOV P1,A课程设计说明书 第 14 页LCALL DELAYINC DPTRDJNZ R0,LIGHT22SJMP LIGHT2LIG
29、HT3: ;隔一个正流水(2 秒延时)SETB P3.3MOV DPTR,#TAB3MOV R0,#8LIGHT33:MOVX A,DPTRMOV P1,ALCALL DELAYINC DPTRDJNZ R0,LIGHT33JNB P3.0,LOOPSJMP LIGHT3LIGHT4: ;隔两个正流水(0.5 秒延时)SETB P3.4MOV DPTR,#TAB4MOV R0,#4LIGHT44:MOVX A,DPTRMOV P1,ALCALL DELAY1INC DPTRDJNZ R0,LIGHT44JNB P3.0,LOOPSJMP LIGHT4LIGHT5: ;隔一个倒流水(0.5 秒延时)课程设计说明书 第 15 页