单片机实训实验报告.docx

上传人:b****8 文档编号:11486749 上传时间:2023-03-01 格式:DOCX 页数:26 大小:273.91KB
下载 相关 举报
单片机实训实验报告.docx_第1页
第1页 / 共26页
单片机实训实验报告.docx_第2页
第2页 / 共26页
单片机实训实验报告.docx_第3页
第3页 / 共26页
单片机实训实验报告.docx_第4页
第4页 / 共26页
单片机实训实验报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

单片机实训实验报告.docx

《单片机实训实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实训实验报告.docx(26页珍藏版)》请在冰豆网上搜索。

单片机实训实验报告.docx

单片机实训实验报告

学校代码:

10128

单片机工程实践

(第4组)

题目:

电子秒表(任务一)

组长:

学号:

组员:

学号:

学号:

指导教师:

刘伟、裴岩、斯日古楞、吕少中

韩海波、高鹏、王华超(研)、李春雷(研)李金莹(研)

设计时间:

2013年2月27日~2013年3月8日

一、

设计目的:

通过一个以8位单片机为核心的模拟量数字表的硬件调试过程,掌握具有A/D、七段LED显示、RS-485通信、Watchdog等接口电路的单片机应用系统的设计思想和方法。

学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。

通过上述过程提高学生工程实践能力和素质。

通过一个以8位单片机为核心的模拟量数字表的硬件调试过程,掌握具有蜂鸣器、按键、LED显示等接口电路的单片机应用系统的设计思想和方法,并熟悉定时器中断、外部中断系统的使用,进而对51单片机有更深层次的认识。

学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。

通过上述过程提高学生工程实践能力和素质。

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

(2)通过LED显示程序的调整,熟悉计算机与单片机接口技术,熟悉LED动态显示,键

盘自检,喇叭发声的控制过程。

(3)通过键盘程序的调整,熟悉伟福仿真器的设置方法与键盘的接口技术,熟悉键盘扫

描原理。

(4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定

时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。

二、设计任务:

1、任务内容

★基本任务:

完成蜂鸣器、键盘、七段LED显示器的自检程序设计。

(1)蜂鸣器自检

要求:

利用程序实现两种以上声音。

参见【例7-4-4】

(2)键盘自检

要求:

确定键盘正确。

参见【例7-4-14】

(3)七段LED显示器自检

要求:

确定LED显示器每一段均正确。

参见【例7-4-16】

★随机选择任务:

大任务题目:

电子秒表

难度系数:

8

功能:

(1)显示时间范围0~59分59秒

(2)跑表时间范围0~59分59秒

硬件环境:

LED显示器、键盘等

三、框图:

1、硬件编程框图及相关说明

(1)蜂鸣器自检

说明:

当p2.3管脚为低电平时,蜂鸣器发出声音

当p2.3管脚为高电平时,蜂鸣器停止发声

 

(2)LED自检

说明:

通过字位口选择第几位LED显示

通过字型口输出需要显示的字型所对应的七段码

(3)键盘自检

说明:

通过P1口从键盘处输入键值

控制P2.5P2.6P2.7三个管脚来实现对三态门的控制

蜂鸣器作为按键输入的响应及LED的显示

 

(4)电子秒表

说明:

通过程序实现对LED和键盘的管理,完成秒表的各种功能。

1、硬件编程框图及相关说明

(1)蜂鸣器自检:

(2)、LED自检程序框图:

 

(3)、键盘自检框图:

 

(5)、子程序定时器框图:

4.程序清单:

1、蜂鸣器自检:

BEEP:

SETBP2.3

ACALLDELAY1

CLRP2.3

ACALLDELAY1

SETBP2.3

ACALLDELAY1

ACALLDELAY1

CLRP2.3

ACALLDELAY1

ACALLDELAY1

SETBP2.3

ACALLDELAY1

ACALLDELAY1

LJMPBEEP

RET

DELAY1:

MOVR1,#0FFH

CX0:

MOVR2,#080H

CX:

DJNZR2,CX

DJNZR1,CX0

RET

2.LED显示:

START:

LCALLZIJIAN

SJMPSTART

RET

ZIJIAN:

CLRP2.5

CLRP2.6

CLRP2.7

LCALLLED3

CLRP2.5

CLRP2.6

SETBP2.7

LCALLLED1

CLRP2.5

SETBP2.6

CLRP2.7

LCALLLED1

CLRP2.5

SETBP2.6

SETBP2.7

LCALLLED1

SETBP2.5

CLRP2.6

CLRP2.7

LCALLLED1

RET

LED3:

MOVDPTR,#TABLE1

MOVR0,#00H

LOOP:

MOVA,R0

MOVCA,@A+DPTR

MOVR1,A

INCR0

MOVP0,R1

LCALLBEEP

ACALLDL1

CJNER1,#08DH,LOOP

RET

LED1:

MOVDPTR,#TABLE2

MOVR0,#00H

LOOP1:

MOVA,R0

MOVCA,@A+DPTR

MOVR1,A

INCR0

MOVP0,R1

LCALLBEEP

ACALLDL1

CJNER1,#0DFH,LOOP1

RET

DL1:

MOVR6,#0FFH

CXW3:

MOVR7,#0FFH

MOVR5,#0FFH

MOVR4,#0FFH

MOVR3,#0FFH

DJNZR7,$

DJNZR5,$

DJNZR4,$

DJNZR3,$

DJNZR6,CXW3

RET

BEEP:

SETBP2.3

CPLP2.3

LCALLDL1

CPLP2.3

LCALLDL1

RET

TABLE1:

DB01H,04H,08H,80H,8DH

TABLE2:

DB01H,02H,04H,08H,10H,20H,40H,80H,7FH,0DH,0B7H,9FH,0CDH,

0DBH,0FBH,0FH,0FFH,0DFH

END

 

3.键盘自检:

WAIT:

MOVP0,#0

SETBP2.3

LCALLSEL8

MOVP1,#0FFH

MOVA,P1

LCALLSEL7

ORLA,#0F0H

CJNEA,#0FFH,W1

SJMPWAIT

W1:

LCALLD10MS

LCALLSEL8

MOVP1,#0FFH

MOVA,P1

LCALLSEL7

ORLA,#0F0H

CJNEA,#0FFH,K1

SJMPWAIT

K1:

CJNEA,#0FEH,K2

CLRP2.3

LCALLSEL2

MOVP0,#0CH

LCALLD10MS

JMPWAIT

RET

K2:

CJNEA,#0FDH,K3

CLRP2.3

LCALLSEL3

MOVP0,#0B6H

LCALLD10MS

JMPWAIT

RET

K3:

CJNEA,#0FBH,K4

CLRP2.3

LCALLSEL4

MOVP0,#9EH

LCALLD10MS

JMPWAIT

RET

K4:

CJNEA,#0F7H,LP

CLRP2.3

LCALLSEL5

MOVP0,#0CCH

LCALLD10MS

JMPWAIT

RET

SEL2:

CLRP2.5

CLRP2.6

SETBP2.7

RET

SEL3:

CLRP2.5

SETBP2.6

CLRP2.7

RET

SEL4:

CLRP2.5

SETBP2.6

SETBP2.7

RET

SEL5:

SETBP2.5

CLRP2.6

CLRP2.7

RET

SEL7:

SETBP2.5

SETBP2.6

CLRP2.7

RET

SEL8:

SETBP2.5

SETBP2.6

SETBP2.7

RET

D10MS:

MOVR5,#2

D1:

MOVR6,#40

D2:

MOVR7,#250

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

LP:

CLRP2.3

LCALLSEL2

MOVP0,#8DH

LCALLD20MS

JMPWAIT

RET

D20MS:

MOVR5,#0FH

D3:

MOVR6,#40

D4:

MOVR7,#250

DJNZR7,$

DJNZR6,D4

DJNZR5,D3

RET

 

4.电子秒表:

;-------------------------

;定义秒表和跑表的存储单元

;-------------------------

MBEQU40H;跑表数值

PBEQU50H;秒表数值单元

;-------------------------

;定义中断和主程序存储单元

;-------------------------

ORG0000H

AJMPMAIN

ORG000BH;T0中断地址

AJMPTIME0

ORG001BH;T1中断地址

AJMPTIME1

ORG0030H

;-------------------------

;主程序

;-------------------------

MAIN:

MOVTMOD,#11H;置定时器T0为工作方式1

;-------------------------

;秒表程序

;-------------------------

STA2:

MOVR1,#PB;计时器清零

MOVA,#00H

CLR2:

MOV@R1,A

INCR1

CJNER1,#59H,CLR2

SETBEA;CPU开中断

SETBTR1;启动定时器T1

SETBET1;定时器T1开中断

DISP2:

MOVR1,#PB+2;R1指向52H单元

CALLJP;采集键盘的状态

JBACC.0,STA1;K1键按下,则跳到STA1执行跑表功能

AJMPXIANSHI;否则显示秒表

XIANSHI:

CALLSEL5

CALLAA1

CALLSEL4

INCR1;R1指向53H单元

CALLAA1

CALLSEL3

INCR1;R1指向54H单元

CALLBB1

CALLSEL2

INCR1;R1指向55H单元

CALLAA1

AJMPDISP2

AA:

MOVP0,#00H;关显示

CALLDELAY1;延时5MS

MOVA,@R0;把RO指向的地址单元的内容送给A

MOVDPTR,#TAB1;DPTR指向表TAB1的首地址

MOVCA,@A+DPTR;取出表中对应的字型送给A寄存器

MOVP0,A;将字型送P0口显示

CALLDELAY;延时1MS

RET

 

;-------------------------

;跑表程序

;-------------------------

STA1:

MOVR0,#MB;计时器清零

MOVA,#00H

CLR1:

MOV@R0,A

INCR0

CJNER0,#49H,CLR1

SETBEA;CPU开中断

GO:

SETBET0;定时器T0开中断

SETBTR0;启动定时器T0

DISP1:

MOVR0,#MB+2;R0指向42H单元

CALLJP;采集键盘的状态

JBACC.1,STOP;K2键按下,则暂停跑表功能

JBACC.0,STA1;K1键按下,则跳到STA1执行跑表功能

JBACC.2,GO;K3键按下,则继续执行跑表功能

JBACC.3,DISP2;K4键按下,则跳到STA2执行分钟显示功能

CALLSEL5

CALLAA

CALLSEL4

INCR0;R0指向43H单元

CALLAA

CALLSEL3

INCR0;R0指向44H单元

CALLBB

CALLSEL2

INCR0;R0指向45H单元

CALLAA

SJMPDISP1

STOP:

CLRET0;关闭定时器TO的中断

SJMPDISP1

;-------------------------

;显示子程序

;-------------------------

AA1:

MOVP0,#00H;关显示

CALLDELAY1;延时5MS

MOVA,@R1;把R1指向的地址单元的内容送给A寄存器

MOVDPTR,#TAB1;DPTR指向表TAB1的首地址

MOVCA,@A+DPTR;取出表中对应的字型送给A寄存器

MOVP0,A;将字型送P0口显示

CALLDELAY;延时1MS

RET

BB:

MOVP0,#00H;关显示

CALLDELAY1;延时5MS

MOVA,@R0;把RO指向的地址单元的内容送给A

MOVDPTR,#TAB2;DPTR指向表TAB2的首地址

MOVCA,@A+DPTR;取出表中对应的字型送给A寄存器

MOVP0,A;将字型送P0口显示

CALLDELAY;延时1MS

RET

BB1:

MOVP0,#00H;关显示

CALLDELAY1;延时5MS

MOVA,@R1;把R1指向的地址单元的内容送给A寄存器

MOVDPTR,#TAB2;DPTR指向表TAB2的首地址

MOVCA,@A+DPTR;取出表中对应的字型送给A寄存器

MOVP0,A;将字型送P0口显示

CALLDELAY;延时1MS

RET

;-------------------------

;键采集程序

;-------------------------

JP:

MOVP0,#00H;关显示

CALLSEL8;打开三态门

MOVP1,#0FFH;置P1口为输入口

MOVA,P1;采集键盘的状态

CALLSEL7;关闭三态门

CPLA

ANLA,#0FH

RET

;-------------------------

;定时中断0控制跑表程序

;-------------------------

TIME0:

PUSHACC;保护A寄存器

MOVTH0,#0D8H;重置定时器TO的初值10MS

MOVTL0,#0EFH

INCMB;10MS计数器加1,存放到40H单元中

MOVA,MB

CJNEA,#10,TEND;10MS计数器的值不等于10,

;即不到100MS,则跳到TEND中断返回

MOVMB,#00H;10MS计数器清零

INCMB+1;100MS计数器加1,存放到41H单元中

MOVA,MB+1

CJNEA,#10,TEND;100MS计数器的值不等于10,

;即不到1S,则跳到TEND中断返回

MOVMB+1,#00H;100MS计数器清零

INCMB+2;1S计数器加1,存放到42H单元中

MOVA,MB+2

CJNEA,#10,TEND;1S计数器的值不等于10,

;即不到10S,则跳到TEND中断返回

MOVMB+2,#00H;1S计数器清零

INCMB+3;10S计数器加1,存放到43H单元中

MOVA,MB+3

CJNEA,#6,TEND;10S计数器的值不等于10,

;即不到100S,则跳到TEND中断返回

MOVMB+3,#00H;10S计数器清零

INCMB+4;1分计数器加1,存放到54H单元中

MOVA,MB+4

CJNEA,#10,TEND;1分计数器的值不等于10,

;即不到10分,则跳到TEND1中断返回

MOVMB+4,#00H;1分计数器清零

INCMB+5;10分计数器加1,存放到55H单元中

MOVA,MB+5

CJNEA,#6,TEND;10分计数器的值不等于6,

;即不到60分,则跳到TEND1中断返回

MOVMB+5,#00H

TEND:

POPACC;恢复A寄存器

RETI;中断服务子程序结束返回

;-------------------------

;定时中断1控制秒表程序

;-------------------------

TIME1:

PUSHACC;保护A寄存器

MOVTH1,#3CH;重置T1初值50MS

MOVTL1,#0AFH

INCPB;(50H)+1

MOVA,PB

CJNEA,#2,TEND1;(50H)不等于2,则跳到中断返回

MOVPB,#00H;50MS计数器清零

INCPB+1;(51H)+1

MOVA,PB+1

CJNEA,#10,TEND1;100MS计数器的值不等于10,

;即不到1S,则跳到TEND1中断返回

MOVPB+1,#00H;100MS计数器清零

INCPB+2;100MS计数器加1,存放到52H单元中

MOVA,PB+2

CJNEA,#10,TEND1;1S计数器的值不等于10,

;即不到10S,则跳到TEND1中断返回

MOVPB+2,#00H;1S计数器清零

INCPB+3;10S计数器加1,存放到53H单元中

MOVA,PB+3

CJNEA,#06,TEND1;10S计数器的值不等于6,

;即不到1分(60S),则跳到TEND1中断返回

MOVPB+3,#00H;10S计数器清零

INCPB+4;1分计数器加1,存放到54H单元中

MOVA,PB+4

CJNEA,#10,TEND1;1分计数器的值不等于10,

;即不到10分,则跳到TEND1中断返回

MOVPB+4,#00H;1分计数器清零

INCPB+5;10分计数器加1,存放到55H单元中

MOVA,PB+5

CJNEA,#6,TEND1;10分计数器的值不等于6,

;即不到60分,则跳到TEND1中断返回

MOVPB+5,#00H;10分计数器清零

TEND1:

POPACC;恢复A寄存器

RETI;中断服务子程序结束返回

;-------------------------

;延时子程序

;-------------------------

DELAY:

MOVR2,#2;延时1MS子程序

DLY4:

MOVR3,#248

DLY5:

DJNZR3,DLY5

DJNZR2,DLY4

RET

DELAY1:

MOVR4,#10;延时5MS子程序

DLY6:

MOVR5,#248

DLY7:

DJNZR5,DLY7

DJNZR4,DLY6

RET

;-------------------------

;译码器子程序

;-------------------------

SEL2:

CLRP2.5

CLRP2.6

SETBP2.7

RET

SEL3:

CLRP2.5

SETBP2.6

CLRP2.7

RET

SEL4:

CLRP2.5

SETBP2.6

SETBP2.7

RET

SEL5:

SETBP2.5

CLRP2.6

CLRP2.7

RET

SEL7:

SETBP2.5

SETBP2.6

CLRP2.7

RET

SEL8:

SETBP2.5

SETBP2.6

SETBP2.7

RET

TAB1:

DB7EH,0CH,0B6H,9EH,0CCH,0DAH,0FAH,0EH,0FEH,0DEH

TAB2:

DB7FH,0DH,0B7H,9FH,0CDH,0DBH,0FBH,0FH,0FFH,0DFH

三、参考资料

1、《单片机系统综合设计与实践》教材主编:

裴岩刘利民内蒙古大学出版社。

2、《单片机原理与应用》主编:

倪云峰西安电子科技大学出版社。

3、《单片机原理与应用技术》主编:

李珍何植桐清华大学出版社。

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

当前位置:首页 > 农林牧渔 > 林学

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

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