单片机的多功能时钟设计与实现.docx

上传人:b****8 文档编号:30665264 上传时间:2023-08-19 格式:DOCX 页数:39 大小:418.90KB
下载 相关 举报
单片机的多功能时钟设计与实现.docx_第1页
第1页 / 共39页
单片机的多功能时钟设计与实现.docx_第2页
第2页 / 共39页
单片机的多功能时钟设计与实现.docx_第3页
第3页 / 共39页
单片机的多功能时钟设计与实现.docx_第4页
第4页 / 共39页
单片机的多功能时钟设计与实现.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

单片机的多功能时钟设计与实现.docx

《单片机的多功能时钟设计与实现.docx》由会员分享,可在线阅读,更多相关《单片机的多功能时钟设计与实现.docx(39页珍藏版)》请在冰豆网上搜索。

单片机的多功能时钟设计与实现.docx

单片机的多功能时钟设计与实现

编号

·#%#%#%#%#¥%#¥%学院

毕业论文

题目

基于单片机的多功能时钟设计与实现

学生姓名

李瓜瓜

学号

233341504376006

系部

电子工程系

专业

应用电子技术

班级

12434355450760

指导教师

龙哥

顾问教师

二〇一〇年六月

摘要

本文主要介绍了基于单片机的多功能时钟设计与实现。

语音时钟在社会生活中已经得到了广泛应用,本文探讨的系统即为其中一种,给出的实现方案和系统设计过程中实现的单片机模拟单线总线通信方式,单片机模拟SPI通信方式,有一定参考价值。

此外,文中探讨的系统也对传统的语音时钟做了扩充,增加了数字温度计模块。

本文分系统硬件设计、系统软件设计和系统调试几块,将如何实现带数字温度计的语音时钟的方案做了阐述。

介绍了以AT89C52单片机为核心,控制实时时钟芯片DS1302,数字温度芯片DS18B20,语音芯片ISD4003-4和液晶显示模块OCM12864-1,实现时间和闹钟的显示与调整,温度显示和语音报时。

整个系统的软件设计在Keil环境下以C语言实现。

 

关键词:

实时时钟;语音报时;液晶显示;数字温度芯片

 

Abstract

Thisarticlemainlyintroducedthemulti-functionclockbasedonsinglechipdesignandimplementation.Speechclockinsociallifehasbeenwidelyusedinthispaper,thesystemisoneoftheimplementationscheme,systemdesignandrealizationprocesssimulationofsinglechipmicrocontrollerfieldbuscommunication,communication,SPIsimulatecertainreferencevalue.Inaddition,thispaperdiscussesthesystemclockonthetraditionalphonetics,increasedtheexpansiondodigitalthermometermodule.

Thissystemhardwaredesign,softwaredesignandsystemcommissioning,andhowtoimplementafewblockswithdigitalvoicethermometer,expoundstheschemeoftheclock.IntroducedbyAT89C52singlechip,controlreal-timeclock,digitaltemperatureDS1302chipDS18B20,chipISD4003voicechip-4andLCDmoduleOCM12864-1,realizethattimeandalarmandadjustment,temperatureandtime.ThewholesysteminthesoftwaredesigninClanguageKeilenvironment.

 

Keywords:

Real-TimeClock;Voicebroadcast;LCD;DigitalTemperatureChip

第一章绪论

1.1发展现状、目的及意义

科技的进步需要技术不断的提升。

一块大而复杂的模拟电路花费了工程师们巨大的精力,繁多的元器件增加了劳动的成本。

而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使以前的电路简单很多。

单片机技术的出现,不管在开发或是工作上,都为我们带来了意想不到的惊喜。

现在基于单片机的多功能时钟在市面上已经有了广泛的应用,但是价格都比较昂贵,所以我们应该设计一些既符合市场需求而且价格也实惠的多功能时钟。

1.2设计的内容

设计的主要内容:

系统硬件设计:

以AT89C52单片机为核心,控制实时时钟芯片DS1302、数字温度芯片DS18B20、语音芯片ISD4003-4和液晶显示模块OCM12864-1,实现时间和闹钟的显示与调整,温度显示和语音报时。

系统软件设计:

包含主程序设计、语音芯片录放音程序设计、实时时钟程序设计、温度芯片程序设计、液晶显示程序设计五部分。

系统调试:

包含电路板焊接调试与keil-Proteus联调两种方式。

 

第二章系统硬件设计

2.1整体框架

系统结构如图2-1所示。

本方案采用单片机AT89C52作为控制单元,与数字温度芯片DS18B20接口获取温度数据,与实时时钟芯片DS1302接口获取时间/日历数据,通过与液晶模块OCM12864-1接口显示温度、时间和日历。

图2-1中的按键中断模块包含了四个按键,分别与单片机的INT0,INT1,T0,T1连接,实现四个外部中断源,用以调整时间和闹钟,开关闹钟和控制语音报时。

图2-1系统结构图

2.2主控器芯片

 AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

  AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

  AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

图2-2AT89C52引脚图

主要功能特性:

·兼容MCS51指令系统·8k可反复擦写(>1000次)FlashROM

·32个双向I/O口·256x8bit内部RAM

·3个16位可编程定时/计数器中断·时钟频率0-24MHz

·2个串行中断·可编程UART串行通道

·2个外部中断源·共8个中断源

·2个读写中断口线·3级加密位

·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能

2.3实时时钟芯片DS1302

2.31DS1302的结构及工作原理

DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

2.32引脚功能及结构

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为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。

只有在SCLK为低电平时,才能将RST置为高电平。

I/O为串行数据输入输出端(双向),后面有详细说明。

SCLK始终是输入端。

图2-3为DS1302的引脚功能图

图2-3DS1302引脚图

2.3.3DS1302内部寄存器

CH:

时钟停止位寄存器2的第7位12/24小时标志

CH=0振荡器工作允许bit7=1,12小时模式

CH=1振荡器停止bit7=0,24小时模式

WP:

写保护位寄存器2的第5位:

AM/PM定义

WP=0寄存器数据能够写入AP=1下午模式

WP=1寄存器数据不能写入AP=0上午模式

TCS:

涓流充电选择DS:

二极管选择位

TCS=1010使能涓流充电DS=01选择一个二极管

TCS=其它禁止涓流充电DS=10选择两个二极管

DS=00或11,即使TCS=1010,充电功能也被禁止

表2.1RS位

RS位

电阻

典型位

00

没有

没有

01

R1

2K

10

R2

4K

11

R3

8K

2.4温度传感器DS18B20

2.4.1DS18B20结构及工作原理

DS18B20数字温度计提供9位温度读数,指示器件的温度。

信息经过单线接口送入DS18B20或从DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线(和地)。

读、写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。

因为每一个DS18B20有唯一的系列号(siliconserialnumber),因此多个DS18B20可以存在于同一条单线总线上。

这允许在许多不同的地方放置温度灵敏器件。

此特征的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。

2.4.2特性

◆独特的单线接口,只需1个接口引脚即可通信

◆多点(multidrop)能力分布式温度检测应用得以简化

◆不需要外部元件

◆可用数据线供电

◆不需备份电源

◆测量范围从-55℃至+125℃,增量值为0.5℃。

等效的华氏温度范围是-67°F至257°F,增量值为0.9°F

◆以9位数字值方式读出温度

◆在1秒(典型值)内把温度变换成为数字

◆用户可定义的,非易失性的温度告警设置

◆告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况)

◆应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统

2.4.3引脚排列

引脚说明

GND地

DQ数字输入输出

VDD可选的VDD

NC空引脚

DNC不连接

 

图2-4DS18b20引脚图

2.4.4主要功能特性

·兼容MCS51指令系统·8k可反复擦写(>1000次)FlashROM

·32个双向I/O口·256x8bit内部RAM

·3个16位可编程定时/计数器中断·时钟频率0-24MHz

·2个串行中断·可编程UART串行通道

·2个外部中断源·共6个中断源

·2个读写中断口线·3级加密位

·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能

2.5语音芯片ISD4003

2.5.1ISD4003芯片简介

ISD4003是美国ISD公司继ISD33000系列之后最新推出的时限为8分钟的长时语音录放电路。

这种录放电路采用了多电平直接模拟量存储技术,将每个采样值直接存储在片内的快闪存储器中,因此能够非常真实、自然地再现语音、音乐,音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和金属声。

ISD4003系列的性能如附表所示。

采样频率越低,录放时间越长,但通频带和音质有所降低。

片内信息存于快闪存储器中,可在断电情况下百年不丢失,反复录音超过十万次。

2.5.2语音芯片ISD4003电路图

图2-5语音芯片ISD4003电路图

MK采集声音,经过三极管放大,输入到语音芯片ISD4003,进行录音。

同时用LM386驱动0.5瓦的小喇叭进行放音。

2.5.3特点

ISD通用开发板QX-RM34A是专为ISD33000/4003/4004系列器件设计的,它具有以下特点:

  ●支持ISD所有3V器件,而ISD33000/4003/4004系列器件。

  ●板上最多可装三个ISD器件,录放时间最后可达48分钟。

  ●单片机控制、支持器件的全部功能,12位操作接口可灵活安排、最多可接32个按键。

  ●提供标准接口板;16位按键操作,两位数码及两位LED指示。

  ●话筒(MIC)和线路(LINEIN)双路选择录音。

  ●板上备有音频功率放大器(功率0.5W),也可由ISD直接线路输出。

  ●ISD各引脚由26个插针脚引出,可与计算机并口连接,由计算机控制ISD器件。

  ●单5V电源供电,电压可低至3V。

  ●只需接上电源,扬声器即可使用。

●装上锁紧插座,可用作硬封装电路的测试仪。

2.6液晶显示模块12864

2.6.112864芯片简介

带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

2.6.2基本特性

(1)低电源电压(VDD:

+3.0--+5.5V)

(2)显示分辨率:

128×64点

(3)内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)

(4)内置128个16×8点阵字符(5)2MHZ时钟频率

(6)显示方式:

STN、半透、正显(7)驱动方式:

1/32DUTY,1/5BIAS

(8)视角方向:

6点(9)背光方式:

侧部高亮白色LED,功耗仅为普通LED的1/5—1/10

(10)通讯方式:

串行、并口可选(11)内置DC-DC转换电路,无需外加负压

(12)无需片选信号,简化软件设计(13)工作温度:

0℃-+55℃,存储温度:

-20℃-+60℃

2.6.3接口说明

接口说明如表2-2所示

表2-2接口说明

管脚号

管脚名称

电平

管脚功能描述

1

VSS

0V

电源地

2

VCC

3.0+5V

电源正

3

V0

-

对比度(亮度)调整

4

RS(CS)

H/L

RS=“H”,表示DB7——DB0为显示数据

RS=“L”,表示DB7——DB0为显示指令数据

5

R/W(SID)

H/L

R/W=“H”,E=“H”,数据被读到DB7——DB0

R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR

6

E(SCLK)

H/L

使能信号

7

DB0

H/L

三态数据线

8

DB1

H/L

三态数据线

9

DB2

H/L

三态数据线

10

DB3

H/L

三态数据线

11

DB4

H/L

三态数据线

12

DB5

H/L

三态数据线

13

DB6

H/L

三态数据线

14

DB7

H/L

三态数据线

15

PSB

H/L

H:

8位或4位并口方式,L:

串口方式(见注释1)

16

NC

-

空脚

17

/RESET

H/L

复位端,低电平有效(见注释2)

18

VOUT

-

LCD驱动电压输出端

19

A

VDD

背光源正端(+5V)(见注释3)

20

K

VSS

背光源负端(见注释3)

*注释1:

如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。

*注释2:

模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

  

*注释3:

如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

四.模块主要硬件构成说明

 

第三章系统软件设计

3.1主程序设计

图3-1主程序流程图

3.2温度控制模块

3.2.1DS18B20工作过程及时序

DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。

高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。

初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。

初始时,计数器1预置的是与-55℃相对应的一个预置值。

以后计数器1每一个循环的预置数都由斜率累加器提供。

为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。

计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。

DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。

在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。

这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±1/2LSB,即0.25℃。

温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。

测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。

DS18B20测量温度时使用特有的温度测量技术。

DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。

当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。

芯片内部还有斜率累加器,可对频率的非线性度加以补偿。

测量结果存入温度寄存器中。

一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。

DS18B20工作过程一般遵循以下协议:

初始化——ROM操作命令——存储器操作命令——处理数据

3.2.2温度数据获取

温度数据由单片机从数字温度芯片DS18B20获取。

DS18B20的通信方式为单线总线方式(详见美国DSLLAS公司关于该芯片的数据手册),本系统中以单片机模拟单线总线方式实现与其接口。

单片机以字节为单位对其进行读写操作,读写一个字节分成8个连续的位读写时隙实现。

单片机读写DS18B20的位时隙如图3-2所示。

图3-2单片机读写DS18B20的位时隙

单片机对DS18B20的操作需遵循以下步骤:

1.复位,即单片机发出复位脉冲(将总线从高电平拉到低电平并保持480微秒到960微秒,然后释放),等待接收DS18B20的存在脉冲(DS18B20将总线从高电平拉低,保持60微秒到240微秒)。

2.发送ROM操作指令,即读ROM(33H)、匹配ROM(55H)、忽略ROM(CCH)和搜素ROM(F0H)其中之一。

3.发送存储器操作指令,即读便笺存储器(BEH)、写便笺存储器(4EH)、复制便笺存储器(18H)、温度转换(44H)、回写E2PROM的值到便笺存储器(B8H)和读电源供给(B4H)其中之一。

4.处理或数据操作。

要注意,DS18B20进行一次12位的温度转换需要750毫秒,如果温度转换没有结束就去读温度数据,将不能得到正确的温度值,且会终止正在进行的温度转换。

所以,必须等待足够的时间,让温度转换完成。

本系统中,重复ShowTimes次读取时间数据,显示时间和温度等操作来实现这个等待时间,即图2中连接点②处的循环。

3.2.3主要程序

#include"reg52.h"

#include

/*ROMFUNCTIONCOMMANDS*/

#defineReadROM0x33//读DS18b20ROM内容指令

#defineMatchROM0x55//匹配Master输出的ROM

#defineSkipROM0xCC//跳过ROM操作

#defineSearchROM0xF0//查获单线总线上的DS18B20序列号

#defineAlarmROM0xEC//寻找温度超过报警限额的DS18B20

/*MEMORYCOMMANDFUNCTIONS*/

#defineWriteScratchpad0x4E//写Memory,一次要写入TH,TL,CONGIG对应的Memory

#defineReadScratchpad0xBE//读Memory,一直读到9字节结束或者Master停止读

#defineCopeScratchpad0x48//拷贝Memory到对应的TH,TL,CONGIG

#defineConvertT0x44//启动温度转换

#definePowerSupply0xB4//查看是否有外部电源

sbitDQ=P1^0;

externvoidDelay(unsignedcharTime);

voidDlay(unsignedcharTime);

voidWrite1820Instr(unsignedcharInstruction);

voidInit(void);

unsignedcharReadData(void);

 

voidDlay(unsignedcharTime)//延时总共为(8*Time+2)机器周期

{

unsignedchari;

for(i=0;i

}

 

voidWrite1820Instr(unsignedcharInstruction)//写DS18B20

{

charWhichBit;

EA=0;

DQ=1;

for(WhichBit=0;WhichBit<8;WhichBit++)

{

DQ=0;

_nop_();_nop_();

DQ=(bit)(0x01&Instruction);

Dlay(5);

DQ=1;

Instruction=Instruction>>1;

}

EA=1;

}

 

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1