首页 基于单片机的智能调光灯设计

基于单片机的智能调光灯设计

举报
开通vip

基于单片机的智能调光灯设计基于单片机的智能调光灯设计 【有全套CAD图】需完整CAD+说明书请联系QQ1175231241 海量毕业设计 课程设计,承接定制、更多设计请移步: 题 目 基于单片机的智能调光灯设计 专业名称 自动化 学生姓名 屈晓东 指导教师 李雪霞 毕业时间 2014.06 更多设计请移步:咨询 西北工业大学明德学院本科毕业设计论文 设计 毕业 任务书 论文 一、题目: 基于单片机的智能调光灯设计 二、指导思想和目的要求: 通过毕业设计,使学生对所学电子工艺、电路基础知识、模电、数电、等电子基础课...

基于单片机的智能调光灯设计
基于单片机的智能调光灯设计 【有全套CAD图】需完整CAD+说明书请联系QQ1175231241 海量毕业设计 课程设计,承接定制、更多设计请移步: 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目 基于单片机的智能调光灯设计 专业名称 自动化 学生姓名 屈晓东 指导教师 李雪霞 毕业时间 2014.06 更多设计请移步:咨询 西北工业大学明德学院本科毕业设计论文 设计 毕业 任务书 论文 一、题目: 基于单片机的智能调光灯设计 二、指导思想和目的要求: 通过毕业设计,使学生对所学电子工艺、电路基础知识、模电、数电、等电子基础课程的基本知识加深理解,掌握单片机的基本指令及基本结构,并将其与实际工程应用紧密结合起来,培养创新意识,增强分析问题解决问题能力,为尽快进入社会角色,熟悉相关开发工作流程、项目小组组成、分工、合作方式方法等。增强团队合作意识,提高基本工作技能,为即将踏入社会奠定理论和实践基础。 内容:设计一电路,不仅亮度可调,还可以显示时间等功能。 具体要求如下: 1) 显示当前的时间,24 时制的时、分、秒; 2) 可调节时间; 3) 可调节LED 光亮度; 步骤: l、了解所设计系统的工作原理及要求。 2、设计单片机工作的基本电路,如:晶振电路、复位电路。 3、根据系统设计要求选择发光二极管、按键等模拟部件。 4、设计系统基本电路。 5、绘制PRTUSE电原理图并编写系统控制程序。 6、联机进行系统仿真调试。 西北工业大学明德学院本科毕业设计论文 三、进度与要求: 1(第一周,第一周 收集设计系统相关资料。 2(第二周,第三周 用PROTUSE设计硬件原理图并进行器件选型。 3(第四周,第六周 编写系统各功能模块控制程序。 4(第七周,第十周 联机进行系统调试。 5. 第十一周,第十二周 整理并组织论文。 6(第十三周,第十四周 完成修改稿,定稿,打印,交评阅。 7(第十五周,第十六周 评阅与答辩 学生 屈晓东 指导教师 李雪霞 系主任 史仪凯 西北工业大学明德学院本科毕业设计论文 摘 要 在实际的应用中发现,当周边亮度大时,LED灯过亮,存在电能浪费;当周边亮度小时,LED灯过暗,又不能提供足够和恰当的光度。用来改善我们的生活质量,体验到科学技术带给我们更方便的生活,节省电能。因此,研究实用具有时钟功能的台灯的应用,有着非常现实的意义,具有很大的实用价值。 本文介绍了设计的框架结构和组成模块以及各模块的原理,介绍了各部分硬件设计和各部分软件设计以及软件流程图。该设计是以AT89C52 单片机为控制核心的集多种功能于一体的智能LED台灯。该台灯具有灯光亮度调节功能;具有时间显示功能。硬件设计分为单片机控制模块、按键模块、台灯模块、时钟模块、显示模块等五个部分。单片机控制用AT89C52,显示模块用LCD1602 液晶显示时间、日期等内容,按键模块用来调整时间、日期、LED的亮度等,时钟用DS1302 时钟芯片,台灯模块用13 颗LED灯。软件设计用单片机C /C++编写,通过PROTEUS和KEIL仿真软件进行程序仿真,实现了全部控制功能。 关键词:单片机,智能,显示,LED灯,时间 I 西北工业大学明德学院本科毕业设计论文 ABSTRACT In practical applications, we found that the brightness of LED lights in the surrounding large power LED is still the same, there is a waste of energy; hours in the surrounding brightness LED lights do not provide adequate and appropriate luminosity. Used to improve our quality of life, to experience science and technology bring us more convenient life, to save energy.Therefore, the study and practical application of electronic bell, has a very real sense, has great practical value. This paper describes the design principles of the framework structure and composition of modules and each module, introduces the various parts of the various parts of the hardware design and software design and software flow. The design is based on AT89C52 microcontroller core set of functions in one smart LED lamp. The lamp has a light brightness adjustment function; has a time display function; alarm function. Hardware design is divided into five parts.MCU control module, the key modules, lamp modules, clock module, alarm module, display module. MCU control with AT89C52, display module displays time, date and other content with LCD1602 , keypad module is used to adjust the time, date, etc. brightness LED clock with DS1302 clock chip, lamp module with 13 LED. SCM software design written in C/C++ language, the realization of all the control functions. KEY WORDS: microcontroller, smart, display, LED lights and time II 西北工业大学明德学院本科毕业设计论文 目 录 摘 要 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? I ABSTRACT ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? II 目 录 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? III 第一章 绪 论??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 5 1.1 选题意义 ????????????????????????? 5 1.2 设计要求 ????????????????????????? 6 1.2.1 功能实现??????????????????????? 6 1.2.2 系统所需功能模块??????????????????? 6 1.3 系统基本 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 选择和论证 ?????????????????? 7 1.3.1 单片机芯片的选择方案和论证?????????????? 7 1.3.2 显示模块选择方案和论证???????????????? 7 1.3.3 时钟芯片的选择方案和论证??????????????? 8 第二章 系统的硬件设计 ????????????????????????????????????????????????????????????????????????????????????????????????????? 9 2.1 系统模块框图 ??????????????????????? 9 2.2 系统整体硬件图 ?????????????????????? 9 2.3 各模块电路的设计 ????????????????????? 10 2.3.1 单片机控制模块???????????????????? 10 2.3.2 晶振/复位模块 ???????????????????? 11 2.3.3 台灯模块??????????????????????? 13 2.3.4 台灯调光按键模块??????????????????? 15 2.3.5 DS1302时钟电路模块 ????????????????? 15 2.3.6 1602LCD显示模块 ??????????????????? 17 2.3.7 调节时钟按键模块??????????????????? 19 第三章 系统的软件设计 ??????????????????????????????????????????????????????????????????????????????????????????????????? 20 3.1 系统软件编程工具C和C++?????????????????? 20 3.1.1 C简介 ???????????????????????? 20 3.1.2 C++ ????????????????????????? 21 3.2 主程序的设计流程图 ???????????????????? 22 III 西北工业大学明德学院本科毕业设计论文 3.3.1 台灯模块流程图???????????????????? 22 3.3.2 台灯模块程序????????????????????? 23 3.4 LCD1602液晶显示?????????????????????? 25 3.4.1 时钟设置流程图???????????????????? 25 3.4.2 时钟程序??????????????????????? 26 第四章 仿真结果 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????? 36 4.1 仿真软件PROTEUS和KEIL ?????????????????? 36 4.1.1 PROTEUS仿真软件 ??????????????????? 36 4.1.2 KEIL仿真软件 ???????????????????? 37 4.2 PROTEUS仿真图??????????????????????? 37 4.2.1 LED灯亮度仿真 ???????????????????? 37 4.2.2 LCD1602时钟仿真 ??????????????????? 39 4.3 KEIL仿真 ????????????????????????? 40 4.4 问题及解决 ???????????????????????? 41 4.4.1 存在的问题?????????????????????? 41 4.4.2 解决的措施?????????????????????? 41 参考文献 ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 42 致 谢 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 43 小 结 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 44 IV 西北工业大学明德学院本科毕业设计论文 第一章 绪 论 1.1 选题意义 现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。智能灯不是传统灯具,而是智能设备的一种,除了智能灯体,还有一个手持智能控制设备,智能灯控制设备具备计算能力和网络联接能力,通过应用程序,功能可以不断扩展。智能灯的核心功能是控制、灯光效果、创作、分享、光与音乐互动、光提升健康和幸福。开关灯的控制,不但可以通过控制器,手动遥控灯的开关,还可以进行定时开关灯的控制,可以设定不同的时间开灯关灯。其次是对光的控制,光的亮度,光的冷暖,光的色彩都可以连续手动控制或自动控制。 白炽灯和金卤灯在调光领域应用得比较广泛,但随着节能减排的不断推广,LED可调光在攻克了调光技术障碍后,开始呈现发展趋势,LED可调光与LED红外智能灯管、LED声光控等一起统称为LED智能化系列,在LED普通灯具价格竞争日趋激烈的今天,LED智能化已经成为大型LED照明企业的发展方向。 电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹跑表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子钟的应用,有着非常现实的意义,具有很大的实用价值。 由于数字集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。现在市场上已有现成的电子钟集成电路芯片出售,价格便宜,使用也灵活, 5 西北工业大学明德学院本科毕业设计论文 如可以随意设置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的发展,特别是MOS 集成电路技术的发展,使电子钟具有体积小、携带方便的特点,这里介绍的实用电子钟可以满足使用者的一些基本要求,输出方式灵活、功耗低、计时准确、性能稳定、维护方便等优点。实用电子钟是一个时间控制系统,既能作为一般的时间显示器,也可作为一个定时控制器,驱动负载或显示信息,同时可以根据需要扩展其功能。在此项目的设计研究过程中需综合运用所学的数字电子技术、单片机原理与应用等课程的知识,掌握实用电子钟的设计、组装与调试方法,利用现代的单片机等新电子技术以及现代的设计手段,系统地培养了综合设计、操作调试、故障处理的能力,达到综合素质以及创新能力的提高。 1.2 设计要求 1.2.1 功能实现 (1)LED调光灯功能:当按下按键K0、K1、K2分为一级亮度红灯、二级亮度黄灯和三级亮度绿灯来实现。 (2)时间、日期显示:系统采用24小时制。正常情况下,系统显示当前日期、时间,由LCD显示。 进行调节,对时间、日期、星期进(3)设置功能:用户可以对LED灯光的亮度 行设置。用户依次进入日期设置、星期设置、时间设置。在进行设置时,光标停留在相应位,按下K4键、K5键对数值进行加、减调整。通过K3键,在各个数位间移动。 通过K6键,确定所设置的时间。 1.2.2 系统所需功能模块 由功能分析,台灯系统分为灯光模块、键盘模块、显示模块、时钟部分、电源模块和单片机模块,考虑成本时钟模块可由单片机内部计数器模拟实现。 (1)灯光模块用D0,D12个LED灯实现。 (2)按键模块分为调光3个按键和调节时间4个按键,分别是K0、K1、K2和K3、K4、K5、K6。 6 西北工业大学明德学院本科毕业设计论文 (3)显示模块负责显示系统的日期、星期、时间。 (4)电源模块采用+5V直流供电。 (5)单片机模块内部计数器负责LED灯光和时钟,通过程序模拟生成亮度调节和时间走时。同时负责扫描键盘,并将时间送给LCD显示。 1.3 系统基本方案选择和论证 1.3.1 单片机芯片的选择方案和论证 方案一: 采用STC89C52芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。 方案二: 采用AT89C52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有STC89C52的功能,且具有在线编程可擦除技术,对所下载的程序能够加密,比较安全。当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89C52作为主控制系统。 1.3.2 显示模块选择方案和论证 方案一: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。 方案二: 采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需 7 西北工业大学明德学院本科毕业设计论文 要的个数偏多,功耗较大,所以也不用此种作为显示。 方案三: 采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,与普通数码管相比功耗较小,硬件连接简单。所以显示部分采用1602液晶显示。 1.3.3 时钟芯片的选择方案和论证 方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。 方案二: 采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM作为数据暂存区,工作电压2.5V,5.5V范围内,2.5V时耗电小于300nA。 8 西北工业大学明德学院本科毕业设计论文 第二章 系统的硬件设计 2.1 系统模块框图 六大模块以AT89C52 单片机为控制核心,实现了该智能台灯的各项要求,外接一个5V 的直流电源,为整个系统供电。 图2-1 系统结构示意图 2.2 系统整体硬件图 该设计是以AT89C52 单片机为控制核心的集多种功能于一体的智能 LED 台灯。该台灯具有灯光亮度调节功能;具有时间显示功能。硬件设计分为单片机控制模块、按键模块、台灯模块、时钟模块、闹铃模块、显示模块等五个部分。单片机控制用AT89C52,显示模块用LCD1602液晶显示、时间、日期等内容,按键模块用来调整时间、日期、LED 的亮度等,时钟用DS1302 时钟芯片,台灯模块用13 颗LED,通过按键K0、K1、K2调节灯光的亮度,分为一级亮度、二级亮度和三级亮度。 9 KP1.6MP1.6 西北工业大学明德学院本科毕业设计论文 1VSS2VDD 3VEE4RSLCD15RWD5616_X_2_LCDEFP1.6RP17P1.6IP1.6GD081LED-GREEND19D2D0102D12D6D3D1113LED-GREENLED-GREEND4D2124D5D1D3135D6D4BP1.5146D7D57D68LED-YELLOWD79RESPACK-8RSP1.5CP1.6HRWD0ENAAP1.4D11D4D2D7D0LED-GREENLED-YELLOWLED-YELLOWLED-GREEND1BR18LED-REDD2LP1.6EP1.510RD3R13R14R15D4C4.7k4.7k4.7kD5K0D3D6一级亮度P2.5P1.5DDD7K1LED-YELLOW二级亮度C1P2.6ED10D8K2LED-GREENLED-GREEN三级亮度P2.730pFFD9X1P1.6JCRYSTALC2GU2LED-GREEND01939XTAL1P0.0/AD0D130pF38HP0.1/AD1D237P0.2/AD2K7D31836R17XTAL2P0.3/AD3D435IP0.4/AD4D534200P0.5/AD5D633R0R1R2R3R4R5R6R7R8R9R10R11R12P0.6/AD6C3D7932J220220220220220220220220220220220220220RSTP0.7/AD7RS21P2.0/A8RW2222uFKP2.1/A9EN23R16P2.2/A1029241kPSENP2.3/A113025LALEP2.4/A12P2.53126EAP2.5/A13P2.627P2.6/A14P2.728MP2.7/A15K3选择U3U411036X2I/OP1.0/T2P3.0/RXD7211SCLKP1.1/T2EXP3.1/TXD加K45312P1.2P3.2/INT0RST413X2P1.3P3.3/INT1P1.4514AND_4CRYSTALP1.4P3.4/T0减K5P1.56151VCC2P1.5P3.5/T1P1.671628X1VCC1P1.6P3.6/WR817P1.7P3.7/RD确定K6DS1302AT89C52 图2-2 系统整体硬件图 2.3 各模块电路的设计 2.3.1 单片机控制模块 单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。AT89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。 10 西北工业大学明德学院本科毕业设计论文 U1 1939XTAL1P0.0/AD038P0.1/AD137P0.2/AD21836XTAL2P0.3/AD335P0.4/AD434P0.5/AD533P0.6/AD6932RSTP0.7/AD7 21P2.0/A822P2.1/A923P2.2/A102924PSENP2.3/A113025ALEP2.4/A123126EAP2.5/A1327P2.6/A1428P2.7/A15 110P1.0/T2P3.0/RXD211P1.1/T2EXP3.1/TXD312P1.2P3.2/INT0413P1.3P3.3/INT1514P1.4P3.4/T0615P1.5P3.5/T1716P1.6P3.6/WR817P1.7P3.7/RD AT89C52 图2-3 AT89C52单片机控制模块 2.3.2 晶振/复位模块 晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。晶振是给单片机提供工作信号脉冲的。这个脉冲就是单片机的工作速度。单片机的工作频率是有范围的,不能太大。 图中19与18引脚分别为XTAL1、XTAL2,他们分别接晶振的输入与输出, XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一 11 西北工业大学明德学院本科毕业设计论文 个机器周期共有12个振荡周期。本设计选择晶振频率为12MHz,输入芯片震荡周期为1/12μs,一个机器周期为1μs。 C1 19 30pF X1 12MHzC2 18 30pF 图2-4 晶振电路模块 复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。一是在给电路通电时马上进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运行的需要自动地进行。在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。 复位电路工作原理如下图所示,Vcc上电时,C3充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C3充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下K7,C3放电,在10K电阻上出现电压,使得单片机复位。K7松手,C3又充电,几个毫秒后,单片机进入工作状态。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路。 12 西北工业大学明德学院本科毕业设计论文 K7 R17 2009 C3 22uF R16 1k 图2-5 复位电路模块 2.3.3 台灯模块 台灯模块用13 颗LED作为发光系统,每一颗和一个220, 的电阻串联,用P1.4,P1.6 口控制。电阻起限流作用, 13 个I/O 均采用低电平有效方式,即给相应的I/O 低电平LED工作。通过按键K0、K1、K2调节灯光的亮度,亮度分为三个等级:一级亮度控制红色的D0灯亮;二级亮度控制黄色的D1、D2、D3、D4灯亮;三级亮度控制绿色的D5、D6、D7、D8、D9、D10、D11、D12灯亮。 13 KP1.6MP1.6 西北工业大学明德学院本科毕业设计论文 D5 FP1.6 P1.6IP1.6G LED-GREEN D12D6 LED-GREENLED-GREEN D1 P1.5B LED-YELLOW P1.5CP1.6H D0 AP1.4D11D4D2D7LED-GREENLED-YELLOWLED-YELLOWLED-GREENLED-REDLP1.6EP1.5 D3 P1.5D LED-YELLOW D10D8 LED-GREENLED-GREEN D9 P1.6J LED-GREEN 图2-6 台灯模块(1) A B C R0R1R2R3R4R5R6R7R8R9R10R11R12 220220220220220220220220220220220220220D E F 图2-7 台灯模块(2) G H I J 14 K L M 西北工业大学明德学院本科毕业设计论文 2.3.4 台灯调光按键模块 R13R14R15 4.7k4.7k4.7k K0 一级亮度P2.5 K1 二级亮度P2.6 K2 三级亮度P2.7 图2-8 台灯按键模块 按键K0、K1、K2用来调节台灯的亮度,通过按下按键K0可以让台灯变亮,按下按键K1可以让台灯变的更亮,按下按键K2可以让台灯灯光达到最亮。3 个I/O 均采用低电平有效方式。 2.3.5 DS1302时钟电路模块 下图示出DS1302的引脚排列图,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器; 其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有 15 西北工业大学明德学院本科毕业设计论文 的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。 表1 DS1302引脚功能表 引脚号 引脚名称 功能 1 VCC2 主电源 2、3 X1、X2 振荡源,外接32768Hz晶振 4 GND 地线 5 RST 复位/片选线 6 I/O 串行数据输入/输出端(双向) 7 SCLK 串行时钟输入端 8 VCC1 后备电源 DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲。DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。 16 西北工业大学明德学院本科毕业设计论文 U3 P1.036X2I/OP1.17SCLKP1.25RSTX2 CRYSTAL 1VCC228X1VCC1DS1302 图2-9 DS1302时钟电路模块 2.3.6 1602LCD显示模块 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。 1602LCD分为背光和不带背光两种,基控制大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,引脚功能说明: 表2 1602LCD功能表 编号 符号 引脚说明 编号 符号 引脚说明 1 Vss 电源地 9 D2 数据口 2 Vcc 电源正极 10 D3 数据口 3 VO 液晶显示对比度调节端 11 D4 数据口 4 RS 数据/命令选择端(H/L) 12 D5 数据口 5 R/W 读写选择端(H/L) 13 D6 数据口 6 E 能使信号 14 D7 数据口 7 D0 数据口 15 BLA 背光电源正极 8 D1 数据口 16 BLK 背光电源负极 17 西北工业大学明德学院本科毕业设计论文 1602LCD采用 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2所示: 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7,14脚:D0,D7为8位双向数据线。 1602LCD的一般初始化(复位)过程 延时15mS 写指令38H(不 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 忙信号) 延时5mS 写指令38H(不检测忙信号) 延时5mS 写指令38H(不检测忙信号) 以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置 LCD1602液晶显示,如下图所示: 18 1VSS2VDD3VEE 西北工业大学明德学院本科毕业设计论文 4 RS5RW6LCD1E16_X_2_LCD7D08D19D210D311D412D513D614D7 RP1 RSD01RWD1END22 D33D0R18D44D110RD55D2D66D3D77D4RESPACK-88D59D6 D7图2-10 1602LCD显示模块 2.3.7 调节时钟按键模块 因为有年月日,时分秒几个参数要调,所以设置这几个参数的计数。当按下一个键时,单片机进行相应的操作。根据设计要求需要选择四个独立按键分别为选择、加、减、确定,按键用来调整时间和设置闹钟,调光亮度,各键功能在介绍硬件部分已描述。按键模块下图所示: K3选择U4 P3.2K4加 AND_4K5减 P3.4 P3.5K6确定P3.6 P3.7 图2-11 调节时钟按键模块 19 西北工业大学明德学院本科毕业设计论文 第三章 系统的软件设计 3.1 系统软件编程工具C和C++ 3.1.1 C简介 C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件、三维、二维图形和动画,具体应用例如单片机以及嵌入式系统开发。 C程序是由一组变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。我们可以把函数看成一个“黑盒子”,你只要将数据送进去就能得到结果,而函数内部究竟是如何工作的的,外部程序是不知道的。外部程序所知道的仅限于输入给函数什么以及函数输出什么。函数提供了编制程序的手段,使之容易读、写、理解、排除错误、修改和维护。C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名,这个函数称为主函数,整个程序从这个主函数开始执行。C 语言程序鼓励和提倡人们把一个大问题划分成一个个子问题,对应于解决一个子问题编制一个函数,因此,C 语言程序一般是由大量的小函数而不是由少量大函数构成的,即所谓“小函数构成大程序”。这样的好处是让各部分相互充分独立,并且任务单一。因而这些充分独立的小模块也可以作为一种固定规格的小“构件”, 用来构成新的大程序。 20 西北工业大学明德学院本科毕业设计论文 3.1.2 C++ C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,但在编写大型程序时,C语言仍面临着挑战。C语言是C++的基础,C++和C语言在很多方面是兼容的。 C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。所以C语言和C++的最大区别在于它们解决问题的思想方法不一样。C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C++的普及和推广。 C++由四个“子语言”组成:C子语言,C++支持C语言的几乎全部功能,主要是c89的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。这部分功能对应于传统的面向过程的编程泛型,并提供了面向函数编程泛型的基础。面向对象的C++语言,C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的普及,C++语言也开发出了支持面向对象功能的版本。这部分功能对应于面向对象的编程泛型。泛型编程语言,C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率,并且大大提高了C++的表达能力。STL(C++标准模板库,Standard Template Library)是一个基于模板技术的库。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 性使它大受欢迎。模板使C++能够支持 21 西北工业大学明德学院本科毕业设计论文 泛型编程(generic programming)和生成式编程(generative programming) 的泛型。在C++0X中引入的Lambda,使得程序员可以定义匿名函数,完善了C++对于面向函数的编程泛型的支持。 3.2 主程序的设计流程图 图3-1 主程序流程图 一给单片机上电,单片机就初始化。通过接收并处理,有人按下开关就工作。然后检开始LED工作显示时间、日期,按键按下,修正时间,设置闹钟系统初始化测按键是否按下,判断工作在那个模式下。液晶还显示当前的时间,日期,最后进入循环。 3(3 台灯模块编程 3.3.1 台灯模块流程图 该模块只需给LED红灯D0的P1.4口、黄灯D1到D4的P1.5口和绿灯D5 22 西北工业大学明德学院本科毕业设计论文 到D12的P1.6口送低电平即可,再通过按键K0、K1、K2调LED灯光亮度。 图3-2 台灯模块流程图 3.3.2 台灯模块程序 #include sbit K0=P2^5;//调光灯亮度等级开关I/O口分配 sbit K1=P2^6; sbit K2=P2^7; sbit D0=P1^4;//LED灯I/O口分配 sbit D1=P1^5; sbit D2=P1^5; sbit D3=P1^5; 23 西北工业大学明德学院本科毕业设计论文 sbit D4=P1^5; sbit D5=P1^6; sbit D6=P1^6; sbit D7=P1^6; sbit D8=P1^6; sbit D9=P1^6; sbit D10=P1^6; sbit D11=P1^6; sbit D12=P1^6; void main()//主程序 { while(1) { if(K0==0)//一级亮度调光开关被按下 { D0=0; //D3灯亮 } else { D0=1; //D3灯灭 } if(K1==0)//二级亮度调光开关被按下 { D1=0;//D1,D2,D3,D4灯亮 D2=0; D3=0; D4=0; } else { D1=1;//D1,D2,D3,D4灯灭 D2=1; D3=1; D4=1; } if(K2==0)//三级亮度调光开关被按下 { D5=0; //D5,D6,D7,D8,D9,D10,D11,D12灯亮 D6=0; D7=0; D8=0; D9=0; 24 西北工业大学明德学院本科毕业设计论文 D10=0; D11=0; D12=0; } else { D5=1; //D5,D6,D7,D8,D9,D10,D11,D12灯灭 D6=1; D7=1; D8=1; D9=1; D10=1; D11=1; D12=1; } } } 3.4 LCD1602液晶显示 3.4.1 时钟设置流程图 调整时间用4个调整按钮,1个作为选择控制用,另外3个分别作为加调整, 减调整和确定用。 25 西北工业大学明德学院本科毕业设计论文 图3-3 时钟设置流程图 3.4.2 时钟程序 #include #include #define uchar unsigned char #define uint unsigned int sbit RS=P2^0; // LCD寄存器选择 sbit RW=P2^1; // LCD读写控制 sbit EN=P2^2; // LCD启动 //*--------延时子程序--------*// void DelayMS(uint K) 26 西北工业大学明德学院本科毕业设计论文 { uchar i; while(K--) { for(i=0;i<120;i++); } } //*----------读取LCD的状态-------*// uchar Read_LCD_State() { uchar state; RS=0; RW=1; EN=1; DelayMS(2); state=P0; EN=0; DelayMS(2); return state; } //*-------------忙检查--------------*// void LCD_Busy_Wait() { while((Read_LCD_State()&0x80)==0x80); DelayMS(5); } -----------------*// //*-----------写LCD命令 void Write_LCD_Command(uchar cmd) { LCD_Busy_Wait(); RS=0; RW=0; EN=0; P0=cmd; EN=1; DelayMS(2); EN=0; } //*-----------向LCD写入数据-----------------*// void Write_LCD_Data(uchar dat) { LCD_Busy_Wait(); RS=1; RW=0; 27 西北工业大学明德学院本科毕业设计论文 EN=0; P0=dat; EN=1; DelayMS(2); EN=0; } //*-----------LCD初始化-----------------*// void Initialize_LCD1602() //液晶初始化函数 { Write_LCD_Command(0x38);DelayMS(2); //功能设置,数据长度为8位,双行显示,5×7点阵字体 Write_LCD_Command(0x01);DelayMS(2); //清屏 Write_LCD_Command(0x06);DelayMS(2); //字符进入模式:屏幕不动,字符后移 Write_LCD_Command(0x0c);DelayMS(2); // 显示开,关光标 } //*-----------设置液晶显示位置-----------------*// void Set_LCD_Position(uchar pos) { Write_LCD_Command(pos|0x80); //设置7位的DDRAM地址值 } //*-----------在LCD上显示字符串-----------------*// void LCD_Display(uchar p,uchar *str) { uchar i; Set_LCD_Position(p); for(i=0;i<16;i++) { Write_LCD_Data(str[i]); DelayMS(2); } } //*----------main.c源程序----------*// //*-----用DS1302和1602液晶显示的实时时钟-----*// #include #include #include #define uchar unsigned char #define uint unsigned int void Initialize_LCD1602(); //液晶初始化函数 void LCD_Display(uchar p,uchar *str); sbit SDA=P1^0; //DS1302数据线 sbit CLK=P1^1; //DS1302时钟线 sbit RST=P1^2; // DS1302 复位线 28 西北工业大学明德学院本科毕业设计论文 sbit k1=P3^4; // 选择按键 sbit k2=P3^5; // 加 sbit k3=P3^6; // 减 // 确定 sbit k4=P3^7; uchar tcount=0; uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; // 一年中每个月的天数,二月的天数由年份决定 uchar *Week[]={"SUN","MON","TUS","WEN","THU","FRI","SAT"}; //周日,周一到周六 // LCD显示缓冲 uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "} ; uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00 "} ; uchar DateTime[7];//所读取的日期时间 char Adjust_Index=-1; //当前调节的时间对象:秒,分,时,日,月,年(0,1,2,3,4,6) uchar Change_Flag[]="-MHDM-Y";//(分,时,日,月,年)不调节秒和周 //函数声明 void Write_Byte_TO_DS1302(uchar X); // 向DS1302写入一个字节 uchar Read_Byte_FROM_DS1302(); //从DS1302中读取一个字节 uchar Read_Data_FROM_DS1302(uchar addr); //从DS1302指定位置读取数据 , 读数据 void Write_Data_TO_DS1302(uchar addr,uchar dat); // 向DS1302指定位置写入数据, 写数据 void SET_DS1302(); // 设置时间 void GetTime(); // 读取当前时间 void Initialization(); //初始化函数 *// //*----------主程序---------- void main() { Initialization(); while(1) { if(Adjust_Index==-1) GetTime(); } } //*-----------------初始化函数--------------*// void Initialization() { Initialize_LCD1602(); //调用液晶初始化函数 IE=0x83; //允许中断 外部0中断和T0中断 IP=0x01; // 设置中断优先级 IT0=0x01; // 设置外部中断的脉冲触发方式 TMOD=0x01; // 设置定时器的工作方式,为方式1 29 西北工业大学明德学院本科毕业设计论文 TH0=-50000/256; // 写入初值 TL0=-50000%256; // 写入初值 TR0=1; // 启动定时器 } //*--------写字节函数,向DS1302写入一个字节--------*// void Write_Byte_TO_DS1302(uchar X) // 向DS1302写入一个字节 { uchar i; for(i=0;i<8;i++) { SDA=X&1; CLK=1; CLK=0; X>>=1; } } //*--------读字节函数,从DS1302读取一个字节--------*// uchar Read_Byte_FROM_DS1302() //从DS1302中读取一个字节 { uchar i,byte,t; for(i=0;i<8;i++) { byte>>=1; t=SDA; byte|=t<<7; CLK=1; CLK=0; } //------------------------------------------------------------- //BCD码转换 //------------------------------------------------------------- return byte/16*10+byte%16; } //------------------------------------------------------------- //从DS1302指定位置读取数据,读数据 //------------------------------------------------------------- uchar Read_Data_FROM_DS1302(uchar addr) //从DS1302指定位置读取数据 , 读数据 { uchar dat; RST=0; CLK=0; RST=1; Write_Byte_TO_DS1302(addr); //向DS1302写入一个地址 30 西北工业大学明德学院本科毕业设计论文 dat=Read_Byte_FROM_DS1302(); //在上面写入的地址中读取数据 CLK=1; RST=0; return dat; } //------------------------------------------------------------- //向DS1302指定位置写入数据, 写数据 //------------------------------------------------------------- void Write_Data_TO_DS1302(uchar addr,uchar dat) // 向DS1302指定位置 写入数据, 写数据 { CLK=0; RST=1; Write_Byte_TO_DS1302(addr); Write_Byte_TO_DS1302(dat); CLK=1; RST=0; } //--------------------------------------------------------- // 设置时间 //--------------------------------------------------------- void SET_DS1302() // 设置时间 { uchar i; Write_Data_TO_DS1302(0x8E,0x00); //写控制字,取消写保护 // 分,时,日,月,年依次写入 for(i=1;i<7;i++) { // 分的起始地址是10000010(0x82),后面依次是时,日,月,周,年, 写入地址每次递增2 Write_Data_TO_DS1302(0x80+2*i,(DateTime[i]/10<<4)|(DateTime[i]%10 )); } Write_Data_TO_DS1302(0x8E,0x80); //写控制字,加写保护 } //-------------------------------------------------------- // 读取当前时间 //------------------------------------------------------- void GetTime() // 读取当前时间 { uchar i; for(i=0;i<7;i++) { DateTime[i]=Read_Data_FROM_DS1302(0x81+2*i); 31 西北工业大学明德学院本科毕业设计论文 } } //------------------------------------------------------------ //日期与时间值转换为数字字符 //------------------------------------------------------------- void Format_DateTime(uchar d,uchar *a) { a[0]=d/10+'0'; a[1]=d%10+'0'; } //------------------------------------------------------------------- // 判断是否为闰年 //------------------------------------------------------------------- uchar Is_Leapyear(uint year) { return (year%4==0&&year%100!=0)||(year%400==0) ; } //------------------------------------------------------------------ // 求自2000.1.1开始的任何一天是星期几, //------------------------------------------------------------------- void Refresh_Week_Day() { uint i,d,w=5; //已知1999年12.31是星期五 for(i=2000;i<2000+DateTime[6];i++) { d=Is_Leapyear(i)?366:365; w=(w+d)%7; } d=0; for (i=1;i0) { DateTime[6]--; } 获取2月天数 // MonthsDays[2]=Is_Leapyear(2000+DateTime[6])?29:28; //如果年份变化后当前月份的天数大于上限则设为上限 if(DateTime[3]>MonthsDays[DateTime[4]]) { DateTime[3]=MonthsDays[DateTime[4]]; } Refresh_Week_Day(); //刷新星期 break; case 4: //月调整 01-12 if(X==1&&DateTime[4]<12) { DateTime[4]++; } if(X==-1&&DateTime[4]>1) { DateTime[4]--; } //获取2月天数 MonthsDays[2]=Is_Leapyear(2000+DateTime[6])?29:28; //如果年份变化后当前月份的天数大于上限则设为上限 if(DateTime[3]>MonthsDays[DateTime[4]]) { DateTime[3]=MonthsDays[DateTime[4]]; } Refresh_Week_Day(); //刷新星期 break; case 3: // 日调整00-28或00-29或00-30或00-31 //调节之前首先根据当前年份得出该年中2月的天数 MonthsDays[2]=Is_Leapyear(2000+DateTime[6])?29:28; //根据当前月份决定调节日期的上限 if(X==1&&DateTime[3]0) 33 西北工业大学明德学院本科毕业设计论文 { DateTime[3]--; } Refresh_Week_Day(); //刷新星期 break; case 2: // 时调整 if(X==1&&DateTime[2]<23) { DateTime[2]++; } if(X==-1&&DateTime[4]>0) { DateTime[2]--; } break; case 1: // 分调整 if(X==1&&DateTime[1]<59) { DateTime[1]++; } if(X==-1&&DateTime[4]>0) { DateTime[1]--; } break; } } //-------------------------------------------------------------- // 定时器0刷新LCD显示函数 //------------------------------------------------------------- void T0_INT()interrupt 1 { TH0=-50000/256; // 写入初值 TL0=-50000%256; // 写入初值 if(++tcount!=2) return; tcount=0; //按指定格式生成待显示的日期时钟 Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5); Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8); Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11); //星期 strcpy(LCD_DSY_BUFFER1+13,Week[DateTime[5]-1]); //时,分。秒 Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5); 34 西北工业大学明德学院本科毕业设计论文 Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8); Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11); // 显示年、月、日、星期、时、分、秒 LCD_Display(0x00,LCD_DSY_BUFFER1); LCD_Display(0x40,LCD_DSY_BUFFER2); } //--------------------------------------------------------- // 键盘中断处理函数 //---------------------------------------------------------- void EX_INT0()interrupt 0 { if(k1==0) { while (k1==0); if(Adjust_Index==-1||Adjust_Index==-1) {Adjust_Index=7;} Adjust_Index--; if(Adjust_Index==5) {Adjust_Index=4;} //跳过对星期的调节 LCD_DSY_BUFFER2[13]='['; LCD_DSY_BUFFER2[14]=Change_Flag[Adjust_Index]; LCD_DSY_BUFFER2[15]=']'; } else if(k2==0) // 加 { while(k2==0); Datetime_Adjust(1); } else if(k3==0) // 减 { while(k3==0); Datetime_Adjust(-1); } else if(k4==0) { while(k4==0); SET_DS1302(); LCD_DSY_BUFFER2[13]=' '; LCD_DSY_BUFFER2[14]=' '; LCD_DSY_BUFFER2[15]=' '; Adjust_Index=-1; //操作索引重设为-1,时间继续正常显示 } } 35 西北工业大学明德学院本科毕业设计论文 第四章 仿真结果 4.1 仿真软件PROTEUS和KEIL 4.1.1 PROTEUS仿真软件 Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。Proteus可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。Proteus可提供的调试手段 Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。 在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、 36 西北工业大学明德学院本科毕业设计论文 质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神 的平台。使用Proteus 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。 4.1.2 KEIL仿真软件 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Keil公司2005年由ARM公司收购。而后ARM Keil推出基于uVision界面,用于调试ARM7,ARM9,Cortex-M内核的MDK-ARM开发工具,用于为控制领域的开发。 4.2 PROTEUS仿真图 4.2.1 LED灯亮度仿真 (1) 一级亮度调节D0红灯亮 37 KP1.6MP1.6 西北工业大学明德学院本科毕业设计论文 1VSS2 VDD3VEE4RSLCD15RWD5616_X_2_LCDEFP1.6RP17P1.6IP1.6GD081LED-GREEND19D2D0102D12D6D3D1113LED-GREENLED-GREEND4D2124D5D1D3135D6D4BP1.5146D7D57D68LED-YELLOWD79RESPACK-8RSP1.5CP1.6HRWD0ENAAP1.4D11D4D2D7LED-GREENLED-YELLOWLED-YELLOWLED-GREEND0D1BR18LED-REDD2LP1.6EP1.510RD3R13R14R15D4C4.7k4.7k4.7kD5K0D3D6一级亮度P2.5P1.5DDD7K1LED-YELLOW二级亮度C1P2.6ED10D8K2LED-GREENLED-GREEN三级亮度P2.730pFFD9X1P1.6JCRYSTALC2GU2LED-GREEND01939XTAL1P0.0/AD0D130pF38HP0.1/AD1D237P0.2/AD2K7D31836R17XTAL2P0.3/AD3D435IP0.4/AD4D534200P0.5/AD5D633R0R1R2R3R4R5R6R7R8R9R10R11R12P0.6/AD6C3D7932J220220220220220220220220220220220220220RSTP0.7/AD7RS21P2.0/A8RW22uF22KP2.1/A9EN23R16P2.2/A1029241kPSENP2.3/A113025LALEP2.4/A12P2.53126EAP2.5/A13P2.627P2.6/A14P2.728MP2.7/A15K3选择U3U436110X2I/OP1.0/T2P3.0/RXD7211SCLKP1.1/T2EXP3.1/TXDK4加5312RSTP1.2P3.2/INT0413X2P1.3P3.3/INT1P1.4514AND_4CRYSTALP1.4P3.4/T0K5减P1.51615VCC2P1.5P3.5/T1P1.628716X1VCC1P1.6P3.6/WR817P1.7P3.7/RDK6确定DS1302AT89C52KP1.6MP1.6 图4-1 一级亮度 1VSS(2) 二级亮度调节D1、D2、D3、D4黄灯亮 2VDD3VEE4RSLCD15RWD5616_X_2_LCDEFP1.6RP17P1.6IP1.6GD081LED-GREEND19D2D0102D12D6D3D1113LED-GREENLED-GREEND4D2124D5D1D3135D6D4BP1.5146D7D57D68LED-YELLOWD79RESPACK-8RSP1.5CP1.6HRWD0ENAAP1.4D11D4D2D7LED-GREENLED-YELLOWLED-YELLOWLED-GREEND0D1BR18LED-REDD2LP1.6EP1.510RD3R13R14R15D4C4.7k4.7k4.7kD5K0D3D6一级亮度P2.5P1.5DDD7K1LED-YELLOW二级亮度C1P2.6ED10D8K2LED-GREENLED-GREEN三级亮度P2.730pFFD9X1P1.6JCRYSTALC2GU2LED-GREEND01939XTAL1P0.0/AD0D130pF38HP0.1/AD1D237P0.2/AD2K7D31836R17XTAL2P0.3/AD3D435IP0.4/AD4D534200P0.5/AD5D633R0R1R2R3R4R5R6R7R8R9R10R11R12P0.6/AD6C3D7932J220220220220220220220220220220220220220RSTP0.7/AD7RS21P2.0/A8RW22uF22KP2.1/A9EN23R16P2.2/A1029241kPSENP2.3/A113025LALEP2.4/A12P2.53126EAP2.5/A13P2.627P2.6/A14P2.728MP2.7/A15K3选择U3U436110X2I/OP1.0/T2P3.0/RXD7211SCLKP1.1/T2EXP3.1/TXDK4加5312RSTP1.2P3.2/INT0413X2P1.3P3.3/INT1P1.4514AND_4CRYSTALP1.4P3.4/T0K5减P1.51615VCC2P1.5P3.5/T1P1.628716X1VCC1P1.6P3.6/WR817P1.7P3.7/RDK6确定DS1302AT89C52 图4-2 二级亮度 38 KP1.6MP1.6 西北工业大学明德学院本科毕业设计论文 (3) 三级亮度调节D5、D6、D7、D8、D9、D10、D11、D12绿灯亮 1VSS2VDD 3VEE4RSLCD15RWD5616_X_2_LCDEFP1.6RP17P1.6IP1.6GD081LED-GREEND19D2D0102D12D6D3D1113LED-GREENLED-GREEND4D2124D5D1D3135D6D4BP1.5146D7D57D68LED-YELLOWD79RESPACK-8RSP1.5CP1.6HRWD0ENAAP1.4D11D4D2D7LED-GREENLED-YELLOWLED-YELLOWLED-GREEND0D1BR18LED-REDD2LP1.6EP1.510RD3R13R14R15D4C4.7k4.7k4.7kD5K0D3D6一级亮度P2.5P1.5DDD7K1LED-YELLOW二级亮度C1P2.6ED10D8K2LED-GREENLED-GREEN三级亮度P2.730pFFD9X1P1.6JCRYSTALC2GU2LED-GREEND01939XTAL1P0.0/AD0D130pF38HP0.1/AD1D237P0.2/AD2K7D31836R17XTAL2P0.3/AD3D435IP0.4/AD4D534200P0.5/AD5D633R0R1R2R3R4R5R6R7R8R9R10R11R12P0.6/AD6C3D7932J220220220220220220220220220220220220220RSTP0.7/AD7RS21P2.0/A8RW22uF22KP2.1/A9EN23R16P2.2/A1029241kPSENP2.3/A113025LALEP2.4/A12P2.53126EAP2.5/A13P2.627P2.6/A14P2.728MP2.7/A15K3选择U3U436110X2I/OP1.0/T2P3.0/RXD7211SCLKP1.1/T2EXP3.1/TXDK4加5312RSTP1.2P3.2/INT0413X2P1.3P3.3/INT1P1.4514AND_4CRYSTALP1.4P3.4/T0K5减P1.51615VCC2P1.5P3.5/T1P1.628716X1VCC1P1.6P3.6/WR817P1.7P3.7/RDK6确定DS1302AT89C52 图4-3 三级亮度 、K1、K0控制绿、黄、红灯灭。反之,依次用K2 4.2.2 LCD1602时钟仿真 39 KP1.6MP1.6 西北工业大学明德学院本科毕业设计论文 1VSS2 VDD3VEE4RSLCD15RWD5616_X_2_LCDEFP1.6RP17P1.6IP1.6GD081LED-GREEND19D2D0102D12D6D3D1113LED-GREENLED-GREEND4D2124D5D1D3135D6D4BP1.5146D7D57D68LED-YELLOWD79RESPACK-8RSP1.5CP1.6HRWD0ENAAP1.4D11D4D2D7LED-GREENLED-YELLOWLED-YELLOWLED-GREEND0D1BR18LED-REDD2LP1.6EP1.510RD3R13R14R15D4C4.7k4.7k4.7kD5K0D3D6一级亮度P2.5P1.5DDD7K1LED-YELLOW二级亮度C1P2.6ED10D8K2LED-GREENLED-GREEN三级亮度P2.730pFFD9X1P1.6JCRYSTALC2GU2LED-GREEND01939XTAL1P0.0/AD0D130pF38HP0.1/AD1D237P0.2/AD2K7D31836R17XTAL2P0.3/AD3D435IP0.4/AD4D534200P0.5/AD5D633R0R1R2R3R4R5R6R7R8R9R10R11R12P0.6/AD6C3D7932J220220220220220220220220220220220220220RSTP0.7/AD7RS21P2.0/A8RW22uF22KP2.1/A9EN23R16P2.2/A1029241kPSENP2.3/A113025LALEP2.4/A12P2.53126EAP2.5/A13P2.627P2.6/A14P2.728MP2.7/A15K3选择U3U436110X2I/OP1.0/T2P3.0/RXD7211SCLKP1.1/T2EXP3.1/TXDK4加5312RSTP1.2P3.2/INT0413X2P1.3P3.3/INT1P1.4514AND_4CRYSTALP1.4P3.4/T0K5减P1.51615VCC2P1.5P3.5/T1P1.628716X1VCC1P1.6P3.6/WR817P1.7P3.7/RDK6确定DS1302AT89C52 图4-4 LCD1602时钟仿真图 4.3 KEIL仿真 图4-5 KEIL仿真图 40 西北工业大学明德学院本科毕业设计论文 4.4 问题及解决 4.4.1 存在的问题 (1)对于绘制PRTUSE电原理图,操作不是很熟练。 (2) 在编写系统控制程序的过程中,有时候思路不清晰。 (3) 虽然word办公软件用了好多年,还是遇到某些论文排版方面的问题。 4.4.2 解决的措施 (1) 在前期自己进行大量的练习,争取做到熟练掌握该软件及其程序的编 写,遇到不会的及时与同学进行交流;通过老师的指导、同学的帮助, 以 及自己不断的学习和积累,使得自己操作PRTUSE仿真软件越来越熟练, 绘制PRTUSE电原理图更加得心应手。 (2) 复习以前学过的相关专业知识,并去图书馆或者上网查找相关资料, 解决疑问,请同学多次的帮助,遇到不会的及时询问老师。 (3) 寻求熟练word办公软件的同学帮忙,还有就是自己去图书馆找相关的 书籍进一步学习,使得我更加熟练地掌握了这些软件,收获很大,坚定 了我在以后生活和工作中自我学习的信心,并激发了我内心源源不断学 习新知识的动力。 41 西北工业大学明德学院本科毕业设计论文 参考文献 [1] 谢宜人主编,单片机实用技术问答[M].北京人民邮电出版社;2003. [2] 靳达,单片机应用系统开发实例导航[M].北京人民邮电出版社;2003. [3] 流光斌等,单片机系统实用抗干扰技术[M].北京人民邮电出版社;2004. [4] 余永权,ATMEL89系列单片机应用技术[M].北京航空航天大学出版社;2002. [5] 陈瑾;智能小车运动控制系统的研究与实现[D].东南大学硕士论文;2005. [6] 韦巍;智能控制技术[M].北京:机械工业出版社;2000. [7] 王东峰等.单片机C语言应用100例[M].电子工业出版社;2009. [8] 陈海宴.51单片机原理及应用[M].北京航空航天大学出版社;2010. [9] 钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社;2007. [10] 李平等.单片机入门与开发[M].机械工业出版社;2008. 单片机原理与应用[M].北京:北京理工大学出版社;2007. [11] 刘焕平. [12] 杨美仙.单片机的发展及其应用[M].科技信息(学术研究);2007. [13] 李群芳,张士军.单片微型计算机与接口技术[M].北京:电子工业出;2008. [14] 戴仙金.51单片机及其C语言程序开发实例[M].北京:清华大学出版社; 2008. 42 西北工业大学明德学院本科毕业设计论文 致 谢 四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。 回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。三年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。 在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。 最后,我要特别感谢李雪霞老师。从设计的选题,相关资料的查寻,到论文的撰写这一整个过程中,老师以其广博的知识、丰富的经验 、清晰的思路,自始至终给我以指导,使我能够顺利完成设计,他严谨的治学态度,精益求精的工作作风和孜孜不倦的求学精神令我受益匪浅。在此设计完成之际,对老师表示衷心的感谢~ 43 西北工业大学明德学院本科毕业设计论文 小 结 该设计实现了台灯具有光亮度调节功能;具有时间显示功能。未能实现温度显示功能以及闹铃调节及报警功能。但在细节方面还有不足之处。LED 亮度达不到很亮的程度,只能在一个很小的范围变化,以致于光亮度不够。未能实现温度显示功能以及闹铃调节及报警功能。 本次课程设计从选题到最后的实际成型经历了近一个学期,中间的过程并不一直都很顺利。虽然接触单片机也有好长年的时间了,自己实际动手完整的完成一个小项目,这还是第一次。从选题、确定方案、仿真、绘图再到编程,中间需要收集许多资料,在阅读资料的过程中找到了理论与实际应用的结合点,这引起了我极大的兴趣。 为确保实际成品的成功,我借用了Proteus仿真软件进行仿真,这极大的提高了设计及调试的效率。程序的调试是一个相对缓慢的过程,这中间不断会有新的想法涌现。在达到目标功能的前提下,我尽量地优化程序,希望达到更高的效率。由于受到自身知识水平的限制,虽然尽了最大努力,最终成型的程序满足基本要求但并未达到自己的期望的地步,稍有遗憾。 通过这次课程设计,我深切的体会到理论与应用之间还是存在很大的差距。将理论应用到实际,其中的过程可能并不如自己想象的顺利。但当顺利地完成自己设想的效果时,会发现最大的乐趣就是解决问题的过程。 44 西北工业大学明德学院本科毕业设计论文 45
本文档为【基于单片机的智能调光灯设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_337177
暂无简介~
格式:doc
大小:204KB
软件:Word
页数:56
分类:生活休闲
上传时间:2018-04-09
浏览量:75