基于51单片机的流水灯设计报告内容摘要:
相邻的引脚上。 这样,不仅降低了穿过整个芯片的 电流,另外还在印制电路板上容易布置去耦电容,从而降低系统的噪声。 现在为了适应各种应用的需要,很多单片机的输出能力都有了很大提高, Motorola 公司的单片机 I/O 口的灌拉电流可达 8mA 以上,而 Microchip 公司的单片机可达 25mA。 其它公司: AMD, Fujitsu,NEC , Infineon, Hitachi, Ateml, Tosbiba 等基本上可达 8~ 20mA 的水平。 这些电流较大的驱动电路集成到芯片内部在工作时带来了各种噪声,为了减少这种影响,现在单片机采用多个小管子并联等效一个大管子的方法,并在每个小 管子的输出端串上不同等效阻值的电阻,以降低 di/dt,这也就是所谓 跳变沿软化技术 ,从而消除大电流瞬变时产生的噪声。 采用低频时钟 高频外时钟是噪声源之一,不仅能对单片机应用系统产生干扰,还会对外界电路产生干扰,令电磁兼容性不能满足要求。 对于要求可靠性较高的系统,低频外时钟有利于降低系统的噪声。 在一些单片机中采用内部琐相环技术,则在外部时钟较低时,也能产生较高的内部总线速度,从而保证了速度又降低了噪声。 Motorola 公司的 MC68HC08 系列及其 1 6/32 位单片机就采用了这种技术以提高可靠性。 结 束语 单片机在目前的发展形势下,表现出几大趋势: 可靠性及应用越来越水平高和互联网连接已是一种明显的走向。 所集成的部件越来越多; NS(美国国家半导体)公司的单片机已把语音、图象部件也集成到单片机中,也就是说,单片机的意义只是在于单片集成电路, 9 而不在于其功能了;如果从功能上讲它可以讲是万用机。 原因是其内部已集成上各种应用电路。 功耗越来越低和模拟电路结合越来越多。 随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越 小,甚至难以辨认。 4 基于单片机的 流水灯 设计功能描述及设计背景 功能描述 要实现流水灯功能,我们只要将发光二极管 LED1~ LED8 依次点亮、熄灭, 8只 LED 灯便会一亮一暗的做流水灯了。 在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 要实现的目标: 流水灯实现依次明灭 要求实现指令控制的快速性 小灯明灭具有一段时间延迟 设计背景 随着现代社会的发展,人们越来越追求审美和新颖,而流水灯就是其中一种,以前简单的照明工具变得越来越多样化,流水灯的千姿百态恰能给人一种视觉冲击,现在不管大街小巷我们都可以随处可见这种变幻万千的流水灯,而这种流水灯我们可以产用电子电路去设计,我们主要可以用装套控制器和状态译码器来实现灯光的流水效果,但是现在我们可以用单片机 AT89C51 来实现,因为其相对于电子电路有明显的优越性,控制硬件电路比较简单,软件方面程序也不复杂,因此制作的远离简单,但功能作用并不低于电子电路设计的,由于它的小巧方便、通俗易懂,所以我们往往采用单片机来做流水 流水灯。 10 5 基于单片机的 流水 灯设计系统总体( 方案)设计 设计思路 根据设计功能描述,如果要让接在 口的 LED1 亮起来,那么只要把 口的电平变为低电平就可以了;相反,如果要接在 口的 LED1 熄灭,就要把 口的电平变为高电平;同理,接在 ~ 口的其他 7 个 LED 的点亮和熄灭的方法同 LED1。 因此,要实现流水灯功能,我们只要将发光二极管 LED1~LED8 依次点亮、熄灭, 8 只 LED 灯便会一亮一暗的做流水灯了。 在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时 间,否则我们就看不到“流水”效果了。 程序总体框图 WEI 图 51 设计总体框图 6 基于单片机的 流水灯 设计基本原理分析及设计说明 系统硬件电路图的绘制 打开 Proteus 软件的 ISIS 界面,点击左方的“ P”按钮,在关键字框内输入要查找的元件名,选择需要的型号,然后在右下角点击确定即可添加元件,如下所示: STC89C51 晶振电路 复位电路 流水流水灯电路 11 图 61 查找并添加元件 图 62 添加元件 12 图 63 系统硬件电路原理图(带电源) 上图中的电路图是自带电源的,实际应用中我们可以用 USB 接口直接供电,这样电路 原理图就会比较简单,如下图所示: 图 64 系统硬件电路原理图 硬件详细设计: 复位电路部分 如右图所示,复位电路由两个个电容和一个按钮组成,并且连接到单片机的 13 第 9 脚,当要对晶片重置时,只要按此开关就能完成 LED 和开关的重置。 图 65 复位电路 晶振部分 晶振电路由两个 30PF 的普通电容和一个晶振组成,晶振两端分别连接第 119 脚,它的作用是产生时钟信号 图 66 晶振电路 LED 显示部分 如下图所示, LED 显示部分由 8 个 LED 分别串联之后接到单片机的 1~ 9 脚,限流电阻为 1K 欧姆, 经过 LED 的电流大概为 10mA。 14 图 67 LED 显示电路 程序流程图: 图 68 程序流程图 开始 按下电源开关 灯光闪烁,且顺序不同 结束 断开电源 15 7 软硬件调试、运行结果及分析 软件编程 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。 软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。 下面我们以最简单的流水灯控制功能即 实现 8 个 LED 灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。 位控法 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制 P1 口的每一个位输出高低电平,从而来控制相应 LED 灯的亮灭。 程序如下: ORG 0000H ;单片机上电后从 0000H 地址执行 AJMP START ;跳转到主程序存放地址处 ORG 0030H ;设置主程序开始地址 START:MOV SP, 60H ;设置堆栈起始地址为 60H CLR ; 输出低电平,使 LED1 点亮 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED1 熄灭 CLR ; 输出低电平,使 LED2 点亮 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED2 熄灭 CLR ; 输出低电平,使 LED3 点亮 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED3 熄灭 CLR ; 输出低电平,使 LED4 点亮 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED4 熄灭 CLR ; 输出低电平,使 LED5 点亮 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED5 熄灭 CLR ; 输出低电平,使 LED6 点亮 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED6 熄灭 CLR ; 输出低电平,使 LED7 点亮 16 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED7 熄灭 CLR ; 输出低电平,使 LED8 点亮 ACALL DELAY ;调用延时子程序 SETB ; 输出高电平,使 LED8 熄灭 ACALL DELAY ;调用延时子程序 AJMP START ; 8 个 LED 流了一遍后返回到标号 START 处再循环 DELAY: ;延时子程序 MOV R0, 255 ;延时一段时间 D1:MOV R1, 255 DJNZ R1, $ DJNZ R0, D1 RET ;子程序返回END ;程序结束 循环移位法 在上个程序中我们是逐个控制 P1 端口的每个位 来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。 我们在程序一开始就给 P1 口送一个数,这个数本身就让 先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至 P1 口,这样就实现“流水”效果啦。 由于 8051 系列单片机的指令中只有对累加器 ACC 中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到 ACC 中,让其移动,然后将ACC 移动后的数据再转送到 P1 口,这样同样可以实现“流水”效果。 具体编程如下所示,程序结构确实简单了很多。 ORG 0000H ;单片机上电后从 0000H 地址执行 AJMP START ;跳转到主程序存放地址处 ORG 0030H ;设置主程序开始地址 START:MOV SP, 60H ;设置堆栈起始地址为 60H MOV A, 0FEH ; ACC 中先装入 LED1 亮的数据(二进制的11111110) MOV P1, A ;将 ACC 的数据送 P1 口 MOV R0, 7 ;将数据再移动 7 次就完成一个 8 位流水过程 LOOP: RL A ;将 ACC 中的数据左移一位 17 MOV P1, A。基于51单片机的流水灯设计报告
相关推荐
D3OEC L O C KV c cV1G N DD1IN 2IN 1IN 0A D D AA D D BA D D CA L ED7D6D5D4D0V2D2A D C 0 8 0 9DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF。 DS AT89C52 单片机 AT89C51 是 51
状态来驱动蜂鸣器,从而控制蜂鸣器只在整点时发出响声。 具体的连接如图 25 所示: 图 25 整点报时电路硬件图 整点报时模块工作原理 由于蜂鸣器的工作电流一般比较大, 所以 单片机的 I/O 口是无法直接驱动的, 故本文设计 利用 一个 PNP 三极管来放大电路 来驱动 蜂鸣器。 三极管 Q1 起开关作 用,其基极的低电平使三极管饱和导通,使蜂鸣器发出响声;而基极高电平则使三极管截止
PTR MOV TL1,A ;音律表查询值低八位赋值 ACALL DLAY AJMP KEYPRO ;跳转回键盘扫描程序 TINT1: JB , FLUTE_ON ;判断是否 跳到长笛音色档 JB , PIANO_ON ;判断是否调到钢琴音色档 JB , TRUMPET_ON ;判断是否调到小号音色档 JB , VIOLIN_ON ;判断是否跳到小提琴音色档 JB , PICCOLO_ON
码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢重庆邮电大学 自动化学院 综合设计报告 1 弃。 在同一个遥控器上.所有按键的数据码均不相同。 在 图 2 中,数据码为十六进制的 0CH,数据反码为十六进制的 0F3H(注意低位在前 ).两者之和应为 0FFH。 复位电路 这种复位电路的工作原理是:单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,
C52 为控制芯片, P0 为行控制, P2 为列控制。 所有的行( X0X7)都通过排阻接到单片机的 P0 口上,所有的列( Y00Y0 Y10Y1Y20Y2 Y30Y37)接到不同的 74LS138(U2, U3, U4, U5)上, U2 控制 U6, U3 控制 U7, U4 控制 U8,U5 控制 U9。 74LS138 直接由单片机的 P2 口进行驱动,这样就形成了一个完整的电路。
7) ,P2 口直接提供高 8 位地址(A8~A15)。 c) 控制总线(CB ):由 P3 口的第二功能状态和 4 根独立控制线RESET、EA、PSEN、ALE 等组成。 引脚号 第二功能 RXD(串行输入) TXD(串行输出) INT0(外部中断 0) INT0(外部中断 0) T0(定时器 0 外部输入) T1(定时器 1 外部输入) WR(外部数据存储器写选通)