MIni时钟报告.docx
- 文档编号:26879140
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:21
- 大小:152.97KB
MIni时钟报告.docx
《MIni时钟报告.docx》由会员分享,可在线阅读,更多相关《MIni时钟报告.docx(21页珍藏版)》请在冰豆网上搜索。
MIni时钟报告
湖南源点电子实训基地
Mini时钟项目报告
姓名:
罗俊杰
指导老师:
王筝
2012年3月9日
1.设计目的
2.设计题目
3.设计内容及要求
4.设计心得及总结
1.设计目的
Mini时钟最大的优点就是节约了硬件部分的成本,提高软件的难度,也就是把单片机的引脚直接与四位一体的数码管直接相连接,从而来减少硬件上的成本,当然相对而言我设计的这个Mini时钟难度是相对简单的。
2.设计题目
Mini时钟,显示时钟的计时!
三.设计内容及要求
1.材料清单
品名
型号
数量
备注
单片机
STC89C52
1
芯片座
管孔式40PIN-DIP
1
共阴数码管
4位一体
1
蜂鸣器
5v有源
1
晶振
12mhz
1
电容
0.1uf
2
电容
30pf
1
2.proteus仿真电路图
3.实物图
4.程序
;*****************************************************************
;程序编写人:
罗俊杰,QQ:
849833861
;湖南源点单片机教育,让你学习单片机更容易
;程序编写时间:
2012年3月3日于湖南源点教育EIC实验室
;程序实现的功能:
显示时钟,分钟!
;*****************************************************************
GEIEQU30H;个位累加器
SHIEQU31H;十位累加器
BAIEQU32H;百位累加器
QIANEQU33H;千位累加器
DS1SEQU35H;定时计数器
A1EQUP1.3;数码管引脚A
B1EQUP1.7;数码管引脚B
C1EQUP0.4;数码管引脚C
D1EQUP0.2;数码管引脚D
E1EQUP0.1;数码管引脚E
F1EQUP1.4;数码管引脚F
G1EQUP0.5;数码管引脚G
H1EQUP0.3;数码管引脚H
YI1EQUP1.2;第一位
ER1EQUP1.5;第二位
SAN1EQUP1.6;第三位
SI1EQUP0.6;第四位
ORG0000H
LJMPStart
ORG000BH
LJMPT0ser
ORG0030H
;*********************初始化*********************************************
Start:
MOVTMOD,#01H
MOVTH0,(65536-20000)/256
MOVTL0,(65536-20000)MOD256
SETBEA
SETBET0
SETBTR0
MOVGEI,#0;累加器清零
MOVSHI,#0;累加器清零
MOVDS1S,#10;定时累加器赋初值
CLRH1;灭小数点
;*********************主程序*********************************************
Main:
LCALLXIANSHI;调用显示
ORLPCON,#01H
LJMPMain
;***********************子程序********************************************
;子程序名称:
显示
;子程序实现的功能:
显示出分钟和时钟
;输入:
;输出:
XIANSHI:
LCALLYIWEI
LCALLQIANWEI
LCALLDELAY_1s
;清屏
SETBYI1
SETBER1
SETBSAN1
SETBSI1
CLRA1
CLRB1
CLRC1
CLRD1
CLRE1
CLRF1
CLRG1
CLRH1
LCALLERWEI;调用数码管第二位
LCALLBAIWEI;调用数码管十位
LCALLDELAY_1s
;清屏
SETBYI1
SETBER1
SETBSAN1
SETBSI1
CLRA1
CLRB1
CLRC1
CLRD1
CLRE1
CLRF1
CLRG1
CLRH1
LCALLSANWEI;调用数码管第三位
LCALLSHIWEI
LCALLDELAY_1s
;清屏
SETBYI1
SETBER1
SETBSAN1
SETBSI1
CLRA1
CLRB1
CLRC1
CLRD1
CLRE1
CLRF1
CLRG1
CLRH1
LCALLSIWEI
LCALLGEWEI;调用数码管个位
LCALLDELAY_1S;延时
;清屏
SETBYI1
SETBER1
SETBSAN1
SETBSI1
CLRA1
CLRB1
CLRC1
CLRD1
CLRE1
CLRF1
CLRG1
CLRH1
INC45H;刷屏
MOVA,#45H
CJNEA,#20,PPU
MOV45H,#0
RET
PPU:
LJMPXIANSHI
;**********************************************************************8
;子程序名称:
显示个位
;子程序功能:
实现个位数字显示自加一
;输入:
;输出:
GEWEI:
MOVA,GEI
CJNEA,#0,PUT1;判断是否为一,不为则跳转
CALLSHUZI_0;显示数字0
RET
PUT1:
CJNEA,#1,PUT2;判断是否为2,不为则跳转
CALLSHUZI_1;显示数字1
RET
PUT2:
CJNEA,#2,PUT3;判断是否为3,不为则跳转
CALLSHUZI_2
RET
PUT3:
CJNEA,#3,PUT4;判断是否为4,不为则跳转
CALLSHUZI_3
RET
PUT4:
CJNEA,#4,PUT5;判断是否为5,不为则跳转
CALLSHUZI_4
RET
PUT5:
CJNEA,#5,PUT6
CALLSHUZI_5
RET
PUT6:
CJNEA,#6,PUT7
CALLSHUZI_6
RET
PUT7:
CJNEA,#7,PUT8
CALLSHUZI_7
RET
PUT8:
CJNEA,#8,PUT9
CALLSHUZI_8
RET
PUT9:
CJNEA,#9,PUT10;判断是否为9,不为则跳转
CALLSHUZI_9;显示数字9
RET
PUT10:
INCSHI
MOVGEI,#0
RET
;*****************十位****************************************************
;子程序名称:
显示十位
;子程序功能:
实现数码管分钟十位的显示
;输入:
;输出
SHIWEI:
MOVA,SHI
CJNEA,#0,POT0
CALLSHUZI_0
RET
POT0:
CJNEA,#1,P0T1
CALLSHUZI_1
RET
P0T1:
CJNEA,#2,P0T2
CALLSHUZI_2
RET
P0T2:
CJNEA,#3,P0T3
CALLSHUZI_3
RET
P0T3:
CJNEA,#4,P0T4
CALLSHUZI_4
RET
P0T4:
CJNEA,#5,P0T5
CALLSHUZI_5
RET
P0T5:
CJNEA,#6,P0T6
INCBAI
MOVSHI,#0
P0T6:
RET
;******************百位*******************************
;子程序名称:
显示百位
;子程序功能:
实现数码管时钟个位的显示
;输入:
;输出:
BAIWEI:
MOVA,BAI
cjnea,#0,ppt0
callshuzi_1
RET
ppt0:
CJNEA,#1,PPT1
CALLSHUZI_2
RET
PPT1:
CJNEA,#2,PPT2
CALLSHUZI_3
RET
PPT2:
CJNEA,#3,PPT3
CALLSHUZI_4
RET
PPT3:
CJNEA,#4,PPT4
CALLSHUZI_5
RET
PPT4:
CJNEA,#5,PPT5
CALLSHUZI_6
RET
PPT5:
CJNEA,#6,PPT6
CALLSHUZI_7
RET
PPT6:
CJNEA,#7,PPT7
CALLSHUZI_8
RET
PPT7:
CJNEA,#8,PPT8
CALLSHUZI_9
RET
PPT8:
CJNEA,#9,PPT9
CALLSHUZI_0
INCQIAN
RET
PPT9:
CJNEA,#10,PPT10
CALLSHUZI_1
RET
PPT10:
CJNEA,#11,PPT11
CALLSHUZI_2
RET
PPT11:
MOVBAI,#0
MOVQIAN,#0
RET
;**************千位**************************************
;子程序名称:
显示千位
;子程序功能:
实现数码管时钟十位的显示
;输入:
;输出
QIANWEI:
MOVA,QIAN
CJNEA,#0,PIT0
CALLSHUZI_0
RET
PIT0:
CJNEA,#1,PIT1
CALLSHUZI_1
RET
PIT1:
MOVQIAN,#0
RET
;**********选位选*******************************************
;子程序名称:
延时
;子程序功能:
延时?
S
;输入:
;输出
YIWEI:
CLRYI1
SETBER1
SETBSAN1
SETBSI1
RET
ERWEI:
SETBYI1
CLRER1
SETBSAN1
SETBSI1
RET
SANWEI:
SETBYI1
SETBER1
CLRSAN1
SETBSI1
RET
SIWEI:
SETBYI1
SETBER1
SETBSAN1
CLRSI1
RET
;***************定时器子程序******************************
;子程序名称:
定时器子程序
;子程序功能:
定时1s
;输入:
;输出
T0ser:
MOVTH0,(65536-20000)/256
MOVTL0,(65536-20000)MOD256
DJNZDS1S,PU2
MOVDS1S,#10
INCGEI
;INCBAI
PU2:
RETI
;********************************************************************
;子程序名称:
延时
;子程序功能:
延时?
S
;输入:
;输出:
DELAY_1s:
MOVR5,#5
D2:
MOVR6,#5
D6:
MOVR7,#5
DJNZR7,$
DJNZR6,D6
DJNZR5,D2
RET
;****************数字1*****************************************
SHUZI_1:
SETBB1
SETBC1
CLRA1
CLRG1
CLRD1
CLRE1
CLRF1
RET
;******************数字2****************************
SHUZI_2:
CLRF1
CLRC1
SETBA1
SETBB1
SETBG1
SETBD1
SETBE1
RET
;*******************数字3***************************
SHUZI_3:
CLRF1
CLRE1
SETBA1
SETBB1
SETBC1
SETBD1
SETBG1
RET
;******************数字4****************************
SHUZI_4:
CLRE1
CLRA1
CLRD1
SETBB1
SETBC1
SETBF1
SETBG1
RET
;**********************数字5****************************
SHUZI_5:
CLRE1
CLRB1
SETBA1
SETBC1
SETBD1
SETBF1
SETBG1
RET
;********************数字6***************************
SHUZI_6:
CLRB1
SETBA1
SETBC1
SETBD1
SETBF1
SETBG1
SETBE1
RET
;**********************数字7****************************
SHUZI_7:
SETBA1
SETBC1
SETBB1
CLRD1
CLRF1
CLRG1
CLRE1
RET
;******************数字8***************************
SHUZI_8:
SETBA1
SETBB1
SETBC1
SETBD1
SETBE1
SETBF1
SETBG1
RET
;*********************数字9****************************
SHUZI_9:
SETBA1
SETBB1
SETBC1
SETBD1
CLRE1
SETBF1
SETBG1
RET
;**********************数字0****************************
SHUZI_0:
CLRG1
SETBA1
SETBB1
SETBC1
SETBD1
SETBE1
SETBF1
RET
;************************结束************************************
END
3.要求
Mini时钟不能用PCB班、板制作,所有元件必须集成在单片机与数码管相接的引脚上面。
必须实现正常显示!
!
!
5.设计心得及总结
1.3月3日,今天把硬件焊出来了,但是当我把软件下载到单片机上面的时候,我当时就傻了,全是乱的!
!
!
没一点普啊
最后猜想可能是共阴和共阳弄反了!
!
!
2.3月4日,今天在对程序很纠结的时候,叫老大帮忙看了一下,结果被他三下两下就OK了,我很无语,因为自己错在一个很简单的地方!
!
!
就是因为没有清屏!
!
3.3月5日,下午听老大讲了节拍法后,有一种预感自己要做出来了,晚自习的时候把节拍法一利用,问题一下解决了!
!
问题呢是以前啊,自己开中断定时的时候没有开定时器的原因!
!
!
为此很惭愧!
!
真的
4.3月6日,显示加到8之后直接跳回到零,问题的根本就是自己没有画流程图,从而导致程序的判断错误,是的在一个简单的判断处理过程中导致程序执行错误的步骤。
总结:
通过制作Mini时钟,让我对数码管的动态显示有了更深刻的理解,觉得以前都是老师教的方法自己拿过来就用,没有怎么去研究方法的来源,从而导致自己的思维混乱,写程序时没有一个总体的规划,这也正好让我认识到:
1.写程序前,必须画流程图,要对整个程序有一个总体的结构,这样你才能在写程序的时候,避免“卡死”,当然写程序所消耗的时间相对而言也是缩短了很多。
2.还有一个就是写程序,必须要注重细节,不然一个很小的错误都很有可能让你整个程序处于“死机”状态。
3.在调试程序的时候不要盲目的调试,要分模块调试,当然我推荐写程序的时候用节拍法是最好的选择。
因为用节拍法,我们在调试程序的时候可以通过模块化的调试迅速的找到问题的所在。
当然也并不一定全部否定“盲调”在适当的时候还是可以运用的。
2012年3月9日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MIni 时钟 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)