单片机电子表设计论文.docx

上传人:b****6 文档编号:6833595 上传时间:2023-01-11 格式:DOCX 页数:18 大小:178.03KB
下载 相关 举报
单片机电子表设计论文.docx_第1页
第1页 / 共18页
单片机电子表设计论文.docx_第2页
第2页 / 共18页
单片机电子表设计论文.docx_第3页
第3页 / 共18页
单片机电子表设计论文.docx_第4页
第4页 / 共18页
单片机电子表设计论文.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机电子表设计论文.docx

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

单片机电子表设计论文.docx

单片机电子表设计论文

目录

一、电子表的设计要求与方案论证比较…………………………………………(4)

1.1设计要求………………………………………………………………………(4)

1.2方案论证比较…………………………………………………………………(5)

二、硬件电路设计………………………………………………………………(6)

三、电路板原理图…………………………………………………………………(7)

四、软件设计………………………………………………………………………(8)

(一)软件设计……………………………………………………………………(8)

(二)资源分配表………………………………………………………………(11)

五、程序……………………………………………………………………………(12)

六、调试……………………………………………………………………………(17)

七、结语……………………………………………………………………………(18)

摘要

随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的

作用。

多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。

本课程设计是基单片机原理与接口技术的简单应用。

运用所学的单片机原理和接口技术知识完成数字电子表的设计。

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

由于数字集成电路技术的发展和采用了先进的石英技术,使电子表具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子表电路的基本组成包含了数字电路的主要组成部分,因此进行电子表的设计是必要的,用C语言设计电子表显示程序,要求根据输入程序显示电子表画面。

研究电子表及扩大其应用,有着非常现实的意义。

  关键词

  LED,定时/计器数,C语言,调试,运行。

 

一、电子表的设计要求与方案

1.1设计要求

(1)

1)单片机只要采用51核的即可。

2)自动计时,用6位LED显示器显示时、分、秒。

3)使用三个按键设定当前时间,使用“设置/计时”键转换到设定状态,用“加1”和“减1”键来设定时间。

4)根据提供的材料清单,设计电路原理图,并用自己熟悉的软件画出原理图。

(2)1.硬件设计

1)

序号

材料

数量

1

单片机AT89S52

1

2

总线驱动器74LS244

1

3

6线驱动器7407

1

4

8段数码管(共阴极)

6

5

1kΩ电阻

7

6

300Ω×8排阻

1

7

200Ω电阻

4

8

22μF电解电容

1

9

50pF瓷片电容

2

10

12MHz晶振

1

11

复位按钮

4

2)启动PROTEL99SE软件,绘出原理图。

并绘制相应的印刷电路板,作为焊接的预演。

2.软件设计

1)任务分解,确定模块及相应的功能。

2)列出资源分配表。

3)画出各模块的框图。

4)编写汇编语言源程序,要有注释,书写要规范

3.调试

参考下面检测设备,制定检测方法

序号

设备

数量

1

Wave仿真器

1

2

单片机烧录器

1

3

数字式示波器

1

4

万用表

1

5

多用电源

1

 

1.2方案论证比较

1.计时方案

方案一:

利用可编程控制定时器进行定时,逐步完成时、分、秒的计数。

该方案西门子PLC,成本较高,且程序梯形图较为繁琐。

方案二:

利用MCS-51内部的定时器/计数器进行中断时,配合软件延时实现是、分、秒的计时。

该方案节省硬件成本,操作方便。

因此本系统采用此方案。

2.键盘/显示方案

方案一:

采用串口扩展,LED静态显示。

如图1

该方案用较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但占用口线多,硬件电路复杂,成本高。

方案二:

采用直接接口,LED动态显示。

如同1

采用动态显示方式比较节省I/O口,硬件也较静态显示方式简单。

但亮度不如静态显示方式,而且再显示位数较多时,CPU依次扫描,占用CPU较多的时间。

本系统采用此方案。

 

二、硬件设计

(一)计时方案

利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。

该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。

(二)键盘/显示方案

AT89S52的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口,P2口作六个LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。

AT89S52是一种低功耗,高性能的CMOS8位微型计算机。

它带有8KFlash可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂的问题,且成本较低。

简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本书中采用此的设计方案,结构如图1-1如示。

三、电路原理图

启动PROTEL99SE软件,根据电子表要实现的功能和要求,绘出原理图如下:

 

四、软件设计

(一)软件设计分为以下几个模块

(1)主程序:

初始化与键盘监控。

 

(2)计时程序模块CLOCK:

如图所示。

 

(3)、时间设置程序模块MODIFY:

如图所示。

(4)、显示程序模块DISPLAY:

如图所示。

 

(5)键盘扫描

判断是否有键按下:

无键按下则循环等待;有键按下则求取键号并将键号送A累加器返回。

程序中的去抖延时和循环等待延时都用DISPLAY子程序来代替,从而保证随时刷新显示。

(二)资源分配表

地址

功能

名称

初始化值

30H-35H

显示缓冲去,时、分、秒

DISO0-DISP5

00H

3CH-3FH

计数缓冲区,时、分、秒、100ms

HOUR,MIN,SEC,MSEC

00H

50H-75H

堆栈区

F0

0

PSW.5

计时显示允许位

 

五、程序

*******************主程序MAIN******************

ORG0000H

AJMPMAIN

ORG000BH

AJMPCLOCK

ORG0030H

DISP0EQU30H

DISP1EQU31H

DISP2EQU32H

DISP3EQU33H

DISP4EQU34H

DISP5EQU35H

HOUREQU3CH

MINEQU3DH

SECEQU3EH

MSECEQU3FH

MAIN:

MOVSP,#50;设置堆栈区

CLRF0;允许计时显示

MOV#10H

MOVR0,#DISP0

CLRA

LOOP:

MOV@R0,A

INCR0

DJNZR7,LOOP;设置初值

MOVTMOD,#01H

MOVTL0,#0B0H

MOVTH0,#3CH;定时器0的初始化,定时时间100ms

SETBTR0;启动定时器

SETBEA

SETBET0;开中断

BEGIN:

ACALLKEYSCAN;调用键盘扫描

CJNEA,#0AH,NEXT1;是CLR/RET键否?

CLRTR0;是则暂时停止计时

MOVR1,#HOUR;地址指针指向计时缓冲

区首地址

**********************键盘扫描子程序***************************

KEYSCAN:

ACALLTEST;调用判断按键是否按下

子程序TEST

JNZREMOV;有键按下则调消抖延时

ACALLDISPLAY

ACALLALARM

AJMPKEYSCAN;无键按下则继续判是否有

;键按下

REMOV:

ACALLDISPLAY;调用延时子程序消抖

ACALLTEST;再判是否有键按下

JNZLIST;有键按下则转逐列扫描

ACALLDISPLAY

ACALLALARM

AJMPKEYSCAN;无键按下则继续判断是否有键

按下

LIST:

MOVR2,#0FEH;首列扫描字送R2

MOVR3,#00H;首列键号送R3

LINE0:

MOVA,R2;首列扫描字送R2

MOVP2,A;首列扫描字P2口

MOVA,P0;读入P0口的行状态

JBACC.0LINE1;第0行无键按下,转第1行

MOVA,#00H;第0行有键按下,行首键号

;送A

AJMPTRYK;求键号

LINE1:

JBACC.1,LINE2;第一行无键按键,转第2行

MOVA,#04H;第一行有键按下,行首键号送A

AJMPTRYK;求键号

LINE2:

JBACC.2,NEXT;第2行无键按键,转第3行

MOVA,#08H;第2行有键按下,行首键号送A

AJMPTRYK;求键号

NEXT:

INCR3;扫描下一列

MOVA,R2;列扫描送A

JNBACC.3,EXIT;4列扫描完,重新进行下一轮扫描

RLA;4列未扫描完,扫描字左移扫描下一列

MOVR2,A;扫描字送A

AJMPLINE0;转向扫描下一列

EXIT:

AJMPKEYSCAN;等待下一次按键

TRYK:

ADDA,R3;按公式计算键码,求得键号

PUSHACC;键号如栈保护

LETK:

ACALLTEST;等待按键释放

JNZLETK;按键未释放,继续等待

POPACC;按键释放,键号出栈

RET;键盘扫描结束,返回

TEST:

MOVA,#00H

MOVXP0,A;全扫描字00H送P0口

MOVXA,P2;读入P2口行状态

CPLA;A取反,以高电平表示有键按下

ANLA,#07H;屏蔽高5位

RET

*****************显示子程序DISPLAY*********************************

DISPLAY:

JBF0,DISP;允许时间显示标志F0=1转DISP

ACALLSEPA;否则调用SEPA刷新显示缓冲区

DISP:

PUSHPSW   ;动态扫描显示子程序

PUSHACC

SETBRS0

MOVA,#0FFH

MOVP2,A;关显示

MOVR0,#DISP0

MOVR7,#00H

MOVR6,#06H

MOVR5,#0FEH

DIS1:

 MOVDPTR,#TAB

MOVA,@R0;取显示缓冲区数据

  MOVCA,@A+DPTR;查表得字型码

MOVP1,A;字型码送P1口

.MOVA,R5

MOVXP0,A;位选码送P0口

HERE:

DJNZR7,HERE;延时

INCR0;更新显示缓冲区地址

MOVA,R5

RLA;位码左移

MOVR5,A

DJNZR6,DIS1;判断6位显示完否

CLRRS0

POPACC

POPPSW

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

;共阴极字型码表

*****************合字子程序COMB******************

 COMB:

MOVR0,#DISP1;R0指向显示缓冲区小时低位

ACALLCOMB1;合字

CJNEA,#24H,CHK;小时大于24否?

CHK:

JNCEXIT1  ;大于24则取消本次设置,退出

MOV@R1,A  ;否则,小时送计时缓冲区/闹钟

                ;值寄存区小时单元

INCR1

MOVR0,#DISP3;R0指向显示缓冲区分低位

ACALLCOMB1

CJNEA,#60H,CHK1

CHK1:

JNCEXIT1

MOV@R1,A

INCR1

MOVR0,#DISP5;R0指向显示缓冲区秒低位

ACALLCOMB1

CJNEA,#60H,CHK2

CHK2:

JNCEXIT1

MOV@R1,A

RET

 EXIT1:

AJMPMAIN;输入不合法退出,重新清

                  ;0计时

 COMB1:

MOVA,@R0

ANLA,#0FH;取出低位

MOV43H,A;暂存于43H单元

DECR0;指向高位

MOVA,@R0

ANLA,#0FH

SWAPA;高位送高4位

  ORLA,43H;高低位合并

  RET

  ;***************拆字子程序SEPA***************

  SEPA:

PUSHPSW

  PUSHACC

  SETBRS0

      MOVR0,#DISP5;指向显示缓冲区秒低位

      MOVA,SEC

  ACALLSEPA1

  MOVA,MIN

  ACALLSEPA1

  MOVA,HOUR

  ACALLSEPA1

POPACC

POPPSW

CLRRS0

RET

  SEPA1:

MOV44H,A;暂存44H

ANLA,#0FH;取出低位

MOV@R0,A;送显示缓冲区低位

DECR0;指向显示缓冲区高位

MOVA,44H

ANLA,#0F0H;取出高位

SWAPA;高位送往低4位形成高位数据

MOV@R0,A;高位数据送显示缓冲区高位

RET

 

*************定时器0中断服务子程序CLOCK*************

  CLOCK:

MOVTL0,#0B7H

MOVTH0,#3CH;重装初值,时间校正

PUSHPSW

PUSHACC;保护现场

INCMSEC

MOVA,MSEC

CJNEA,#0AH,DONE

MOVMSEC,#00H

MOVA,SEC

INCA

DAA;二—十进制转换

MOVSEC,A

CJNEA,#60H,DONE

MOVSEC,#00H

MOVA,MIN

INCA

DAA

MOVMIN,A

CJNEA,#60H,DONE

MOVMIN,#00H

MOVA,HOUR

INCA

DAA

MOVHOUR,A

CJNEA,#24H,DONE

MOVHOUR,#00H

DONE:

POPACC

POPPSW;恢复现场

RETI

 

六、调试

1.硬件调试

(1)脱机检查。

用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。

(2)联机调试。

暂时拔掉AT89S51芯片,将仿真器的40芯仿真插头插入AT89S51的芯片插座进行调试,检验键盘/显示接口电路是否满足设计要求。

可以通过一些简单的测试软件来查看接口工作是否正常。

2.软件调试

软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。

程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。

联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。

调试的基本步骤如下:

(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。

例如将DISP0~DISP5单元置为“012345”,应能在LED上从左到右显示“012345”。

若显示不正确,可在DISP子程序相应位置设置断点,调试检查。

然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY。

(2)运行主程序调试计时模块,不按下任何键,检查是否能从由00:

00:

00开始正确计时。

若不能正确计时,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。

然后屏蔽缓冲区初始化部分,用仿真器修改计时缓冲区内容为23:

58:

48,运行主程序(不按下任何键),检验能否正确进位。

(3)调试键盘扫描模块KEYSCAN,先用延时10ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确;然后恢复用显示子程序延时消抖,检验与DISPLAY模块能否正确连接。

(4)调试时间设置模块MODIFY。

首先屏蔽COMB子程序,单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0~DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示。

然后屏蔽KEYIN子程序,单独调试合字模块COMB,分别将R1设置为时间设置缓冲区和闹钟值寄存区的首地址,修改显示缓冲区内容,运行程序后查看时间设置缓冲区HOUR、MIN、SEC单元,最后联调MODIFY模块。

(5)运行主程序联调,检查能否用键盘修改当前时间。

 

七、结束语

通过本次课程设计,我去认真再次学习了汇编语言的,以及熟练了PROTEUS和KEIL软件的运用,还更好的锻炼了用VISIO画流程图。

有时间还是会更多锻炼的。

感觉这些软件都越来越顺手了,挺开心。

发现自己真是不逼就不学的人。

另外,我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。

损耗了过多的内存资源。

本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。

在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。

同时在课程设计过程中,我们巩固和学习了我们的单片机知识。

相信这对我以后的课程设计和毕业设计将会有很大的帮助!

 

参考文献

[1]李泉溪.《单片机原理与应用实例仿真》.北京航空航天大学出版社2009年

[2]江世明.《基于proteus的单片机应用技术》.电子工业出版社2008年

[3]喻宗泉.《单片机原理与应用技术》.西安电子科技大学出版社2005年

[4]万光毅.《单片机实验与实践教程》.北京航空航天大学出版社2004年

 

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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