第一章设计任务书.docx
- 文档编号:7577514
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:39
- 大小:360.27KB
第一章设计任务书.docx
《第一章设计任务书.docx》由会员分享,可在线阅读,更多相关《第一章设计任务书.docx(39页珍藏版)》请在冰豆网上搜索。
第一章设计任务书
第一章设计任务书
1.1设计题目:
电子万年历
1.2设计要求:
利用8031单片机设计一个电子万年历,在LED上显示阳历年、月、日、星期、[小]时、分、秒。
1.3设计任务:
1.设计硬件电路,画出电路原理图;
2.设计软件,编制程序,画出程序流程图;
3.调试程序,写出源程序代码;
4.写出详细毕业设计说明书(10000字以上),要求字迹工整,原理叙述正确,会计算主要元器件的一些参数,并选择元器件。
5.个人总结。
第二章设计方案和论证
2.1显示模块选择方案和论证:
方案一:
采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
所以采用了LED数码管作为显示。
2.2时钟芯片的选择方案和论证:
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年进行计数,而且精度高,位的RAM做为数据暂存区,工作电2.5V~5.5V范围内2.5V
时耗电小于300mA。
2.3电路设计最终方案决定
综上各方案所述,对此设计的方案选定:
采用8031单片机作为主控制系统;DS1302提供时钟;LED数码管动态扫描作为显示。
第三章系统的硬件设计与实现
3.1电路设计框图
图1电路设计框图
3.2系统硬件概述
本电路是由8031单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;由于8031没有内部程序存储器,需要对其进行程序存储器扩展。
时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时等功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由15个数码管和74ls164构成。
使用动态扫描显示方式对数字的显示。
3.3主要单元电路的设计
3.3.1单片机主控制模块的设计
3.3.1.18031单片机的介绍
8031单片机,片内无ROM,它的程序存储器必须外接,空间地址为8kB,此时单片机的
端必须接地。
强制CPU从外部程序存储器读取程序。
EPROM使用2764A。
8031单片机的引脚功能:
1.主电源引脚VCC和VSS
2.外接晶体引脚XTAL1和XTAL2
3.控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
4.输入/输出(I/O)引脚P0、P1、P2、P3(共32根)
值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
3.3.1.28031的扩展
(1)地址线的连接
EPROM低8位地址线A0~A7经地址锁存器与8031的P0口相连;EPROM高8位地址线A8~A15直接与8031的P2口相连。
由于8031的P0口是分时输出低8位地址和数据,故要外接地址锁存器,并由CPU发出的地址允许锁存信号ALE的下降沿将地址信息锁存入地址锁存器中。
如外接存储器芯片内有地址锁存器,则单片机CPU的P0口可与存储器低8位地址线直接相连,但仍要将CPU的ALE信号与存储器芯片ALE端相连。
单片机的P2口用作高位地址线及片选地址线,由于P2口输出具有锁存的功能,故不必外加地址锁存器。
2764A扩展地址为:
0000H~1FFFH。
(2)数据线的连接
存储器的8位数据线D0—D7与8031芯片的P0口P0.0—P0.7直接相连,单片机规定指令码和数据都是由P0口读入,数位对应相连即可。
(3)控制线的连接
8031芯片的PSEN与EPROM芯片的OE端相连。
8031芯片EA接地,CPU执行外部程序存储器的指令。
8031芯片ALE接地址锁存器74LS373的G端。
8031扩展三总线
3.3.2时钟电路模块的设计
图-2示出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提供终止单字节或多字节数据的传送手段。
图2DS1302内部结构及电路图
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。
中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。
SCLK始终是输入端。
3.3.3电路原理及说明
(1)时钟芯片DS1302的工作原理:
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图3所示。
表-1为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。
对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。
位1至位5指操作单元的地址。
位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。
控制字节总是从最低位开始输入/输出的。
表-2为DS1302的日历、时间寄存器内容:
“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
(2)DS1302的控制字节
DS1302的控制字如表-1所示。
控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出
表-1DS1302的控制字格式
(3)数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
如下图-3所示
图-3DS1302读/写时序图
(4)DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-2。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
表-2DS1302的日历、时间寄存器
3.3.4显示模块的设计
显示部分采用普通的共阳极数码管显示,采用动态扫描(见图4),以减少硬件电路。
考虑到一次扫描15位数码管显示时会出现闪烁情况,设计时15位数码管分三排同时扫描。
第一排8个数码管分别为千年、百年、十年、年、十月、月、十日、日。
第二排7位数码管分别为星期、十时、时、十分、分、十秒、秒。
显示时采用串行口输出段码,用2片74LS164来驱动2排数码管,这样扫描一次只需7毫秒。
图4LED动态显示
74LS164内部为8个D触发器,用以实现数据的串行移位,74LS164的特性见下表。
单片机以串行口方式0(移位寄存器方式)输出数据,2片74LS164作为2排共阳极数码管的串/并转换显示接口。
74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。
其中A、B(1、2脚)为串行数据输入端,2个引脚按逻辑“与”运算规律输入信号,共一个输入信号时可并接,共同作为输入脚。
CP(第8脚)为时钟输入端,可连接到串行口的TXD端。
每一个时钟信号的上升沿加到CP端时,移位寄存器移一位。
8个时钟脉冲过后,8位二进制数全部移入74LS164中。
MR脚(第9脚)为复位端,当该脚为低电平时,移位寄存器各位复0;只有当它为高电平时,时钟脉冲才起作用。
Q1~Q8(第3~6和第10~13引脚)并行输出端分别接数码管的h~a(因为串行口从低位开始传送)各段对应的引脚上。
在给出了8个脉冲后,最先进入74LS164的第一个字节数据到达了最高位。
再来1个脉冲,第一个脉冲就会从最高位移出,进入下一个74LS164的第一位。
3片74LS164首尾相串,而时钟端则接在一起。
这样,当输入8个脉冲时从单片机RXD端输出的第一个字节数据就进入了第1片74LS164中,而当第2个8个脉冲到来后,第1字节数据就进入了第2片74LS164,而随后的第2字节的数据则进入了第一片74LS164。
这样,当第3个8个脉冲完成后,首次送出的数据送到了最下面的74LS164(第3片)中其它数据依次出现在第二和第一片74LS164中,实现了数据在74LS164中的串行输入、并行输出。
74LS164特性表:
操作模式
输入
输出
复位
MR
A
B
Q0
Q1~Q7
移位
L
×
×
L
Q0~Q6
H
L
L
L
Q0~Q6
H
L
H
L
Q0~Q6
H
H
L
L
Q0~Q6
H
H
H
H
Q0~Q6
在方式0状态下,串行口为同步移位寄存器方式,其波特率是固定的,为fosc/12。
数据由RXD(P3.0)端输入或输出,同步移位脉冲由RXD(P3.1)端输出。
发送、接收数据时低位在先。
所以,根据提供的硬件电路图,在编写程序时,查共阳数码管的二进制数据应该将正常的共阳数码管0~9的二进制值按位反序排序,就能使数码管正常显示。
第四章系统的软件设计
4.1程序流程框图
图5主程序流程图
图6阳历程序流程图
图7时间调整程序流程图
4.2子程序的设计
DS1302读、写子程序:
;写1302程序WRITE:
CLRSCLK
NOP
SETBRST
NOP
MOVA,32H
MOVR4,#8
WRITE1:
RRCA;送地址给1302
NOP
NOP
CLRSCLK
NOP
NOP
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR4,WRITE1
CLRSCLK
NOP
MOVA,31H
MOVR4,#8
WRITE2:
RRCA
NOP;送数据给1302
CLRSCLK
NOP
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR4,WRITE2
CLRRST
RET
;读1302程序
READ:
CLRSCLK
NOP
NOP
SETBRST
NOP
MOVA,32H
MOVR4,#8
READ1:
RRCA;送地址给1302
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
NOP
CLRSCLK
NOP
NOP
DJNZR4,READ1
MOVR4,#8
READ2:
CLRSCLK
NOP;从1302中读出数据
NOP
NOP
MOVC,IO
NOP
NOP
NOP
NOP
NOP
RRCA
NOP
NOP
NOP
NOP
SETBSCLK
NOP
DJNZR4,READ2
MOV31H,A
CLRRST
RET
第五章系统调试
5.1硬件调试
在本成电子万年历的设计调试中遇到了很多的问题。
回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:
(1)LED数码管的断码错乱,原因出于没有认真看清a、b、c等引脚信息。
解决:
重新排列74LS47的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。
(2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。
解决:
根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。
5.2软件调试
电子万年历是多功能的数字型,可以看当前日期(阳历)、时间。
电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。
最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件问题。
附录1
电子万年历电路设计原理图
附录2
系统程序清单
CONFIG12EQU7FH
TEMPHEQU21H
TEMPLEQU20H
REG2EQU22H
REG3EQU23H
REG4EQU24H
DATEQUP0.7
SCLKEQUP3.2
IOEQUP3.3
RSTEQUP3.4
yearDATA66H
monthDATA65H
weekDATA64H
dayDATA63H
hourDATA62H
mintueDATA61H
secondDATA60H
ORG0000H
LJMPSTART
ORG001BH
LJMPINTT1
START:
;初值
LCALLZJ
SETBEA
MOVSCON,#00H;串行输出,方式0
MOVTMOD,#10H;计数器1,方式1
MOVTL1,#00H
MOVTH1,#00H
MOV32H,#8EH
MOV31H,#00H;允许写1302
LCALLWRITE
MOV32H,#90H
MOV31H,#0A6H;1302充电,充电电流1.1MA
LCALLWRITE
;主程序~~~~~~~~~~~~~~~~~~~~~
MAIN1:
MOV32H,#8DH;读出年
LCALLREAD
MOVyear,31H
MOV32H,#8BH;读出星期
LCALLREAD
MOVweek,31H
MOV32H,#89H;读出月
LCALLREAD
MOVmonth,31H
MOV32H,#87H;读出日
LCALLREAD
MOVday,31H
MOV32H,#85H;读出小时
LCALLREAD
MOVhour,31H
MOV32H,#83H;读出分钟
LCALLREAD
MOVmintue,31H
MOV32H,#81H;读出秒
LCALLREAD
MOVsecond,31H
;~~~~~~~~~~~~分离缓存~~~~~~~~
MOVR0,year;年分离,送显示缓存
LCALLDIVIDE
MOV7BH,R1
MOV4BH,R1
MOV7CH,R2
MOV4CH,R2
MOV78H,week
MOV48H,week
MOVR0,month;月分离,送显示缓存
LCALLDIVIDE
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
MOVR0,day;日分离,送显示缓存
LCALLDIVIDE
MOV76H,R1
MOV46H,R1
MOV77H,R2
MOV47H,R2
MOVR0,hour;小时分离,送显示缓存
LCALLDIVIDE
MOV74H,R1
MOV44H,R1
MOV75H,R2
MOV45H,R2
MOVR0,mintue;分钟分离,送显示缓存
LCALLDIVIDE
MOV72H,R1
MOV42H,R1
MOV73H,R2
MOV43H,R2
MOVR0,second;秒分离,送显示缓存
LCALLDIVIDE
MOV70H,R1
MOV40H,R1
MOV71H,R2
MOV41H,R2
CLREA
LCALLTOUTOU
SETBEA
LCALLDISPLAY
;公历设置程序~~~~~~~~~~~~~~~~~~~~~
SETG:
SETBTR1
SETBET1
MOV32H,#8EH
MOV31H,#00H;允许写1302
LCALLWRITE
MOV32H,#80H
MOV31H,#80H;1302停止振荡
LCALLWRITE
GWAIT:
;~~~~~~~~~~~~~~~~~~
LCALLDISPLAY
JNBP0.1,GWAIT
SETG1:
LCALLDISPLAY
JNBP0.1,SETG2
JNBP0.2,GADDYEAR
JNBP0.3,JIANYEAR
AJMPSETG1
GADDYEAR:
MOVR7,66H;年加一
LCALLADD1
MOV66H,A
CJNEA,#51H,GADDYEAR1
MOV66H,#00H
AJMPGADDYEAR1
JIANYEAR:
MOVR7,66H;年减一
LCALLJIAN1
MOV66H,A
CJNEA,#00H,GADDYEAR1
MOV66H,#51H
GADDYEAR1:
MOV32H,#8CH;年值送人1302
MOV31H,66H
LCALLWRITE
MOVR0,66H
LCALLDIVIDE;年分离送显示缓存
MOV4BH,R1
MOV7BH,R1
MOV4CH,R2
MOV7CH,R2
WAITT1:
;~~~~~~~~~~~~~~~~
LCALLDISPLAY
JNBP0.2,WAITT1
JNBP0.3,WAITT1
AJMPSETG1
SETG2:
SETB0AH;调月时闪标志
GWAIT2:
LCALLDISPLAY
JNBP0.1,GWAIT2
SETG3:
LCALLDISPLAY
JNBP0.1,SETG4
JNBP0.2,GADDMONTH
JNBP0.3,JIANMONTH
AJMPSETG3
GADDMONTH:
MOVR7,65H;月加一
LCALLADD1
MOV65H,A
CJNEA,#13H,GADDMONTH1
MOV65H,#01H
AJMPGADDMONTH1
JIANMONTH:
MOVR7,65H;月减一
LCALLJIAN1
MOV65H,A
CJNEA,#00H,GADDMONTH1
MOV65H,#12H
GADDMONTH1:
MOV32H,#88H;月值送人1302
MOV31H,65H
LCALLWRITE
MOVR0,65H
LCALLDIVIDE;月分离,送显示缓存
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
WAITT2:
;~~~~~~~~~~~~~~~~~~~~
LCALLDISPLAY
JNBP0.2,WAITT2
JNBP0.3,WAITT2
AJMPSETG3
SETG4:
SETB0BH;调日时闪标志
GWAIT4:
LCALLDISPLAY
JNBP0.1,GWAIT4
SETG5:
LCALLDISPLAY
JNBP0.1,SETG6
JNBP0.2,GADDDAY
JNBP0.3,JIANDAY
AJMPSETG5
GADDDAY:
MOVR7,63H;日加一
LCALLADD1
MOV63H,A
CJNEA,#32H,GADDDAY1
MOV63H,#01H
JIANDAY:
MOVR7,63H;日减一
LCALLJIAN1
MOV63H,A
CJNEA,#00H,GADDDAY1
MOV63H,#31H
GADDDAY1:
MOV32H,#86H;日值送人1302
MOV31H,63H
LCALLWRITE
MOVR0,63H
LCALLDIVIDE;日分离,送显示缓存
MOV76H,R1
MOV46H,R1
MOV77H,R2
MOV47H,R2
WAITT3:
;~~~~~~~~~~~~~~~~~
LCALLDISPLAY
JNBP0.2,WAITT3
JNBP0.3,WAITT3
AJMPSETG5
SETG6:
SETB0CH;调星期时闪标志
GWAIT6:
LCALLDISPLAY
JNBP0.1,GWAIT6
SETG7:
LCALLDISPLAY
JNBP0.1,SETG8
JNBP0.2,GADDWEEK
JNBP0.3,JIANWEEK
AJMPSETG7
GADDWEEK:
MOVR7,64H;星期加一
LCALLADD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一章 设计 任务书