基于单片机的LED设计.doc_第1页
基于单片机的LED设计.doc_第2页
基于单片机的LED设计.doc_第3页
基于单片机的LED设计.doc_第4页
基于单片机的LED设计.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与接口技术课程设计课程设计任务书学院信息科学与技术专业自动化学生姓名张兆雄学号0903010413设计题目基于单片机的led灯光控制器的设计内容及要求:根据单片机原理应用相关器件搭建电路实现led灯光控制功能。进度安排:第1天:1. 布置课程设计题目及任务。2. 查找文献、资料,确立设计方案。第23天:1. 根据实际情况确定所需硬件电路的设计方案。第45天:1. 根据硬件电路设计的要求查找相关型号的单片机、芯片等器件的接线方法及实际参数的设置方法。2. 在此基础上用proteus软件搭建仿真电路并进行相关仿真,验证元器件是否符合设计要求。第67天:1. 根据所搭建的硬件电路编制程序(c语言),并将其keil与proteus两个软件进行联机调试仿真。2. 课程设计结果验收,针对课程设计题目进行答辩。3. 完成课程设计报告。指导教师(签字): 年 月 日分院院长(签字):年 月 日3摘 要单片微型计算机简称单片机,又称为微控制器(mcu),它的出现是计算机发展史上的一个重要里程碑,它以体积小、功能全、性价比高等诸多优点而独具特色。随着社会的发展、科技的进步,各种方便于生活的自动控制系统开始进入了人们的生活,以单片机为核心的控制系统就是其中之一。本论文着重阐述了led灯光控制器的设计方法,以at89c52单片机作为主控核心,按键、数码管等较少的辅助硬件电路相结合,采用模块设计,利用软件实现对led灯进行控制。本系统具有体积小、硬件少、电路结构简单、软件功能完善,控制系统可靠,性价比较高等优点。论文主要论述了基于单片机的led灯光控制器的设计过程。主要工作如下:重点论证了系统方案的选择及其实现方法;全文详细论述了系统的软、硬件电路,其中硬件部分重点介绍了单片机的基本结构和各引脚以及晶振电路、复位电路的工作原理,软件部分重点叙述主程序和子程序的c语言实现;硬件、软件电路调试过程;所有源程序均采用c语言编译,并在keil uvision2软件里编译、调试;在proteus环境下实现软、硬件电路仿真。实验结果证明了设计方案的正确性与可行性,以此为理论基础,对我们设计led灯电路具有很强的使用和参考价值。关键词:led灯;at89c52单片机;灯光控制器;模块设计 目录1.概述11.1课程设计的目的11.2课程设计的要求11.3基本原理12 系统设计22.1 系统功能22.2仿真软件proteus的使用22.3仿真图设计43 程序设计53.1 keil c51编程软件的使用及调试方法53.2 本次设计调试实现的功能73.2程序流程图83.2.1主函数程序流程图83.2.2 程序1流程图93.2.3 程序2流程图103.3 c语言源程序114 系统调试174.1 proteus和keil软件的联调174.2 仿真效果图175 课程总结体会186 参考文献191. 概述1.1课程设计的目的单片计算机即单片微型计算机。(single-chip microcomputer ),是 集cpu ,ram ,rom ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而52单片机是各单片机中最为典型和最有代表性的一种。通过本课程设计,能独立地完成一个典型单片机应用系统的设计和调试任务,深刻地领会和掌握单片机原理及应用课程中讲述的基本理论和基本技能,在单片机原理及应用课程的基础上,进一步培养学生的综合分析与设计能力和动手能力,为后续课程学习和今后从事电子信息系统及相关领域的实际工作打下坚实的基础。1.2 课程设计的要求主要内容包括理论设计、软件调试及报告等几大部分。软件设计利用keil c51 软件开发平台,采用c或汇编语言进行软件程序编写,并在keil上运行检测正确与否。在protues软件上画图,检查无误后与keil写好的程序进行联调,仿真,运行无误后,写设计报告。1.3 基本原理本课题用到的是89c52单片机,led数码管,led灯,键盘,光敏电阻,蜂鸣器等。89c52是一个低电压,高性能cmos 8位单片机,片内含8k bytes的可反复擦写的flash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,功能强大的89c52单片机可提供许多较复杂系统控制应用场合。89c52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线, 89c52可以按照常规方法进行编程,但不可以在线编程。通过键盘s3,s1是否按下可以判断p1.5和p3.0的电平的高低,从而启动不同的程序。在程序一中,通过键盘s3,s4是否按下可以判断p1.5,p1.6的高低电平,从而启动和复位程序一。led数码管是动态的。码选通过p3口的高四位,低电平选通,p0口送字段码。led灯为共阳极接法,其阴极分别接p2口的八个输出。p2口各位送低电平,对应各口的led灯亮。蜂鸣器有p1.7口控制,低电平时响,高电平时不响。光敏电阻的特性是无光照射时电阻阻值较大,有光时较小,其与可调电阻r23共同作用可调节p1.1的高低电平,从而控制程序二中led灯的亮灭和蜂鸣器的声音。有光时光敏电阻阻值较小。p1.1为低电平,程序使led灯和蜂鸣器不工作。无光或暗光时p1.1为高电平,程序使led灯和蜂鸣器工作。2 系统设计2.1 系统功能根据所学的单片微型计算机与接口技术以及数字电路、模拟电路的相关知识设计一个基于单片机的电子屏最小系统,要求能显示汉字,能够循环显示不同的汉字,并尽量实现其动态显示功能,根据具体情况可以适当改进创新。2.2仿真软件proteus的使用proteus是一款专门的单片机系统仿真软件,其所提供的单片机型号多,可便于用户进行各种单片机系统的设计与仿真。另外,proteus提供了很多设计中常用的各种芯片如各种数字门电路、触发器、移位寄存器和其他可编程逻辑芯片,方便用户进行各种设计电路的仿真。值得一提的是proteus提供的示波器、信号发生器、测量探针等虚拟仪器为用户分析测试设计电路提供了理论依据,方便了用户设计。双击桌面快捷方式打开proteus原理图设计软件,界面如下所示:图2.1 proteus的isis原理图编辑界面单击界面中的yes可以查看proteus软件自带的原理图仿真实例,选择no可以进行电路原理图的设计。然后点击软件界面右面的 p可以放置所需要的元器件,界面如下图所示:图2.2 元器件放置界面找到设计电路所需要的元器件然后双击所需的元器件,这时就会在软件右侧的元器件列表中看到所选择的元器件了。在此单击鼠标左键后就可将元件放到原理图编辑界面中。按住鼠标左键可以拖动元器件,放好元器件后用导线将元器件连接起来。2.3仿真图设计按照以上介绍的软件使用方法绘制本课程设计的仿真原理图,放置好at89c52、74sl373、数码管、蜂鸣器、开关,发光二级管(led)等件后,连接好后其效果图如下图所示:图2.3 仿真连接图3 程序设计3.1 keil c51编程软件的使用及调试方法本设计的软件设计采用keil c51来编写,该软件的使用方法介绍如下。双击桌面上的keil软件的快捷启动方式 打开软件,打开后的软件界面如下图所示:图3.1 keil 软件界面然后点击projectnew project选择新建工程,并保存到合适的位置,然后在芯片列表中选择相应的芯片,界面如下图所示,然后点击完成即可。图3.2芯片选择界面完成后点击filenew新建一个程序编辑文件,然后保存即可在其中编辑所需要的程序了,然后点击软件上方的调试按钮进行纠错调试直至没有错误。3.2 本次设计调试实现的功能本作品为可光控和手控led显示,可分为两个功能即光控制led的显示和手动控制led的显示。单片机上电后无动作,按下s1键后,进入光控程序。在暗光或无光时led灯循环显示同时蜂鸣器发声。如有亮光照射是led灯熄灭同时蜂鸣器停止工作。单片机上电后,按下s3键后,进入手控程序,同时led灯进行四种不同的循环显示,并伴随蜂鸣器所发出的四种不同的声音。当四种循环结束一遍后led数码管数字加一。数码管数字满16后进一位。在这过程中如果按下s4键后,则程序复位,led灯熄灭,蜂鸣器停止工作,数码管显示0。如果s1再次按下后,则在次启动led灯、蜂鸣器和数码管。3.2程序流程图3.2.1主函数程序流程图程序1手控判断是那个键按下程序2光控p30p15开始是否有键按下?否是图3.3 主函数程序流程图3.2.2 程序1流程图进入led循环函数,调用显示函数开始调用中断,实现数码管显示led循环,调用蜂鸣器程序p16是否按下?是否led数码管复位,灯灭,蜂鸣器停止,判断p15是否按下蜂鸣器发声,进入下一led循环是否是否循环四次?否是结束图3.4 程序1流程图3.2.3 程序2流程图开始判断有无光照射?无有调用判光程序le循环,调用蜂鸣器声音程序,判有无光照射?无有结束图3.5 程序2流程图3.3 c语言源程序#include#defineuchar unsigned charvoid display();void circle(void);void light(void) reentrant;uchar choose(void);void reset(void);void inittimer();sbit p11=p11;sbit p15=p15; /启动led灯及数码管循环显示程序sbit p16=p16; /复位led灯及数码管循环显示程序sbit p17=p17;sbit p30=p30; /启动光控程序int a;uchar e;/共阳极数码管位码/unsigned char code po4=0xe0,0xd0,0xb0,0x70;/共阳极数码管段码/unsigned char code value18=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80, 0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e, 0x00,0xff;/延时void delay(int i) int j; for(j=0;ji;j+) /蜂鸣器声音函数void speak1() reset(); p17=0;delay(200);p17=1;void speak2() reset();p17=0;delay(2000);p17=1; void speak3() reset();delay(10000);p17=0;delay(20000);p17=1;void speak4() reset();p17=1;delay(1000);p17=0;delay(10000); /主函数void main(void) uchar i; while(1) if(p15=0) delay(20); /选择程序1 if(p15=0) i=1; break; /选择程序2 if(p30=0) delay(20); if(p30=0) i=2;break; switch(i) case 1:circle();break; case 2:light();break; /led灯循环函数void circle(void) char i,j,m,n,k,l; while(1) display(); p2=0xff;for(i=0;i8;i+)/led循环1 speak1(); p2=p21;delay(6666); p2=0xff; /led循环2for(j=0;j1; delay(6666); m=0xf0;n=0x0f; for(k=0;k4;k+) /led循环3 speak3(); delay(6666); m=m1; p2=m|n; m=0xf0;n=0x0f; for(l=0;l4;l+) /led循环4 speak4(); delay(6666); m=m1; p2=(m|n); delay(6666);delay(6666); a+ ; void light(void) reentrant /光控显示函数 uchar i,j,b,temp,temp1;int k; e=0; e=choose(); switch(e) case 2: for(k=0;k65535;k+) b=0xff; for(i=0;i8;i+) temp=0xff; temp=temp; temp=tempi; p2=b&temp; for(j=0;j(8-i);j+) if(p11=0) light();delay(30000);delay(30000); /判断有无光照射 speak2(); p2=p21;delay(30000); delay(50000);temp1=0xff;for(a=0;a8;a+) if(p11=0) light();delay(30000);delay(30000); speak2();p2=temp1(7-a);delay(30000); if(k=65535) k=0; ;break; case1: p2=0xff;p17=1;light();delay(30000);delay(30000);break; uchar choose(void) /选择有无光照射 while(1) if(p11=0) e=1;delay(30000);delay(30000);break; else e=2;break;return e; void display()inittimer();void inittimer() /t1中断 tmod = 0x10; th1 = 0xdc;tl1 = 0x00; ea = 1; et1 = 1; tr1 = 1;void timer1() interrupt 3 /数码管显示static unsigned char b=0;th1 = 0xdc;switch(b)case 0:p0=value17;p3=po3;p0=valuea/4096;break;case 1:p0=value17;p3=po2;p0=value(a%4096)/256;break;case 2:p0=value17;p3=po1;p0=value(a%256)/16;break;case 3:p0=value17;p3=po0;p0=valuea%16;break;b+;if(b=4) b=0;

温馨提示

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

评论

0/150

提交评论