《基于PIC16F84时钟设计毕业论文(20页).doc》由会员分享,可在线阅读,更多相关《基于PIC16F84时钟设计毕业论文(20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于PIC16F84时钟设计毕业论文-第 19 页基于PIC16F84时钟设计绪论一寸光阴一寸金,寸金难买寸光阴。从古至今,时间一直是人们生活中不可或缺的重要帮手。郭沫若先生曾说:“时间就是生命,时间就是速度,时间就是力量。”时间对我们来说总是弥足珍贵。随着社会的不断发展,时间概念在我们的日常工作、学习、生活中已经变得越来越重要。如果没有时间概念,社会将停滞不前。从古代的圭表、水漏,到后来的机械钟表以及当今的电子钟,都充分显现出了时间的重要。因此利用当今先进的科技致力于多功能时钟的研究将能更好的服务于人们的生活。1 课题背景1.1 多功能时钟研究的背景120世纪末,电子技术的快速发展,毫无疑
2、问,由于现代电子产品和各种高科技产品几乎渗透到社会的所有领域,有力地推动了社会生产力的发展和社会信息化水平和全面的科学和技术水平的提高,但产品更新频率越来越快。随着科技的发展社会的进步和全球化的日益激烈的竞争,人们也越来越对数字时钟的功能提出要高要求,传统的时钟不能满足人们的需求。多功能时钟,无论是外型还是在功能上都发生了显著的变化,许多电子时钟都已具备闹钟、电子秒表、温湿度检测、查看日历等功能。多功能时钟非常广泛地采用单片机作为核心控制器,为其多功能的实现奠定了坚实的基础。多功能时钟是采用数字电路实现对时,分,秒数字显示的装置,广泛用于家庭、车站、医院等公共场所,成为人们日常生活中不可或缺的
3、必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,多功能数字时钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。具有定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电器的自动启用等功能,所有这些,都是近年来多功能时钟迅猛发展的结果。1.2 多功能时钟研究现状与意义时钟自从发明的那天起,就成为人类的朋友,给人们的生活、学习、工作、娱乐带来极大的方便。但随着时间的推移,科学技术的不断发展,生活节奏越来越快,竞争日益激烈,人们对时间计量的精度要求越来越高,应用越来越广。可以说
4、时间的准确已成为各行各业安全运行的基础,如果时间出现误差而不能及时校正,会造成一系列严重的后果和无法挽回的经济损失。 设计多功能时钟的方法有很多种,可以用中小规模集成电路组成电子时钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子时钟,还可以利用对单片机编程来实现电子时钟。在众多方法中,采用单片机的电子时钟具有硬件结构简单、编程灵活、便于功能扩展等特点。由单片机作为数字时钟的核心控制器,可以通过它的时钟信号实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术(LCD)或者数码管显示技术(LED)。LED
5、具有功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。所以,本设计仍然采用数码管显示技术。温湿度传感器自从20世纪90年代中期问世以来就对人类的生活和工作产生广泛而深刻的影响,此类传感器是微电子技术、计算机技术和自动测试技术迅猛发展所产生的结晶。目前,国际上已开发出多种温湿度传感器,它主要有温度传感器、湿度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路等模块构成。有些温湿度传感器还带多路选择器、中央控制器、随机存取存储器和只读存储器,能实时更新并输出数据,适配于各种微控制器即单片机(MCU),并且可通过软件
6、来实现显示功能,其智能化由软件和硬件的综合开发水平决定,二者缺一不可。当前,从模拟式向数字式、集成化向智能化及网络化的方向转变,是新型温湿度传感器发展升级的大势所趋。毫无疑问,以后温湿传感器将不仅具有更高的精度、更多的功能,而且还能实现总线标准、可靠性及安全性高。在日常生活和自动控制系统中,人们经常会有时间和温度湿度实时监控的需求。这就给具有多种功能的时钟提供了前景广阔的市场。因此,研究多功能时钟以及扩大其应用,具有非常现实而深远的意义。1.3 多功能时钟的功能多功能时钟主要是利用电子技术将时钟电子化、数字化、智能化,拥有时间显示精确、造型小巧、界面友好、扩展性能强等特点,被广泛应用于生活和工
7、作当中。当今市场上的多功能时钟种类繁多,功能不一,有些小巧别致,有些体型较大。多功能时钟首先是数字化了的时间显示或报时器,在此基础上,人们可以根据不同的需求,在具有时钟功能的同时,增加其他功能。比如定时闹铃,万年历,环境温度、湿度检测,环境空气质量检测,USB扩展口功能等。本设计多功能时钟主要功能为:a) 具有时间显示和手动校对功能,24小时制;b) 具有定时闹钟功能;c) 具有环境温湿度采集功能;2 PIC单片机介绍2.1 PIC单片机的背景2目前单片机厂商遍布全球,产品性能各异。针对各种各样的不同需求,应选择哪个公司、何种型号的单片机产品呢?首先,我们来搞清楚这两个概念:集中指令集(CIS
8、C)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它具有丰富的指令,较强的功能,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。一般来说,控制结构简单、功能单一的小家电,可以采用RISC型单片机;在控制结构复杂、功能多样的场合,如通讯产品、工业控制系统、航空电子仪器
9、表等,则应采用CISC单片机。但是,随着近几年来RISC单片机的迅速发展完善,使其中的一些佼佼者也能在结构关系复杂的场合毫不逊色。依据不同的程序存储方式,单片机可分为EPROM,OTP(一次性可编程),QTP三钟。最开始的时候,我国使用无ROM单片机(片上无ROM,另需要外接EPROM),对单片机的普及起了很大作用,但是这种强调接口的单片机无法得到广泛使用,甚至逐步走向灭亡。如单片机的应用一味强调接口,外接I/O以及寄存器,就失去了单片机的固有特色。目前,绝大部分单片机都已将程序存储器内置其中,给应用带来了极大的方便。Microchip公司生产的PIC 8位单片机16F8X系列产品是PIC单片
10、机中级型产品之一。该系列产品的主要型号是16F83和16F84。该系列产品的最大特点是有8k14的Flash(闪速E2PROM)程序存储器和带8位的Flash(闪速E2PROM)数据存储器,其擦写次数上万次,数据保存时间大于40年。所以该系列产品非常适合那些刚开始学习单片机的新手以及那些可能会频繁改动程序代码的应用,比如,当用户发觉产品的某些功能不太令人满意时,就可以随时通过修改程序来增加或调整产品的功能。另外,对于那些学习、开发PIC单片机的个人或单位来说,其又是一种很好的可重复多次的实验芯片。PIC 8位单片机16F8X系列产品内部的Flash数据存储器不仅具有掉电保护数据的功能,而且还有
11、极高的数据保密性,这就使得PIC16F8X被广泛应用在智能IC卡、密码锁、电子防盗系统等方面,甚至航空电子方面。2.2 主要功能3u 拥有高性能的RISC结构CPU。PIC16F8X单片机与其它单片机相比,其指令集更加精简,只有35条单字节指令。同时执行速度为DC400ns。Flash程序和E2PROM数据存储器优势突出。具有多种硬件中断和直接,间接,相对三种寻址方式。u 微控制特性。PIC16F8X单片机采用上电复位方式,自振式看门狗。程序保密位使得数据更安全。同时拥有微功耗睡眠功能和四种可选的振荡方式。u 电源特性。拥有较宽工作电压,2V6V(PIC16LF84工作电压为5V)。u 温度特
12、性。拥有较宽工作温度范围,商用级为070;工作级为4085;汽车级为40125。得益于较宽的工作温度范围,使得PIC单片机产品被大量应用于各行各业。特别是汽车级产品,其应用领域甚至已经拓展到航空仪表上。2.2.1 I/O口输入/输出端口在单片机内部电路与外部世界之间起着交换数据和信息的重要作用。从外界接收到的检测信号、键盘信号等各种开关量信号由输入端口向单片机内部电路输送。向外界输送的内部电路产生的处理结果、显示信息、控制命令、驱动信号等由输出端口负责。数据的输入和输出都需通过单片机内部有关电路,再与引脚构成输入/输出(I/O)端口。PIC16F84芯片有两个I/O端口(PROTA和PORTB
13、)。端口A为5位口,端口B为8位口,共占用13位引脚。每个端口由一个锁存器(即数据存储器中的特殊功能寄存器05H、06H单元)、一个输出驱动器和输入缓冲器等组成。当把I/O口作输出时,数据可以锁存;作输入口时,数据可以缓冲。2.2.2 引脚的功能和符号4单片机外特性体现在硬件上,用户只能通过引脚的连接组建单片机系统。PIC 8位单片机系列和MCS51系列单片机一样,其引脚除电源VDD、VSS为单一功能外,其余的引脚常可具有多个功能,即引脚的复用功能。图2.2.2-1是PIC16F84的引脚功能图。图2.2.2-1 PIC16F84的引脚功能图VDD(14)、VSS(5):这是PIC电源输入引脚
14、,VDD为正电压、VSS为地线,工作电压在2.56.25V。RA0-RA3:双向I/O,TTL输入电平。RA4/TOCK1:开漏输出/输入,复用为TMRO外部时钟输入,施密特输入电平。MCLR:复位脚,低电平复位,施密特输入电平。RB0/INT:双向I/O,外部中断输入,内部有弱上拉,TTL输入电平。RB1-RB4:双向I/O,内部有弱上拉,TTL输入电平。RB5-RB7:双向I/O,内部有弱上拉,TTL输入电平,引脚电平变化可引起中断。OSC1/CLKIN:振荡器引脚/外部系统时钟输入。OSC2/CLKOUT:振荡器引脚/外部系统时钟输出。2.2.3 E2PROM结构和操作原理在EEPROM
15、与单片机内部总线之间,把两个寄存器为分界,以地址寄存器EEADR和数据寄存器EEDATA作为对话窗口,左边的工作寄存器W通过数据总线与两个寄存器进行数据传送,是由CPU执行用户程序分两次来完成,一次传送地址,一次传送数据;而右边的两个寄存器利用硬件自动实现与EEPROM之间的数据传送。EEPROM结构如2.2.3-1所示。2.2.3-1 EEPROM结构图2.2.3.1 从EEPROM中读取数据从EEPROM里内读取内容,指定单元的地址需要事先被用户程序送入EEADR中,并且将EEPGD控制位清零,然后将读操作控制位RD置1。因为数据寄存器EEDATA里的数据在下一个指令周期里才有效,所以接下
16、来可以安排指令读取数据到W。EEDATA中的数据可以被一直保留,直到下一次读操作开始或由软件送入其他数据。读取EEPROM的操作步骤归纳如下:把地址写入到地址寄存器EEADR中。把控制寄存器清0,以选定读取对象为EEPROM数据存储器。把控制位RD置一,启动本次读操作。读取已经反馈到EEDATA寄存器中的数据。2.2.3.2 向EEPROM中烧写数据5向EEPROM中写数据的过程,实质上是一个“烧写”的过程,不仅需要高电压,而且需要较长的烧写时间。向EEPROM中烧写一批数据的时间大约在毫秒级。由于安全的需要,向EEPROM中烧写数据比读取数据复杂和麻烦。向EEPROM进行一次写操作的过程需要
17、多个步骤才能完成:必须事先把地址和数据分别放入EEADR和EEDATA中,并把EEPGD位清0;再把WREN写允许位置一;最后再把WR写启动位置一。除了正在对EEPROM进行写操作之外,平时WREN位必须保持0。WREN 和WR两位的置一操作,绝对不能在一条指令的执行中同时完成,必须安排两条指令。即只有在前一次操作中把控制为WREN 置一,后面的操作才能把控制位WR置一。在一次写操作完毕之后,WREN位由软件清0。如果在一次写操作尚未完成之前,用软件清除WREN位,不会停止本次写操作过程。3 硬件设计3.1 系统的设计思路本次设计完成电子时钟时、分、秒的显示及环境温湿度测量等功能的基础上完成定
18、时闹钟,倒计时的功能。硬件电路包括总体系统电路、按键模块、DHT11温湿度传感器模块、蜂鸣器报警电路模块;软件部分主要通过C语言的编程实现电子时钟,闹钟,温湿度采集,然后通过LED将时间以及温湿度显示出来,通过按键操作实现功能的转换和屏幕的切换。设计中结合硬件、软件的分步调试,达到要求的控制效果。3.1.1 设计流程 该设计的主要流程如下:首先阅读大量参考文献,确定硬件框架图,如图3.1.1-1所示。然后在protues上进行原理图的绘制和修改,在仿真通过的情况下,购买所需要的元器件。接着把元器件焊接到各个功能电路的模块上,并结合程序进行调试。最后将各个功能的电路连接组合起来,然后再进行总体调
19、试直到成功。图3.1.1-1 硬件设计框图经过查阅各种资料和构思,设计的总体硬件电路如图3.1.1-2所示:图3.1.1-2 总体电路图3.2 温湿度传感器3.2.1 DHT11 概述6 DHT11是一款由一个电阻式测湿元件和一个NTC测温元件构成的湿温度一体化的数字传感器。将它与单片机等微处理器简单的电路连接起来,其就能够实现对本地湿度和温度信息的实时采集。DHT11将实时采集的部湿度和温度数据通过单总线一次性传递给单片机,仅仅需要一个I/O口。数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11的性能指标和特性如下:l 工作电压范围:3.5V-5.5V l 工作电流 :平均0
20、.5mA l 湿度测量范围:2090RH l 温度测量范围:050 l 湿度分辨率 :1RH 8位l 温度分辨率 :1 8位l 采样周期 :1S l 与TTL兼容(5V) 3.2.2 DHT11电路连接说明DHT11数字温湿度传感器连接方法极为简单。第一脚接电源正极,第四脚接电源地端。数据端为第二脚。可直接接主机(单片机)的I/O口。为提高稳定性,建议在数据端和电源正极之间接一只4.7K的上拉电阻。第三脚为空脚,此管脚悬空不用。DHT11的引脚说明如表3.2.2-1所示。表3.2.2-1 DHT11的引脚说明表Pin名称注释1VDD供电2DATA串行数据,单总线3NC空脚4GND接地,电源负极
21、3.3 复位电路设计在设计基于单片机的产品过程中,设计人员总会格外关注和重视单片机复位电路的设计。因为单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。我们设计的许多单片机系统在实验室调试成功后,却在现场大量出现“死机”、“程序走飞”等现象,这主要是因为单片机的复位电路设计不可靠。PIC16F84单片机复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。微分型复位电路,积分型复位电路,比较器型复位电路,看门狗型复位电路是单片机复位电路的四种主要类型。复位部分电路设计(MCLR)如图3.3-1所示。图3.3-1 复位电路图智能系统一般有手动和上电复位电路。通常
22、实现复位电路有两种途径:一是用uP监控电路,二是采用RC复位电路。uP监控电路实现简单,成本低,但复位可靠性相对较低;RC复位电路虽然成本较高,但是复位可靠性高,尤其在高可靠重复复位方面优势明显。复位是单片机的初始化操作。其主要功能是把程序计数器PCL初始化为0000H,可使16F84单片机从0000H单元开始执行程序。PIC16F84芯片有下列几种不同的复位方式。(一) 上电复位POR。(二) 在正常工作状态下通过外部MCLR引脚加低电平复位。(三) 在省电休眠状态下通过外部MCLR引脚加低电平复位。(四) 定时器WDT超时溢出复位实时监视。PIC16F84片内集成有“上电复位”POR电路,
23、对于一般应用,只要把MCLR引脚接高电位即可。在正常工作或休眠状态下用MCLR复位,只需在MCLR引脚上加一按键瞬间接地即可。在本设计中,我采用的是上电复位方式。所谓的一阶充放电电路,其实质也就是RC复位电路。电路提供的有效的复位信号在系统电源逐渐稳定的过程中具有非常重要的作用,当系统电源稳定后自动撤消复位信号。即不管单片机是在正常运行状态,还是处于睡眠和死机状态,只要按下复位开关,电路接通,在人工复位端MCLR(低电平有效)加入低电平信号,就会令其无条件复位。3.4 系统时钟电路设计时钟电路如图3.4-1所示。图3.4-1 时钟电路图单片机的系统时钟信号通常可以由两种方式获取,一种是采用时钟
24、振荡电路,另一种是由专用时序脉冲信号提供。它是整个单片机芯片内部工作的重要基本信号,同时也为单片机与其他外接芯片之间的通信提供了可靠的同步时钟信号。PIC单片机系统时钟信号的频率范围较广,理论上频率范围可为DC1-20MHz, PIC16F84时钟电路通常是自激多谐振荡器,其一般由4MHz的石英晶体、电容、片内的一个反向器、一个反馈电阻构成。C1、C2电容起着系统时钟频率微调和稳定作用,因此本多功能时钟在实际应用中一定要注意正确选择参数(这里选用20pF),并保证电路的对称性(尽可能匹配),选用质量上乘的瓷片或云母电容,温度系数应尽可能低。3.5 键盘部分电路设计按键根据结构原理可分为两种,一
25、种是触点式开关按键,如机械式开关、导电橡胶式开关等;另一种是无触点式开关按键,如电气式按键,磁感应按键等。触点式开关按键虽然寿命较短,但价格低廉。目前,触点式开关按键是单片机系统中最常见的。 按键根据接口原理也可分为两类,一类是编码键盘,另一类是非编码键盘。它们之间最主要的区别是识别键符及给出相应键码的方法。编码键盘主要是借用硬件的功能来实现对键的识别,而非编码键盘主要是利用软件来控制键盘的定义与识别。全编码键盘的突出优势是能够由硬件逻辑自动提供与键对应的编码,而且还具有去抖动和多键、窜键保护电路的功能。这种键盘使用起来非常方便,但是需要使用较多的硬件,成本较高,一般的单片机应用系统较少采用。
26、非编码键盘在使用过程中只简单地提供行和列的矩阵,采用软件来完成绝大部分其他工作。因为其经济又实用,被较多地应用于单片机系统中。在本次PIC16F84多功能时钟设计中,因为只需要几个功能键,所以可采用独立式按键结构。按键的软件结构:四个按键中S1为切换键,S2为设定键,S3为上调键,S4下调键。四个按键分别接在P1.0P1.3口,低电平表示有按钮按下,按钮没有接防抖电路,需要设计软件防抖。键盘部分电路设计如图3.5-1所示。图3.5-1 键盘部分电路设计图 调时。按下设定键后可以开始定时,过程如下:设定秒加/减按设定分钟加/减-按设定-小时加/减。 定闹钟。按下切换键后可以定时,过程如下:切换键
27、设定键秒加/减按设定分钟加/减按设定小时加/减。显示温度湿度。通过按屏幕切换键查看。3.6 蜂鸣电路设计蜂鸣器发声模块的作用:当闹钟时间到预设时间时,蜂鸣器发出预设的声音进行提示,蜂鸣发声模块电路如图3.6-1所示。图3.6-1 蜂鸣模块电路图3.7 直流稳压电源部分电源是单片机系统不可缺少的部件,PIC16F84需要一个5V电源(实际工作电压为4.0V6.0V)。因此,最简单的办法是用四节1.5V的电池串联作供电直流稳压电源4 软件设计PIC16F84单片机可以应用汇编语言和C语言进行编程。由于汇编语言与机器指令一一对应,所以用汇编语言编写的程序具有运行效率高的优势。但是C语言程序可读性高,
28、更便于理解。本设计使用C语言编程。在软件编写过程中,为了便于修改和调试,就采用了软件模块化设计思想,程序的编写编译在Hi-Tech PICC的C语言开发工具软件中完成。PICC的C语言按ANSI C来定义,并进行了C语言的扩展。PICC和ANSI C之间的区别就是PICC不支持函数的递归调用。这是因为PIC单片机的堆栈大小是由硬件决定的,资源有限,所以不支持递归调用。它的数据也遵从标准C的数据结构,PICC的数据结构是以数据类型的形式出现的。需要注意的是,PICC支持的多字节数据都采用低字节在前,高字节在后的原则7。 4.1 软件设计总体说明首先对PIC16F84、DHT11、LED数码管进行
29、初始化,时间和温湿度信息通过LED显示出来,当当前时间与设定的闹钟时间相同后,单片机通过蜂鸣模块进行报警,此时,若按下四个按键中的任意一个,报警停止,如无人工按键,报警在1分钟后停止,LED显示器继续显示时间。4.2 主程序设计第一次上电,系统先进行初始化, LED显示初始时间“09:30:00”,并开始走时。此刻若按K1键,LED显示“alarm clock”,初定闹钟时间为“10:30:00”。单片机依次开始调用键盘扫描子程序、DHT11子程序、闹铃子程序,经过延时,返回程序开头循环运行。多功能时钟主程序流程图如图4.2-1所示。图4.2-1 主程序流程图4.3 键盘子程序设计8单片机对键
30、盘扫描的方式有三种,一是随机扫描方式,即CPU完成某特定任务后,立即执行键盘扫描程序,来判断并确定键盘是否有按键输入,然后根据按键功能去执行相应的操作。二是定时扫描方式,即利用CPU内的定时中断,每隔一定时间扫描有无按键被按下。CPU在处理按键功能过程中,外界可以通过键盘命令进行干控制,如取消和暂停等操作。三是中断扫描方式。前两种扫描方式不管有没有键入操作,CPU总是在设定的时间内不断进行扫描,这损害了单片机控制系统的资源利用。由于本设计中PIC16F84单片机在系统中的主要任务是接受DHT11的数据并送出显示,完成时钟校对和温湿度显示控制。PIC16F84单片机完全有能力完成以上工作。所以采
31、用随机扫描键盘方式是非常适合的,能够让系统正常运行。单片机通过扫描键盘获取键值,并根据键值转入执行对应任务,以实现按键功能。如果没有按键按下,则程序扫描到Key=FFH,将键值Key清零,返回主程序。4.4 闹钟子程序设计9在系统处于正常运行过程中,闹钟子程序不断地用时钟分(min)与时(hour)同设定的闹铃分(clk_min)与闹铃时(clk_hour)比较,仅当满足min等于clk_min并且hour等于clk_hour的时候,进入该中断服务子程序。中断服务子程序的作用是当系统处在闹铃状态下时,若闹铃关键按下,则关闭蜂鸣器;若不按功能切换键,蜂鸣器在60s之后自动停止。 if(alarm
32、_flag=1&as=miao&am=fen&ah=shi) alarm_flag=2; if(!set_flag)&(alarm_flag=2) beercnt+; if(beercnt3) if(beercnt5) beercnt = 0; n+; else Beer_OFF; else Beer_ON; if(n=60) alarm_flag=1; n=0;结束语随着社会的不断进步,科技的快速改革,人们对时钟的功能要求越来越多,例如对时钟的造型、功能的要求。可以想见,在今后的发展过程中,单片机多功能时钟会得到越来越广泛的应用和普及。目前,因为市场上已经出现了各种各样的实时时钟日历芯片,琳
33、琅满目的IC化的传感器,日趋人性化的显示方式,所以多功能时钟可由多种方案实现,而且能够同时拥有多种实用功能,例如秒表、日历显示和校对、音乐播放等功能。本文的软件设计还可以利用汇编语言,由于本人比较擅长C语言,最终还是选择C语言进行编程。在硬件设计过程中花费时间最多的是总电路图的绘制和电路板的焊制。我的计划是首先使用PCB制板,但是考虑到PCB板的整体性、复杂性以及不容易查出问题所,而且有些同学的PCB板出现了连最小系统都调试不成功的问题,所以我最终决定运用直接按照电路图焊制的方法。虽然花费的时间就比制PCB板增加了不少,但是可以按照模块来进行一一调试,使我受益匪浅。通过这次毕业设计,使我对PI
34、C16F84单片机有了更深的认识,对Hi-Tech PICC的C语言开发环境有了更全面的理解和掌握。但是,模拟电路和数字电路基础知识掌握不透彻,制图软件还不能熟练运用让我在做毕业设计的过程中遇到很多的阻碍。我必须在以后的学习中使这些方面的知识得以加强。致谢在我的大学学习即将结束时候,我完成了毕业设计。我要由衷的感谢在毕业设计过程中给予我悉心指导的老师和热忱帮助的同学。首先要提的是我的毕业设计指导老师林刚老师。尽管林老师平时有教学上的任务,但她对我的毕业设计一点也没有省心,竭尽全力帮助我做好设计前期方案,查找相关资料,选购各种元器件,制作多功能时钟的硬件,编写源程序,修改和完善毕业设计。当我遇到
35、任何不懂的地方林老师都会耐心地指导我。林老师不厌其烦的讲解和平易近人的态度 ,使我能够及时顺利的完成毕业设计。在此,谨对有高度责任心的林老师致以最崇高的谢意。其次同学的帮助也是不能忽视的。本次毕业设计这样的任务其实对我来说是很大的考验。在我完成毕业设计的过程中,我们班上的几个同学在硬件和软件上都给予我莫大的支持和帮助。在此,我向他们表示由衷的感谢。最后则要感谢给予我优质教学服务和精彩生活的伟大母校。附录1#includepic1684.h #includepic.h #include src.h#include delay.h#include init.h#include keyscan.h#
36、include #include uchar s1num,shi,fen,miao,show_flag,set_flag=0,alarm_flag=1,as=0,am=0,ah=0;uchar ds=1,dm=0,dh=0,djs_flag=0;uchar U8FLAG,U8comdata,U8temp;uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;uchar ShiDu=23,WenDu=35;void RH(void); bit BusyTest(void)
37、bit result;RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; return result;void write_com(uchar com) while(BusyTest()=1); RS=0; RW=0; E=0; _nop_(); _nop_(); LED_PORT=com; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; void write_date(uchar date) while(BusyT
38、est()=1); RS=1; RW=0; E=0; LED_PORT=date; _nop_(); _nop_();else if(gn_flag=2) /设置闹钟delay(5);write_com(0x0f);delay(5);else if(gn_flag=3)if(o_dh != dh) o_dh = dh;write_com(0x06);delay(5);write_sfm(SHI_ADDR,dh);delay(5);write_com(0x80+0x40+SHI_ADDR);delay(5);write_com(0x0f);delay(5);if(o_dm != dm) o_dm
39、 = dm;write_com(0x06);delay(5);write_sfm(FEN_ADDR,dm);delay(5);write_com(0x80+0x40+FEN_ADDR);delay(5);write_com(0x0f);delay(5);void main()init();delay(100);while(1)keyscan();if(gn_flag=4|gn_flag=5)RH();/采集温湿度show_time();void delay_ms(int j) uchar i; for(;j0;j-) for(i=0;i27;i+);void COM(void) uchar i
40、;for(i=0;i8;i+) U8FLAG=2;while(!P2_0)&U8FLAG+);Delay_10us();Delay_10us();/Delay_10us();U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while(P2_0)&U8FLAG+);/超时则跳出for循环 if(U8FLAG=1)break;/判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 U8comdata=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;if(alarm_flag=1&as=miao&am=fen&ah=shi) alarm_flag=2;if(!set_flag)&(alarm_flag=2) beercnt+; if(beercnt3) if(beercnt5) beercnt = 0; n+; else Beer_OFF; else Beer_ON; if(n =