MCU实验报告-3-基于单片机的简易秒表设计制作_第1页
MCU实验报告-3-基于单片机的简易秒表设计制作_第2页
MCU实验报告-3-基于单片机的简易秒表设计制作_第3页
MCU实验报告-3-基于单片机的简易秒表设计制作_第4页
MCU实验报告-3-基于单片机的简易秒表设计制作_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCU实验报告--3-基于单片机的简易秒表设计制作MCU试验报告--3-基于单片机的简易秒表设计制作

MCU试验报告--3-基于单片机的简易秒表设计制作

项目二基于单片机的简易秒表设计制作

一、试验目的和要求

1、试验目的

熟识LED数码管与单片机的接口电路及其设计方法,把握动态显示方式及其典型的应用电路;把握LED八段数码管秒表显示器的程序编制方法。

通过调试简易秒表整体程序,学会编制含LED动态显示、定时器中断等多种功能的综合程序,初步把握简单应用程序的编制和调试技巧。2、试验要求

A仿真试验,完成用数码管显示0-9或A-F并不断循环;

B简洁秒表的设计及实现,每过1S,LED数码管显示的秒数加1,设计制作0-59S不断运行的秒表。

二、试验仪器设备

1、PC机(Keil,PROTEUS)3、面包板4、元器件

2、试验仿真板(用dpj.dll试验仿真板验证)

三、试验步骤1、器件预备

元器件清单列表元件名称AT89S51晶振电容1数码管12MHz参数数量1112电阻1电阻2电容1其它元件名称参数数量2、硬件设计

试验A仿真原理图

试验B仿真原理图

试验B依据电路原理图,对各个硬件模块在面包板上进行搭试。3、软件设计及调试

1)、启动Keil软件2)、源程序(供参考)试验A

CounterEQU57H;计数器,显示程序通过它得知现正显示哪个数码管DISPBUFEQU58H

;显示缓冲区为58H-5DH

……试验B

2……3)、调试程序

A、依据程序确定调试目的,即调试时所需观看的内容结果。B、调试程序。

4、固化程序

将以上ASM编译生成HEX文件,利用编程器将HEX文件烧录到AT89S51。

5、秒表显示(照片)

四、总结与体会

扩展阅读:简易秒表的制作

简易秒表的制作1.实训目的

(1)利用单片机定时器中断和定时器计数方式实现秒、分定时。

(2)通过LED显示程序的调整,熟识8155与8051,8155与LED的接口技术,熟识LED动态显示的掌握过程。

(3)通过键盘程序的调整,熟识8155与矩阵式键盘的接口技术,熟识键盘扫描原理。

(4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。2.实训设备与器件

(1)实训设备:单片机开发系统、微机。(2)实训器件:实训电路板1套。3.实训步骤与要求

(1)要求:利用实训电路板,以8位LED右边2位显示秒,左边6位显示0,实现秒表计时显示。以4×4矩阵键盘的KE0、KE1、KE2等3键分别实现启动、停止、清零等功能。

(2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0、KE1、KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。

(3)试验线路分析:采纳实训电路板,其原理图参见附录。8位LED显示的位码由8155的PA口输出,段码由8155的PB口输出,PB口线与LED之间接有200Ω限流电阻,LED为共阴极数码管,LED显示方式为动态显示方式。4×4矩阵键盘的行线经5.1KΩ电阻上拉后与8155PC口的PC0~PC3口线相连,列线与8155PA口的PA0~PA3口线相连。8155的掌握口地址为4400H,PA口地址为4401H,PB口地址为4402H,PC口地址为4403H。系统本采纳11.0592MHz的晶振,本实训应改为12MHz晶振,以便利定时。

(4)软件设计:软件整体设计思路是以键盘扫描和键盘处理作为主程序,LED动态显示作为子程序。二者间的联系是:主程序查询有无按键,无按键时,调用二次LED动态显示子程序(约延时8ms)后再回到按键查询状态,不断循环;有按键时,LED动态显示子程序作为按键防抖延时被连续调用二次(约延时16ms),待按键处理程序执行完后,再回到按键查询状态,同时兼顾了按键扫描取值的精确     性和LED动态显示的稳定性。秒定时采纳定时器T0中断方式进行,60秒计数由定时器1采纳方式3完成,中断及计数的开启与关闭受控于按键处理程序。由上述设计思路可设计出软件流程图如图7.1所示。

(5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清零”,因按键较少,在处理按键值时未采纳散转指令“JMP”,而是采纳条件转移指令“CJNE”,每条指令后紧跟着一条无条件跳转指令“AJMP”,转至相应的按键处理程序,如不是上述3个按键值则跳回按键查询状态。8位LED显示的数据由显示缓冲区30H~37H单元中的数据打算,挨次是从左至右,动态显示时,每位显示持续时间为1ms,1ms延时由软件实现,8位显示约耗时8ms。主程序、按键查询子程序采纳第0组工作寄存器,显示子程序采纳第1组工作寄存器。1秒定时采纳定时器T0方式1中断,每50ms中断一次,用21H做50ms计数单元,每20次为一个循环,计满20次,60秒计数单元(20H)计数1次。60秒计数采纳定时器T1方式2计数,计数脉冲采纳软件置位、复位P3.5口的方法实现,用20H单元做60秒计数单元,如定时器T1溢出,则20H单元被清零,20H单元的数据采纳十进制计数,该数据被拆成个位和十位两个数据后分别送至显示缓冲区的30H、31H单元。

图7.1简易秒表软件流程图

根据上述思路可编制源程序如下:ORG0000H

AJMPMAINORG000BH

AJMPCONT

主程序

;——————————初始化程序————————————

MAIN:MOVTMOD,#61H;置T0方式1定时,T1方式2计数MOVTH0,#3CH;T0置初值MOVTL0,#0B0H

MOVTH1,#0C4H;T1置初值MOVTL1,#0C4H

MOVDPTR,#4400H;8155掌握口地址送DPTRMOVA,#43H;设置8155工作方式字

MO@DPTR,A;设置PA、PB口输出,PC口输入MOV20H,#00H;60秒计数单元置初值MOV21H,#14H;50ms计数单元置初值MOVSP,#3FH;堆栈指针置初值

MOVR2,#08H;LED待显示位数送R2MOVR0,#30H;显示缓冲区首址送R0STAR:MOV@R0,#00H;显示缓冲区清零INCR0

DJNZR2,STAR

CLRA;累加器清零;———————————键盘查询程序——————————

KEY:ACALLKS;调按键查询子程序判是否有键按下JNZK1;有键按下转移ACALLDISP;无键按下,调显示子程序延时AJMPKEY;连续查询按键;———————————键盘扫描程序——————————K1:ACALLDISP;键盘去抖延时ACALLDISP

ACALLKS;再次判别是否有键按下JNZK2;有键按下转移

AJMPKEY;无按键,误读,连续查询按键K2:MOVR3,#0FEH;首列扫描字送R3MOVR4,#00H;首列号送R4

K3:MOVDPTR,#4401H;PA口地址送DPTR,开头列扫描MOVA,R3

MO@DPTR,A;列扫描字送PA口INCDPTR;指向PC口INCDPTR

MOA,@DPTR;读取行扫描值

JBACC.0,L1;第0行无键按下,转查第1行MOVA,#00H;第0行有键按下,行首键号送AAJMPLK;转求键号

L1:JBACC.1,L2;第1行无键按下,转查第2行

MOVA,#08H;第1行有键按下,行首键号送AAJMPLK;转求键号

L2:JBACC.2,L3;第2行无键按下,转查第3行

MOVA,#10H;第2行有键按下,行首键号送AAJMPLK;转求键号

L3:JBACC.3,NEXT;第3行无键按下,转查下一列MOVA,#18H;第3行有键按下,行首键号送AAJMPLK

LK:ADDA,R4;形成键码送APUSHACC;键码入栈爱护K4:ACALLDISP

ACALLKS;等待键释放JNZK4;未释放,等待POPACC;键释放,弹栈送AAJMPPR;转键盘处理程序

NEXT:INCR4;修改列号MOVA,R3

JNBACC.3,KEY;4列扫描完返回按键查询状态RLA;未扫描完,改为下列扫描字MOVR3,A;扫描字暂存R3AJMPK3;转列扫描程序

;———————————键盘处理程序———————————————PR:CJNEA,#00H,PR01;不是KE0键码,转KE1键AJMPKE0;转KE0键处理程序

PR01:CJNEA,#01H,PR02;不是KE1键码,转KE2键AJMPKE1;转KE1键处理程序

PR02:CJNEA,#02H,PR03;不是KE2键码,返回按键查询AJMPKE2;转KE2键处理程序PR03:AJMPKEY

KE0:SETBTR0;启动定时器T0SETBTR1;启动定时器T1

SETBET0;允许定时器T0中断SETBEA;开中断

AJMPKEY;返回键盘查询状态KE1:CLREA;关中断

CLRET0;禁止定时器T0中断CLRTR1;关定时器T1CLRTR0;关定时器T0AJMPKEY

KE2:CLREA;关中断

AJMPMAIN;返回主程序进行初始化;——————————按键查询子程序——————————————KS:MOVDPTR,#4401H;置8155PA口地址MOVA,#00H

MO@DPTR,A;全扫描字#00H送PA口INCDPTR;指向PC口INCDPTR

MOA,@DPTR;读入PC口状态

3CPLA;变正规律,高电平表示有键按下ANLA,#0FH;屏蔽高4位

RET;返回,A≠0表示有键按下;—————————LED动态显示子程序—————————————DISP:PUSHACC;A入栈爱护

SETBRS0;爱护第0组工作寄存器,启用第1组工作寄存器

MOVR2,#08H;LED待显示位数送R2

MOVR1,#00H;设定显示时间MOVR3,#7FH;选中最右端LED

MOVR0,#30H;显示缓冲区首址送R0MOVA,@R0;秒显示个位送A

DISP1:MOVDPTR,#TAB;指向字形表首址MOVCA,@A+DPTR;查表取得字形码

MOVDPTR,#4402H;指向8155PB口(段码口)MO@DPTR,A;字形码送PB口MOVA,R3;取位选字

MOVDPTR,#4401H;指向8155PA口(位选口)MO@DPTR,A;位码送PA口DJNZR1,$;延时0.5msDJNZR1,$;延时0.5msRRA;位选字移位

MOVR3,A;移位后的位选字送R3INCR0;指向下一位缓冲区地址MOVA,@R0;缓冲区数据送ADJNZR2,DISP1;未扫描完,连续循环

CLRRS0;恢复第0组工作寄存器POPACC;A弹栈,恢复现场RET

TAB:DB3FH,06H,5BH,4FH,66H;共阴极LED字形表DB6DH,7DH,07H,7FH,6FH

;——————————定时器中断服务程序—————————————CONT:PUSHACC;爱护现场

MOVTH0,#3CH;定时器T1重置初值MOVTL0,#0B0HMOVA,20H;秒计数器送AAJMPCONT1REN:AJMPREN1

CONT1:DJNZ21H,REN;1秒定时未到,中断返回MOV21H,#14H;重置50ms计数初值

CLRP3.5;软件产生定时器T1计数脉冲NOPNOP

SETBP3.5

INCA;1秒计数值加1DAA;换算为10进制计数

JBCTF1,CONT2;60秒到,转清零

CONT3:MOV20H,A;计数值送60秒计数单元20HANLA,#0FH;屏蔽高4位

MOV30H,A;秒表个位待显示数据送显示缓冲区MOVA,20H

SWAPA;60秒计数单元高、低4位数据互换ANLA,#0FH;屏蔽高4位

MOV31H,A;秒表十位待显示数据送显示缓冲区AJMPREN1

CONT2:MOVA,#00HAJMPCONT3

REN1:POPACC;恢复现场RET;中断返回END4.实训总结与分析

(1)例5.4与本实训相比,二者均是秒表,但差别较大。前者采纳发光二极管显示,后者采纳七段码LED(俗称数码管),后者显示更直观;前者计时采纳软件延时,后者采纳定时器中断,后者更精确     ;前者功能单一,程序一旦开头运行,中间过程无法掌握,后者功能齐全,可随时启动、停止、清零,后者智能化程度更高。综上所述,后者更有用。

(2)设计、调试大型程序时,需先依据要求划分模块,优化结构;再依据各模块特点确定何为主程序,何为子程序,何为中断服务程序,相互间如何调用;再依据各模块性质和功能将各模块细化,设计出程序流程图;最终才依据各模块流程图编制详细程序。调试时应先调主程序,实现最基本最主要的功能,在此基础上再将各模块功能往主程序上堆砌,直至各模块联调、统调,实现全部功能。本实训将整个程序划分为键盘程序,动态显示程序,秒计时程序三大模块,依据各自的特点确定键盘程序为主程序,动态显示程序为子程序,秒计时程序为定时器中断服务程序。主程序又细分为初始化程序,键盘查询程序,键盘扫描程序,键盘处理程序四大部分。三大模块之间的关系是:键盘程序在无键按下时,不断调用动态显示子程序;在有键按下时,先调用动态显示子程序消抖,再进入键盘处理程序,掌握中断服务程序的运行;处理完毕后,再不断调用动态显示子程序。经上述处理后,三大模块运行协调全都,既保持了动态显示的稳定性,又保持了键盘的牢靠性,还保持了秒计时的精确     性,较好地实现了全部功能。

(3)本实训只用到试验线路板8位LED显示中的两位,只用到4×4键盘16个按键中的3个,因此,其功能还有较大的扩展空间。只要将上述程序稍加改动即可实现秒、分、时、日显示,并可作全方位修改的实时时钟。如增加LED显示位数或将显示改为LCD显示模块,可实现年、月、周、日、时、分、秒显示。

试验13简易秒表的制作

(一)试验说明

1.利用单片机定时器中断和定时器计数方式实现秒、分定时。

2.通过LED显示程序的调整,熟识8051,LED的接口技术,熟识LED动态显示的掌握过程。3.通过键盘程序的调整,熟识键盘扫描原理。

4.学会如何编制含LED动态显示,键盘扫描和定时器中断等多种功能的综合程序,初步体会大

型程序的编制和调试技巧。5.以K1,K5,K93个键分别实现启动、停止、清零等功能。用动态显示方式实现秒表计时显示。

(二)试验连线表

连接1连接2连接3连接4连接5

A01+5V/GNDP1.0P1.1P1.2-P1.4GND开头A05+5V/GNDSCLSDAA08+5V/GNDKR1-KR3KC1(三)程序流程图定时器0中断服务程序

恢复现场显示时间定时器置初值爱护现场主程序流程系统初始化显示全0初始时间键盘扫描调整时间值Y启动键?NY停止键?NN清零键?Y关中断关闭时器关中断启动定时器开中中断返回1234+5VDR1R2R35.1K5.1K5.1K试验13原理图+5V1DK1K2K3R4510Ωx838383838383U1SCL1SDA23456781312151431B191891716P1.0/TP1.1/TP1.2P1.3P1.4P1.5P1.6P1.7P3.3/INT1P3.2INT0P3.5/T1P3.4/T0EA/VPXLAT1XLAT2RESETP3.7/RDP3.6/WRMCU8052P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P3.0/RXDP3.1/TXDALE/PPSEN39383736353433322122232425262728101130291A101B91C71D51E41F21G11DP6abacfbdgecfedgdpdpLA11A1B1C1D1E1F1G1DP2A102B92C72D52E42F22G12DP6abacfbdgecfedgdpdpLA23A103B93C73D53E43F23G13DP6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论