单片机设计电子表的控制系统设计.docx

上传人:b****4 文档编号:12135426 上传时间:2023-04-17 格式:DOCX 页数:24 大小:209.93KB
下载 相关 举报
单片机设计电子表的控制系统设计.docx_第1页
第1页 / 共24页
单片机设计电子表的控制系统设计.docx_第2页
第2页 / 共24页
单片机设计电子表的控制系统设计.docx_第3页
第3页 / 共24页
单片机设计电子表的控制系统设计.docx_第4页
第4页 / 共24页
单片机设计电子表的控制系统设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机设计电子表的控制系统设计.docx

《单片机设计电子表的控制系统设计.docx》由会员分享,可在线阅读,更多相关《单片机设计电子表的控制系统设计.docx(24页珍藏版)》请在冰豆网上搜索。

单片机设计电子表的控制系统设计.docx

单片机设计电子表的控制系统设计

6.1调节电路部分...........................................15

6.2显示电路部分...........................................15

6.3单片机部分电路.........................................17

第1章概述

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

我们都知道,设计系统的关键是思路,而系统通常又由各个模块所组成,所以必须先把所要设计的系统模块化,再把各个模块组合在一起,实现一个完整的系统。

这就要求我们先要有扎实的理论知识,特别对芯片的各个管脚功能必须了解,这样才能进行硬件设计,同时,又必须掌握MCS51的指令功能,通过编程实现其功能,这就能让我们能更好地理解《单片机原理及应用》这门课程,也是一种理论在实践中的运用。

如果说我们以前学的都是理论,包括C语言,微机原理,C++,微机接口技术,protel等等,那么这次的课程设计就是一个贯穿多学科的综合性实践。

单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。

单片机的有点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

目前,数字钟的功能越来越强,并且有多种专门的大规模集成电路可供选择。

 

第2章系统总体方案设计

2.1总体思路

利用52单片机的P2口作为控制单片机跑表开始,暂停,清零,返回的输入端。

P3作为控制LED的显示时钟的调节时间控制信号输入端。

P0,P1控制LED动态显示选择控制端控制六个LED的显示时间和显示顺序。

定时器T0定时50ms。

T1定时10ms,37H-39H保存时钟的变化量。

41H-43H保存秒表的变化量。

其中为了方便显示,每个变量对应两个单元,以便将变量拆开成两个十进制的数方便显示。

 

2.2系统方案选择

本系统采用AT89C52单片机、6位数码管显示(不带译码器)和7个键盘键盘操作(分别为功能键,加一键,减一键,返回键,开始键,暂停键,清零键)作为调节时间的按钮构成一个单片机多功能时钟的硬件。

此外包括一些必须的晶振电路和复位电路,是一个多功能时钟,具有时间显示功能和跑表功能,数码管显示时间,通过三个按钮对时间进行调整,按键1为时分秒控制按钮,2、3为加减调节按钮。

(1)计数单元由单片机内部定时器/计数器T0来实现。

(2)时间显示功能通过LED数码管动态扫描来实现,其中P0口控制数码管的断选信号,P1口的低六位控制数码管的六个片选信号。

(3)时间调整通过接入键盘来实现。

第3章硬件设计

3.1系统硬件结构框图

对定时器T0一个50ms的定时时间,软件计数功能的单元地址R2为20,当R2减到0是秒加一。

当秒、分值为60时改位清零,且高位加一。

当时的值达到24时,显示全部为0,然后进入新的一天。

该系统是通过P2控制时分秒位的选择,通过P0口实现时分秒的显示。

时分秒的调节由外接键盘的上三个按钮控制,按一下调秒、两下调分、三下调时、按四下返回。

对于定时器T1设定一个10ms的定时时间,当进入一次中断时,秒表最后一位的数字加一。

在秒表的子程序中加入按键检测程序,保证在跑表运行的过程中能随时的响应外部按键的信号进行相关的操作。

跑表变量储存在41H-43H的单元中,变化后,经过数据处理,经显示程序显示。

 

3.2按键结构

按键采用的是7个独立按键,首先得按动接在P2.3口的返回键,即进入系统,显示器显示6个0,接着按下接在P2.0口的开始键,使系统开始运行,P2.1口的是接的秒表的复位清零,P2.2口接得是秒表的暂停,键盘1功能切换键是接在P3.2上的,按下1键进入调秒状态每按下P3.0接得2键秒钟加一,每按下P3.1接得3键秒钟减一;按两下键盘1键进入调分状态,每按下2键分钟加一,每按下3键分钟减一;按三下键盘1键进入调时状态,每按下2键时钟加一,每按下3键时钟减一;按四下键盘1键返回计数状态。

图1按键结构

 

第4章开发板焊接及其测试

周二指导老师就安排我们进行单片机开发板的焊接工作,给我们讲解了许多的焊接工作中的技巧和工艺,并教我们对焊接好的开发板进行测试。

在焊接过程中,如果是焊接一般电子元件(电路板上无大规模集成电路或其他易击穿的器件),烙铁和电路板之间45度,焊接面光滑,焊点太大也不要太小,焊接时间不要太长,容易烧坏元器件和破坏板上的铜线。

焊接顺序基本上是从内到外,先低后高,电烙铁可不接地;如是,则必须接地或带静电环。

一般选30-60W外热式电烙铁,1mm以下含松香焊锡,烙铁头必须清洁,可在含水海绵上擦拭,不可用硬物刮擦。

焊接时,烙铁头应同时接触器件引脚及电路板,再送入焊锡,如温度适宜时,可见焊锡融化如水银,由引脚扩散至电路板铜焊点并填满,收回烙铁及焊锡,焊接完成。

注意焊接时间应尽量短,因此保证适宜的温度很重要,可预先用烙铁融化焊锡测试一下。

焊接好开发板后,接下来的工作就是对其进行电气检测,看看焊接过程中是否有短路、虚焊和接触不良的现象,利用万能表对一些电气节点进行测量。

第5章软件设计与说明

使用单片机中的定时器中断,定时50ms,设定一计数单元R0为20,当R2减为0时(50×20=1000)时秒值加一,当秒值为60时,分值加一秒值清零。

分值为60时时值加一分值清零时值为24时时分秒全部清零。

秒表时,采用和时钟基本一致的设计方法,只不过奖定时器T1的时间设定为10ms,然后进位的问题和时钟基本一致,不过秒表的进位应该是100个0.01S进一位。

由于存在两个不同的工作状态,因此,每一个状态的后面都要加一段检测按键的程序,方便在有外部按键信号的时候及时的响应,防止进入死循环。

5.1主程序流程图

图5主程序流程图

5.2显示程序流程图

图6显示程序流程

5.3定时计数器T0中断服务流程图

图7定时器/计数器中断流程图

 

第6章调试步骤、结果、使用说明

把编好的程序输入到新建的04中,保存编译得到一个04.hex的文件,然后我是首先在proteus软件下把我设计的电路图画出来,因为如果直接就导入单片机中运行的话,个人觉得很难成功,因为能影响下载不成功的因素很多,很难一下子就找出来的,而使用proteus的话,在一定的程度上就可以避免了这些干扰因素,从而就使得能很好的排除故障以及干扰因素,所以我是先把生成的04.hex文件导入proteus的电路图中进行仿真,在仿真时发现程序没问题——仿真成功了,时钟开始显示时间,等到秒钟为59时下一秒分钟加一,秒钟清零,等分秒都为59时下一秒时钟加一分秒清零,当时为23分秒为59时下一秒时分秒全部清零,显示部分电路调试通过。

控制部分调时通过。

再调试秒表的过程中,由于精确到0.01S的过程,因此必须慎重考虑DELAY程序的应用以及循环次数的确定,否侧回造成显示出问题,过快或过慢都会对试验结果造成不良的影响。

为此,在秒表的调试过程中,必须谨慎。

仿真通过后,就开始着手把04.hex文件下载到开发板上,

在调时电路过程中要认真观测合记录,一发下问题就及时调节,使用过程中时,按下返回键,就进入显示程序,按开始键时钟表开始运行,功能键有4种方式,按一次就是调整秒,两次就是调分,三次就是调时,四次就是返回功能,跑秒时,有暂停和清零键。

 

6.1调节电路部分

图2调节时钟部分电路

 

6.2显示电路部分

图3显示部分电路(时钟电路)

图4显示部分电路(跑表电路)

 

6.3单片机部分电路

图5单片机部分电路

 

第7章设计总结

课程设计是对课程的实践与总结,只要做了就会有收获。

在这次设计中我加深了程序的阅读能力、程序的灵活调用、单片机的设计制作调试方法。

为了能顺利的完成这次的课程设计我找了很多资料也因此知道了不少课本上没深入介绍的东西,提高了我的思维空间,拓宽了我的知识面,加深了对单片机课程的兴趣。

最主要的是加强了动手的能力,遇到问题是先思考,解决不了再查资料,实在弄不出来就问老师和同学们。

通过这次课程设计我了解到学好一门汇编语言,最根本的应该是了解所能接触到的程序中最关键的是哪些,实际的应用编写更是非常重要,所以我们一定要自己动手试一下,尝试编写程序。

因为做一个旁观者事不能够学到东西的。

此外在此次设计中我对此次设计的内容有一下感触,第一,由于此次设计的过程中设计秒表和时钟的显示,即在一个数码管上显示两种变量,必须确定以下几点:

1、时钟在切换的过程中不能停,秒表在切换的过程中可以停,为了简化设计,我设计的是在切换的过程中秒表停止。

2、必须仔细的核对每一个变量的名字,我曾经在核对变量的名字上面花了很大的力气,由于变量的名字错了,软件编译时很少能检查出,因此仿真时往往不容易发现。

3、要每个子程序的调试,这样才能确认某一个部分是正确的,这样才有继续往下做的信心和勇气。

十分感谢学校安排这次课程设计,他使我们对前面的知识进行了积累,也十分感谢周老师以及同学们在设计过程中对我的帮助。

 

第8章参考文献

1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.

2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社

4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.

5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.

6、周向红编《51系列单片机应用与实践教程》[M].北航出版社

7、周坚编.《单片机C语言轻松入门》[M].北京航空航天大学出版社

 

附录1总体设计图

附录2程序清单

MIAOLEQU30H;存放时间的变量分别为秒钟秒钟个位,十位

MIAOHEQU31H

FENLEQU32H

FENHEQU33H

SHILEQU34H

SHIHEQU35H

SHIEQU39H;存放10进制的时钟信息

FENEQU38H

MIAOEQU37H

FUCEQU36H;功能键按键计数器,记录功能键按下的次数

FANHUI1BITP2.0

STARTBITP2.1;跑表计时开始

STOPBITP2.2;跑表计时停止

CLEARBITP2.3;跑表清零

SECOND1EQU41H;保存跑表变量

SECOND2EQU42H

FENGEQU43H

SECOND1LEQU44H

FENGLEQU48H

SECOND2LEQU46H

SECOND1HEQU45H

FENGHEQU49H

SECOND2HEQU47H

ORG0000H

SJMPMAIN

ORG000BH

LJMPTIME0

ORG001BH

LJMPTIME1

ORG0030H

INIT:

MOVTMOD,#11H;选定时器0方式1

MOVTH0,#3CH;置初值

MOVTL0,#0B0H;

MOVTH1,#0D8H;置初值(10MS)0.01S

MOVTL1,#0F0H;

MOVR2,#20;1秒时间50msX20

SETBET0;开定时器0中断

SETBET1

SETBEA;开中中断

SETBTR0;启动定时器0

MOVP3,#0ffh;读键值,初始化

MOVP2,#0ffh

RET

MAIN:

ACALLINIT;调用初始化函数

A1:

MOVDPTR,#TAB;查表初值

ACALLKEYSCAN

MOVA,P2

JNBFANHUI1,FANHUI

JNBSTART,SEC_WATCH;判断是否是跑表计时开始

JNBSTOP,STOP_WATCH

JNBCLEAR,CLEAR_WATCH

SJMPA1;判断设置时钟时

LJMPA1

FANHUI:

ACALLKEYSCAN

ACALLDISP

ACALLCHULI

CLRTR1

JNBSTART,SEC_WATCH;判断是否是跑表计时开始

JNBSTOP,STOP_WATCH

JNBCLEAR,CLEAR_WATCH

SJMPFANHUI

SEC_WATCH:

MOVDPTR,#TAB

ACALLDELAY

ACALLDISP1

ACALLCHULI1

SETBTR1

MOVSECOND1,#00

MOVSECOND2,#00

A3:

LCALLDISP1

LCALLCHULI1

JNBCLEAR,CLEAR_WATCH

JNBSTOP,STOP_WATCH

JNBFANHUI1,FANHUI

JNBSTART,SEC_WATCH

AJMPA3

CLEAR_WATCH:

MOVSECOND1,#00

MOVSECOND2,#00

LCALLCHULI1

ACALLDISP1

LCALLDELAY

AJMPA3

STOP_WATCH:

CLRTR1

LCALLCHULI1

ACALLDISP1

SJMPA3

KEYSCAN:

MOVA,P3;读取按键

ANLA,#07H;

CJNEA,#07H,K0;判断是否按键

RET

K0:

ACALLDELAY;有按键延时去抖动

MOVA,P3

ANLA,#07H

CJNEA,#07H,K1;

RET;是抖动返回

K1:

MOVR3,A;不是抖动,存按键

K2:

MOVA,P3;

ANLA,#07H;

CJNEA,#07H,K2;等待松开按键

MOVA,R3;

CJNEA,#06H,K3;键值读取看是否是P3.1被按下,加1按键

SJMPKEY1;

K3:

CJNEA,#05H,KEY3;看是否是P3.2被按下,减1按键

SJMPKEY2;

KEY3:

INCFUC;不是加1也不是减1就是功能键P3.0,被按下,功能键按下次数加1

CLRTR0;按下功能见后进入调整时间模式,关闭定时器

MOVA,FUC;读取功能键按下次数

CJNEA,#4,RETT;如果按下四次了,就恢复时间模式

SETBTR0;打开定时器

MOVTH0,#3CH;

MOVTL0,#0B0H;

MOVFUC,#0;计数器清0

SJMPRETT;

KEY1:

ACALLADD1;如果是加1按键,调用加1函数

SJMPRETT;

KEY2:

ACALLSUB1;如果是减1按键,调用减1函数

RETT:

RET

CHULI1:

MOVR1,#44H;将十进制的时间个十位分开

MOVR0,#41H;

MOVR3,#3;

K4:

MOVA,@R0;取时间

MOVB,#10;分离个十为

DIVAB;

MOV@R1,B;个位保存在以L(SHILFENLMIAOL)结尾的时间变量中

INCR1;

MOV@R1,A;

INCR1;

INCR0;

DJNZR3,K4;

MOVA,FENG;时信息更新,保证不大于23

CJNEA,#60,RET5;

MOVFENG,#0;

RET5:

RET;

CHULI:

MOVR1,#30H;

MOVR0,#37H;

MOVR3,#3;

K5:

MOVA,@R0;

MOVB,#10;

DIVAB;

MOV@R1,B;

INCR1;

MOV@R1,A;

INCR1;

INCR0;

DJNZR3,K4;

MOVA,SHI;

CJNEA,#24,RET4;

MOVSHI,#0;

RET4:

RET

ADD1:

MOVA,FUC;

CJNEA,#3,AD0;

MOVR0,#39H;时存放的地址

MOVA,@R0;取时,看是否满23

CJNEA,#23,AD1;

MOV@R0,#0;如果满了23,就清0

SJMPRET0

AD0:

MOVA,#36H;不是给时加1

ADDA,FUC;

MOVR0,A;取出要加数的地址

MOVA,@R0;

CJNEA,#59,AD1;是否加到59了

MOV@R0,#0;加到了59就清0

SJMPRET0

AD1:

INC@R0;时没有加到23,其他的没有加到59时,加1

RET0:

RET

SUB1:

MOVA,FUC

CJNEA,#3,SU0

MOVR0,#39H

MOVA,@R0

CJNEA,#0,SU1

MOV@R0,#23

SJMPRET1

SU0:

MOVA,#36H

ADDA,FUC

MOVR0,A

MOVA,@R0

CJNEA,#0,SU1

MOV@R0,#59

SJMPRET1

SU1:

DEC@R0

RET1:

RET

DISP:

MOVR3,#20

DI0:

MOVR0,#35H

MOVR4,#6

MOVR5,#01H

DI1:

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

MOVA,R5

MOVP1,A

RLA

MOVR5,A

DECR0

ACALLDELAY

MOVP1,#00H

DJNZR4,DI1

DJNZR3,DI0

RET

DISP1:

MOVR3,#5

DI01:

MOVR0,#49H

MOVR4,#6

MOVR5,#01H

DI11:

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

MOVA,R5

MOVP1,A

RLA

MOVR5,A

DECR0

ACALLDELAY

MOVP1,#00H

DJNZR4,DI11

DJNZR3,DI01

RET

TIME1:

MOVTH1,#0D8H;置初值(10MS)0.01S

MOVTL1,#0F0H

INCSECOND1;

MOVA,SECOND1;

CJNEA,#100,RET2;看是否满100个10ms

MOVSECOND1,#0;满100个秒,秒清0

INCSECOND2;秒加1

MOVA,SECOND2;是否满60秒

CJNEA,#60,RET2;

MOVSECOND2,#0

INCFENG

MOVA,FENG;分钟加1

RET2:

RETI

TIME0:

MOVTH0,#3CH

MOVTL0,#0B0H;重置初值

DJNZR2,RET3;是否满1秒

MOVR2,#20;秒钟加1

INCMIAO;

MOVA,MIAO;

CJNEA,#60,RET3;看是否满60秒

MOVMIAO,#0;满60秒,秒清0

INCFEN;分钟加1

MOVA,FEN;是否满60分

CJNEA,#60,RET3;

MOVFEN,#0;满60分

INCSHI;时钟加1

MOVA,SHI;

CJNEA,#24,RET3;时钟是否满24

MOVSHI,#0;满24,时钟清0

RET3:

RETI

DELAY:

MOVR6,#5

D0:

MOVR7,#245

DJNZR7,$

DJNZR6,D0

RET

TAB:

DB0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H

DB90H,88H,83H,0c6H,0a1H,86H,8eH,0ffH;共阳编码表

 

电气信息学院课程设计评分表

项目

评价

及格

设计方案合理性与创造性(10%)

开发板焊接及其调试完成情况*(10%)

硬件设计或软件编程完成情况(20%)

硬件测试或软件调试结果*(10%)

设计说明书质量(20%)

答辩情况(10%)

完成任务情况(10%)

独立工作能力(10%)

出勤情况(10%)

综合评分

指导教师签名:

________________

日期:

________________

注:

表中标*号项目是硬件制作或软件编程类课题必填内容;

此表装订在课程设计说明书的最后一页。

课程设计说明书装订顺序:

封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。

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

当前位置:首页 > 经管营销 > 经济市场

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

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