单片机定时闹钟毕业设计论文.docx

上传人:b****1 文档编号:2171663 上传时间:2023-05-02 格式:DOCX 页数:47 大小:155.09KB
下载 相关 举报
单片机定时闹钟毕业设计论文.docx_第1页
第1页 / 共47页
单片机定时闹钟毕业设计论文.docx_第2页
第2页 / 共47页
单片机定时闹钟毕业设计论文.docx_第3页
第3页 / 共47页
单片机定时闹钟毕业设计论文.docx_第4页
第4页 / 共47页
单片机定时闹钟毕业设计论文.docx_第5页
第5页 / 共47页
单片机定时闹钟毕业设计论文.docx_第6页
第6页 / 共47页
单片机定时闹钟毕业设计论文.docx_第7页
第7页 / 共47页
单片机定时闹钟毕业设计论文.docx_第8页
第8页 / 共47页
单片机定时闹钟毕业设计论文.docx_第9页
第9页 / 共47页
单片机定时闹钟毕业设计论文.docx_第10页
第10页 / 共47页
单片机定时闹钟毕业设计论文.docx_第11页
第11页 / 共47页
单片机定时闹钟毕业设计论文.docx_第12页
第12页 / 共47页
单片机定时闹钟毕业设计论文.docx_第13页
第13页 / 共47页
单片机定时闹钟毕业设计论文.docx_第14页
第14页 / 共47页
单片机定时闹钟毕业设计论文.docx_第15页
第15页 / 共47页
单片机定时闹钟毕业设计论文.docx_第16页
第16页 / 共47页
单片机定时闹钟毕业设计论文.docx_第17页
第17页 / 共47页
单片机定时闹钟毕业设计论文.docx_第18页
第18页 / 共47页
单片机定时闹钟毕业设计论文.docx_第19页
第19页 / 共47页
单片机定时闹钟毕业设计论文.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机定时闹钟毕业设计论文.docx

《单片机定时闹钟毕业设计论文.docx》由会员分享,可在线阅读,更多相关《单片机定时闹钟毕业设计论文.docx(47页珍藏版)》请在冰点文库上搜索。

单片机定时闹钟毕业设计论文.docx

单片机定时闹钟毕业设计论文

单片机定时闹钟

一、[电路概述]该时钟电路主要以单片机AT89S52为核心而设计的,通过单片机对信息的分析与处理控制外围设备。

电路整体设计思想是想把它做成一个实用的器件,所以在题目要求的前提下,我们又加入了星期程序,温度程序,年、月、日程序以及时间的12—24转换程序。

[关键字]:

单片机数码显示温度传感器光识电路

二、[题目分析与方案论证]按照系统设计功能的要求,初步确定设计系统由复位模块、时钟模块、温度模块、音乐模块、光识模块及显示模块共五个模块组成,后来在时钟模块的基础上又加载了日历、星期的模块

从单片机AT89S52入手,通过使用AT89S52的内部的可编程定时器/计数器,结合对外接晶振的调节来确定一个合适的振荡周期,从而确定出内部的机器周期。

再通过对内部中断程序的设置来设计出时钟程序,即设计出了电子时钟的核心。

根据题目的要求,我们设计了以下方案:

[方案一]设计中加载了年、月、日的设计,刚开始时打算用18个共阳数码管,考虑到数码管太多是毕会给硬件电路带来麻烦,经过考虑后,决定把年、月、日与时间设置到一组数码管上来,即六个数码管即能显示时间又能显示年、月、日,这样一来就方便了硬件电路;

[方案二]主控芯片使用51系列AT89S52单片机设计时温度模块设计温度元件用AD590,利用AD590以及接口电路把温度转换成模拟电压,经由ADC0804转换成数字信号,然后经AT89S52处理显示温度。

但由于AD590价钱比较贵,且只能转换成模拟电压,这样一来硬件就要增加更多的器件且又不经济,经查找发现18B20温度传感器价钱便宜且可以直接把温度转换成数字量测温范围为-55—125度,最大分辨率可达0.0625度,采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点,所以我们选择了18B20温度传感器。

附18B20温度传感器工作原理:

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并可根据实际要求通过简单的编程实现9—12位的数字值读数方式。

温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;,DS18B20的性能特点如下:

1、独特的单线接口仅需要一个引脚进行通信;

2、多个DS18B20可以并联在唯一的三线上,实现多点组网功能;

3、无须外部器件;

4、可通过数据线供电,电压范围为3.0---5.5V;

5、零待机功耗;

6、温度以9或12位数字量读出;

7、用户可定义的非易失性温度报警设置;

8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

9、负电压特性,电源极性接反是,温度计不会因发热而烧毁,但不能正常工作。

三、[系统总体结构框图]

[按键功能]

a键:

P2.1口12---24转换

b键:

P2.3口调整定时、计时的时、调整年

c键:

P2.5口调整计时的秒和定时状态及日

d键:

P2.7口判断定时到否

e键:

P2.0口调整星期

f键:

P2.2口定时、计时转换

g键:

P2.4口调整定时、计时的秒和判断定时状态、调整日

h键:

P2.6口调整定时的报警音乐、省电模式

i键:

复位键

j键:

P3.6口年、月、日的显示

四、[主要电路原理与设计]

(1)系统硬件电路的设计:

电路是由控制部分和显示部分两大部分组成。

利用单片机程序进行控制,单片机以晶体振荡器的振荡周期(或外部引入的时钟周期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。

振荡频率二分频后形成状态周期或称s周期,所以,1个状态周期包含有2个振荡周期。

振荡频率foscl2分频后形成机器周期MC。

所以,1个机器周期包含有6个状态周期或12个振荡周期。

1个到4个机器周期确定一条指令的执行时间,这个时间就是指令周期。

AT89S52单片机指令系统中,各条指令的执行时间都在1个到4个机器周期之间。

,并通过数码管进行显示单片机普遍采用锁相环技术,使单片机的时钟频率可由程序控制。

锁相环允许用户在片外使用频率较低的晶振,可以很大地减小板级噪声;而且,由于时钟频率可由程序控制,系统时钟可以在一个很宽的范围内调整,总线频率往往能升得很高。

但是,使用锁相环也会带来额外的功率消耗。

单就时钟方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种。

AT89S52单片机的时钟信号通常用两种电路形式得到:

内部振荡方式和外部振荡方式。

在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。

由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

内部振荡方式的外部电路如下图所示。

图中,电容器C01,C02起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。

晶振频率的典型值为12MH2,采用6MHz的情况也比较多。

内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。

外部振荡方式是把外部已有的时钟信号引入单片机内。

这种方式适宜用来使单片机的时钟与外部信号保持同步。

外部振荡方式的外部电路如下图所示。

如图所示:

各模块分析:

显示模块——电路先通过电源电路送出+5V电压,单片机AT89S52通过74LS47和CD4515(4—16译码器)驱动数码管显示数值,显示部分采用普通共阳极数码管显示,采用动态扫描,以减少硬件电路。

考虑到一次扫描12位数码管显示时会出现闪烁情况,设计时分两排显示,一排显示时间和年月日,一排显示星期和温度,共阳极数码管中8个发光二极管的阳极(二极管正端)连在一起。

通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。

当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。

根据发光字段的不同组合可显示出各种数字或字符。

此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

采用动态显示方式,比较节省I/O口,硬件电路也较静态显示简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多时间。

 为了提供共阳LED数码管的驱动电压,用三极管9012作电源驱动输出。

采用12MHz晶振,有利于提高秒计时的精确性。

三极管采用9012。

数码管采用红色的共阳型LED数码管,亮度高些,因为是扫描的显示方式,所以各个数码管的abcdefg各脚采用了总线并联,改动510欧姆的电阻可以改变显示亮度;

时钟模块——利用芯片内部的振荡器,然后在引脚XTAL1和引脚 XTAL2两端接晶体谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图外接晶振时,C1和C2的值通常选择30pF;C1、C2对频率有微调作用,晶体谐振器的频率12MHz。

为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。

设置了12—24两种显示状态,调整计时的按键、设置定时的按键且定时设置了3次定时、还另加载了星期、年、月、日的调整及闰年的自动调整;

温度模块——主要由18B20通过单片机AT89S52中的温度程序不断的检测温度来显示温度温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;

音乐模块——通过LM386N-1给扬声器信号来发出音乐,这个模块主要是为时钟定时到时发出音乐闹铃,而在软件部分设置了可以一次设置3次定时,每次定时到时,音乐程序中编了6种音乐,它可以自动选择6种音乐中的任一音乐响1分钟,如果中间不想让闹铃响可以按一按键,闹铃就立刻停止

复位模块——单片机复位电路是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从该状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。

无论是在单片机刚接上电源时,还是断电后或者发生故障后都要复位;单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。

单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。

值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。

说明:

表中符号*为随机状态;

A=00H,表明累加器已被清零;

特殊功能寄存器

初始状态

特殊功能寄存器

初始状态

A

00H

TMOD

00H

B

00H

TCON

00H

PSW

00H

TH0

00H

SP

07H

TL0

00H

DPL

00H

TH1

00H

DPH

00H

TL1

00H

P0~P3

FFH

SBUF

不定

IP

***00000B

SCON

00H

IE

0**00000B

PCON

0*******B

PSW=00H,表明选寄存器0组为工作寄存器组;

SP=07H,表明堆栈指针指向片内RAM07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;

Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;

IP=×××00000B,表明各个中断源处于低优先级;

IE=0××00000B,表明各个中断均被关断;

系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。

51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。

光识模块——同样也是为定时服务的,只要定时到,组成心字的18只发光二极管就会按程序先做左移位,再全亮全灭3次,然后再右移,再全亮全灭3次如此循环1分钟;

安全省电模式——电源电路上装了保险管只要电流大于额定电流保险就断来保护电路,省电模式:

不看时显示不亮,看时,按下一键显示就亮,尽量达到人性化。

五、[软件系统设计]

计时程序是实现电子时钟的核心内容,本程序用中断time0来控制,计时显示的单元从50h开始,50h=秒的个位,51h=秒的十位,52h=分的个位,53h=分的十位,54h=时的个位,55h=时的十位

org000bh

jmptime0

movtmod,#00010001b

movie,#10001010b

movip,#00000010b

movth0,#(65536-2000)/256

movtl0,#low(65536-2000)

mov4fh,#02;两个中断250次为1秒

定时报警程序

作用是判断时间是否与设置的闹钟时间相等,如相等则开启闹钟。

单片机内定时振铃开关使用软件开关,即用标志寄存器,且程序设置了3次定时,可见要使电子时钟定时打铃,必须同时具备两个条件,第一:

定时振铃开;第二:

当前定时项数不为0项。

因为要使电子时钟定时打铃,必须同时具备上述的两个条件,所以在单片机执行查询定时各项的程序之前,主程序会首先查询这两个条件是否同时满足,如果满足的话,则进行一轮查询,所谓一轮查询定时,即将当前时间与定时各项一一比较,看是否相符,如果查到某项相符,则调用音乐程序。

每查完一项,寄存器中的值会自动减1(即为定时时间的项数)。

当定时时间的项数值自动减为0时,则表示这一轮查询定时时间完毕,只要条件允许(定时音乐开且定时项数不为0),有可以进行一轮新的查询定时时间。

定时1:

33h=分,34h=时,定时2:

35h=分,36h=时,定时3:

37h=分,38h=时,定时状态=39h;定时显示的单元从60h开始,60h=定时状态,61h=此时;定时状态的音乐种类,62h=分的个位,63h=分的十位;64h=时的个位,65h=时的十位

温度程序:

57h=温度的十位,58h=温度的个位,

wendu:

CALLREST;调复位

MOVA,#0CCH

CALLWRITE调写程序

MOVA,#4EH

CALLWRITE

MOVA,#00H

CALLWRITE

MOVA,#00H

CALLWRITE

MOVA,#7FH

CALLWRITE

CALLREST

MOVA,#0CCH

CALLWRITE

MOVA,#44H

CALLWRITE

MOVR0,#20

LOOP5:

MOVR1,#100

LOOP6:

MOVR2,#250

DJNZR2,$

DJNZR1,LOOP6

DJNZR0,LOOP5

CALLREST

MOVA,#0CCH

CALLWRITE

MOVA,#0BEH

CALLWRITE

CALLREAD2;调读程序

MOVA,#0ECH

CALLWRITE

CALLHUAN

clr20h.3

ret

******初始化*************************************

org0000h;计时显示的单元从50h开始,50h=秒的个位,51h=秒的十位,52h=

jmpmain;分的个位,53h=分的十位,54h=时的个位,55h=时的十位,56h=

org000bh;星期,57h=温度的十位,58h=温度的个位,30h=秒,31h=分,32h=时,定时1:

33h=分,34h=时,

jmptime0;定时2:

35h=分,36h=时,定时3:

37h=分,38h=时,定时状态=39h

org001bh

jmptime1

************主程序********************************main:

movr0,#00;等待

djnzr0,$

movsp,#6ah;定时显示的单元从60h开始,60h=定时状态,61h=此时

movtmod,#00010001b;定时状态的音乐种类,62h=分的个位,63h=分的十位

movie,#10001010b;64h=时的个位,65h=时的十位

movip,#00000010b

movth0,#(65536-2000)/256

movtl0,#low(65536-2000)

mov4fh,#02;两个中断250次为1秒

mov4eh,#00;光报警

mov2dh,#250;中断250次为0.5秒

mov2fh,#00h;设置计时显示数码管的编号

mov2eh,#00h;设置定时显示数码管的编号

mov24h,#00h;设置年月日显示数码管的编号

mov30h,#00h;设置时间的初值

mov31h,#00h

mov32h,#12h

mov56h,#01h;

设置星期初值

mov33h,#00h;

设置定时初值

mov34h,#01h

mov35h,#00h

mov36h,#02h

mov37h,#00h

mov38h,#03h

mov39h,#01h;

设置定时状态初始值

mov3ah,#01h;设置定时状态1时音乐的初始值

mov3bh,#02h;设置定时状态2时音乐的初始值

mov3ch,#03h;设置定时状态3时音乐的初始值

mov21h,#00h;设置年初值,00表示2000年

mov22h,#01h;设置月初值

mov23h,#01h;设置日初值

setb20h.0;12,24标志位,1表示12小时制,0表示24小时制

setb20h.1;定时,计时标志位,1表示计时,0表示定时

clr20h.2;定时到否标志位,1表示到,0表示不到

setb20h.3;是否允许检测温度标志位,1表示允许

clr20h.4;

年标志位,1表示闰年

setb20h.5;

1表示31天,0表示30天

clr20h.6;1表示显示年月日

setbp3.0;上下午标志位,1表示上午,0表示下午

clrp1

setbtr0

*************星期设置程序*************************************

start:

jbp2.0,q1;调整星期

calldel;消除抖动

mova,56h

adda,#01h

cjnea,#07h,z1

mov56h,#08h

jmpa1

z1:

cjnea,#09h,z2

mov56h,#01h

jmpa1

z2:

mov56h,a

a1:

calldel

jnbp2.0,a1

jmpstart

*************设置12--24小时转换程序********************************

q1:

jbp2.1,q2;

12,24小时制转换

calldel;消除抖动

jnb20h.0,b1

jnbp3.0,b2;将12小时制转换为24小时制

jmpa2

b2:

mova,32h

adda,#12h

daa

cjnea,#24h,b3

mov32h,#00h

setbp3.0

jmpa2

b3:

mov32h,a

setbp3.0

jmpa2

b1:

mova,32h;将24小时制转换为12小时制

cjnea,#00h,b7

mov32h,#12h

clrp3.0

jmpa2

b7:

cjnea,#20h,b8

mov32h,#08h

clrp3.0

jmpa2

b8:

cjnea,#21h,b9

mov32h,#09h

clrp3.0

jmpa2

b9:

cjnea,#12h,b4

jmpa2

b4:

jncb5

jmpa2

b5:

subba,#12h

mov32h,a

clrp3.0

a2:

cpl20h.0

b6:

calldel

jnbp2.1,b6

jmpstart

*************定时计时调整程序*************************************

q2:

jbp2.2,q3;定时,计时转换

calldel;

cpl20h.1

a3:

calldel

jnbp2.2,a3

jmpstart

q3:

jbp2.3,q4;调整定时,计时的时,年

calldel;消除抖动

jnb20h.6,c00

callyearyear

jmpa4

c00:

jnb20h.1,c1

jb20h.0,c2;计时调整

mova,32h

adda,#01h

daa

cjnea,#24h,c3

mov32h,#00h

jmpa4

c3:

mov32h,a

jmpa4

c2:

mova,32h

adda,#01h

daa

mov32h,a

cjnea,#13h,c4

mov32h,#01h

cplp3.0

jmpa4

c4:

mov32h,a

jmpa4

c1:

mova,39h;定时调整

cjnea,#01h,c5

movr0,#34h

jmpc10

c5:

cjnea,#02h,c6

movr0,#36h

jmpc10

c6:

movr0,#38h

c10:

jb20h.0,c7

mova,@r0

adda,#01h

daa

cjnea,#24h,c8

mov@r0,#00h

jmpa4

c8:

mov@r0,a

jmpa4

c7:

mova,@r0

adda,#01h

daa

cjnea,#13h,c9

mov@r0,#01h

jmpa4

c9:

mov@r0,a

a4:

calldel

jnbp2.3,a4

jmpstart

q4:

jbp2.4,q5;调整定时,计时的分,月

calldel

jnb20h.6,d00

callyueyue

jmpa5

d00:

jnb20h.1,d1

mova,31h;计时分调整

adda,#01h

daa

cjnea,#60h,d2

mov31h,#00h

jmpa5

d2:

mov31h,a

jmpa5

d1:

mova,39h;定时分调整

cjnea,#01h,d3

movr0,#33h

jmpd5

d3:

cjnea,#02h,d4

movr0,#35h

jmpd5

d4:

movr0,#37h

d5:

mova,@r0

adda,#01h

daa

cjnea,#60h,d6

mov@r0,#00h

jmpa5

d6:

mov@r0,a

a5:

calldel

jnbp2.4,a5

jmpstart

q5:

jbp2.5,q6;调整计时的秒和定时的状态,日

calldel

jnb20h.6,e00

callri

jmpa6

e00:

jnb20h.1,e1

mova,30h;调整计时的秒

adda,#01h

daa

cjnea,#60h,e2

mov30h,#00h

jmpa6

e2:

mov30h,a

jmpa6

e1:

mova,39h;调整定时状态

adda,#01h

daa

cjnea,#04h,e3

mov39h,#01h

jmpa6

e3:

mov39h,a

a6:

calldel

jnbp2.5,a6

jmpstart

*************调整定时的报警音乐,省电模式*********************************

q6:

jbp2.6,q7

calldel

jnb20h.1,gh

cplp3.4

jmpi3

gh:

mova,39h

cjnea,#01h,i1

mova,3ah

adda,#01h

mov3ah,a

cjnea,#07h,i3

mov3ah,#01h

jmpi3

i1:

cjnea,#02h,i2

mova,3bh

adda,#01H

mov3bh,a

cjnea,#07h,i3

mov3bh,#01h

jmpi3

i2:

mova,3ch

adda,#01h

mov3ch,a

cjnea,#07h,i3

mov3ch,#01h

i3:

calldel

jnbp2.6,i3

jmpstart

************定时报警**

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2