东华理工大学单片机课程设计.docx

上传人:b****1 文档编号:2132186 上传时间:2023-05-02 格式:DOCX 页数:14 大小:998.22KB
下载 相关 举报
东华理工大学单片机课程设计.docx_第1页
第1页 / 共14页
东华理工大学单片机课程设计.docx_第2页
第2页 / 共14页
东华理工大学单片机课程设计.docx_第3页
第3页 / 共14页
东华理工大学单片机课程设计.docx_第4页
第4页 / 共14页
东华理工大学单片机课程设计.docx_第5页
第5页 / 共14页
东华理工大学单片机课程设计.docx_第6页
第6页 / 共14页
东华理工大学单片机课程设计.docx_第7页
第7页 / 共14页
东华理工大学单片机课程设计.docx_第8页
第8页 / 共14页
东华理工大学单片机课程设计.docx_第9页
第9页 / 共14页
东华理工大学单片机课程设计.docx_第10页
第10页 / 共14页
东华理工大学单片机课程设计.docx_第11页
第11页 / 共14页
东华理工大学单片机课程设计.docx_第12页
第12页 / 共14页
东华理工大学单片机课程设计.docx_第13页
第13页 / 共14页
东华理工大学单片机课程设计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

东华理工大学单片机课程设计.docx

《东华理工大学单片机课程设计.docx》由会员分享,可在线阅读,更多相关《东华理工大学单片机课程设计.docx(14页珍藏版)》请在冰点文库上搜索。

东华理工大学单片机课程设计.docx

东华理工大学单片机课程设计

单片机课程设计报告

专业:

电气自动化

班级:

1240802

学号:

2012400802##

姓名:

JION学长

QQ:

1968812673

 

指导老师:

朱**

 

一、设计背景

数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

二、单片机课程设计目的

1.进一步熟悉和掌握8051单片机的结构及工作原理。

2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。

4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机系统的全过程,为今后从事相应打下基础。

6.掌握SPI串口进行数据传输的应用,并学会使用外部芯片辅助项设计。

7.锻炼通过自学与自己探索的方式解决问题的能力。

8.通过此次课程设计将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。

三、课程设计要求。

1.本系统共用4个数码管从左到右依次显示月、日/时、分采用软件译码静态显示。

2.按键处理设置为:

如没有按键,则时钟正常走时并且第二个数码管的小数点一秒一下。

3.当按下切换按键时进入时间/日期切换键时,显示日期小数点常亮,再按一下有变成时间显示。

4.校正时间功能

按下校正键,月数码管重复闪烁,小数点常亮,这样在按下加调键可以进行校时。

再按下校正键时,日数码管重复闪烁,小数点常亮,这样在按下加调键可以进行校时。

再按下校正键时,时数码管重复闪烁,小数点闪烁,这样在按下加调键可以进行校时。

再按下校正键时,分数码管重复闪烁,小数点闪烁,这样在按下加调键可以进行校时按。

按下确定键后程序正常走时。

四、设计方案

4.1、计时部分课程设计思路:

该课程设计是利用80C51单片机内部的定时/计数器、中断系统、以及行列键盘,设计一个单片机电子时钟。

设计的电子时钟通过数码管显示,并能通过按键实现设置时间、校时、启动控制等。

用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为62500ms(自己计算)。

形成定时时间为62500ms。

用片内RAM的2FH单元对62500ms计数,计16次产生秒计数器34H单元加1,秒计数器加到60则分计数器33H单元加1,分计数器加到60则时计数器32H单元加1,时计数器加到24则时计数器清0。

然后把分、时 、日、月计数器分成分单元和时单元放到4个数码管的显示缓冲区,通过数码管显示出来。

显示格式为小时高位、小时低位---分高位、分低位和显示日期格式为月高位、月低位---日高位、日低位。

4.4资源分配:

按键信息存储单元 50H

月单元 30H

日单元 31H

时单元 32H

分单元 33H

秒单元 34H

计数单元 2FH

清零标志位 20H.1

时间/日期标志位 20H.0

显示的四位BCD码依次放入43H、42H、41H、40H

校正指针 21H

显示缓冲区 3BH 3AH,

4.2、按键判断部分课程设计思路:

当每十六微妙进位一次时,程序就进行一次判断按键是否有按下的(是否有 6 按键功能 切换键,切换日期与时间 校正键 校时键, 确定键校正键按下k2),判断是否与上次按键相同,如果相同直接送入时间缓冲间送出显示,如果不相同就保存按下的按键再进行判断是不是切换键(ACC.5,SET2) 按下,如果是时间时期同时取反,将取反时间送入时间缓冲间送出显示同时将取反日期送入日期缓冲间送出显示。

如果不是,判断是否是校正键按下,如果不是重复将取反时间送入时间缓冲间送出显示同时将取反日期送入日期缓冲间送出显示。

如果是校正键按下就进入校正状态,将校正指针初值设成(00,01、10、11、分别代表分、时日、月)同样判断校正指针(20H.1)中的值进入下面分、时、日、月四个子程序中执行,同时进入每个时间日期子程序中都要进行判断是否有ACC.6 ,ADD2;(加法)和ACC.7,SURE;确定键按下.每次按键任何一个键间日期缓冲间显示。

如下图所示:

4.3、数码管显示部分:

把我们设计好的程序通过查表在数码管上显示出来,数码管上从左到右分别显示月、日/时、分,四个数码管分别显示高位和低位,切换时间显示时,要显示出小数点闪烁.

如下图所示:

4.5程序流程图:

 

 

4.6子程序流程图:

 

五、实验程序

ORG0000H

SJMPMAIN

ORG000BH

LJMPITOP

ORG0030H

MAIN:

MOV50H,#0FFH;按键信息初始化为未按键状态

MOV30H,#1;月单元

MOV31H,#1;日单元

MOV32H,#0;时单元

MOV33H,#0;分单元

MOV34H,#0;秒单元

MOV2FH,#16;2FH为十六分之一秒计数单元

CLR20H.1;校正状态标志清零,为正常走时状态

SETB20H.0;时间/日期标志置1

MOVTMOD,#01H;置T0工作于方式1

MOVTH0,#0BH;采用12M晶振,定时十六分之一秒

MOVTL0,#0DCH;装载定时器初值

MOVIE,#82H;允许中断

SETBTR0;启动定时器

SJMP$

ITOP:

PUSHPSW;现场保护

PUSHACC

MOVTH0,#0BH

MOVTL0,#0DCH

DJNZ2FH,KEY;计数开始

MOV2FH,#16;十六分之一秒计数单元

MOVA,34H

ADDA,#01H;在0~9之间,加01H

DAA;进行十进制调整

MOV34H,A;送到秒计数单元

CJNEA,#60H,KEY;未到六十秒转移到KEY,到了则顺序往下执行

MOV34H,#00H;秒单元清零

MOVA,33H;分单元加1,并做十进制调整

ADDA,#01H

DAA

MOV33H,A;送到分计数单元

CJNEA,#60H,KEY;未到六十分转移到KEY

MOV33H,#00H;分单元清零

MOVA,32H;时单元加1,并做十进制调整

ADDA,#01H

DAA

MOV32H,A;送到时单元

CJNEA,#24H,KEY;未到二十四小时转移,到了则顺序往下执行

MOV32H,#00H;时单元清零

MOVA,31H;日单元加1,并做十进制调整

ADDA,#01H

DAA

MOV31H,A;送到日单元

CJNEA,#31H,KEY;未到三十一天转移

MOV31H,#01H;日单元变为一

MOVA,30H;月单元加1,并做十进制调整

ADDA,#01H

DAA

MOV30H,A;送到月单元

CJNEA,#12H,KEY;未到十二个月转移

MOV30H,#01H;月单元变为一

KEY:

JNB20H.1,ZOUSHI;判断是否校正状态,不是,则转非校正状态

LJMPJIAOSHI;是,则转为校正状态

ZOUSHI:

MOVA,P1

CJNEA,50H,KEY1;判断是否与上次按键相同,不相同则转移到KEY

LJMPNONE1;相同则不断判键

KEY1:

MOV50H,A;保存上次按键信息

JNBACC.4,SWITCH1;是否按下切换键

JNBACC.5,SET1;是否为校正键

LJMPNONE1;没按与无效键均不作判断

SWITCH1:

CPL20H.0;时间与日期的转换

NONE1:

JNB20H.0,DATE1;判断日期与时间的标志

MOV3BH,32H;将时间送到显示缓冲区

MOV3AH,33H

LJMPDISP

DATE1:

MOV3BH,30H;将日期送到显示缓冲区

MOV3AH,31H

LJMPDISP

SET1:

SETB20H.1;切换到校正标志

MOV21H,#0;校正指针并请零

CLR20H.0;选择日期标志

MOV3BH,30H;将日期送到显示缓冲区

MOV3AH,31H

LJMPDISP

JIAOSHI:

MOVA,P1

CJNEA,50H,KEY2;判断是否与上次按键相同

LJMPNONE2;若相同则不能判断按键

KEY2:

MOV50H,A;保存上次按键信息

JNBACC.5,SET2;是否为校正键

JNBACC.6,ADD2;是否为加键

JNBACC.7,SURE;是否为确定键

LJMPNONE2;空操作

SET2:

INC21H;校正指针并自动加1

ANL21H,#03H

SJMPNONE2

ADD2:

MOVA,#30H;指向需要校正的指针

ADDA,21H

MOVR0,A

MOVA,@R0;需要校正的指针并自动加1

ADDA,#1

DAA

MOV@R0,A

CJNER0,#30H,DATE;判断月是否校正完成,校正完成跳转日

CJNE@R0,#13H,NONE2

MOV@R0,#1

SJMPNONE2

DATE:

CJNER0,#31H,HOUR;判断日是否校正完成,完成则跳转到时

CJNE@R0,#32H,NONE2

MOV@R0,#1

SJMPNONE2

HOUR:

CJNER0,#32H,MIN;判断时是否校正完成,完成则跳转到分

CJNE@R0,#24H,NONE2

MOV@R0,#0

SJMPNONE2

MIN:

CJNE@R0,#60H,NONE2;校正分

MOV@R0,#0

SJMPNONE2

SURE:

CLR20H.1;校时完成跳转到走时标志

SJMPTIME2

NONE2:

JNB21H.1,DATE2;判断送到显示缓冲区的是时间还是日期

TIME2:

SETB20H.0;时间/日期标志置1,为显示时间状态

MOV3BH,32H;时间送到显示缓冲区

MOV3AH,33H

LJMPDISP

DATE2:

CLR20H.0;时间/日期标志位清零,为显示日期状态

MOV3BH,30H;日期送到显示缓冲区

MOV3AH,31H

DISP:

MOVA,3BH;显示缓冲区中的内容分解为四位BCD码依次放入43H~40H单元

ANLA,#0F0H

SWAPA

MOV43H,A

MOVA,3BH

ANLA,#0FH

MOV42H,A

MOVA,3AH

ANLA,#0F0H

SWAPA

MOV41H,A

MOVA,3AH

ANLA,#0FH

MOV40H,A

JNB20H.1,DISP1;不是校正状态,正常显示,否则校正状态下,闪烁显示

JNB2FH.3,DISP1;若2FH.3为1,校正内容对应的BCD码单元送熄灭码

JNB21H.0,N1;为0高两位传送,为1低两位传送

MOV40H,#0AH

MOV41H,#0AH

SJMPDISP1

N1:

MOV42H,#0AH

MOV43H,#0AH

LJMPDISP1

DISP1:

MOVDPTR,#TAB;指向表单

MOVA,40H;查最高位

MOVCA,@A+DPTR

CJNEA,#09H,NEXT1;判断最高位是否为0

MOVA,#0FFH;为0则给熄灭码

NEXT1:

MOVSBUF,A;传送到数码管上,串行静态显示

JNBTI,$

CLRTI

MOVA,41H;查第二位

MOVCA,@A+DPTR

MOVSBUF,A;传送到数码管上

JNBTI,$;等待传输完毕

MOVA,42H;查第三位

CLRTI;允许继续传输

MOVCA,@A+DPTR;查显示数据对应段码

JNB20H.0,NEXT2;判断时间/日期标志

;CJNEA,#11H,NEXT2;日期灭0,时间状太不灭0

;MOVA,#0FFH

;MOVC,2FH.3;判断并改变小数点,并判断半秒亮半秒灭

;ANLC,20H.0

movc,2fH.3

MOVACC.4,C;小数点为.4位

NEXT2:

MOVSBUF,A

JNBTI,$

CLRTI

MOVA,43H;查第四位

MOVCA,@A

MOVSBUF,A

JNBTI,$

CLRTI

POPACC;现场恢复

POPPSW

RETI

TAB:

DB11H,0d7H,98H,92H,56H,32H,30H,97H,10H,12H,0FFH

END

六、总结及建议

课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在一天半的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。

同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!

同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

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

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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