湖州师范学院求真学院信息与工程系课程设计报告.docx

上传人:b****7 文档编号:10849479 上传时间:2023-02-23 格式:DOCX 页数:22 大小:113.46KB
下载 相关 举报
湖州师范学院求真学院信息与工程系课程设计报告.docx_第1页
第1页 / 共22页
湖州师范学院求真学院信息与工程系课程设计报告.docx_第2页
第2页 / 共22页
湖州师范学院求真学院信息与工程系课程设计报告.docx_第3页
第3页 / 共22页
湖州师范学院求真学院信息与工程系课程设计报告.docx_第4页
第4页 / 共22页
湖州师范学院求真学院信息与工程系课程设计报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

湖州师范学院求真学院信息与工程系课程设计报告.docx

《湖州师范学院求真学院信息与工程系课程设计报告.docx》由会员分享,可在线阅读,更多相关《湖州师范学院求真学院信息与工程系课程设计报告.docx(22页珍藏版)》请在冰豆网上搜索。

湖州师范学院求真学院信息与工程系课程设计报告.docx

湖州师范学院求真学院信息与工程系课程设计报告

制作和调试(50分)

设计报告(50分)

评定等级

指导教师

湖州师范学院求真学院

信息与工程系

单片机应用系统设计总结报告

 

题目:

基于STC89C52的数字电子钟设计

 

专业

班级

姓名

学号

指导教师

信息与工程系

年月日

一、系统总体设计方案

1.系统原理框图如图

(1)所示

(1)系统原理框图

2.方案论证与比较

(1)单片机的选型:

方案一:

选用AT89S51单片机。

方案二:

选用STC12C5A16S2单片机。

本系统采用方案二,AT89S51单片机的FlashRom为4K,程序存储量太小,若采用12M晶振,则机械周期为1us。

而STC12C5A16S2单片机FlashRom为16K,程序存储量大,若采用12M晶振,其机械周期可达(1/12)us。

运行速度快12倍。

(2)显示方案

方案一:

选用1602液晶显示。

方案二:

选用4位数码管显示。

本系统采用方案二,1602液晶能显示16x2个字符,能很好的显示时间,但它与数码管相比成本太大。

对于本系统要求的显示内容数码管完全能完成。

成本大大降低。

二、硬件系统分析与设计

本系统由以下各个模块电路构成:

1、单片机最小系统:

包括复位电路、时钟晶振、STC12C5A60S2单片,为主控模块;

2、蜂鸣器电路:

闹铃作用;在本次实验中整点报时以及闹钟闹铃,通过该电路模块实现;

3、矩阵键盘:

按键输入,软件程序通过功能键的设置,实现时钟/秒表等功能切换;

4、数码管:

显示作用,本次实验使用数码管动态扫描方式显示;

键盘扫描原理:

本系统用到4个按键,是3*4矩阵键盘中的4个按键(这里对其定义为1号键,2号键,3号键,4号键)。

由于是矩阵键盘因此键盘的扫描程序十分复杂,如果采用独立按键测编程比较简单,只需要将1至4号键盘的公共端清零,然后检测4个键盘即可;由于本系统采用普通按键,因此当按下按键时会产生机械振动,从而影响单片机对键盘的扫描,为了避免此种情况,本系统采用了软件延时消抖的方法。

数码管显示原理:

本系统时钟数值显示采用动态数码管显示,即4个是数码管依次显示不同的数值,然后重复上述动作通过调试设计者。

本系统使用4个共阳极数码管,并且后2个是倒着装的。

因此在时钟程序显示时,可以定义2个不同的数码显示数组,一个专门为前2位数码管设置,另一组专门为后2位数码管设置。

这样可以形象的显示出时间的跳动。

图2、系统电路图

3、软件系统分析与设计程序流程图:

主流程图:

(1)系统初始化流程图:

 

(2)按键扫描流程图:

(3)定时器定时及数码管显示流程图

四.程序

ORG0000H

AJMPMAIN

ORG000BH

AJMPIT0P

DPBIT22H.1

----------------------------------------------------------------------主函数

MAIN:

CLRDP

MOVSP,#62H

MOV38H,#12H;小时

MOV39H,#01H;分钟

MOV36H,#12H;闹钟小时

MOV35H,#02H;闹钟分钟

MOVTMOD,#01H;定时器工作方式1

MOV20H,#20

SETBET0;允许T0中断

SETBEA;开中断

MOVTH0,#3CH;给T0设初值

MOVTL0,#0B0H

SETBTR0;启动T0

-------------------------------------------------------------------跳转调用

LOP:

CLRP2.4;清零(开启)

ACALLDATC;调用DATC

ACALLDISP

ACALLKEYSCAN

ACALLRING

ACALLZHENGD

AJMPLOP

-------------------------------------------------------------------赋值

DATC:

JNBF0,LOOP11;F0如果是零直接转移到LOOP11

MOVA,36H

AJMPLOOP12

LOOP11:

MOVA,38H

LOOP12:

ANLA,#0FH

MOV40H,A

JNBF0,LOOP111

MOVA,36H

AJMPLOOP122

LOOP111:

MOVA,38H

LOOP122:

ANLA,#0F0H

SWAPA

MOV41H,A

JNBF0,LOOP13

MOVA,35H

AJMPLOOP14

LOOP13:

MOVA,39H

LOOP14:

ANLA,#0FH

MOV42H,A

JNBF0,LOOP133

MOVA,35H

AJMPLOOP144

LOOP133:

MOVA,39H

LOOP144:

ANLA,#0F0H

SWAPA

MOV43H,A

RET

-----------------------------------------------------------------LED显示

DISP:

MOVDPTR,#TAB1

SETBP1.4

CLRP1.7

MOVA,41H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY1MS

SETBP1.7

MOVDPTR,#TAB1

CLRP1.6

MOVA,40H

MOVCA,@A+DPTR

MOVC,DP

MOVAcc.7,C

MOVP0,A

LCALLDELAY1MS

SETBP1.6

MOVDPTR,#TAB2

CLRP1.5

MOVA,43H

MOVCA,@A+DPTR

MOVC,DP

MOVAcc.7,C

MOVP0,A

LCALLDELAY1MS

SETBP1.5

MOVDPTR,#TAB2

CLRP1.4

MOVA,42H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELAY1MS

RET

-----------------------------------------------------------------------按键

KEYSCAN:

ACALLDATC

ACALLDISP

MOVA,P2

ANLA,#0FH

CJNEA,#0FH,LOP1

AJMPLOP9

LOP1:

ACALLDELAY10MS

MOVA,P2

ANLA,#0FH

MOVR0,A

CJNEA,#0FH,LOP2;0FH表示功能键

AJMPLOP9

LOP2:

ACALLDATC

ACALLDISP

MOVA,P2

ANLA,#0FH

CJNEA,#0FH,LOP2

MOVA,R0;P2的初始值

CJNEA,#0EH,LOP4;如果A等于0EH的话功能键按下

MOVR1,46H;功能标志寄存器中的值赋给R1

CJNER1,#1,LOP5;功能标志是否为1

MOV46H,#2

AJMPLOP6

LOP5:

MOVR1,46H

CJNER1,#2,LOOP1;功能标志是否为2

MOV46H,#3

AJMPLOP6

LOOP1:

MOVR1,46H

CJNER1,#3,LOOP2;功能标志是否为3

MOV46H,#4

AJMPLOP6

LOOP2:

MOV46H,#1

CLRF0

AJMPLOP6

LOP4:

MOVA,R0

CJNEA,#0BH,LOP7;0BH表示加键

MOV47H,#1

AJMPLOP6

LOP7:

MOVA,R0

CJNEA,#7,LOP8;7H表示减键

MOV48H,#1

AJMPLOP6

LOP8:

MOV49H,#1

LOP6:

ACALLDATC

ACALLDISP

MOVR2,49H

CJNER2,#1,LOP9

MOV49H,#0;确认标志位

MOV46H,#0;功能标志位

MOV47H,#0;加标志位

MOV48H,#0;减标志位

CLRF0

AJMPLOPR

LOP9:

MOVR2,46H

CJNER2,#1,LOP10;功能标志位是否为1

MOVR2,47H

CJNER2,#1,LOP12;加标志位是否为1

MOVA,38H

ADDA,#1

DAA

MOV38H,A

CJNEA,#24H,LOP00

MOV38H,#00H

MOV47H,#0

AJMPKEYSCAN

LOP00:

MOV38H,A;显示小时的加

MOV47H,#0

AJMPKEYSCAN

LOP12:

MOVR2,48H

CJNER2,#1,KEYSCAN1;减标志位是否为1

MOVA,38H

CLRC

SUBBA,#1

ACALLSUBBCD

CJNEA,#99H,LOP02

MOV38H,#23H

MOV48H,#0

AJMPKEYSCAN

LOP02:

MOV38H,A;显示小时的减

MOV48H,#0

AJMPKEYSCAN

LOP10:

MOVR2,46H

CJNER2,#2,LOOP3;功能标志位是否为2

MOVR2,47H

CJNER2,#1,LOP13;加标志位是否为1

MOVA,39H

ADDA,#1

DAA

CJNEA,#60H,LOP01

MOV39H,#00H

MOV47H,#0

AJMPKEYSCAN

LOP01:

MOV39H,A;显示分钟的加

MOV47H,#0

AJMPKEYSCAN

LOP13:

MOVR2,48H;减标志位是否为1

CJNER2,#1,KEYSCAN1

AJMPLOP133

LOP133:

MOVA,39H

CLRC

SUBBA,#1

ACALLSUBBCD

CJNEA,#99H,LOP03

MOV39H,#59H

MOV48H,#0

AJMPKEYSCAN

LOP03:

MOV39H,A;显示分钟的减

MOV48H,#0

AJMPKEYSCAN

LOOP3:

MOVR2,46H

CJNER2,#3,LOOP5;功能标志位是否为3

SETBF0

MOVR2,47H

CJNER2,#1,LOOP4;加标志位是否为1

MOVA,36H

ADDA,#1

DAA

MOV36H,A

CJNEA,#24H,LOP04

MOV36H,#00H

MOV47H,#0

AJMPKEYSCAN

KEYSCAN1:

AJMPKEYSCAN

LOP04:

MOV36H,A;闹钟小时的加

MOV47H,#0

AJMPKEYSCAN

LOOP4:

MOVR2,48H

CJNER2,#1,KEYSCAN1;减标志位是否为1

MOVA,36H

CLRC

SUBBA,#1

ACALLSUBBCD

CJNEA,#99H,LOP05

MOV36H,#23H

MOV48H,#0

AJMPKEYSCAN

LOP05:

MOV36H,A;闹钟小时的减

MOV48H,#0

AJMPKEYSCAN

LOOP5:

MOVR2,46H

CJNER2,#4,LOPR;功能标志位是否为4

SETBF0

MOVR2,47H

CJNER2,#1,LOOP6;加标志位是否为1

MOVA,35H

ADDA,#1

DAA

CJNEA,#60H,LOP06

MOV35H,#00H

MOV47H,#0

AJMPKEYSCAN

LOP06:

MOV35H,A;闹钟分钟的加

MOV47H,#0

AJMPKEYSCAN

LOOP6:

MOVR2,48H

CJNER2,#1,KEYSCAN1;减标志位是否为1

AJMPLOOP7

LOOP7:

MOVA,35H

CLRC

SUBBA,#1

ACALLSUBBCD

CJNEA,#99H,LOP07

MOV35H,#59H

MOV48H,#0

AJMPKEYSCAN

LOP07:

MOV35H,A;闹钟分钟的减

MOV48H,#0

AJMPKEYSCAN

SUBBCD:

JNBAC,XY

DECA

DECA

DECA

DECA

DECA

DECA

XY:

JNCXYZ

CLRC

SUBBA,#60H

XYZ:

RET

LOPR:

RET

-------------------------------------------------------------------闹钟

RING:

MOVA,38H

CJNEA,36H,EXIT2

MOVA,39H

CJNEA,35H,EXIT2

MOVA,37H

CJNEA,#0,EXIT2

CLRP3.2

MOV50H,#1;蜂鸣器的标志位

AJMPEXIT1

EXIT2:

MOV50H,#0

SETBP3.2

EXIT1:

RET

---------------------------------------------------------------整点报时

ZHENGD:

MOVA,39H

CJNEA,#00H,NEXT1

MOVA,37H

CJNEA,#0,NEXT2

CLRP3.2

AJMPNEXT2

NEXT1:

MOVA,50H

CJNEA,#0,NEXT2

SETBP3.2

NEXT2:

RET

-------------------------------------------------------------定时器中断

IT0P:

PUSHPSW;保护中断

PUSHAcc

MOVTH0,#3CH

MOVTL0,#0B0H

MOVA,20H

CJNEA,#10,NEXT

CPLDP

NEXT:

DJNZ20H,RETURN

CPLDP

MOV20H,#20

MOVA,#01H

ADDA,37H

DAA

MOV37H,A

CJNEA,#60H,RETURN

MOV37H,#00H

MOVA,#01H

ADDA,39H

DAA

MOV39H,A

CJNEA,#60H,RETURN

MOVA,#01H

MOV39H,#00H

ADDA,38H

DAA

MOV38H,A

CJNEA,#24H,RETURN

MOV38H,#00H

RETURN:

POPAcc

POPPSW;保护中断

RETI

-----------------------------------------------------------------------------延时

DELAY1MS:

MOVR7,#4

DEL1:

MOVR6,#125

DEL2:

DJNZR6,DEL2

DJNZR7,DEL1

RET

DELAY10MS:

MOVR7,#250

DEL11:

MOVR6,#250

DEL22:

DJNZR6,DEL22

DJNZR7,DEL11

RET

--------------------------------------------------------------------------------段码表

TAB1:

DB0C0H,0F9H,0A4H,0B0H;0123的段码表

DB99H,92H,82H,0F8H;4567的段码表

DB80H,90H,88H,83H;89AB的段码表

DB0C6H,0A1H,86H,8EH;CDEF

DB8CH,0FFH;P全黑

TAB2:

DB0C0H,0CFH,0A4H,86H,8BH,92H;012345倒置数码管段码表

DB90H,0C7H,80H,82H;6789倒置数码管段码表

DB81H,98H,98H,98H,98H,98H;abbbbb倒置数码管段码表

DB0A1H,0FFH;p全黑倒置数码管段码表

END

五、总结

基于STC12C5A16S2单片机的电子时钟,具有时间设置、整点报时、闹铃设置及秒表功能,由4位数码管显示时间。

单片机在日常生活中应用广泛,结合这学期的学习,我们大概的了解了单片机的发展现状和发展趋势,以及在生活中的广泛应用,其实80C51只是我们所接触的一种简单的单片机,在实际应用中,有各个公司生产的不同型号的、针对不同功能设计的、以及根据用户的需要和发展自主研发设计的单片机还有很多,由此设计出来的嵌入式系统更是数不胜数。

能够亲身的进行自我实践,并进行实际的应用,其实使我们对现行单片机的一次深入的了解,并能够提升我们将来在学习工作遇到的单片机设计问题。

在程序设计中,我们更加深入了解了中断的使用与本质,合理利用这些,会使程序简化而不会出错。

比如开始我们把主程序写在中断里面,导致程序运行混乱,而后来发现,只在中断中做少量工作,比如改一下某一个标志,这样比较好。

在这次课题设计过程中,我们合理的分工,适宜的规划进度的进展,不仅仅暗示完成了预先设计的内容。

在这一过程中,我们充分发挥我们的主观能动性,想象创造性,攻克了很多之前都没有想过的难关,真的受益匪浅。

我们理论和实验都有很大的提升,我想这些对于我们今后的学习生活都有很重要的意义,这将是我们在程序设计以及大学学习过程中的宝贵经验和财富。

疑难问题

程序中的软件按键去抖还是有点不稳定,时钟的精确度还不是很高,闹铃时间的长短还不能控制

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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