单片机设计与代码实现Word格式.docx

上传人:b****5 文档编号:21435515 上传时间:2023-01-30 格式:DOCX 页数:12 大小:230.67KB
下载 相关 举报
单片机设计与代码实现Word格式.docx_第1页
第1页 / 共12页
单片机设计与代码实现Word格式.docx_第2页
第2页 / 共12页
单片机设计与代码实现Word格式.docx_第3页
第3页 / 共12页
单片机设计与代码实现Word格式.docx_第4页
第4页 / 共12页
单片机设计与代码实现Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

单片机设计与代码实现Word格式.docx

《单片机设计与代码实现Word格式.docx》由会员分享,可在线阅读,更多相关《单片机设计与代码实现Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

单片机设计与代码实现Word格式.docx

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

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

DS1302的控制字如表所示。

控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。

位6如果为0,则表示存取日历时钟数据;

为1则表示存取RAM数据。

位5~1(A4~A0)指示操作单元的地址。

最低有效位(位0)如果为0,则表示药进行写操作;

为1表示进行读操作。

控制字节总是从最低位开始输入/输出。

为了提高对32个地址寻址能力(地址/命令位1~5=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。

位6规定时钟或RAM,而位0规定读或写。

在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。

在多字节方式下,读或写从地址0的位0开始。

必须按数据传送的次序写最先的8个寄存器。

但是,当以多字节方式写RAM时,为了传送数据不必写所有的31字节,不管是否谢了全部31字节,所写的每一字节都将传送至RAM。

表DS1302控制字

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

其日历、时间寄存器及其控制字如上表所示,其中奇数为读操作,偶数为写操作。

时钟暂停:

秒寄存器的位7定义位时钟暂停位。

当它为1时,DS1302停止振荡,进入低功耗的备份方式,通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。

当它为0时,时钟将开始启动。

AM-PM/12-24小时方式:

小时寄存器的位7定义为12或24小时方式选择位。

它为高电平时,选择12小时方式。

在此方式下,位5为第二个10小时位(20~23h)。

DS1302的晶振选用32768Hz,电容推荐值为6pF。

因为振荡频率较低,也可以不接电容,对计时精度影响不大。

3.显示驱动MAX7219

●MAX7219和单片计算机连接有三条引线(DIN、CLK、LOAD),采用16位数据串行移位接收方式

●八位LED显示、图条/柱图显示或64点阵显示

●包括BCD译码器、多路扫描控制器、字和位驱动器和8×

8静态RAM

●可选择停机模式、数字亮度控制、从1~8选择扫描位数和对所有LED显示器的测试模式

●最多能驱动8位LED显示器

●内部RAM地址01~08H分别对应于DIG0~DIG7。

●扫描界限寄存器(地址0BH):

该寄存器中D0~D3位数据设定值为0~7H,设定值表示显示器动态扫描个数位1~8。

●停机寄存器(地址0CH):

当D0=0时,MAX721处于停机状态;

当D0=1时,处于正常工作状态。

●显示测试寄存器(地址0FH):

当D0=0时,MAX7219按设定模式正常工作;

当D0=1时,处于测试状态。

在该状态下,不管MAX7219处于什么模式,全部LED将按最大亮度显示。

●亮度寄存器(地址0AH):

亮度可以用硬件和软件两种方法调节亮度寄存器中的D0~D3位可以控制LED显示。

LED显示寄存器由内部8×

8静态RAM构成,操作者可直接对位寄存器进行个别寻址,以刷新和保持数据,只要V+超过2V(一般为+5V)。

控制寄存器包括:

译码模式,显示亮度调节,扫描限制(选择扫描位数),关断和显示测试寄存器。

MAX7219的驱动程序首先必须对5个控制寄存器初始设置即初始化,各控制寄存器设置含义如下:

译码模式选择寄存器(地址=F9H);

MAX7219有两种译码方式:

B译码方式和不译码方式。

当选择不译码时,8个数据为分别一一对应7个段和小数点位;

B译码方式是BCD译码,直接送数据就可以显示。

实际应用中可以按位设置选择B译码或是不译码方式。

扫描限制寄存器:

地址=FBH;

用于设置显示的LED个数(1~8),比如当设置为0xX4时,LED0~5显示。

亮度调节寄存器:

地址=FAH;

共有16级选择,用于LED显示亮度的强弱设置。

关断模式寄存器:

地址=FCH;

有两种模式选择:

一种是关断状态模式(D0=0);

一种是正常操作状态(D0=1),通常选择正常操作状态。

显示测试寄存器:

地址=FFH;

有两种选择用于设置LED是测试状态还是正常操作状态:

当在测试状态时(D0=1)各位全应亮,一般选择正常操作状态(D0=0)。

4.主要单元电路的设计

表MAX7219引脚功能

 

(1)显示电路

显示部分采用普通的共阴数码管显示,采用动态扫描,以减少硬件

路。

年月日时分秒星期共需要17位数码显示,考虑到一次扫描17位数码

管显示时会出现闪烁情况,故采用动态扫描,可将数码管数量减少至9位,也就是两个四位一体八段LED显示数码管和一个一位LED数码管设计时数码管同时扫描,显示时采用串行口输出段码,用MAX7219驱动数码管。

图MAX7219主要引脚

5.键盘接口

键盘在单片机系统中是一个很重要的部件。

为了输入数据、查询和控制系统的工作状态,都要用到键盘,键盘是人工干预计算机的主要手段。

键盘可分为编码和非编码键盘两种。

编码键盘采用硬件线线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能。

这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种。

非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。

此处主要介绍该类非编码键盘及其与MCS—51型单片机的接口。

6.时钟电路

(1).DS1302工作方式简介及数据操作原理

DS1302可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。

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

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

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

DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。

它经过一个简单的串行接口与微处理器通信。

实时时钟/日历提供秒、分、时、日、周、月和年等信息。

对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。

时钟的运行可以采用24<

小>

时或带AM/PM的12小时格式。

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

DS1302有主电源/后备电源双电源引脚:

Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电磁备份;

Vcc1在双电池系统中提供主电源。

在这种运行方式中,Vcc1里连接到后备电源,以便在没有主电源的情况下能保存时间信息以及数据。

DS1302由Vcc1或Vcc2中较打大者供电。

当Vcc2>(Vcc1+0.2V)时,Vcc2给DS1302供电;

当Vcc2<Vcc1时,DS1302由Vcc1供电。

图S1302

DS1302的控制字如图所示。

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

其日历、时间寄存器及其控制字如下表所示,其中奇数为读操作,偶数为写操作。

表DS1302控制字

三·

系统的软件设计

一.程序设计

电子万年历的程序主要包括3个方面的内容:

一是DS1302从单片机中读取数据进行计数,二是利用按键进行时间的调整,三是MAX7219从单片机中读取数据驱动LED数码管显示时间。

AT89C51单片机主要I/O口的分配,P2.0-P2.2分别接MAX7219的DIN,LOAD,CLK三个功能端,P3接查询式按键,P1.0-P1.2分别接DS1302的CLK,IO,RST端。

1时间控制流程图

DS1302时控流程图

2

;

真正的万年历:

84bytes的51ASM

==SUB_WNL===万年历==*DengMiao*2004-06-01*****GuangZhou******

SJDATA30H;

世纪BCD00TO99

NHDATA31H;

年号BCD00TO990000TO9999年

YFDATA32H;

月份BCD01TO12

org000h

MOVSP,#40H

MOVSJ,#21H;

2004-05

MOVNH,#01H

MOVYF,#4H

ACALLSUB_WNL

SJMP$

===============SUB_WNL===================

;

入口:

出口

ACC--本月天数BCD28to31

B--本月1日的星期数1to6==星期1to星期6

0--星期日

使用:

ACC,B,R5,R6

STACK:

3bytes(不包括调用)

ORG50H

SUB_WNL:

PUSHPSW

MOVA,SJ

ACALLBCD2BIN_MOD4

x400年:

(大周期)

=146097天=7*20871+0天

x100年:

000年=7*0+0+1-11=0*2+1****

100年=7*5217+7+1-22=1*2

200年=7*10435+7+1-44=2*2

300年=7*15653+7+1-66=3*2

{1,2,4,6}

MOVA,R6;

A=R6=SJ_BINMOD4

RLCA;

A=A*2+CA={1,2,4,6}****

XRLA,#10000111B;

A=87H-A;

边界调整

MOVR5,A;

A={86H,85H,83H,81H};

R5:

星期

MOVA,NH

JZWNL_1

ACALLBCD2BIN_MOD4

XCHA,R5

SUBBA,R5;

0年;

0=0+0+1+(-1)***

MOVR5,A

WNL_1:

MOVA,YF

ADDA,#(WNL_TAB-$-4)

MOVCA,@A+PC

MOVR6,A

SWAPA

ACALLWNL_F0;

大年对<

=3月调整准备

ADDCA,R5;

月调整

MOVB,#7

DIVAB;

B=AMOD7

MOVA,R6

大年调整准备

ADDCA,#28

POPPSW

RET

WNL_TAB:

DB3*2+5*32+0;

1BIT0:

"

2月"

标志

DB0*2+1+1*32+0;

2**BIT1..2:

月大小

DB3*2+1*32+16;

300:

28天

DB2*2+4*32+16;

401:

----

DB3*2+6*32+16;

510:

30天

DB2*2+2*32+16;

611:

31天

DB3*2+4*32+16;

7BIT3:

0-----

DB3*2+7*32+16;

8BIT4:

0:

1/2月

DB2*2+3*32+16;

91:

<

=3月

WNL_F0:

6BYTES;

RRCA;

0AH

ANLA,#07H;

0BH

0CH

ANLC,F0;

0DH

0EH

RET;

0FH

DB3*2+5*32+16;

10HBIT5..7:

星期调整数

DB2*2+1*32+16;

11H0:

---

DB3*2+3*32+16;

12H1-7:

调整数

BCD2BIN_MOD4:

功能:

A.1BYTESBCDTOBIN

B.MOD4

C.MUL2

A:

SJORNH

F0:

大世纪

ACC--(BIN(A)4)*2-(BIN(A)MOD4)-F0

R6--BIN(A)MOD4

C--IIF((BIN(A)MOD4)=0,1,0)

ACC,B,R6,PSW

0bytes(不包括调用)

MOVR6,A;

BCD==<

BIN

ANLA,#0F0H;

16X+Y==<

10X+Y

MOVB,#(256-6);

(256-6)*X+(16X+Y)

MULAB;

ADDA,R6;

=256X+(10X+Y)

MOD4

ANLA,#3

XCHA,R6;

R6=BINMOD4={0,1,2,3}

X4年:

3*365+366=7*209+(-2)**

XRLA,R6;

A=(BIN4)

RRA;

A=(BIN4)*2**

MOVC,F0;

大世纪调整

SUBBA,R6

X1年:

0年0=0+0+1+(-1)***

1年366=7*52+1+1

2年366+365=7*104+2+1

3年366+365+365=7*156+3+1

{-1,1,2,3}

CJNER6,#1,$+3;

C=IIF(R6<

=1,0,1)

MOVF0,C;

C=1为大年/大世纪

RET

-----------------------------

END;

========ENDOFFILE

(3)电路设计

图示为电子万年历电路设计原理图,系统由主控制器AT89C51、时钟电路DS1302、显示驱动MAX7219电路,显示电路及键扫描电路组成图

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

当前位置:首页 > 工作范文 > 行政公文

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

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