单片机实验指导书.docx

上传人:b****7 文档编号:10308302 上传时间:2023-02-10 格式:DOCX 页数:18 大小:216.74KB
下载 相关 举报
单片机实验指导书.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

单片机实验指导书

实验一、P1口输入输出实验

一、实验目的

1、熟悉P1口作为输出口的使用

2、熟悉THKSCM-1实验系统的使用方法

3、学习延时子程序的编写

二、实验器材

1、THKSCM-1实验系统电路板和51仿真器

2、PC机和KEIL软件或WAVE软件

3、导线若干

三、实验内容

P1口作输出口,用导线连接P1.0-7和8个发光二极管LED0-7(也可用扁平线连接F1模块的P1.0-70和I4模块的LED0-7),编写程序,使八个发光二极管循环点亮。

四、

实验电路

 

五、实验连线

P1.0-P1.7连接8个发光二极管LED0-7

六、流程图

七、参考程序

ORG0000H

LJMPSTART

ORG0100H

START:

MOVA,#01H

LOOP:

MOVP1,A

LCALLDELAY

RLA

SJMPLOOP

DELAY:

MOVR7,#200

DE0:

MOVR6,#126

DE1:

DJNZR6,DE1

DJNZR7,DE0

RET

END

八:

思考

1、自己设计P1口作为输入输出使用的电路和程序,并在系统上调

2、改变点亮的时间间隔程序的编写

3、改变灯的输出花样程序的编写

实验二、定时计数器实验

一、实验目的

1、熟悉定时计数器的使用方法和编程。

2、了解定时计数器中断的处理方法。

3、掌握利用CPU查询的方式判断计数溢出的编程方法。

二、实验器材

1、THKSCM-1实验系统电路板和51仿真器

2、PC机和KEIL软件或WAVE软件

3、导线若干

三、实验内容

利用定时计数器T0对P3.4进行计数,每计完2个脉冲将A里面的内容左移一位送P1口显示。

四、电路原理

五、实验连线

将实验电路板A6模块上的的脉冲开关PULSE连接到P3.4引脚,P1.0.7接LED0-7。

六、程序设计

1计数用,流程图如下

ORG0000H

LJMPSTART

ORG0100H

START:

MOVA,#01H

MOVP1,A

MOVTMOD,#05H

MOVTH0,#0FFH

MOVTL0,#0FDH

SETBTR0

LOOP:

JNBTF0,$

CLRTR0

CLRTF0

MOVTH0,#0FFH

MOVTL0,#0FDH

RLA

MOVP1,A

SETBTR0

SJMPLOOP

END

2定时用:

(流程图自己设计出来)

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOV50H,#20

MOV51H,#100

MOVTMOD,#20H

MOVTH1,#06H

MOVTL1,#06H

SETBTR1

L2:

JBCTF1,L1

SJMPL2

L1:

DJNZ50H,L2

MOV50H,#20

DJNZ51H,L2

MOV51H,#100

CPLP1.0

SJMPL2

END

八:

思考

1、修改计数脉冲的初值看程序的运行变化.

2、改变定时计数器的工作方式程序相应的修改.

3、改用T1,该方案要作何修改才能实现相应的要求。

4、怎样利用中断的方式来编程实现。

实验三、数码管显示实验

七、实验目的

1、熟悉LED七段显示器的工作原理

2、掌握LED数码管动态显示的使用方法

八、实验器材

1、THKSCM-1实验系统电路板和51仿真器

2、PC机和KEIL软件或WAVE软件

3、导线若干

九、实验内容

采用P1口作为数码管的段驱控制,高电平有效,P2.0-P2.5作为6位数码管的位驱控制,低电平有效。

利用动态显示的效果,显示出自己的出生年月(如198603)

一十、

实验电路原理

+5V

 

五、实验连线

将F1模块中的P1.0-7与I3模块的JDO1相连,F1模块中的P2.0-7与I3模块的JDI1相连。

 

六、流程图

 

 

七、参考程序

ORG0000H;程序起始地址

LJMPSTART

ORG0100H;主程序起始地址

START:

MOV20H,#3

MOV21H,#0

MOV22H,#6

MOV23H,#7

MOV24H,#9

MOV25H,#1;写入出生年月

LED:

MOVP2,#0FEH;位驱动的初值

MOVR0,#20H;显示数据首地址

MOVR1,#6;显示数据存放的首地址

NEXT:

MOVA,@R0

MOVDPTR,#TABLE;指向表的首地址

MOVCA,@A+DPTR;查七段显示码

MOVP1,A;送段码给P1

LCALLDELAY

MOVA,P2

RLA;修改显示位驱动

MOVP2,A;送下一个位驱动信号

INCR0;指向下一个显示数据地址

DJNZR1,NEXT;一轮没有显示完的话显示下一位

SJMPLED;显示下一轮

DELAY:

MOVR7,#2

DE0:

MOVR6,#200

DE1:

DJNZR6,DE1

DJNZR7,DE0

RET

TABLE:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

;0—9十个数字的七段显示共阴极代码表格

END

八:

思考

1、修改出生年月的数据,程序怎样修改

2、改变数据显示的方向,程序应该作何修改。

3、增大扫描延时的时间,观察动态显示的效果。

 

实验四、电子时钟实验

一、实验目的

1、熟悉定时计数器的扩展使用与中断的使用方法。

2、掌握LED数码管动态显示的使用方法

二、实验器材

1、THKSCM-1实验系统电路板和51仿真器

2、PC机和KEIL软件

3、导线若干

三、实验内容和要求

采用P1口作为数码管的段驱控制,高电平有效,P2.0-P2.5作为6位数码管的位驱控制,低电平有效。

利用动态显示的效果,显示时钟、分钟和秒钟(如110324)

四、实验电路原理

+5V

 

五、实验连线

将F1模块中的P1.0-7与I3模块的JDO1相连,F1模块中的P2.0-7与I3模块的JDI1相连。

六、流程图

 

 

七、参考程序

ORG0000H

LJMPSTART

ORG001BH

LJMPCLOCK

ORG0100H

DISBUFEQU30H;显示数字缓冲首地址

SECBUFEQU21H;秒缓冲

MINBUFEQU22H;分缓冲

HOUBUFEQU23H;时钟缓冲

BUFEQU20H;0.1S秒缓冲

START:

MOVBUF,#00H;0.1S秒缓冲清0

MOVMINBUF,#00H

MOVSECBUF,#00H

MOVHOUBUF,#00H;时钟设置

MOVTMOD,#10H;设置T1工作于定时方式2

MOVTL1,#0B0H

MOVTH1,#3CH;写0.1S的时间常数

SETBEA;开放CPU中断

SETBET1;开放T1中断

SETBTR1;允许T1工作

DISP1:

MOVR0,#DISBUF;显示数字存放首地址

MOVA,SECBUF;取小时高为数字

ANLA,#0FH

MOV@R0,A;小时高位数字存放

INCR0;指向下一个单元

MOVA,SECBUF

ANLA,#0F0H

SWAPA

MOV@R0,A;小时低位数字存放

INCR0

MOVA,MINBUF

ANLA,#0FH

MOV@R0,A;分钟高为数字存放

INCR0

MOVA,MINBUF

ANLA,#0F0H

SWAPA

MOV@R0,A;分钟高为数字存放

INCR0

MOVA,HOUBUF

ANLA,#0FH

MOV@R0,A;秒钟高为数字存放

INCR0

MOVA,HOUBUF

ANLA,#0F0H

SWAPA

MOV@R0,A;秒钟高为数字存放

LCALLDISPLAY

SJMPDISP1

DISPLAY:

MOVP21,#0FEH;驱动最低位

MOVR1,#DISBUF;取显示数字首地址

MOVR2,#06H;软计数器表示显示位数

LOOP1:

MOVDPTR,#SEGTAB;七段显示码表首地址

MOVA,@R1

MOVCA,@A+DPTR;查代码

MOVP1,A;送段驱动器74LS273

LCALLDELAY;0.1s

MOVA,P2

RLA;指向下一位位驱动

MOVP2,A

INCR1;指向下以个显示数字的地址单元

DJNZR2,LOOP1;显示位完了吗

RET

CLOCK:

CLRTR1;关T1

MOVTL1,#0B0H

MOVTH1,#3CH;重装时间常数

PUSHPSW

PUSHACC;压栈保护

MOVA,BUF

ADDA,#01H;0.1S缓冲器加1

DAA;转换为BCD码数

MOVBUF,A

CJNEA,#10H,INT_DONE;1S时间没有到中断返回

MOVBUF,#00H;1S到就将BUF清0

MOVA,SECBUF

ADDA,#01H

DAA;秒钟加1并变成BCD码数

MOVSECBUF,A

CJNEA,#60H,INT_DONE;60秒没有到中断返回

MOVSECBUF,#00H;60秒到秒钟清0

MOVA,MINBUF

ADDA,#01H

DAA;环种蛹?

并变成BCD码数

MOVMINBUF,A

CJNEA,#60H,INT_DONE;60分钟没到中断返回

MOVMINBUF,#00H;60分到分钟清0

MOVA,HOUBUF

ADDA,#01H

DAA;60分钟到时钟加1并转换为BCD码数

MOVHOUBUF,A

CJNEA,#24H,INT_DONE;24小时没到中断返回

MOVHOUBUF,#00H;24小时到时钟清0

INT_DONE:

POPACC

POPPSW

SETBTR1

RETI

DELAY:

MOVR7,#2

D1:

MOVR6,#255

D2:

DJNZR6,D2

DJNZR7,D1

RET

SEGTAB:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH,00H

END

八:

思考

怎样提高电子时钟的精度

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

当前位置:首页 > 成人教育 > 电大

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

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