毕业设计---电子万年历设计.doc_第1页
毕业设计---电子万年历设计.doc_第2页
毕业设计---电子万年历设计.doc_第3页
毕业设计---电子万年历设计.doc_第4页
毕业设计---电子万年历设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

绪 论近年来,电子技术和计算机应用领域不断扩大,电子产品已应用到各个行业,电子产品也逐步人性化。在电子产品的设计中单片机技术已经成为电子技术领域中广泛应用,引领这科技的发展浪潮。随着单片机档次的不断提高,功能的不断完善,其应用日趋成熟、应用领域日趋扩大,特别是工业测控,尖端武器和日用家电等领域更是因为有了单片机而生辉增色,不少设备、仪器已把单片机作为核心部分。单片微型计算机的诞生是计算机发展史上的一个新的里程牌。单片机不仅体积小、成本低、可靠性高,而且单片机还易于扩展,控制功能很强,使用灵活,很容易构成各种规模的应用系统,目前单片机在各个领域中都得到了广泛的应用。mcs-51系列单片机以其优越的性能,成熟的技术及高可靠性和性能价格比迅速占领了工业测控和智能化等领域,成为国内单片机应用的主流。 电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,可以将芯片与单片机结合起来,通过单片机对芯片的控制可以使走时更加的准确,也可以直接通过单片机的编写达到以上效果。对于设计者来说采用单片机来实现万年历的各种功能主要是因为单片机集成度体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大高了单片机的可靠性与抗干扰能力。液晶显示器(lcd)英文全称为liquid crystal display,是一种数字显示技术,可以通过液晶和彩色过滤器过滤光源,在平面面板上产生图象,是一种采用了液晶控制透光度技术来实现色彩的显示器,在袖珍中应用越来越广泛。液晶显示技术近几年来发展很快,各种规格的lcd显示班名目繁多,其专用驱动芯片也都相互配套,使lcd在控制和议表系统中广泛应用提供了极大的方便。在经过二十多年的研究、竞争、发展,平板显示器已进入角色,成为新世纪显示器的主流产品。第1章 设计思想及要求1.1 设计总体要求本次设计的液晶显示万年历,整个系统的要求主要是以at89s51单片机为控制中心。通过软件编程循环检测实时读取温度和时间,并送给1602液晶显示模块显示;通过按键扫描程序,进行时间校正,设置定时时间和温度上、下限报警;通过红外接收模块实现遥控控制;实现整点报时。实现的功能:(1)利用液晶显示年、月、日、星期、时、分、秒、温度。(2)利用按键进行调时。(3)利用按键进行定时时间设定。(4)利用按键进行温度上、下限报警值设定。(5)利用红外遥控进行时间调整。(6)利用蜂鸣器进行定时报警;温度上、下限报警;整点报时。1.2 系统方案设计该系统仍采用mcs-51系列单片机at89s51作为控制核心。温度检测仍采用ds18b20温度传感器;采用实时时钟芯片ds12c887计时,由于其内部自带锂电池,断电后内部计数器仍在工作,可以防止突然断电,并且可以自动进行闰年调整和设置定时时间。显示采用液晶显示模块1602,其体积小,集成度高,耗电量小。电路连线比较简单,并且制作产品体积小,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改性。软件控制程序主要有主控程序、万年历电子钟的时间控制程序、还有室内温度采集程序组成。主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序和温度采集程序是万年历电子表中比较重要的部分。时间控制程序体现了年、月、日、小时、分钟、秒及星期的计算方法。而温度采集程序主要是ds18b20对室内温度的采集以及电流/电压与数字间的转换。第2章 万年历的最小应用系统万年历电子表的最小应用系统包括at89s51芯片处理器、ds12887时钟芯片、1602液晶显示模块、18b20.2.1 芯片处理器at89s518051单片机的外形采用40条引脚双列直插封装(dip)或lcc/qfp封装. dip的引脚和逻辑符号如图2-1所示:图2-1 单片机的引脚和逻辑符号2.1.1 主要特性(1) 与mcs-51 兼容(2) 4k字节可编程闪烁存储器。寿命:1000写/擦循环数据保留时间:10年(3) 全静态工作:0hz-24hz(4) 三级程序存储器锁定(5) 128*8位内部ram(6) 32可编程i/o线(7) 两个16位定时器/计数器(8) 5个中断源(9) 可编程串行通道(10) 低功耗的闲置和掉电模式(11) 片内振荡器和时钟电路 2.1.2 管脚说明 vcc:供电电压。gnd:接地。p0口有三个功能:(1)外部扩充存储器时,当作数据总线(d0d7)。(2)外部扩充存储器时,当作地址总线(a0a7)。(3)不扩充时,可做一般i/o使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。p1口只做i/o口使用,其内部有上拉电阻。p2口有两个功能:(1)扩充外部存储器时,当作地址总线(a8a15)使用。(2)做一般i/o使用。其内部有上拉电阻。p3有两种功能:除了作为i/o使用外(内部有上拉电阻),还有一些特殊功能,如表2-1所示,由特殊寄存器来设置。表2-1 端口引脚的特殊功能端口的引脚特 殊 功 能p3.0rxd(串行输入口)p3.1txd(串行输出口)p3.2/int0(外部中断)p3.3/int1(外部中断)p3.4t0(timer0的外部输入脚)p3.5t1(timer1的外部输入脚)p3.6/wr(外部数据存储器的写入控制信号)p3.7/rd(外部数据存储器的读取控制信号)端口1、2、3有内部上拉电路,当作输入时,其电位被拉高,若输入为低电平可提供电流源,其作为输出时可驱动4个lettl。而端口0当作输入时,处在高阻抗的状态,其输出缓冲器可驱动8个lettl(需要外部的上拉电阻)。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。/psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。 2.1.3 定时器/计数器方式控制寄存器tmod特殊功能寄存器tmod 用来确定定时器/计数器0和1的工作方式,其低4位用于定时器/计数器0,高4位用于定时器/计数器1,tmod的格式如表2-2:表2-2tmod的格式 d7d6d5d4d3d2d1d0gatec/tm1m0gatec/tm1m0(1) 定时器/计数器功能选择位c/t。c/t=“1”为计数器方式,c/t=“0”为定时器方式。(2) 定时器/计数器工作方式选择位m0,m1 。定时器/计数器4种工作方式的选择由m1,m0的值决定,见表2-3所示:表2-3定时器/计数器4种工作方式m1 m0 工作方式0 0方式013位定时器/计数器0 1方式116位定时器/计数器1 0 方式2具有自动重装初值的8位定时器/计数器1 1方式3定时器/计数器0分为两个8位定时器/计数器,定时器/计数器在此无意义。(3)门控制位gate如果gate=“1”,定时器/计数器0的工作受芯片引脚int0(p3.2)控制,定时器/计数器1的工作受芯片引脚int1(p3.3)控制;如果gate=“0”,定时器/计数器的工作与引脚int0,int1无关。复位时gate=“0”2.1.4 定时器/计数器控制寄存器tcon tcon高4位用于控制定时器0,1的运行,其d7,d6两位用于定时器/计数器1,d5,d4两位用于定时器/计数器0;低4位用于控制外部中断,与定时器/计数器无关。tcon的格式如 表2-4:表2-4 tcon的格式d7d6d5d4d3d2d1d0tf1tr1tf0tr0ie1it1ie0it0 (1)定时器/计数器运行控制位tr0 ,tr1。tri=“1”时。启动定时器/计数器工作。tri=“0”,停止定时器/计数器工作。tri由软件置“1”或清“0”。(2) 定时器/计数器1溢出中断标志tf0,tf1。定时器/计数器计满溢出时,由硬件自动置tfi=“1”。在允许中断的条件下,向cpu发出定时器/计数器的中断请求信号:cpu响应中断,转入中断服务程序时,tfi由硬件自动清零。在中断屏蔽条件下,tfi作为查询测试用,但是需要用程序清“0”。 在工作方式1时,计数器的计数初值由公式2-1求出: n=216-x= 65536-x (公式2-1)式子中x为计数次数,范围为165536。定时器的定时时间由公式2-2求出: t=(65536-x)tc (公式2-2)如果fosc=12mhz,那么定时范围为1s 65536s。2.1.5 复位 8051片内的复位电路复位引脚rst/vpd通过片内施密特触发器(滤除噪声)与片内复位电路相连。复位电路在每一个机器周期的s5p2去采样施密特触发器的输出。欲使单片机可靠复位,要求rst/vpd复位保持两个机器周期(24个时钟周期)以上的高点平。复位不影响内部ram中数据。复位后,pc=0000指向程序存储器0000h 地址单元,使cpu从首地址0000h单元开始重新执行程序,所以单片机系统在运行出错或进入死循环时,可以按复位键重新启动。2.1.6 中断源定时脉冲中断源又称为定时器中断源,是由定时脉冲电路或定时器产生。定时脉冲中断源用于产生定时器中断。定时器中断有内部和外部之分,内部定时器中断由单片机内部的定时器/计数器溢出时自动产生,故又称为内部定时器溢出中断;外部定时器中断通常由外部定时电路的定时脉冲通过cpu的中断请求输入线引起。不论是内部定时器中断还是外部定时器中断都可以使cpu进行计时处理,以便达到时间控制的目的。2.1.7 掉电模式为了进一步降低功耗通过软件可实现掉电模式,该模式中振荡器停振并且在最后一条指令执行进入掉电模式降到2.0 伏时片内ram 和sfr 保持原值在退出掉电模式之前vcc 必须升至规定的最低操作电压。硬件复位或外部中断均可结束掉电模式硬件复位使sfr 值重新设置但不改变片内ram 的值外部中断允许sfr 和片内ram 都保持原值。要正确退出掉电模式在vcc 恢复到正常操作电压范围之前复位或外部中断不会被执行并且要保持足够长的时间 ( 通常不小于10ms ) 以使振荡器重新启动并稳定下来。使用外部中断时int0 和int1 必须使能且配置为电平触发将管脚电平拉低使振荡器重新启动退出掉电模式后将管脚恢复为高电平一旦中断被响应reti 之后所执行的是进入掉电模式指令的后一条指令。2.2 ds12887时钟芯片 日历时钟芯片ds12887外部采用24个管脚的双列直插式封装,如图2-2 : 图2-2 ds12887 的引脚和逻辑符号2.2.1 ds12887主要功能简介 (1) 管脚与日历时钟芯片mc146818b及ds1287兼容.(2) 在断电情况下,数据可保存10年不变。(3) 芯片内部具有时钟电路,可自动记录秒,分钟,小时,星期,日,月,年等数据,数据格式有两种,二进制和bcd码形式。小时数据方式可采用12小时形式或24小时形式记录。(4) 芯片内部还包含有114字节的nvsram区,14字节专用寄存器和时钟数据寄存器。(5) 具有总线兼容的中断信号irq, 3个独立的中断源.2.2.2 原理及引脚说明 ds12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失ram,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。ds12887引脚分配如图1: vcc:直流电源+5v电压。当5v电压在正常范围内时,数据可读写;当vcc低于4.25v,读写被禁止,计时功能仍继续;当vcc下降到3v以下时,ram和计时器供电被切换到内部锂电池。 mot(模式选择):mot引脚接到vcc时,选择motorola时序,当接到gnd时,选择intel时序。 sqw(方波信号输出):sqw引脚能从实时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器a编程改变。 ad0-ad7(双向地址/数据复用线):总线接口,可与motorola.htm target=_blank title=motorola货源和pdf资料motorola微机系列和intel微机系列接口。 as(地址选通输入):用于实现信号分离,在ad/ale的下降沿把地址锁入ds12887。 ds(数据选通或读输入):ds/rd引脚有两种操作模式,取决于mot引脚的电平,当使用motorola.htm target=_blank title=motorola货源和pdf资料motorola时序时,ds是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,ds指示ds12887驱动双向总线的时刻;在写周期,ds的后沿使ds12887锁存写数据。选择intel时序时,ds称作(rd),rd与典型存贮器的允许信号(oe)的定义相同。 r/w(读/写输入):r/w引脚也有两种操作模式。选motorola.htm target=_blank title=motorola货源和pdf资料motorola时序时,r/w是低电平信号时,指示当前周期是读或写周期,ds为高电平时,r/w高电平指示读周期,r/w信号一低电平信号,称为wr。在此模式下,r/w引脚与通用ram的写允许信号(we)的含义相同。 cs(片选输入):在访问ds12887的总线周期内,片选信号必须保持为低。 irq(中断申请输入):低电平有效,可作微处理的中断输入。没有中断的条件满足时,irq处于高阻态。irq线是漏极开路输入,要求外接上接电阻。 reset(复位输出):当该脚保持低电平时间大于200ms,保证ds12887有效复位。 2.2.3 时钟、日历单元在芯片ds12887内部具有一个自动计时单元电路,它可以自动记录秒,分钟,小时等时钟数据,并将数据保存在相应的单元中,同时芯片内部还有一个100年日历,可自动记录日历数据.通过对寄存器的访问,便可获知时钟和日历数据.这10个寄存器的内容还可以由程序初始化,数据方式既可以是二进制码的形式,也可以是bcd码形式,但这10个字节数据的存储必须采取同种方式.当需要对这些字节初始化时,首先确定数据的存储方式,然后将寄存器b中的数据方式位(dm)置为相应的格式,第三步,将寄存器b中的置位位(set)置为1,接着把数据写入须初始化的单元,在数据写完后,必须将寄存器b中的置位位(set)清0,以便时钟电路能够自动校正时钟和日历数据.(1) 定时单元的介绍在前10个时钟日历单元寄存器中,有3个定时单元,分别为秒定时,分钟定时以及小时定时.这3个定时单元有两种使用方法:第一:当在这3个单元中写入每天指定的时间后,若定时中断使能位为高电平,则在每天的指定时刻,均会发出中断信号.第二:当在这3个单元中写入00- ff之间的任意一个非定时数据时,则会产生如下情形:若在小时定时单元中写入该范围的任意一个数据时,芯片在每小时会发出一次中断请求信号;若在小时定时单元和分钟定时单元写入该范围的数据,则芯片在每分钟发出一次中断信号;若在这3个定时单元中都写入该范围的数据,则芯片在每秒钟发出一次中断信号. (2) 中断为了使芯片的功能更加完善,ds12887内部设置了3个独立的中断源,包括定时中断,周期中断以及校准中断.对于这3个中断,寄存器b及寄存器c都有相应的控制位来分别控制这3个中断的产生。在寄存器b中,有3个中断使能位,当需要使用某个中断产生中断信号时,必须先将相应的中断使能位置1,芯片才能允许相应的中断信号从1rq端输出,若在中断使能位写入0,则禁止相应的中断信号产生.在寄存器c中,有3个中断标志位,与3个中断源是一一对应的.当某个中断发生时,相应的中断标志位被自动置1,须注意的是,这些中断标志位与对应的中断使能位的设置是不相关的,当中断使能位设置为0时,虽然不产生中断信号,但当中断的条件满足时,中断标志就会被置1。所以,中断标志位是一种状态位,用户可通过软件查询这些状态位,当某个中断标志位是1时,表示此中断已经产生了一次.每读取一次寄存器c的内容后,这些标志位都会被清0.当某个中断标志位及中断使能位都为有效时,才会使irq脚产生有效信号(低电平)。(3) 校准中断日历时钟芯片ds12887内部具有一个时钟电路,它在每秒钟都会产生一个校准信号来校准寄存器中的日历和时钟数据。在校准周期中,同样会将定时单元中的数据与相应的时钟单元数据进行比较,若二者相同,则发出定时到的信号.在内部电路进行时钟校准时,不能对时钟及日期寄存器进行访问,否则会打乱寄存器中的数据.为了避免这种情况的产生,可以采取2种方法:第一种方法是采用校准中断.如果校准中断开放,则在每一个校正周期结束后都会发出中断信号,表明有多于999ms的时间可用于读取有效的时钟及日历数据.在中断响应完毕后,必须读取寄存器c,将中断标志清0.第二种方法是将寄存器a中的校准标志位uip来判断校准周期是否正在进行中.在寄存器a中有一个校准进行标志位uip,它是一个状态标志位,它在每秒针产生一个高电平.当它为1时,表明校准周期马上要进行,此时不能读取时钟及日期数据;当它为0时,表明有244微秒的时间可用来读取数据,因此中断服务程序读取数据时应避免超过244微秒.2.3 1602液晶显示模块1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是01000001b(41h),显示时模块把地址41h中的点阵字符图形显示出来,我们就能看到字母“a”。2.3.1 原理及引脚说明vdd 接5v正电源vss 地电源 v0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度。rs 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 rw 为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和rw共同为低电平时可以写入指令或者显示地址,当rs为低电平rw为高电平时可以读忙信号,当rs为高电平rw为低电平时可以写入数据。e 端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。d0d7为8位双向数据线。2.3.2 主要技术参数 1602的主要技术参数见表2-5:表2-5 1602液晶显示屏主要技术参数2.4 温度传感器ds18b202.4.1 ds18b20的主要特性(1)独特的单线接口方式:ds18b20与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。 (2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0+5.5 v。(4)测温范围:-55 +125 。固有测温分辨率为0.5 。(5)通过编程可实现912位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个ds18b20可以并联在惟一的三线上,实现多点测温度。 (8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2.4.2 ds18b20工作原理ds18b20的读写时序和测温原理与ds1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 ds18b20测温原理如图2-3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固图2-3 测温原理图定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3-1中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。2.4.3 ds18b20有4个主要的数据部件 (1)光刻rom中的64位序列号是出厂前被光刻好的,它可以看作是该ds18b20的地址序列码。64位光刻rom的排列是:开始8位(28h)是产品类型标号,接着的48位是该ds18b20自身的序列号,最后8位是前面56位的循环冗余校验码(crc=x8+x5+x4+1)。光刻rom的作用是使每一个ds18b20都各不相同,这样就可以实现一根总线上挂接多个ds18b20的目的。 (2)ds18b20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/lsb形式表达。这是12位转化后得到的12位数据,存储在18b20的两个8比特的ram中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。(3)ds18b20温度传感器的存储器:ds18b20温度传感器的内部存储器包括一个高速暂存ram和一个非易失性的可电擦除的eepram,后者存放高温度和低温度触发器th、tl和结构寄存器。 (4)配置寄存器:该字节各位的意义如表2-6:表2-6 配置寄存器结构 低五位一直都是1,tm是测试模式位,用于设置ds18b20在工作模式,还是在测试模式。在ds18b20出厂时该位被设置为0,用户不要去改动。r1和r0用来设置分辨率。2.4.4 ds18b20使用中注意事项ds1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:(1) 较小的硬件开销需要相对复杂的软件进行补偿,由于ds1820与微处理器间采用串行数据传送,因此,在对ds1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用pl/m、c等高级语言进行系统程序设计时,对ds1820操作部分最好采用汇编语言实现。(2) 在ds1820的有关资料中均未提及单总线上所挂ds1820数量问题,容易使人误认为可以挂任意多个ds1820,在实际应用中并非如此。当单总线上所挂ds1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(3)连接ds1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用ds1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。(4)在ds1820测温程序设计中,向ds1820发出温度转换命令后,程序总要等待ds1820的返回信号,一旦某个ds1820接触不好或断线,当程序读该ds1820时,将没有返回信号,程序进入死循环。这一点在进行ds1820硬件连接和软件设计时也要给予一定的重视。第3章 万年历电路工作原理该系统原理图可分为六个部分。分别是单片机最小系统外接模块、调时按键和指示模块、显示电路模块、定时报警模块、电源电路模块、温度传感器和红外接收模块、时钟芯片电路模块。如图3-1所示。图3-1 万年历原理框图单片机最小系统外接模块:10uf电解电容c3,按键s6和r1组成复位电路。当s6按下时,r1上产生压降使单片机9脚产生高电位,使单片机复位。11.0592m晶振c3和c4组成晶振电路。调时按键和指示模块:指示模块本系统设置了5个功能选择键均采用独立式按键,在p1口作为调时按键输入口,在编程软件是采用查询方式。调时指示发光二极管阳极连在一起接5v电源,阴极经510限流电阻(保证流过发光二极管的电流在515ma范围内)接p12口。当有按键按下时,调时指示发光二极管亮,进入按键操作状态。时钟芯片电路模块:该系统中采用ds12c887,对年、月、日、时、分、秒进行计时,同时显示年、月、日、时、分、秒等信息,还具有时间校准功能。地址数据复用口与单片机的p2口相连,其他功能控制引脚与单片机的p3口相应引脚相连。显示电路模块:该系统中采用液晶显示模块1602来显示时间、温度。单片机p0口与1602液晶显示模块的数据口相连,1602的读写使能端接地。功能控制端与单片机的p3口相应管脚相连。温度传感器:数据接口与单片机的p1.0相连红外接收模块:红外接收采用hrm0038红外接收器。它内部包含了红外光接收、电信号放大、整形、解调等电路,不需要任何外接元件,可独立完成从红外线接收到输出兼容ttl电平信号的所有工作,没有红外输入信号时为高电平,接收到红外信号时为低电平第1脚为gnd,第2脚为5v,第3脚为out输出。定时报警模块:该系统利用ds12c887的定时功能和单片机的外部中断1实现报时,当当前时间与设定的定时时间一致时,ds12c887的irq引脚输出脉冲,单片机外部中断1与irq引脚相连,就会响应外部中断,通过软件编程就可控制蜂鸣器报警。还可通过编程控制报警时间和整点报时等。蜂鸣器是一种采用直流电压供电的一体化结构的电子讯响器。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。当p1.1为“1”时蜂鸣器不响,当p1.1为“0”时蜂鸣器响。电源电路模块:v以上的电压经7805稳压块输出稳定的+5v电压,其中7805三个管脚的功能是“1”进“2”地“3”出。输出后经10uf电解电容滤波,使+5v电压更加稳定可靠,r6,d2串联组成电源指示电路。第4章 硬件电路的设计4.1 电路板的绘制4.1.1电路板的绘制步骤(1) 电路原理图的设计:电路原理图的设计主要是protel99se的原理图设计系统来绘制电路原理图。在这一过程中,要充分的利用protel99se所提供的各种原理图绘图工具、各种编辑功能,来实现设计目的。(2)印制电路板的设计:印制电路板的设计主要是针对protel99se的另一个重要的部分pcb而言的,在这个过程中,我们借助protel99se提供的强大功能实现电路板的版面设计,完成高难度的工作。4.1.2 电路板的绘制的注意事项(1)绘制原理图合理选用元件,管脚标号要与元件封装对应。(2)元件库和封装库中找不到元件要根据事物自定义元件。(3)进行电路布局时要考虑好特殊元件的位置。例如:按键和较高的元件不能布置在液晶屏下面,电位器和电源插头要靠边放置。(4)在手动布线时实在补偿不了就要用到飞线采用跳线(5)需要在元件引角之间走线时选用长短不对称的焊盘往往事半功倍。元件焊盘孔的大小要按元件引脚粗细分别编辑确定,原则是孔的尺寸比引脚直径大0.2-0.4毫米(6)大面积铺铜无论是做成网格或是铺实铜,要求距离板边大于0.5mm.对网格的无铜格点尺寸要求大于15mil15mil4.2电路板的制作4.2.1电路板的制作过程(1)将电路图打印在转印纸上。(2)按设计好的尺寸切割好电路板。(3)将打印好的电路图紧贴在割好的电路板上,待转印机的温度上升到120度时进行热转印。(4)将电路板放入fe2(so4)3溶剂里,腐蚀掉多余的铜,并将焊孔打通。4.2.2元件的检测(1)电阻:用万用表测量电阻的阻值,并与读数加以比较,检测其是否符合要求。(2)电容:用数字万用表测量电容电阻。其中,磁片电容的电阻必须为无穷大。电解电容的电阻要求在兆欧以上。(3)三级管:用万用表hfe档测量电压放大系数。管脚顺时针方向依次为:ebc/bce。(4)led发光二极管: 用万用表测量到地电压(1.6v),而且二极管亮灯。4.2.3电路板的焊接顺序(1)焊接电阻和跳线:在电阻焊好后,用斜口钳将电阻管脚剪下放好,用于跳线的焊接。焊接时,应对应pcb板图确保焊接正确无误。 (2)晶振、磁片电容和芯片底座的焊接。(3)安键和发光二极管的焊接:焊接前应先判断发光二极管的极性。(4)电解电容、电源插座、8550、ds18b20、蜂鸣器的焊接。 (5)红外接收模块hrm0038和稳压块7805的焊接。(6)液晶模块的焊接。4.2.4电路板的焊接的注意事项(1)为了使焊件和焊锡之间有良好的接触,焊件表面必须保持清洁。在焊接前必须把氧化膜清除干净,否则将无法保证焊接质量。(2)要使用合适的助焊剂。不同的焊接工艺应使用不同的助焊剂。在焊接电子线路板等精密电子产品的时候,为了使焊接可靠稳定,通常采用松香作为助焊剂。一般使用酒精将松香溶解成松香水使用第5章 软件设计 本章在对设计软件时,要综合各模块的特点、原理等。特别是在读时间、调时间、定时、设温度、调温度、初始化、显示时间等要依据其芯片的时序、设置等。5.1 时钟芯片ds12887读写时序 时钟芯片ds12887读写时序如图5-1和图5-2所示:图5-1 ds12887读时序图图5-2 ds12887写时序图5.2 液晶显示模块16025.2.1基本操作时序如图5-3、5-4:读状态:输入:rs=l,rw=h,e=l 输出:d0d7=状态字写指令:输入:rs=l,rw=l,d0d7=指令码,e=高脉冲 输出:无读数据:输入:rs= h,rw=h,e= h 输出:d0d7=数据写数据:输入:rs= h,rw=l,d0d7=数据,e=高脉冲 输出:无图5-3 1602的读操作时序图5-4 1602的写操作时序5.2.2 初始化设置(1) 显示模式的设置表5-1 显示模式指令设置(2)显示开关及光标设置表5-2 显示指令码功能5.3 ds18b20的时序图ds18b20操作顺序:初始化,rom操作命令,暂存存储器操作命令;在rom操作命令中可用:读rom命令(33h)和搜索rom命令(f0h)来获取传感器时序。(1) ds18b20的复位时序如图5-5所示:图5-5 ds18b20的复位时序(2) ds18b20的读时序对于ds18b20的读时序分为读0时序和读1时序两个过程。如图5-6所示:图5-6 ds18b20的读时序(3) ds18b20的写时序如图5-7所示:对于ds18b20的写时序仍然分为写0时序和写1时序两个过程。图5-7 ds18b20的写时序第6章 设计流程图及程序6.1 按键子程序开始置位p3口结束显英语子程序显汉字子程序显数字子程序p3.5口是否为0p3.3口是否为0yyynnnp3.4口是否为0按键子程序:首先,查询p3.3键是否按下,如果按下则转入相应的显示子程序,如果没有检查p3.4键是否按下,如果按下则转入相应的显示子程序,如果没有检查p3.5键是否按下,如果按下则转入相应的显示子程序,如果没有则结束该按键子程序,返回。但由于jnb跳转指令的范围太短,故进行以下修改,让起先跳转到某处,再由该处进行长跳转。保证不出其范围。按键子程序流程图如图6-1所示:图6-1 按键子程序流程图由其流程图,得其子程序如下:anjian: jnb p3.3,xianshu ;按键子程序jnb p3.4,xianhanjnb p3.5,englishretxianshu: ljmp xianshuzuoxianhan: ljmp xianhanzuoenglish: ljmp englishzuo6.2 延时子程序延时子程序采用通用的一秒延时子程序。由于单片机选用的晶振为11.592,所以一个指令码大约为1u,所以一秒的时间大约是100 000次,即8250250。故得其子程序如下:delay: mov r7,#8 ;延时子程序 del1: mov r6,#250 del2: mov r5,#250 djnz r5,$ djnz r6,del2 djnz r7,del1 ret 6.3 送指令子程序和送数据子程序在acm12864模块中,指令放在以3800h为地址开始的一段存储区,数据放在以7800h为地址开始的一段存储区。故需将单片机发出的指令和数据分别送往其对应的寄存器地址。因而得其子程序如下: outi: push dph ;送指令子程序 push dpl mov dptr,#3800h movx dptr,a pop dpl pop dph ret outd: push dph ;送数据子程序 push dpl mov dptr,#7800h movx dptr,a pop dpl pop dph ret6.4 半屏送一页数据代码子程序在acm12864中,使用1616点阵字模,而字模由专门的字模提取程序而得。但每次传送8字节,所以又分为两个816。在acm12864中,以8为列,16为行,每次一行送完再送下一行。整个显示屏又分左右两个半屏,每屏6464。综上所述,结合附录a原理图,得其子程序流程图如图6-2所示: 开始设置送数次数在代码中依照次数查找对应的数,并将该数送入a调送数据子程序,送出a中数据次数加1余数是否为零次数除以16调延时子程序调按键子程序一页数据是否送完结束nyyn图6-2 半屏送一页数据代码子程序流程图结合流程图,得其程序如下:song1hang: push acc ;送一页数据子程序 mov r1,#00h ;设置第0个代码号 xian1: mov a,r1 movc a,a+dptr ;查找对应的数码 lcall outd ;送数码 nop inc r1 ;准备下一轮查询 mov b,#10h mov a,r1 div ab jb b,xian2 ;看是否够一个字的代码? lcall delay lcall anjian xian2: cjne r1,#3eh,xian1 lcall delay lcall anjian pop acc ret6.5 全屏显示子程序由于全屏显示数据或汉字或英语子程序的原理相同,只是字模不同,故共用一个子程序流程图,所以把它们列在一起一并说明,程序以送数据子程序为例。在设置好一页的起始行和起始列之后,调送一页代码子程序,将对应的显示字模送入显示屏。先送左半屏,后送右半屏。依此,得其流程图和送数据子程序流程图6-3:置左半屏显示起始页,调送指令子程序送该页代码首地址置该页显示起始行,调送指令程序置显示起始列,调送指令子程序调送一页代码程序置下一页代码首地址页地址增1置该页显示起始行是否送够两页结 束开 始置右半屏显示起始页,调送指令子程序送该页代码首地址置该页显示起始行,调送指令子程序置显示起始列,调送指令子程序调送一页代码子程序置下一页代码首地址页地址增1置该页显示起始行是否送够两页yynn图6-3 全屏显示数据或汉字或英语子程序xianshuzuo:mov r2,#01h ;显数左半屏 mov dptr,#tab1z ;送代码首地址 mov a,#0c8h ;置显示起始行 lcall outi lcall delayxianshuzuo0:mov a,#41h ;置显示起始列 lcall outi lcall delay lcall song1hang inc r2 mov dptr,#tab2z ;送下一页代码首地址 mov a,#0d0h ;置显示起始行 lcall outi lcall delay cjne r2,#03h,xianshuzuo0 ;是否送完两页?是送右半屏,不是继续左屏xianshuyou:mov r3,#01h ;送右半屏 mov dptr,#tab1y ;送首地址 mov a,#0c8h ;置显示起始行 lcall outi lcall delayxianshuyou0:mov a,#41h ;置显示起始列 lcall outi lcall delay lcall song1hang ;调一页子程序 inc r3 mov dptr,#tab2y ;送下一页代码首地址 mov a,#0d0h ;置显

温馨提示

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

评论

0/150

提交评论