单片机设计彩灯控制_第1页
单片机设计彩灯控制_第2页
单片机设计彩灯控制_第3页
单片机设计彩灯控制_第4页
单片机设计彩灯控制_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . 工学院鹿山学院单片机课程设计报告题目:彩灯控制专业: 电子信息工程班级: 电子08 学号:xxxxxxxx:x x x 22 / 231 前言1选题背景与意义随着计算机、微电子、信息技术的快速进步,智能化技术的开发速度越来越快,智能度越来越高,应用围也得到了极大的扩展。在海洋开发、宇宙探测、工农业生产、军事、社会服务、娱乐等各个领域1。在娱乐方面,场地的装饰离不开彩灯。在建筑方面也采用彩灯来装饰高楼大厦。彩灯灵活多变的点亮方式,装饰效果非常好,特别是晚上使得高楼大厦更加漂亮,是彩灯的应用才使得城市的夜景非常迷人。随着人们生活水平的提高,环境的不断改善和美化,在许多场合可以看到很

2、多彩色的霓虹灯。特别是当今充满竞争的时代,各地政府为吸引游客和投资者,在城市的沿街、沿道、沿河、沿线等地用霓虹灯造景,实施"亮化工程",以美化环境、树立城市形象。彩灯将会在人类未来的夜晚生活成为一个个重要的景观,彩灯控制器的应用也会在现实生活中得到广泛的应用。本设计通过对彩灯的设计,训练对电气、单片机、电子技术等容的应用能力,掌握对电子产品设计的流程以与各种要求2。彩灯技术已广泛得在霓虹灯、广告彩灯、汽车车灯等领域中应用。单片机的控制电路的设计是彩灯应用的一个瓶颈。本次设计主要培养学生综合运用所学的知识与技能分析与解决问题的能力,并巩固和扩大学生的课堂知识。通过设计学会查阅

3、、使用各种专业资料和网上资源,并以严肃认真、深入研究的工作作风完成设计任务,逐步向工程技术员转变,培养我们独立完成任务的能力,体现和检验综合设计能力,大力提高毕业生的技术水平,培养新一代既有理论,又有动手能力的实用性人才,以适应国际建设和发展的需要。了解彩灯线路的基本理论,掌握单片机编程的基本设计方法和分析方法,对能够熟练地进行彩灯应用电路的设计与制作是十分必要和重要的3。由于LED彩灯克服了传统霓虹灯投资大,制作工艺复杂,使用玻璃管、高压电源与惰性气体等诸多不便,同时解决了耗电高、造价高,使用寿命短的不足,因此得到了广泛的应用。越来越多的商家开始关注这块商机无限的市场,竞相制作生产。但是目前

4、市场上各种式样的LED彩灯多半是采用全硬件电路实现,电路结构复杂、功能单一,这样一旦制成成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。同时这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点4。此外从功能上来看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进行改进。 2 系统硬件设计整个系统包括AT89C51主控模块和受控模块,即发光二极管LED。以下就分别介绍一下这两个模块的主要功能。2.1 主控模块电路设计主控模块电路见图1。主控模块主要设计器件有AT89C51,2个按钮。通过软件设计

5、,使单片机P0和P2作为LED驱动信号输出口,外部中断按钮作为按钮输入口。图1 主控模块硬件图2.2 主要元器件介绍2.2.1 单片机AT89C51AT89C51是主控模块的核心控制器,其芯片含4KB ROM和128Byte RAM;系统的振荡周期为12MHz。AT89C51具有如下特征(Features): 与Intel MCS-51产品兼容; 部含有4KBEEPROM,可重复擦写1000次; 支持晶振频率从0Hz到24MHz; 部含有128*8bit的RAM; 32位可编程的I/O线; 2个16位的定时/计数器, 6个中断源; 可编程的串行口;AT89C51有40个引脚,是双列直插式芯片(

6、DIP)8,引脚定义与功能见图3。图3 AT89C51引脚图(1) 输入输出引脚(P0、P1、P2和P3端口引脚)P0P3是89C51与外界联系的4个8位双向并行I/O口。本设计中P0和P1口作为LED驱动信号输出口,P2口与三位按钮连接作为按钮输入口,P3口与七段码LED相接作为显示器的输出口。(2) AT89C51单片机的基本结构见图5图5 AT89C51基本结构2.2.2 中断的基本概念    在CPU 与外设交换信息时,存在着一个快速的 CPU 与慢速的外设之间的矛盾。为解决这个问题,发展了中断的概念。     单片机在某一时

7、刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?通过中断可以实现多个任务的资源共享。     中断现象在现实生活中也会经常遇到,例如,你在看书手机响了你在书上作个记号你接通和对方聊天谈话结束从书上的记号处继续看书。这就是一个中断过程。通过中断,你一个人在一特定的时刻,同时完成了看书和打两件事情。用计算机语言来描述,所谓的中断就是,当 CPU 正在处理某项事务的时候,如果外界或者部发生了紧急事件,要求 CPU 暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。 从中断的定义

8、我们可以看到中断应具备中断源、中断响应、中断返回这样三个要素。中断源发出中断请求,单片机对中断请求进行响应,当中断响应完成后应进行中断返回,返回被中断的地方继续执行原来被中断的程序。MCS-51单片机的中断源          MCS-51单片机的中断源共有两类,它们分别是:外部中断和部中断1. 外部中断源 l         外部中断0():来自P3.2引脚,采集到低电平或者下降沿时,产生中断请求。l  

9、       外部中断1():来自P3.3引脚,采集到低电平或者下降沿时,产生中断请求。3 系统软件设计3.1 综述本次的任务是设计一个基于单片机的LED彩灯控制器,需要循环运行四种以上预设的彩灯闪烁方案,这里的各种的方案还有显示方式都是由单片机部的程序控制。在这里我将16个发光二极管分别接在P0和P2口,通过程序控制这两个端口的电平高低,将16个发光二极管的正极接P0和P2口,负极接地,即P0和P1口的相应端口为高电平时LED就能被点亮。再通过程序循环的让各个端口以不同的方式点亮来达到各种花样的效果,并且当中要有一定的延时,延时时间

10、小于人眼视觉暂留时间,否则人眼看上去每个灯都是亮的也就没有实际效果。设计的LED彩灯系统分为两部分,即AT89C51主控模块和发光二极管LED受控模块。整个系统工作由软件程序控制运行,同时根据不同的需要,用户可以在LED彩灯工作时通过主控模块上的按钮来设定亮灯模式和灯光闪动频率。模块功能:该部分主要涉与功能的实现方式,即程序编写。程序要实现的功能包括读按键,通过对读入按键的值控制LED点亮方式。键盘有三个按键K1、K2,K1控制LED点亮模式,K2键控制彩灯暂停。3.2 主程序与中断程序3.2.1 主程序与流程图AT89C51通过编写程序应完成以下功能:通过P0口和P2控制发光二极管LED的亮

11、与灭,从而实现多种闪烁方案; 用16盏以上的LED小灯,实现至少4种彩灯灯光效果(不含全部点亮,全部熄灭)。用输入按钮在几种灯光效果间转换。按照上述要求即可写出主程序代码并绘制出主程序流程图。void main()Int_Init(); /外部中断初始化while(1)if(state=1) first(); /扫描状态标志,为1时,第一种效果 else if(state=2) second();/扫描状态标志,为2时,第二种效果else if(state=3) third();/扫描状态标志,为3时,第三种效果else if(state=4) four(); /扫描状态标志,为4时,第四种效

12、果 else /其他状态,八盏灯全亮,即暂停 P0=0x00;P2=0x00; 3.2.2 中断程序与流程图所谓中断就是指当中央处理器CPU正在处理某件事情的时候,外部发成了一件事(如这里是定时器计数溢出),请求CPU迅速去处理,CPU暂时中断当前的工作,转入处理所发生的事件,处理完以后,再回到原来的地方,继续原来的工作,这个过程就称为中断16。关闭中断N重装初值保护现场恢复现场中断次数systemSpeed?开中断模式0?Y返回主函数数N模式1?N模式8?Y Y NY调Mode_8子函数调Mode_1子函数调Mode_0子函数置模式标识号调数码管显示子程序 图9 中断程序流程图3.3 子程序

13、的编程思路虽然大致的流程图已经绘制完毕,但编程过程中会遇到更加具体的问题,需要编制一些子程序来解决,以下是一些主要子程序的流程图绘制思路。3.3.1延迟子程序数码管的显示必须有足够长的时间长到肉眼能够察觉到,因此在点亮数码管时要给予其一个适当的延迟。void Delay(unsigned int t) /延时函数unsigned int i,j;for(i=0;i<t;i+) /用for循环嵌套来实现延时 for(j=0;j<200;j+);执行完了for(i=0;i<t;i+),就会去执行下面一行,最终for(i=0;i<t;i+)这条代码将被执行8*200=1600

14、就是延时。一个机器周期包括12个时钟周期。单片机AT89C51工作于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。一共执行1000次,正好1000微秒,也就是1毫秒。4 系统调试与仿真分析4.1 硬件选材与电路制作首先要对整个任务进行分析,基本确定该彩灯控制系统可分为两大模块:主控模块以与管LED板模块。然后进一步确定应该采用哪些元器件。比如:主控模块首选就是由单片机作为主控核心,其成本很低,且功能很完善。除此以外当然还需要一些按钮、七段码显示器等辅助器件。在确定完所需何种功能的元器件后,就可以进行实物确定,主要通过上网搜索(比如21中国电子网)

15、,以与一些元器件手册。其要元器件报价较低,且能够实际购买的到。确定完这些元器件后通过Protel99绘制原理图与印刷板电路图。其绘制印刷板电路的过程中必须注意元器件的尺寸与布线的合理性,尽可能减小板的体积。随后就是通过自己动手将这些元器件焊接到印刷板上。由于指导老师提供了做硬件的实验箱,里面涵括了硬件电路的全部元器件,且都焊接在印刷板上,为做硬件调试省去了诸如选材之类的麻烦。我只需在实验箱里连线,接通电源,并将实验箱与计算机进行串口通信。4.2 硬件调试硬件的调试主要是吧电路各种参数调整到符合设计要求。先排除硬件电路故障,包括设计性错误和工艺性故障。一般原则是先静态后动态。硬件静态调试主要是检

16、测电路是否有短路、断路、虚焊等,检测芯片引脚焊接是否有错误,数码管段位是否焊接正确单片机的硬件调试和软件调试是分不开的。经历过好多次失败后才切切实实地体会到:尽管许多硬件故障是在调试软件时才发现,但通常先要排除系统中明显的硬件故障后才能与软件结合起来调试。调试方法:在上电前,首先用万能表、示波器根据硬件图和印刷板电路图仔细检查其连线是否正确。核对各元器件的型号、规格以与安装的方向是否正确。其中重点检查电源走线,以避免电源之间短路。单片机AT89C51是系统的核心,利用万用表检测单片机电源VCC(40脚)是否为+5V、晶振是否正常工作(可用示波器测试,也可以用万用表检测,两引脚电压一般为1.8V

17、2.3V之间)、复位引脚RST(复位时为高电平,工作时为低电平)。尤其要注意单片机插座上的电位,由于单片机电源仅5V,因此如果有高电压,联机时会损坏模拟器。4.3 软件调试本次所有软体程序均采用C51语言编写,程序写完后要对其编译,在Proteus软件里实现硬件电路仿真。下面分别简单介绍单片机C语言和这两款软件。4.3.1 单片机C语言单片机C语言程序设计不同于通用计算机应用程序设计,它必须针对具体的微控制器与外围电路来完成,为了便于学习单片机应用程序设计和系统开发,很多公司退出了单片机实验箱、仿真器和开发板等,这些硬件设备可用于验证单片机程序,开发和调试单片机应用系统。开发8051单片机系统

18、时,使用C语言会使开发周期大为缩短,开发效率大幅提高,程序可读性好且易于移植,所以使用C语言开发单片机系统已经成为必然趋势17。C语言在单片机系统开发中的优势: 用C语言编写的程序可读性强; 在不了解单片机指令系统而仅熟悉8051单片机存储结构时就可以开发单片机程序; 寄存器分配和不同存储器寻址与数据类型等细节可由编译器管理; 程序可分为多个不同的函数,这使程序设计结构化; 函数库丰富,数据处理能力强; 程序编写与调试时间大大缩短,开发效率远高于汇编语言; C语言具有模块化编程技术,已编写好的通用程序模块很容易植入新程序,这进一步提高了程序开发效率。4.3.2 KeiluVision2C51单

19、片机支持HEX文件,我采用的编译器是Keil uVision2软件,该软件是美国Keil Software 公司开发的,关于8051系列MCU的开发工具,是目前世界上最好的51单片机开发工具之一。软件本身支持数百种51系列单片机芯片,可以用来编译C源码,汇编源程序以与两者的混合编程代码,连接重定位目标文件和库文件,创建HEX文件,调试目标程序等,是一种集成化的文件管理编译环境。使用步骤如下: 建立一个项目,启动Keil,单击“Project菜单/New”选项,从弹出的窗口中选择要保存的路径,并输入项目文件名“彩灯.uv2”,然后保存。这时会弹出一个选择CPU型号的对话框,根据所使用的单片机来选

20、择,我用的单片机是AT89C51。 创建程序文件,单击“File菜单/New”选项,输入C51语言源程序,单击“File菜单/Save”并输入程序文件名“彩灯.C”,保存。 程序文件添加到项目中,右键点击“Target 1”前面的“+”,展开里面的容“Source Group 1”,右键单击“Source Group1”弹出一个右键菜单,单击“Add File to Groups Source Group 1”,从弹出的窗口中选择之前保存的文件“彩灯.C”添加到项目中去。 设置当前项目的目标选项,右键单击“Target 1”,从弹出的右键菜单中单击“Option for Target”选项,从

21、弹出的“Options”窗口中选择“Target”标签栏,在“Create HEX File”前面打钩。 运行编译,右键单击“Target 1”,从弹出的右键菜单中单击“Build target”选项,此时若源程序没有语法错误,Keil就会生成HEX文件,并自动保存在之前设置的路径里。4.4.3 ProteusProteus是英国Labenter electronics公司开发的电路分析与实物仿真软件,是目前最好的模拟单片机外围器件的工具,它可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件与外部设备,各种虚拟仪表(如电压表、电流表、示波器、逻辑分析仪、信号发生器等),特别是

22、它具有对单片机与其外围电路组成的综合系统的交互仿真功能。目前,Proteus仿真系统支持的主流单片机有ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列等,它支持的第三方软件开发、编译和调试环境有Keil uVision2/3、MPLAB等18。Proteus主要由ISIS和ARES两部分组成,ISIS的主要功能是原理图设计与电路原理图的交互仿真,ARES主要用于印制电路板的设计。ISIS提供的Proteus VSM(Virtual System Modelling)实现了混合式的SPICE电路仿真,它将虚拟仪器、高级图表应用、单片机仿真

23、、第三方程序开发与调试环境有机结合,在搭建硬件模型之前即可在PC上完成原理图设计、电路分析与仿真与单片机程序实时仿真、测试与验证。Proteus操作非常简单,启动“ISIS.exe”。在设计原理图时,根据当前电路复杂程度和特定要求,选择恰当的模块进行设计,打开模块式需要单击“文件/新建设计”(File/New Design)菜单,打开“创建新设计”(Create New Design)对话框,然后选择相应模块。 创建空白文件后,先将DSN文件保存到指定位置,接下来就可以开始在图纸中添加元件了,单击模式工具上的元件模式(Component Mode)图标,对象选择窗口上会出设备(Device),

24、这时单击“P”按钮,打开元件选择窗口,在元件库选择硬件电路所需要的元器,合理摆放位置,然后按要求连接好电路图。4.4 软件仿真结果与分析完成单片机系统仿真电路图设计后,即可开始仿真运行单片机绑定的程序文件,双击单片机,打开单片机属性窗口(也可以先在单片机上单击右键,再单击左键,或者选中单片机后按下(Ctrl+E组合键),在“Program Files”项中选择对应的HEX文件。在仿真电路和程序都没有问题时,直接单击Proteus主窗口下的“运行”(Play)按钮,即可仿真运行单片机系统, 在运行过程中如果希望观察存、24C0X、温度寄存器、时钟芯片等部数据可在运行时单击“单步”(Step)或“

25、暂停”(Pause)按钮,然后再“调试”(Debug)菜单中打开相应设备。状态一、程序如下:void first() / P0=0x6d;P2=0x6d;Delay(100);if(Fuck= 1) Fuck = 0; /把外部变量清0第二种闪灯模式:void second()unsigned char m,n;for(m=0;m<4;m+)P0=0xf0;P2=0x0f;Delay(100);P0=0xff;P2=0xff;Delay(100);if(Fuck = 1) break;/如果按下外部中断按钮,立即跳出效果,执行中断的容for(n=0;n<4;n+)P0=0x0f;P

26、2=0xf0;Delay(100);P0=0xff;P2=0xff;Delay(100);if(Fuck = 1) break; /如果按下外部中断按钮,立即跳出效果,执行中断的容 Fuck = 0; /把外部变量清0第三种闪灯模式:void third()unsigned char n;for(n=0;n<4;n+)P0=NUM1n;P2=NUM2n;Delay(100);if(Fuck = 1) break; /如果按下外部中断按钮,立即跳出效果,执行中断的容 Fuck = 0; /把外部变量清0第四种闪灯模式:void four()unsigned char n;for(n=0;n

27、<8;n+)P0=an;P2=an;Delay(100);if(Fuck = 1) break; /如果按下外部中断按钮,立即跳出效果,执行中断的容 Fuck = 0; /把外部变量清05全文总结经过这次设计,我对单片机的使用有了不同于以往的认识。从书本上的理论到现实中的硬件电路制作、软件编制以与软硬件调试,难度大增加。但是通过这一过程我对单片机的认识更加深刻。这对我今后从事该方面的学习工作是一个很好的基础。通过这次的毕业设计,让我受益匪浅,让我了解和掌握了一些编程思想和对I/O口的使用和应用的条件的思考,对单片机的各个管脚功能的理解和掌握。实现了软件和硬件的有效结合,缺一不可。设计让我

28、把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论的是实践的基础,实践有能检验理论的正确性,更激发了我对专业知识的渴求,这些对我以后参加工作或者继续学习都会有很大的帮助和影响。而作为一位学生,在对LED彩灯的设计中,因知识和经验的不足,只能通过模仿其它的编程思路,再加上一些自己的思想去完成这个设计,因此在各个方面都会有一些不足,比如所设计的功能还不够全面,现在流行的声光结合彩灯,就是在彩灯闪烁的基础上再加进去播放音乐,以此更让人的审美赏心悦目。我会在以后的学习中逐渐去完善、巩固我的单片机知识。参考文献1 伟.单片机C语言程序设计实训100例M :电子工业,20092 楼然苗.

29、单片机课程设计指导M. :航空航天大学出版,20073Muhammad Ali Mazidi, Janice Gillispie Mazidi and Rolin D. McKinlay. The 8051 Microcontroller and Embedded Systems M, American: Prentice Hall, 20004 何政.单片机原理与应用M :科学技术, 19925 志宗 等 89C51 单片机控制的可编程霓虹灯控制器J 电子技术, 1997年第10期 6 群芳,士军,黄建 单片微型计算机与接口技术(第2版)M:电子工业,20077 毅刚,修林成,胡振江 MCS

30、-51单片机应用设计M :工业大学,19908 景初 单片机应用系统设计与实践M :航空航天大学,1999附录3 程序#include<reg52.h>sbit Key1=P32; /切换状态按钮(外部中断0)sbit Key2=P33; /暂停按钮(外部中断1)unsigned char state=1;/状态标志char Fuck; /定义Fuck为外部变量unsigned char NUM14=0x7e,0xbd,0xdb,0xe7;unsigned char NUM24=0xe7,0xdb,0xbd,0x7e;unsigned char a8=0xfe,0xfd,0xfb,

31、0xf7,0xef,0xdf,0xbf,0x7f;void Delay(unsigned int t) /延时函数unsigned int i,j;for(i=0;i<t;i+) /用for循环嵌套来实现延时 for(j=0;j<200;j+);void Int_Init() /外部中断初始化IT0=1; /外部中断0,边沿触发EX0=1; /允许中断IT1=1; /外部中断1,边沿触发EX1=1; /允许中断EA=1; /开总中断void first() unsigned char n;for(n=0;n<35;n+)P0=0x6d;P2=0x6d;Delay(100);if(Fuck= 1) break; /如果按下外部中断按钮,立即跳出效果,执行中断的容Fuck = 0; /把外部变量清0 void second()unsigned char m,n;for(m=0;m<4;m+)P0=0xf0;P2=0x0f

温馨提示

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

评论

0/150

提交评论