基于5152单片机的电子万年历设计经典69727Word下载.docx

上传人:b****1 文档编号:845288 上传时间:2023-04-29 格式:DOCX 页数:33 大小:437.71KB
下载 相关 举报
基于5152单片机的电子万年历设计经典69727Word下载.docx_第1页
第1页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第2页
第2页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第3页
第3页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第4页
第4页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第5页
第5页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第6页
第6页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第7页
第7页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第8页
第8页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第9页
第9页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第10页
第10页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第11页
第11页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第12页
第12页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第13页
第13页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第14页
第14页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第15页
第15页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第16页
第16页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第17页
第17页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第18页
第18页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第19页
第19页 / 共33页
基于5152单片机的电子万年历设计经典69727Word下载.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于5152单片机的电子万年历设计经典69727Word下载.docx

《基于5152单片机的电子万年历设计经典69727Word下载.docx》由会员分享,可在线阅读,更多相关《基于5152单片机的电子万年历设计经典69727Word下载.docx(33页珍藏版)》请在冰点文库上搜索。

基于5152单片机的电子万年历设计经典69727Word下载.docx

可采用ALTERA公司的FLEX10K系列PLD器件。

设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。

但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。

从成本上来讲,用可编程逻辑器件来设计也没有什么优势。

b)用凌阳16位单片机设计。

凌阳16位单片机有丰富的中断源和时基,方便本实验的设计。

它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。

I/O口功能也比较强大,方便使用。

用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。

这些都方便对设计进行扩展,使设计更加完善。

成本也相对低一些。

2.1.2显示部分的方案选择

a)液晶显示方式。

液晶显示效果出众,可以运用菜单项来方便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕会有明显的闪烁。

而且由于61板的存储空间有限,液晶显示就不能与语音播抱程序同时实现。

这些大大影响了电子万年历的性能。

b)相比液晶显示,采用8段数码管既经济实惠,在效果上也可以加入语音报时功能,操作比较液晶显示来说虽然略显繁琐,但总体也还可以做到比较人性化。

所以,最后选择LED数码管显示方案。

2.1.3系统基本方案选择和论证

1.单片机芯片的选择方案和论证:

方案一:

采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。

方案二:

采用AT89S52,片内ROM全都采用FlashROM;

能以3V的超底压工作;

同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

所以选择采用AT89S52作为主控制系统.

2.显示模块选择方案和论证:

方案一:

采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏.

方案二:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.

方案三:

采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。

所以采用了LED数码管作为显示。

3.时钟芯片的选择方案和论证:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。

所以不采用此方案。

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.

4.电路设计最终方案决定

综上各方案所述,对此次作品的方案选定:

采用AT89S52作为主控制系统。

DS1302提供时钟。

数字式温度传感器。

LED数码管动态扫描作为显示。

2.2单片机原理

单片机就是简化的微型计算机。

CPU中本身自带存储器ROM和RAM。

CPU片内也有总线。

IC(集成电路)技术是将电路通过特殊工艺做在一块硅基片上封装成芯片,比如CPU,片外存储器等等。

将单片机CPU(比如51系列),晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等通过PCB工艺(比如SMT贴片,或者插装)做在环氧树脂板上。

这样才是一个完整的单片(做在一块PCB板上)的微型计算机。

2.3LED显示数码管

常见的LED显示具有清晰明亮的特点。

是显示接口也是绝大多数单片机应用系统必备的部件之一。

发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。

它由若干个发光二极管按一定的规律排列而成。

当某一个发光二极管导通时,相应的一个点或一笔画被点亮,控制不同组合的二极管导通,就能显出各种字符。

1.显示器的结构

常用的7段显示器的结构如图所示,发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的成为共阴显示器。

1位显示器由8个发光二极管组成,其中7个发光二极管a~g控制7个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单,使用方便。

第三章计算部分

3.1主要单元电路的器件

3.1.1单片机主控制模块

AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。

如图所示。

1.内部结构

按功能分为8部分:

CUP,程序存储器,数据存储器,时钟电路,串行口,并行I/O口,中断系统,定时/计数器。

2.引脚定义及功能

1).电源及时钟引脚

Vcc:

接+5V电源

Vss:

接地

XTAL1和XTAL2:

时钟引脚,外接晶体引线端。

当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;

当使用外部时钟时,用于接外部时钟脉冲信号。

2).控制引脚

RST/Vpq:

RST是复位信号输入端,Vpd是备用电源输入端。

当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。

当主电源Vcc发生故障而突然下降到一定低电压或断电时,第2功能Vpd将为片内RAM提供电源以保护片内RAM中的信息不丢失。

ALE/PROG:

地址锁存允许信号输入端。

在存取外存储器时,用于锁存低8位地址信号。

当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。

此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固外程序时,作为编程脉冲输入端。

PSEN:

程序存储器允许输出端。

当片外程序存储器的读选通信号,低电平有效。

CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。

EA/Vpp:

程序存储器地址允许输入端。

当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令;

当EA为低电平时,CPU只执行片外程序存储器指令。

3).I/O口引脚

P0.0~P0.7:

P0口8位双向I/O口;

P1.0~P1.7:

P1口8位准双向I/O口;

P2.0~P2.7:

P2口8位准双向I/O口;

P3.0~P3.7:

P3口8位准双向I/O口。

3.片外总线结构

分为三部分:

数据总线DataBus(DB),地址总线AddressBus(AB),控制总线ControlBus(CB).

AT89S52

3.1.2时钟电路模块

1.DS1302的结构及工作原理

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

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

DS1302内部有一个31×

8的用于临时性存放数据的RAM寄存器。

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

2.引脚功能及结构

图1所示出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始终是输入端。

3.数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

3.2其他模块器件

3.2.174LS164

它是个串入并出的8位移位寄存器,它常用于单片机系统中,下面结束一下这个元件的基本知识:

74LS164引脚图

74LS164_内部功能图

74LS164_逻辑符合表

串行输入带锁存

时钟输入,串行输入带缓冲

异步清除

最高时钟频率可高达36Mhz

功耗:

10mW/bit

74系列工作温度:

Cto70°

C

Vcc最高电压:

7V

输入最高电压:

高电平:

-0.4mA

低电平:

8mA

3.2.2CON8

它是一个排插符号,也就是一个插座,可以通过一个插头将89C51的P0口引到外面的有关电路作扩展用,也可以作为备用。

3.2.3其他元器件

电阻,电容,发光二极管,三极管若干。

第四章结构设计部分

4.1显示部分设计

基本显示原理:

时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1,到9后,10秒位加1,秒位回0。

10秒位到5后,即59秒,分钟加1,10秒位回0。

依次类推,时钟最大的显示值为23小时59分59秒。

这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。

同时时钟达到最大值的时候天数也增加一位,知道显示了7后再变为1,同时阴历和阳历的天数也加1,根据不同的月份显示的天数阳历有28,29,30,31天,阴历就要经过计算得到,到了12个月后,年数自动增加1,以此类推,显示万年历的现实。

另外,连接方式总电路图上可以看到,这里就不做说明了,下图为显示部分的电路图。

显示部分电路图

4.1.1万年历优化算法

1.阳历算法

阳历的算法比较简单,每十月的总的天数相对来说是固定的。

只有2月份,在闰年是29天,在非闰年是28天。

每个月的日历排法.主要是确定每个月第一天是星期几。

我们知道1901年1月1日是星期二,星期的变化是7天一个周期,比如说要计算1901年2月1日是星期几,可以这样推算:

从1901年1月1日到1901年2月1日总共经过了31天(从表1可看出),31对7取模是3:

i901年1月1日是星期二,加三后,是星期五。

因此1901年2月1日是星期五。

同理,可以推算出从1901—2100年任何一天是星期几。

表1

月份

1

2

3

4

5

6

7

8

9

10

11

12

闰年

31

29

30

非闰年

28

2.阴历算法

阴历的算法比较复杂,它包含两个部分。

一部分是阳历日和阴历日的对应关系;

另一部分则是阳历日和农历节气的对应关系。

下面只介绍与设计有关的阴历和阳历的关系。

表2

比特数

13

14

15

数据

!

x

我们先要做一个数据表,这个数据表里面每2个字节,表示T一个阴所年彝个月份的天教2个字节(共16bit)的具体意义如表2。

其中“!

(0/1)中“0”表示30天,“1”表示29天。

“xxxx(4个比特可表示数值范围0~15)”表示该年中是否有闰月,数值“0”表示无闰月,“1~12”表示某一个闰月。

闰月一般是29天;

在200年中(1901~2100年),闰月是30天的,可用一个特殊语句来解决。

这里2OO年需要200x2=400个字节,构成阴历压缩数据表。

有了阴历的数据表后,主要是要确定阳历日和胡历日的对应关系。

我们知道阳历年1901年1月1日,对应的阴历年是对应的阴历日,可用以下算法:

(1)从阳历年1901年1月1日到1901年2月1日,计算出经过了31天;

(2)根据阴历数据表知道阴历年1900年11月有29天,因此31—29=2天。

原来阳历年1901年1月1日对应的阴历日是11日,则有11+1=13;

(3)因为阴历1901年12月份有30天,而13<

=30,所以阳历年1901年2月1日对应的阴历年是1900年12月13日。

如果上一步相加得出的散大于当前阴历月的总的天敢,别应该继续减去当前阴历月的总的天数,直到符合条件。

对于月份增加时,还要通过数据表查看是否要经过闰月。

对于其他任何一个阳历日和阴历日的对应关系,都可以通过以上算法求得结果。

4.2实现时钟,日历显示设计

DS1302可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能.

4.2.1DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、

时间寄存器及其控制字见表1。

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。

DS1302与RAM相关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;

另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

4.2.2DS1302实时显示时间的软硬件

DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。

图3示出DS1302与89C2051的连接图,其中,时钟的显示用LCD。

4.2.3DS1302与CPU的连接

实际上,在调试程序时可以不加电容器,只加一个32.768kHz的晶振即可。

只是选择晶振时,不同的晶振,误差也较大。

另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。

只要占用CPU一个口线即可。

LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显

示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有3-4线串行接口,可与任何单片机、IC接口。

功耗低,显示状态时电流为2μA(典型值),省电模式时小于1μA,工作电压为2.4V~3.3V,显示清晰。

4.3整体设计

实现过程:

由串行的时钟芯片DS1302,送给单片机,单片机处理后输出。

而74LS164将串行信号变成并行信号,每个164对应LED七段码,三个164对应三行LED数码管。

单片机P2.6-P2.0连接七个三极管作列驱动,共七列数码管,(实际有两行是六列)行列扫描共同形成万年历。

其整个过程,如原理图所示。

4.4系统软件设计

4.4.1程序流程框图

图-C时间调整程序流程图

第五章实验测试部分

5.1硬件测试

电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。

在本成电子万年历的设计调试中遇到了很多的问题。

回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:

(1)LED数码管的断码错乱,原因出于没有认真看清a、b、c等引脚信息。

解决:

重新排列74LS47的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。

(2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。

根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。

5.2软件测试

电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。

电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。

最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。

在软件的调试过程中主要遇到的问题如下:

1.烧入程序后,LED数码管显示闪动,而且亮度不均匀。

首先对调用的延时进行逐渐修改,可以解决显示闪动问题。

其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。

2.修改时间、日期时没有农历没有自动对应上。

把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。

最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.

5.3测试结果分析与结论

5.3.1测试结果分析

(1).在测试中遇到发光二极管、LED数码管为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏.

(2).LED数码管显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。

查看烧写的程序是否正确无误,对程序进行认真修改。

(3).DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;

D6=0,指定时钟数据,D6=1,指定RAM数据;

D5~D1指定输入或输出的特定寄存器;

最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出)。

在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。

若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。

DS1302与RAM相关的寄存器分为两类:

再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。

要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。

虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。

可以用老式电脑主板上的3.6V充电电池。

如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。

100μF就可以保证1小时的正常走时。

DS1302在第一次加电后,必须进行初始化操作。

初始化后就可以按正常方法调整时间。

5.3.2测试结论

经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固

第六章结论

在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识,完成了对万年历的设计,达到了预期的目的。

在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用,相互学习、相互讨论、研究,完成了最初的设想。

在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成,反而达到事半功倍的效果。

对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。

程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,

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

当前位置:首页 > 总结汇报 > 学习总结

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

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