电子信息工程毕业论文(带程序)_第1页
电子信息工程毕业论文(带程序)_第2页
电子信息工程毕业论文(带程序)_第3页
电子信息工程毕业论文(带程序)_第4页
电子信息工程毕业论文(带程序)_第5页
已阅读5页,还剩54页未读, 继续免费阅读

下载本文档

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

文档简介

1、宜宾学院本科毕业设计(论文) 本科毕业论文(设计)本科毕业论文(设计)题题 目:目: 基于单片机的简易灯光时钟设计基于单片机的简易灯光时钟设计 专专 业:业: 电子信息工程电子信息工程 学生姓名:学生姓名: 谢远猷谢远猷 学生学号:学生学号: 100305044100305044 院院 系:系: 物理与电子工程学院物理与电子工程学院 年级、班:年级、班: 1010 级级 5 5 班班 指导教师:指导教师: 文良华文良华 2014年 5 月 6 日宜宾学院宜宾学院YIBINYIBIN UNIVERSITYUNIVERSITY宜宾学院本科毕业设计(论文)摘要摘要本文介绍了一个基于单片机的简易灯光时

2、钟的设计,它具有显示年、月、日、时钟、分钟和秒、星期的显示功能,还具有闰年补偿等功能,时钟芯片采用的是 DS1302,DS1302 能存储时间信息,并且可以掉电保存。单片机通过读取DS1302 的信息后通过 LCD1602 显示在液晶屏幕上面。本设计包含 4 个按键,编号分别为 1、2、3、4,每个按键的功能分别为功能选择、光标移动、加按键以及减按键,可以设置闹钟,当 DS1302 上面的时间跟单片机所设定的闹钟时间一致后,单片机可以驱动蜂鸣器进行闹铃提醒。除此之外,系统还附带整点报时,以及任何时候通过按键语音报时功能。关键词关键词:单片机;单片机; LCD1602;蜂鸣器;蜂鸣器;DS130

3、2;闹钟;语音报时;闹钟;语音报时;宜宾学院本科毕业设计(论文)IAbstractAbstract This paper is aim to introduce a design which is based on simple chip microcomputer clock. It owns two main functions, namely, showing time, including year, month, day, hour, minute and second; and compensation of the leap year. The chip of this desi

4、gn is called DS1302, which can save time information even when the electricity was cut down accidently. The Single-Chip Microcomputer is also capable of reading the information on DS1302 and reflects the data on the LCD screen through the LCD1602. The design includes four buttons, numbered 1,2,3,4,

5、respectively, each button function selection, cursor movement, plus buttons and minus buttons, you can set the alarm. The Microcontroller can drive the buzzer to make the clock alarming when the time on these two equipments the same are. Besides, the basic functions in this microcontroller, such as:

6、 Chime on every hour and the time speaking by telephone, are also included in this design.KeyKey wordswords: : chipchip microcomputer,microcomputer, LCD1602,LCD1602, buzzer,buzzer, DS1302,DS1302, alarmalarm clock.clock.宜宾学院本科毕业设计(论文)II宜宾学院本科毕业设计(论文)目录目录摘要摘要.I IABSTRACTABSTRACT.IIII第一章第一章 绪论绪论.1 11.1

7、 目的和意义.11.2 本系统实现的主要功能.1第二章第二章 总体方案论证与设计总体方案论证与设计.2 22.1 主控模块的选型和论证 .22.2 显示模块的选型和论证 .22.3 时钟芯片的选型和论证 .22.4 温度检测模块的选型和论证 .32.5 整点报时模块的选型和论证 .32.6 电源模块.32.7 系统整体设计概述 .3第三章第三章. .系统硬件电路设计系统硬件电路设计.5 53.1 主控模块 .53.1.1 单片机的最小系统设计.53.2 LCD 液晶显示器简介 .63.2.1 液晶原理介绍.63.2.2 液晶模块简介 .63.2.3 液晶显示部分与 STC89C52 的接口 .

8、63.3 键盘模块设计 .73.4 蜂鸣器模块设计 .83.5 时钟模块的设计 .83.6 温度检测模块设计 .103.6.1 温度传感器工作原理 .103.6.2 DS18B20 硬件电路设计 .113.7 语音模块设计.11第四章第四章. .系统软件设计系统软件设计.12124.1 系统软件总体设计 .124.2 程序设计原理 .165.5.系统调试系统调试.18185.1 硬件调试 .185.2 软件调试 .18参考文献参考文献.2020致谢致谢.2121附录附录.2222宜宾学院本科毕业设计(论文)系统整体原理图系统整体原理图.2222系统系统 PCBPCB 图图.2222元件清单元件

9、清单.2424系统源程序系统源程序.2525宜宾学院本科毕业设计(论文)0第一章 绪论1.1 目的和意义现代社会已经迈上了信息化的步伐,微电子技术的发展也越来越快,单片机的运用也日渐广泛。无论是通信业的学生,老师或者是研发人员,对于单片机的运用均青睐有加,因此单片机已成为研发人员必须掌握的能力之一,而且单片机也会发展成为一个高薪行业。而时钟作为电子类的一个小设计,不仅深受人们的喜爱,也是单片机实验中一个非常常见的题目。由于单片机给人有很大的发挥空间,是以会对制作人以高要求对待,并且在掌握设计的同时程序要以简洁为主,功能上要能满足人们需求,显示界面要大胆创新,标新立异。LCD 显示的数字时钟清晰

10、直观的显示准确时间、而且精度很是高、并且有夜视功能,还扩展出多种与人方便功能。本设计中的简易灯光时钟既是一个时间控制系统,又包含温度检测系统,既能准确无误的显示出正确的高精度的时间又能检测当前的温度本文提出了以 STC51 系列单片机为核心,采用 DS1302 作为电子时钟的核心芯片的设计方案,与温度传感器 DS18B20、LED 显示、时钟芯片 DS1302、按键等模块组成硬件的电子电路系统。显示采用 LCD,以实现显示年、月、日、时、分钟、秒、星期、温度。设计过程中使用 Keilc51 软件,采用 C 语言编程;此外,还要从多方面保障系统的稳定性,提高系统的性能指标本设计可以对时间进行实时

11、的校准,读取时间方便、能直观显示实时时间、功能方面体现多样话、简单明了的电路、低廉的成本都是该设计的优点,满足未来电子设计的发展要求,市场前景好。1.2 本系统实现的主要功能本系统设计制作一个基于单片机的简易灯光时钟。能实现以下几种功能:(1)键盘扫描,设计按键扫描程序下载到单片机,每个按键赋予一个功能,单片机通过扫描程序检测用户按键,确定后实现功能。(2)通过单片机的 ds1302 的数据采集,并实时显示年,月,日,时,分,秒,和星期在液晶屏上,并且可以设置时间,系统不供电的情况时钟芯片依然可以由后备纽扣电池供电,使其掉电时间保存。(3)用户可以设定闹钟时间,当时间到了之后,系统自动驱动蜂鸣

12、器发响。(4)系统附带有整点报时功能,以及任何时候通过按键报时功能。(5)系统还带有测温功能,单片机可以实时读取 DS18B20 的温度数据并在液晶上显示。宜宾学院本科毕业设计(论文)1第二章 总体方案论证与设计本系统可以由主控、显示、时钟、温度检测、电源等模块组成,以下是讨论这几个模块的选型和论证。2.1 主控模块的选型和论证方案一:采用 MSP430F149,MSP430F169 系列单片机,该单片机是 TI 公司 1996 年开始推向市场的一种 16 位超低功耗的混合信号处理器。其内部集成了很多模拟电路、数字电路和微处理器,提供 12 位 ADC,具有采样、保持、自动扫描,有 2 个 1

13、6 位计数器等强大的功能。但芯片价格昂贵,不适合一般的设计和开发。方案二采用 52 系列的单片机,该单片机具有可靠性高,价格成本低,解密难,高性能的特点,32 个 IO 口,且 STC 系列的单片机可以在线编程、调试。因此选用方案二中的 52 系列单片机作为主控芯片。2.2 显示模块的选型和论证方案一:用点阵式数码管显示,它是由发光二极管八行和八列显示文本,更适合用于显示文字,如进行数字显示使用就太浪费了,而且价格比较高,所以不用此种作为显示。方案二:使用 LED 数码管动态扫描,LED 数码管虽然价格适中,最适合数字显示,采用动态扫描的方法与单片机连接,单片机口线占用得少。但是由于数码管动态

14、扫描需要借助 74LS164 移位寄存器,74LS164 在调试的时候,电路方面常出故障,所以不采用 LED 数码管作为显示。方案三:选用 LCD 液晶显示屏,它可以清晰可见的显示文字,图像,功能很是强大,关于本设计的要求,我们使用一个 LCD1602 即能满足要求,成本低,虽然接口线有点多,但是调试会很方便。所以本设计中方案三中的 LCD1602 液显示屏作为显示模块。2.3 时钟芯片的选型和论证方案一:用程序控制单片机实现时间计数。采取该方案虽然能够缩小时钟芯片的使用量,节省成本开支,但是,误差会非常大。方案二:采用 DS1302 时钟芯片实现时钟,DS1302 是美国 DALLAS 公司

15、推出的一种性能比较高、性价比高,功耗较低、带 RAM 的实时时钟电路,它可以对年、月、日、时钟、分钟、秒以及星期进行计时,还能进行闰年补偿,工作电压为2.5V5.5V。DS1302 里面含有一个 8*31 的 RAM 存储器,用于临时存放数据。DS1302 主要特点是采用串行数据传输,具有可编程充电和掉电保护功能,采用普通 32.768KHz 晶振作为标准时钟。宜宾学院本科毕业设计(论文)2因此本设计中采用方案二中的 DS1302 作为时钟模块2.4 温度检测模块的选型和论证方案一:AD590 感温电流源的输出电流与绝对温度成比例。电源电压在 4 V30 V范围内,AD590 可充当一个高阻抗

16、,调节系数为 1 A/K 为恒流调节器。通过激光调整的片内薄膜电阻,用于校准装置,使该器件在 25C 时有 298.2 A 的输出电流。由于该芯片输出为模拟量还同时需要 AD 转换器对其进行采集。因此不适用于本设计方案二: DS18B20 数字温度传感器耐磨耐碰,体积小,主要根据应用场合的不同而外观不同,DS18B20 用途广泛,如电缆沟测温,机房测温,弹药库测温、农业大棚测温,高炉水循环测温,锅炉测温,洁净室测温等场合。使用场合广,价格低,实用性强。因此本设计采用方案二中的 DS18B20 芯片进行温度采集。2.5 整点报时模块的选型和论证整点报时模块集成的语音芯片 NY3P035,NY3P

17、035 是一款具有 PWM 输出的 OTP 语音标准芯片,该芯片内部集成了 09 以及一些常用单位的录音。使用时只要根据录音存放的位置依次读出就能播报出当前的重量和价格。2.6 电源模块方案一: 选用以下两块芯片 LM337 和 LM317 自制一个可调的电源模块,LM317 和LM337 分别是三端可调式输出正电压稳压器和三端可调式输出负电压稳压器。通过这 2 块芯片,我们可以很容易的得到正负 5V,正负 12V 和正 3V 电压,但由于本设计需求各模块体积小,而自制电源体积较大,故不采用此方案。方案二: 采用 USB 接口供电,既能够下载程序,也能供电,一举两得,故采用此方案。2.7 系统

18、整体设计概述语音芯片扬声器蜂鸣器模块主控模块单片机液晶显示模块LCD1602温度测量模块DS18B20时钟模块DS1302按键模块图 2.7 系统结构框图宜宾学院本科毕业设计(论文)3本系统是以 STC89C52 单片机为核心,首先要对系统进行初始化,然后单片机对键盘,DS18B20 等模块进行扫描,实现对键盘的响应,实时显示分钟、秒等,对 1602 液晶显示,闹钟、温度测量等功能,其中,单片机起到控制和协调各功能模块的工作。系统的结构框图见图 2.7。宜宾学院本科毕业设计(论文)4第三章.系统硬件电路设计3.1 主控模块单片机在全部设计中起到了统领全局,承前启后的作用,在该设计中单片机需要完

19、成的任务主要有对键盘扫描,对 DS18B20 进行及时的检测,驱动蜂鸣器,驱动液晶显示需要显示的内容,所以,在本设计中我们选用 52 系列的单片机作为系统的总控制模块。如图 3.1 所示为 STC89C52 单片机的结构框图。时钟电路ROM/EPROM/Flash 4KBRAM128BSFR 21个定时个/计数器2CPU总线控制中断系统5个中断源2个优先级串行口全双工1个4个并行口XTAL2XTAL1RST EAALEPSENP0P1P2P3VssVcc图 3.1 STC89C52 单片机结构框图3.1.1 单片机的最小系统设计宜宾学院本科毕业设计(论文)5P1.01P1.12P1.23P1.

20、34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8RESET9P3.010P3.111P3.212P3.313P3.414P3.515P3.616P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1供供供+5V12Y212MHZ30pFC330pFC4123456789P110K供供+5VS1SW-PB10KR310uFC2+5V图 3.1.

21、1 单片机最小系统电路图图 3.1.1 所示的电路图是单片机在本设计中的最小系统,时钟电路选用12M 的晶振,作用是为单片机提供一个时钟基准,其执行一条指令需要一个机械周期,单片机的复位电路是让单片机的状态回到刚上电的状态,因为 P0 口是一个漏极准双向的 I/O 口,所以需要上拉电阻才能正常工作。3.2 LCD 液晶显示器简介由于本设计中要求显示界面显示一些参数,因此这里选用了 LCD1602 作为界面显示,可以把一些相关的参数进行显示。 3.2.1 液晶原理介绍显示部分选用 LCD1602 字符型液晶,辅以必要的外接电路组成显示模块,单片机控制带字符的 LCD1602 查找其字符库,从中选

22、出要显示的字符,设置光标,将之前查找到的字符在此对应即可。3.2.2 液晶模块简介LCD1602 液晶模块的引脚图如图 3.2.2 所示。图 3.2.2 LCD1602 引脚图宜宾学院本科毕业设计(论文)6液晶寄存器选择控制如表 1。表 1 寄存器选择控制RSR/W操作说明00写入指令寄存器(清除屏幕内容显示等)01读位地址计数器(DB0DB6)和 busy flag(DB7)10写入数据寄存器(显示各字型等)11从数据寄存器读取数据3.2.3 液晶显示部分与 STC89C52 的接口 如图 3.2.3 所示。用 STC89C52 的 P0 口作为数据线,用 P1.2、P1.1、P1.0分别作

23、为 LCD 的 EN、R/W、RS。其中 EN 作为片选信号,在出现下降沿的时候触发,RS 是寄存器选择信号,R/W 是读写信号,在整个显示模块中,我们主要设计步骤如下:首先进行清屏,显示模块初始化。然后将接口数据位设置为 8 位,显示行数设置为 2 行,设定字型为 57 点阵,然后取消光标和字体闪烁, 显示设置为整体显示,最后设置为正向增量方式且不移位。将要显示的字符送到对应的数组中,最后进行统一显示。P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8RESET9P3.010P3.111P3.212P3.313P3.414P3.515

24、P3.616P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1供供供+5V12Y212MHZ30pFC330pFC4123456789P110K供供VSS1VCC2VEE3RS4RW5EN6DB07DB18DB29DB310DB411DB512DB613DB714A15K16LCD1lcd1602+5V10KR1+5V+5V+5VS1SW-PB10KR310uF

25、C2+5V图 3.2.3 LCD1602 与 STC89C52 的接口3.3 键盘模块设计本按键模块按键一端接单片机的 I/O 口,另一端接地,由于单片机的 I/O宜宾学院本科毕业设计(论文)7口内部都有上拉电阻,所以在没有按键按下的时候,我们会检测到高电平,当按键被按下,I/O 口与地面等电势,此时为低电平,因此通过 I/O 端口的状态变化检测即可知道按下了哪个按键。4 个按键分别代表以下功能,第一为功能选择按键,可以切换不同参数设置界面,第二个为切换按键,可以切换时、分、秒等参数进行设置,第三个为增加按键,第四个为减少按键。其中按键还可以设置闹钟,重置时间等功能。键盘模块电路图如图 3.3

26、 所示。P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8RESET9P3.010P3.111P3.212P3.313P3.414P3.515P3.616P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1供供供+5VS2SW-PBS3SW-PBS4SW-PBS5SW-PB图 3.3 键盘模块电路图3.4

27、蜂鸣器模块设计本设计还带有闹钟功能,用户可以通过按键设定好闹钟,当当前时间跟闹钟时间一致的时候,单片机就可以驱动蜂鸣器发声。通过试验,发现单片机的 I/O 口无法直接驱动蜂鸣器,是因为蜂鸣器的工作电流一般比较大,所以我们利用三极管开关电路来提供足够大的驱动电流。本处选用的是 8550 三极管,它是一个 PNP 型的三极管,当基极给低电平的时候三极管导通,这时候蜂鸣器发声,当给高电平的时候,三极管关闭,蜂鸣器不发声。蜂鸣器模块的电路图如图 3.4 所示。1KR4+5VP3.2LS1供供供Q18550图 3.4 蜂鸣器驱动电路电路图3.5 时钟模块的设计在本设计中,时钟模块的设计,我们把 DS13

28、02 这块串行日历时钟芯片作为核心,因为 DS1302 具有与单片机的连线很少,节省单片机的系统资源的有点,单片机通过 I/O 读取 DS1302 上的数据可以得到实时时间。由于采用单片机作为计时模块会占用硬件资源,而且采用中断、查询等方式也要耗费单片机的资源,可能会造成很大的浪费,而采用 DS1302 却可以很好宜宾学院本科毕业设计(论文)8的解决这类问题。DS1302 是美国 DALLAS 公司推出的一种带 RAM、高性能、能对年、月、日、星期、时、分、秒进行计时,并且低功耗,可以进行闰年补偿的时钟电路,工作电压为 2.5V5.5V。采用 24 小时或是 12 小时的格式。此外,DS130

29、2 采用双电源供电,主电源和备用电源,VCC1 作为备用电源,在模块整体供电中提供电压相对低的电压,而 VCC2 作为主电源,VCC1 和 VCC2 的供电模式决定如下:VCC2VCC1+0.2 时 由 VCC2 供电 VCC2VCC1 时 由 VCC1 供电图 3.5.1 DS1302 引脚示意图如图 3.5.1 为 DS1302 的引脚图。X1 和 X2 是震荡源,外接 32.76KHz 的晶振,GND 为接地端,RST 为复位端,低电平有效,图 3.5.2 为 DS1302 的引脚功能图引脚号引脚名称功能1VCC2主电源2,3X1,X2振荡源,外接 32768HZ 晶振4GND地线5RS

30、T复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行数据输入端8VCC1后备电源图 3.5.2 DS1302 引脚功能表在 3.5.3 中,最高位控制字(第七位)必须是一个合乎逻辑的,即必须为逻辑 1,第六位控制字为 0 是日历时钟对数据的访问,第六位是 1 表示存取 RAM数据,第五位地址到第一位(A4-A0)表示指针指向操作单元地址,电平 1 或 0分别表示写操作是读操作。宜宾学院本科毕业设计(论文)9图 3.5.3 DS1302 控制字DS1302 共有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD 码形式,其日历、时间寄存器及其控制字见表 2

31、,其中奇数为读操作,偶数为写操作。总共有 12 个寄存器 DS1302,与日历 ,时钟相关寄存器共 7 个,都存储为BCD 格式,日历,时钟寄存器和相关联的控制字的数据位如表 2 所示,其特征在于所述奇数读操作,写操作是偶数。表 2 DS1302 的日历、时钟寄存器及其控制字命令字各位内容寄存器名写操作读操作取值范围76543210秒寄存器80H81H00-59CH10 秒秒分钟寄存器82H83H00-59010 分分10小时寄存器84H85H01-12 或00-2312/240AM/PM时时日期寄存器86H87H131010 日日月份寄存器88H89H01-1200010月周日寄存器8AH8

32、BH01-0700000周日年份寄存器8CH8DH00-9910 年年从表 2 我们可以发现,小时寄存器的第七位为 1 是 12 小时计时模式,在12 小时计时模式下,第五位为高电平表示 AM,低电平表示 PM,第七位为 0 是24 小时模式,这是位 5 为第二个十小时位标志。暂停位位于秒寄存器的第七位,当该位被设置为 1 时,时钟振荡器停止工作,然后 DS1302 工作在低功率模式,该位为 0 时,时钟正常运行。控制寄存器地址是 8FH,8EH,其第七位是写保护位,其余七位均要置 0,在对时钟进行的任何写操作时,写保护位 WP 必须是 0,否则,写保护位禁止任何一个寄存器进行写操作。3.6

33、温度检测模块设计本设计还带有一个温度检测的功能,系统可以通过读取 DS18B20 的温度数据并在 LCD1602 上显示,使整个时钟的功能更加丰富。3.6.1 温度传感器工作原理温度传感器 DS18B20 测温在-55 至+125 摄氏度范围内,具有 12 位的精度。它有 0.0625 摄氏度的测温分辨率,可设置存储在 EEPROM 中,用户自定义的报警温度在掉电后仍然可以保存。另外,多个温度传感器可以并联连接,但只需宜宾学院本科毕业设计(论文)10要使用 CPU 上的一个端口就可以与温度传感器电路进行通信,这样微控制器端口占用最少。它可以节省大量的端口和逻辑电路就能构成温度测量系统。图3.6

34、.1 是 DS18B20 的引脚图。 图 3.6.1 DS18B20 引脚图我在实验中发现,当使用 DS18B20,VCC 电压应保持在 5V,否则,如果电压太低,降低了温度传感器的精度。而且,温度传感器从测量温度结束后,将温度传出到转换到数字量的时候,需要一定的延时时间,否则会导致转换错误,总是显示一个时间不动。3.6.2 DS18B20 硬件电路设计GND1DQ2VCC3U3DS18B20+5V10kR5+5V图 3.6.2 DS18B20 温度检测电路图如图 3.6.2 所示的是 DS18B20 的硬件设计,DQ 作为温度传感器 DS18B20 数据输出端口,单片机通过检测可以实时输出温

35、度值的数据,由于该温度传感器是单线通信,所以当发送数据时为低电平有效,接收数据是为高电平有效,即输出逻辑 1,但是,在接收状态下,必须外接上拉电阻将其拉为高电平,才能正常输出逻辑 1.3.7 语音模块设计语音模块设计采用 NY3P035 芯片,该芯片内部含有一个 ROM 表。单片机通过对该芯片发送序列的脉冲信号来查找该 ROM 的地址,以此来发出声音。图 3.7.1 语音芯片引脚图宜宾学院本科毕业设计(论文)11单片机控制原理是:先发送一个复位脉冲到 RST(Rest)脚,接着发送 10 个脉冲到 DATA 脚。芯片即刻工作,播放第十段的声音;如果需要播放第五段的声音,则是:先发送一个复位脉冲

36、到 REST 脚,接着发送 5 个脉冲到 DATA 脚。芯片即刻工作,播放第 5 段的声音;第四章.系统软件设计4.1 系统软件总体设计宜宾学院本科毕业设计(论文)12开始系统初始化系统显示相关时间温度信息是否按下按键按键扫描子程序否是读取时钟芯片的相关时间信息读取温度参数是否和设定的闹钟时间一致驱动闹钟发声是否图 4.1.1 主程序流程图主程序流程图如图 4.1.1 所示,首先系统经过初始化,清除系统中原有的一些冗余信息后,读取时钟芯片 DS1302 的内部相关信息,例如:年、月、日等时间参数,紧接着判断当前信息是不是和设定的闹钟信息一致,如果是的话,单片机就发出驱动信号驱动蜂鸣器发出声音,

37、如果不是,则单片机将读取温度传感器 DS18B20 的相关信息,然后将读取的时间信息和温度信息传入 LCD1602进行显示,单片机在每个循环时都会检测是否有用户按键,如果有按键的话,将自动跳转到相应的子程序。宜宾学院本科毕业设计(论文)13开始复位端变高启动一次数据传送工作写命令字节一位SCLK发脉冲够8次吗?写数据字节一位SCLK发脉冲够8次吗?复位端变低结束否是否是图 4.1.2 时钟模块子函数程序流程图时钟模块的流程图如图 4.1.2 所示,首先先让时钟芯片的复位引脚置高,然后开始数据传输,然后写一个指令字节,然后发送串行时钟脉冲信号,一直循环,直到发送了 8 个命令字节为止。当发送完

38、8 个命令字节时,写数据进时钟芯片,首先写入一位数据字节,然后给 SCLK 引脚发送脉冲,一直循环写入 8次,这样数据写入完成,最后将复位引脚拉为低电平,这样就可以完成时钟芯片的一次操作。宜宾学院本科毕业设计(论文)14按键1是否按下按键2是否按下按键3是否按下时间设定闹铃设定切换对应菜单增加相应值YNNYYYNY按键扫描子函数松手检测松手检测闹铃标志位清零YgFunctioncount=0按键4是否按下YgFunctioncount=2?gFunctioncount=3?NNgFunctioncount=1?NgFunctioncount=0&Beep=0?gFunctioncoun

39、t+N清除屏幕显示松手检测减少相应值松手检测N结束gFunctioncount=4?N重置时间Y图 4.1.3 按键扫描程序流程图键盘扫描程序流程图如图 4.1.3 所示,当进入到按键扫描子函数后,首先判断按下的是哪个按键,如果是按键 1 的话,则检测单片机是否处于闹钟的触发状态,是的话,将闹钟标志位清 0,不是 0 的话,那么变量 gFunctioncount加 1,进入时钟设置界面,如果是的话重新检测按键,如果是按键 2 的话,则用于选定不同的所需的时间参数,按键 3 和按键 4 实现时间参数的确定,如果仍然是按键 1 时,则变量 gFunctioncount 加 1,进入闹钟设置模式,此

40、时通过按键确定并设置闹钟参数。继续按键 1,则 gFunctioncount 加 1,进入复位模式,按下确认键,则使当前时间参数全部复位。并且 gFunctioncount 清 0,以及清除屏幕显示,最后跳出设置功能。按键 2 的功能是切换对应菜单,按键 3是用于增加相应值,按键 4 是用于减少相应值。宜宾学院本科毕业设计(论文)15调用自定义字库设置DDRAM地址,在第一行显示设置显示数据首地址循环量设置取字符代码循环完?设置DDRAM地址,在第一行显示设置显示数据首地址循环量设置取字符代码循环完?结束图 4.1.4 LCD1602 初始化子程序函数流程图LCD1602 子程序函数流程图如图

41、 4.1.4 所示,首先先调用液晶自定义的字库,设置好 DDRAM 地址后在第一行显示,根据程序中的数据,设置显示数据的首地址,并设置循环量,在循环过程中不断的取字符代码直到终止,第二行的显示过程同理,两行显示完毕后便结束子程序宜宾学院本科毕业设计(论文)16开始初始化DS18B20发送跳过ROM命令到DS18B20发送温度转换命令等待转换完成初始化DS18B20发送跳过ROM命令到18B20读取温度值到缓冲区调用温度处理子程序结束图 4.1.5 温度传感器 DS18B20 温度检测子程序流程图温度传感器 DS18B20 温度检测子程序流程图如图 4.1.5 所示,进入温度读取子函数时,首先初

42、始化 DS18B20 温度传感器的参数,单片机发送跳过 ROM命令给 DS18B20,然后发送温度转换命令并且延时一定时间等待转换完毕,等转换完毕后单片机在再次初始化 DS18B20,发送跳过 ROM 命令,温度到缓冲区,最终温度处理子程序调用达到存储实时温度的目的。4.2 程序设计原理软件设计是基于硬件设计的基础之上,首先要明确硬件设计的原理,区分哪些是需要硬件设计的,哪些是软件设计的范畴,软件设计要明确设计内容的真正目的,设计程序最好要简单明了,尽量减少多余的冗余信息,减少 CPU 的宜宾学院本科毕业设计(论文)17负担。软件分析方面的任务是软件设计的一个总体规划。从软件的功能的角度可以分

43、为两大类:一类是在软件的设计,可以完成各种实质性的功能,如测量,计算,显示,打印,导出控制和通信,以及其他的监控软件,其目的是作为软件调度软件的组织来执行模块的作用和运作之间的关系。这两种类型的软件设计方法都有其自身的特点,专注于算法的软件设计,不断提高软件完成功能效率,以及与之密切相关的硬件,都有不断变化的可能性,关键就在于我们设计者是怎么进行操作的。软件需求分析的任务,应该将执行模块一一的列表,定义每个执行模块的输入和输出,并绘制了相应的程序流程图,并制定可执行模块的引脚和功能。宜宾学院本科毕业设计(论文)185.系统调试5.1 硬件调试在制作硬件电路之前,我们先根据实际需要的功能划分硬件

44、模块,并且在 PROTEL 里面画出其硬件原理图和 PCB 图,检查无误后开始先在万用板上焊接,调试无误后在腐蚀板上制作焊接。在本万年历的硬件调试中遇到过许多常见的问题,现在回想这类问题,只要在当时认真一些,多思考,多查下资料,这些问题都是可以避免的,以下为主要的问题:问题 1:刚开始的时候以为单片机 I/O 口可以直接驱动蜂鸣器发出声响,后来调试了很久都不能发出声音。解决:经过多方面的查找相关资料,如进入图书馆查找历年来的设计资料,或者进入相关资源的数据库,或者在商家处寻求相关芯片的 PDF 资料文件,最终我知道了单片机的 I/O 口给蜂鸣器提供不了足够的驱动电流,所以我们采用三极管放大器来

45、将电流放大,用以驱动蜂鸣器工作,实验证明,把三极管放大器加在系统上后蜂鸣器就可以正常工作,发出声音了。问题 2:单片机一直读取 DS18B20 的温度总是错误,显示的时候不是乱码就是总显示 24 摄氏度或者 85。解决: 经过查找芯片手册,知道 DS18B20 的输出端是漏极开路结构,需要加上拉电阻才能读取数据正常.问题 3:本设计要实现语言实时报时,但是在用万用版做出来的时候,不管怎么做,都没有语音发出声音。 解决:刚开始怀疑是对语音芯片设计有问题,但是通过查找芯片手册,发现对于语言报时模块中的核心芯片设计没有任何问题,接着怀疑是程序方面有问题,因为要实现语音报时,必须要进行的步骤是要单片机

46、对语音芯片的内部ROM 进行查表,但是通过分步骤的对程序进行检查发现,程序也没有问题,最后仔细检查了一下整个电路设计,发现忘记在电路中设计喇叭了,误以为电路中有蜂鸣器就可以发声,由于模块已经设计完,只好用跳线外接了一个小喇叭,测试发现,问题得到解决,语音报时内容为:“今天是 XX 年 X 月 X 日” “现在是 X 时 X 分 X 秒,星期 X” 。5.2 软件调试本系统是一个较为复杂的数字系统,程序更为复杂,所以在编程和调试出现了相对更多的问题。首先为了更好的测试效果,我最开始是一个模块一个模块单独做成电路板,然后直接用跳线连接组成的系统,在确定无误后,再把程序烧录到实物中运行。在系统中调试

47、号确定无误后,再将每个模块全部集中在一个腐蚀板上,再进过一番调试,问题得到解决,功能得到实现。在该过程中主要遇到的问题如下:问题 1:烧入程序,LCD 液晶出现显示永远闪烁,和不均匀的亮度。解决:刚开始的时候怀疑是程序的延时部分有问题,所以在程序中修改对调用的子程序的延时,结果我们发现屏幕显示闪动频率明显降低,找到问题点宜宾学院本科毕业设计(论文)19后,继续增大延时,最终达到解决显示闪动问题的目的。由于该系统采用数字动态扫描显示,动态扫描快,人眼无法看到,但是当调用显示程序,如果没有返回的最后一个值,就会显得非常明亮或亮度不均匀的现象,所以在显示指令的后面加一个屏蔽子令,最终的问题得到解决。

48、问题 2:当用户按下按钮,设定的数值与单片机读取的值跟不对应,而且有时候按键失灵或者是出现某些关键功能有时候不对应有时候对应的情况。解决:重新检查矩阵键盘电路的连接,发现焊接键盘电路时有虚焊,重新焊接好矩阵键盘按键没有反应的问题得到解决。然后检查键盘扫描程序,重新建立一个新的对应关系。最终问题得到解决。宜宾学院本科毕业设计(论文)20参考文献1 彭伟.单片机 C 语言程序设计实训 100 例.电子工业出版社.2009 年2 吴运昌模拟电子线路基础广州:华南理工大学出版社,2004 年3 阎石数字电子技术基础北京:高等教育出版社,1997 年4 张晓丽等数据结构与算法北京:机械工业出版社,200

49、2 年5 马忠梅等 ARM & Linux 嵌入式系统教程北京:北京航空航天大学出版社,2004 年6 李建忠单片机原理及应用西安:西安电子科技大学,2002 年7 韩志军等.单片机应用系统设计M.机械工业出版社,20048 周润景等. Proteus 在 MCS-51&ARM7 系统中的应用百例M.电子工业出版社,20069 马忠梅等.单片机的 C 语言应用程序设计M.北京航空航天大学出版社,200610刘树中,孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现J.微计算机信息,2007宜宾学院本科毕业设计(论文)21致谢通过此次简易灯光时钟的毕业设计,我学到了很多东西,并

50、且,将许多以前在书本上学到的东西运用到实际生活中,在以前的专业课书本中,很多概念的模糊的,例如:在以前的学习过程中,一直不明白温度传感器是怎么进行工作的,与单片机是怎么进行通信,单片机的 I/O 口采集温度传感器 DS18B20 的数据后是怎么转换数据将之对应为实时的温度的。而且通过此次设计,我学会了如何点亮液晶,怎么制作功能菜单,会设计单片机最小系统,将许多模糊的概念彻底的搞清楚,同时,在这段时间里,我明白了我们专业在以后的生活工作中的运用方向,也为我在以后工作中需要学习,掌握的工作技能奠定基础。在这次设计当中,我学会使用 STC52 系列单片机,并会熟练使用protel,keilC51 等

51、软件,能够独立的搭建一些简单的硬件设计,能够检查出一些简单、常见的问题,动手能力有所提高,对所学知识运用加深。感谢在这次设计中对我提供帮助的老师,同学,谢谢教我怎样查找芯片关键资料,教会我使用 protel 的老师,谢谢你们。宜宾学院本科毕业设计(论文)22附录系统整体原理图P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8RESET9P3.010P3.111P3.212P3.313P3.414P3.515P3.616P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.52

52、6P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1供供供+5V12Y212MHZ30pFC330pFC4123456789P110K供供VSS1VCC2VEE3RS4RW5EN6DB07DB18DB29DB310DB411DB512DB613DB714A15K16LCD1lcd1602+5V10KR1+5V+5V+5VS2SW-PBVCC21X12X23GND4CE5I/O6SCLK7VCC18U2DS130210KR2+5V12Y132.768KHZBT13VGND1DQ2VC

53、C3U?DS18B20+5V10kR5+5VQ12N3906+5V1KR4LS1BuzzerS1SW-PB10KR310uFC2+5VS3SW-PBS4SW-PBS5SW-PB1234P2USB供供供供+5V1000uFC8+5VVL1PWM-12PWM-23VCC4GND5RST6DATA7BUSY8U2供供供供0.1UFC130.1UFC8LS1供供供 +5V系统 PCB 图宜宾学院本科毕业设计(论文)23实物图宜宾学院本科毕业设计(论文)24元件清单名称数量STC89C52130PF 电容210UF 电容11000UF 电容110K 电阻310K 电位器1DIP40 插座1LCD1602

54、1轻触按键512M 晶振1DS18B2018550 三极管1DS13021蜂鸣器1语音芯片NY3P035AP632401D1扬声器1DIP8 插座2板子1铜柱4螺帽4USB 座子1宜宾学院本科毕业设计(论文)25系统源程序/说明:第一个键:按一下,当前时间设置;通过第二个键来选择年月日时分秒/按第二下,闹钟 1 设置;通过第二个键选择时分秒/添加头文件#include/单片机头文件#includeLCD1602.h/液晶#includeDS1302.h /时钟#includekey.h/按键#includeDS18B20.h/温度传感器void DisplayInit(void)/初始化 LC

55、D 和时钟的显示,初始化定时器LCDInit(); /初始化液晶 void Display1(void)/显示正常界面,时间的函数DS1302_read_time(); /读取 DS1302 时间LCDDispNum(1,1,(Nian4); /在液晶上显示年的十位LCDDispNum(2,1,(Nian&0 x0f);/在液晶上显示年的个位LCDDispChar(3,1,-);/在液晶上显示字符-LCDDispNum(4,1,(Yue4);/在液晶上显示月的十位LCDDispNum(5,1,(Yue&0 x0f); /在液晶上显示月的个位LCDDispChar(6,1,-);

56、/在液晶上显示字符-LCDDispNum(7,1,(Ri4); /在液晶上显示日的十位LCDDispNum(8,1,(Ri&0 x0f);/在液晶上显示日的个位LCDDispNum(1,2,(Shi4); /在液晶上显示十的十位LCDDispNum(2,2,(Shi&0 x0f);/在液晶上显示十的个位LCDDispChar(3,2,:); /在液晶上显示显示字符:LCDDispNum(4,2,(Fen4); /在液晶上显示分的十位LCDDispNum(5,2,(Fen&0 x0f);/在液晶上显示分的个位LCDDispChar(6,2,:);/在液晶上显示显示字符:L

57、CDDispNum(7,2,(Miao4);/在液晶上显示秒的十位LCDDispNum(8,2,(Miao&0 x0f);/在液晶上显示秒的个位XingQi = (XingQi & 0 x0f)+(XingQi4) * 10); /星期if(XingQi = 1) /判断并显示星期的字符宜宾学院本科毕业设计(论文)26LCDDispString(12,1,Mon.); /如果星期等于 1 则显示 Mon.else if(XingQi = 2)LCDDispString(12,1,Tues); /如果星期等于 2 则显示 Tueselse if(XingQi = 3)LCDDis

58、pString(12,1,Wed.); /如果星期等于 3 则显示 Wed.else if(XingQi = 4)LCDDispString(12,1,Thu.); /如果星期等于 4 则显示 Thu.else if(XingQi = 5)LCDDispString(12,1,Fri.); /如果星期等于 5 则显示 Fri.else if(XingQi = 6)LCDDispString(12,1,Sat.); /如果星期等于 6 则显示 Sat.else if(XingQi = 7)LCDDispString(12,1,Sun.); /如果星期等于 7 则显示 Sun.FenA = (Fe

59、n & 0 x0f) + (Fen4) * 10);/把分的 BCD 码转成 10 进制ShiA = (Shi & 0 x0f) + (Shi4) * 10);/把时的 BCD 码转成 10 进制/闹铃,判断是否有闹铃。如果时间到,则蜂鸣器响,否则不响if(AlarmFlag0 = 1 & DoneFlag0 = 1 & ShiA = AlarmClock00 & FenA = AlarmClock01)BEEP = 0;else BEEP = 1;/转点时的闹钟标志位要清零if(Shi = 0 & Fen = 0 & Miao = 0)

60、if(AlarmFlag0 = 1)DoneFlag0 = 1;if(Fen = 0 & Miao = 0)Music(L_beijing);if(Shi4)!=0)if(Shi4)=1)Music(L_shi);elseMusic(Shi4)+1);Music(L_shi);if(Shi&0 x0f)=0)if(Shi4)=0)宜宾学院本科毕业设计(论文)27Music(L_0);elseMusic(Shi&0 x0f)+1);Music(L_dian);Music(L_zheng);/读取温度的值ReadTemperature();/显示温度的值LCDDispString(12,2,temperatureDate);void main(void)/初始化操作DisplayInit();Music(L_1);

温馨提示

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

评论

0/150

提交评论