单片机实验指导书配套TSC51实验开发系统.docx

上传人:b****4 文档编号:27163612 上传时间:2023-06-27 格式:DOCX 页数:78 大小:686.82KB
下载 相关 举报
单片机实验指导书配套TSC51实验开发系统.docx_第1页
第1页 / 共78页
单片机实验指导书配套TSC51实验开发系统.docx_第2页
第2页 / 共78页
单片机实验指导书配套TSC51实验开发系统.docx_第3页
第3页 / 共78页
单片机实验指导书配套TSC51实验开发系统.docx_第4页
第4页 / 共78页
单片机实验指导书配套TSC51实验开发系统.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

单片机实验指导书配套TSC51实验开发系统.docx

《单片机实验指导书配套TSC51实验开发系统.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书配套TSC51实验开发系统.docx(78页珍藏版)》请在冰豆网上搜索。

单片机实验指导书配套TSC51实验开发系统.docx

单片机实验指导书配套TSC51实验开发系统

《单片机技术及应用》

实验指导书

 

刘伟群/龚翱编写

 

湖南人文科技学院计算机科学技术系

2011年10月

前言

 

《单片机技术与应用》是计算机科学与技术(类)学生选修的一门重要的专业技术课。

本课程的教学目的是通过理论教学与实验环节,使学生获得单片机应用系统设计的基本理论、基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步具备应用单片机进行设备技术改造、产品开发的能力。

《单片机技术及应用》是一门实践性很强的课程,在教学中应该既重视课堂理论教学又应重视实验实践教学,通过实验,加强学生对单片机技术的基本理论、基本工作原理的理解,从而达到培养学生设计、调试和开发单片机应用系统的能力。

本实验指导书共有八个实验,其中验证性实验6个,综合性实验2个。

本实验指导书配套实验设备是TSC-51/98实验开发系统。

实验一P1口试验(验证性试验/必做)

(1)学习P1口的使用方法。

(2)学习延时子程序的编写和使用。

 实验二简单I/O口扩展实验(验证性试验)

(1)学习在单片机系统中扩展简单1/0接口的方法。

(2)学习数据输出程序的设计方法。

(3)学习模拟交通灯控制的实验方法。

 实验三定时器实验(综合性试验)

(1)学习8031内部计数器的使用和编程方法。

(2)进一步掌握中断处理程序的编程方法。

实验四数码显示实验(验证性试验/必做)

(1)进一步掌握定时器的使用和编程方法。

(2)了解七段数码显示数字的原理。

(3)掌握用一个段锁存器,一个为锁存器同时显示多位数字的技术。

实验五D/A转换实验(验证性试验)

(1)了解DVCC计算机控制技术实验仪结构。

(2)了解和掌握各典型环节的传递函数及模拟电路图。

(3)观察和分析各典型环节的响应曲线。

实验六中断实验(验证性试验/必做)

(1)进一步了解DAC0832的性能及编程方法;

(2)了解直流电机控制的基本方法。

实验七计算机钢琴实验(综合性试验)

(1)学习使计算机发出不同音调声音的编程方法;

(2)了解键盘电路的编程及使用方法。

 

 实验八步进电机控制实验(综合性试验/必做)

(1)了解步进电机控制的基本原理

(2)掌握控制步进电机转动编程方法。

根据实验大纲要求,本门课程安排六个实验,其中实验一、实验四、实验六、实验八为必做实验,另二个实验由实验指导教师从本指导书的其余四个实验中选取。

 

目录

实验一P1口试验5

实验二简单I/O口扩展实验9

实验三定时器实验15

实验四数码显示实验21

实验五D/A转换实验30

实验六中断实验36

实验七计算机钢琴实验40

实验八步进电机控制实验48

附件1TSC-51/98实验开发系统原理与组成54

一、总体框图54

二、元件位置图55

系统启动55

附件2TMSD多种源语言调试程序57

一、TMSD菜单方式及提示行58

二、窗口操作60

三、对话框62

四、各子菜单目录项说明62

五、TMSD启动66

六、程序预处理66

七、程序调试68

八、存储器窗口71

九、EPROM空白检查、读、写操作73

十、仿真功能74

十一、热键快速检索78

 

 

实验一P1口试验

一、实验内容

1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

2、P1口做输入口,接八个扭子开关,以实验台上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。

二、实验目的

1、学习P1口的使用方法

2、学习延时子程序的编写和使用。

三、实验说明

P1口为准双向口,P1的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器相应位写入“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“1”使它再成为一个输入。

可以用第二个实验做一下试验。

先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1作输入口,会有什么结果。

再来看一下延时程序的实现。

现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。

在系统时间允许的情况下可以采用后一种方法。

本实验系统晶振为6.144MHZ,则一个机器周期为12/6.144us即1/0.512us。

现要写一个延时0.1S的程序,大致写出如下:

MOVR7,#200

(1)

DE1:

MOVR6,#X

(2)

DE2:

DJNZR6,DE2(3)

DJNZR7,DE1(4)

上面MOV、DJNZ指令均需要两个机器周期,所以每执行一条指令需要1/0.256us现求出X的值:

(X*1/0.256+1/0.256+1/0.256)*200+1/0.256=0.1*1000000

指令(3)

(2)(4)

(1)

所需时间需时间需时间需时间

指出X=126。

代入上式可知实际延时约为0.100004S,很精确了。

四、连线方法

执行程序1时:

P1.0—P1.7接发光二极管L1—L8。

执行程序2时:

P1.0—P1.7接扭子开关K1—K8;74LS273(U4)的011—018接发光的二极管L1—L8;74LS273片选端CS2—OF。

此时74LS2731/0口地址为1B08H。

程序一图

程序二图

五、程序图

1、

2、

六、参考程序

(一)程序一T01_1.ASM

ST_ADDREQU4000H

ORGST_ADDR

LJMPSTART

ORGST-ADDR+200H

START:

MOVA,#01;高电平对应的发光二极管灭,

;先让第一个发光二极管亮。

LOOP:

MOVP1,A;从P1口输出到发光二极管

MOVR1,#10;延时1秒

DEL1:

MOVR2,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

DJNZR1,DEL1

RLA;左移一位,下一个发光二极管亮

LJMPLOOP;循环

END

(二)程序二T01-2.ASM

AT-ADDREQU4000H

PORTEQU1B08H

ORGST-ADDR

LJMPS1

ORGST-ADDR+200H

S1:

MOVP1,#0FFH

START:

MOVA,P1;从P1口读入开关状态

MOVDPTR,#PORT

MOVX@DPTR,A;从74LS273输出到发光二极管显示

LJMPSTART;循环

END

实验二简单I/O口扩展实验

(交通灯控制实验)

一、实验内容

以两个74LS273做为输出口,控制十二个发光二极管燃灭,模拟交通灯管理。

二、实验目的

1.学习在单片机系统中扩展简单1/0接口的方法。

2.学习数据输出程序的设计方法

3.学习模拟交通灯控制的实验方法。

三、实验说明

要完成本实验,首先必须了解交通灯的燃灭规律。

设有一十子路口2,4为南,北方向。

1,3为东西方向,初始状态为四个路口的红灯全亮。

之后东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车。

延迟一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口的红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车。

延迟一段时间后,南北路口的绿灯灭。

黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向。

之后,重复上述过程。

各LED发光二极管共阳极,但是各发光二极管阴极接有与非门。

因而使其电亮应使相应位置为高点平

四、接线方法。

74LS273(U4)的输出011—018接发光二极管L1—L8,CS2端接I/O译码的08—0F,另一片74LS273(U5)的021—024接发光二极管L9—L12,CS3端接I/O译码的10—17端,此时U4的I/O地址为1B08H,U5为1B10H。

五、程序框图

六、参考程序T03.ASM

ST_ADDREQU4000H

ORGST_ADDR

LJMPSTART

START:

ORGST_ADDR+200H

MOVP2,#1BH

MOVR0,#08H

MOVR1,#10H

MOVA,#24H

MOVX@R0,A

MOVA,#09H

MOVX@R1,A

ACALLDE6S

LLL:

MOVA,#OCH

MOVX@R0,A

MOVA,#03H

MOVX@R1,A

LCALL    DE12s

MOVA,#04H

MOVX@R0,A

MOVA,#01H

MOVX@R1,A

MOVR2,#08H;闪烁8次

TTT:

MOVA,#14H

MOVX@R0,A

MOVA,#05H

MOVX@R1,A

ACALLDE02S

MOVA,#04H

MOVX@R0,A

MOVA,#01H

MOVX@R1,A

ACALLDE02S

DJNZR2,TTT;闪烁不到8次,返回标号TTT

MOVA,#24H

MOVX@RO,A

MOVA,#09H

MOVX@R1,A

ACALLDE02S

MOVA,#61H

MOVX     @R0,A

        MOV A,#08H

        MOVX     @R1,A

ACALLDE12S

MOVA,#20H

MOVX@R0,A

MOVA,#08H

MOVX@R1,A

MOVR2,#08H

GGG:

MOVA,#0A2H

MOVX@R0,A

ACALLDE02S

MOVA,#20H

MOVX@R0,A

ACALLDE02S

DJNR2,GGG

MOVA,#24H

MOVX@R0,A

MOVA,#09H

MOVX@R1,A

ACALLDE02S

JMPLLL

DE12S:

MOVR5,#120;延时12秒

LJMPDE1

DE6S:

MOVR5,#60;延时6秒

LJMPDE1

DE02S:

MOVR5,#02H;延时0.2秒

DE1:

MOVR6,#200;延时0.1秒

DE2:

MOVR7,#126

DE3:

DJNZR7,DE3

DJNZR6,DE2

DJNZR5,DE1

RET

END

 

实验三定时器实验

一、实验内容

由8031内部定时器1,按方式1工作,即为16位定时器使用每0.1秒钟T1溢出中断一次。

P1口的P1.0—P1.7分别接八个发光二极管。

要求编写程序模拟一时序控制装置,开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,地三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又重头开始,L1,L3亮,然后L2,L4亮,……一直循环下去。

二、实验目的

1.学习8031内部计数器的使用和编程方法。

2.进一步掌握中断处理程序的编程方法。

三、实验原理

1.定时常数的确定

定时器/计数器的输入脉冲周期和机器周期一样,为震荡器频率的1/12。

实验中时钟频率为6.144MHZ,现要采用中断方法来实现1秒延时,要在定时器

1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0

中计数值减一,令(R0)=0AH,即可实现1S延时。

时间常数可按下方法确定:

机器周期=12/晶振频率=12/6.144*106=1.9531*10-6s。

需设置初始值为X,则(216-X)*1.9531*10-6=0.1,

216-X=51200X=65536-51200=14336,化为十六进制:

X=3800H,

故初始值为TH1=38H,TL1=00H

2.初始化程序

包括定时器初始化和中断系统初始化,主要是对IP、IE,TCON,TMOD的相应位进行正确的设置,并将时间常数送入定时器中,由于只有定时器中断,1P便不必设置。

注意一点,定时器1初始化时建议用下述指令:

ANLTMOD,3OFH

ORLTMOD,#10H

而不要用MOVTMOD,#10H

否则定时器0被屏蔽,可能会影响串行口波特率,使程序不能执行。

3.设计中断服务程序和主程序

中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备,主程序则用来控制发光按要求顺序亮灭。

四、接线方法

P1.0-P1.7分别接发光二极管L1-L8即可

五、程序框图

中断子程序框图:

六、参考程序T06.ASM

ST_ADDREQU4000H

ORGST_ADDR

LJMPSTART

ORGST_ADDR+1BH

JMPIT11

START:

ORGST_ADDR+200H

MOVA,#05H

MOVR1,#02

MOVR0,#OAH

ANLTMOD,#OFH

ORLTMOD,#10H

MOVTL1,#00H

MOVTH1,#38H

ORL1E,#88H

SETBTR1

 

LOOP1:

CJNER0,#00,DJSP

MOVRO,#OAH

INCR1

CJNER1,#0AH,LOOP2

MOVR1,#02

LOOP2:

MOVA,R1

MOVCA,@A+PC

LJMPDISP

DB05H

DB0AH

DB50H

DB0A0H

DB55H

DBOAAH

DBOFFH

DB00H

DISP:

MOVP1,A

JMPLOOP1

IT11:

CLRTR1

DECRO

MOVTL1,#00H

MOVTH1,#38H

SETBTR1

RETI

END

 

实验四数码显示实验

一、实验内容

利用定时器0定时中断,控制电子时钟走时,利用实验台上的六个数码管显示分、秒,做成一个电子时钟。

显示格式:

X

X

-

-

X

X

分秒

定时时间常数计算方法:

定时器0工作与方式1,主振频率为6.144HZ,故预置值TX为:

(216-TX)*12*1/(6.144*106)=0.1S

TX=14336D=3800H,故TH0=38H,TL1=100H

二、实验目的

1.进一步掌握定时器的使用和编程方法。

2.了解七段数码显示数字的原理。

3.掌握用一个段锁存器,一个为锁存器同时显示多位数字的技术。

由于有六个LED,用静态显示所需1/0口太多,故适合于动态显示。

动态显示就是一位一位地轮流点亮显示器各个位(扫描)。

本实验中用一个位数锁存器74LS273作为数据口,用另一个74LS273作为段数据口,具体连接见电路图。

三、实验原理

七段LED显示器有共阳极和共阴极两种,共阴极LED显示器是发光二极管的阴极连在一起,通常此公共阴极接地;共阳极LED显示器是发光二极管的阳极连在一起,公共阳极接正电压。

通过LED显示器中二极管的亮灭,则显示不同的字符或数字。

数码管外形图如下,共阴极显示“0123456789”的数据代码如下。

D7

D6

D5

D4

D3

D2

D1

D0

显示

数值代码

h

g

f

e

d

c

b

a

0

0

1

1

1

1

1

1

0

3FH

0

0

0

0

0

1

1

0

1

06H

0

1

0

1

1

0

1

1

2

5BH

0

1

0

0

1

1

1

1

3

4FH

0

1

1

0

0

1

1

0

4

66H

0

1

1

0

1

1

0

1

5

6DH

0

1

1

1

1

1

0

1

6

7DH

0

0

0

0

0

1

1

1

7

07H

0

1

1

1

1

1

1

1

8

7FH

0

1

1

0

1

1

1

1

9

6FH

0

1

0

0

0

0

0

0

40H

共阴极发光二极管内部结构图

 

 

四、连线方法

首先将数码显示部分与8279之间连接的短路片全部拔掉,然后第一片74LS273(U4):

CS2接08—0F;011—018接LED的a—h;第二片74LS273(U5):

CS3接10—17;021—026接LED的LD0—LD5(LD0~LD5为高电平时对应位发光,为低电平时对应位熄灭)。

 

五、流程框图

主程序:

中断程序:

六、参考程序T10.ASM

ST-ADDREQU4000H

BUFEQU23H;记数单元

SBFEQU22H;SBF为秒值单元

MBFEQU21H;MBF为分值单位

PORT1EQU1B08H

PORT2EQU1B10H

ORGST-ADDR+1BH

LJMPCLOCK

ORGST-ADDR+200H

MAIN:

MOVR0,#40H;40H—45H是显示缓冲单元,依次存

MOVA,#00H;放分高位,分底位,0A,0A(对应短横;

MOV@R0,A;线),秒高为,秒低位

INCR0

MOV@R0,A

INCR0

MOVA,#0AH

MOV@R0,A

INCR0

MOV@R0,A

MOVA,#00H

INCR0

MOV@R0,A

INCR0

MOV@R0,A

ANLTM0D,#0FH;定时器1初始化为方式1

ORLTM0D,#10H

ORLTL1,#00H;置时间常数,延时0.1S

MOVTH1,#38H

MOVBUF,#00H;三个单元置初始值0

MOVSBF,#00H

MOVMBF,#00H

SETBET1

SETBEA

SETBTR1

DS1:

MOVR0,#40H;置显示缓冲单元首址

MOVR2,#20H;20H=00100000,显示扫描码初值

DS2:

MOVDPTR,#PORT1;1B08H为第一片74LS273端口地址,

MOVA,@R0;得到段码输出到段数据口

ACALLTABLE

MOVX@DPTR,A

MOVDPTR,#PORT2;向LED位锁存器输出

MOVA,R2

MOVX@DPTR,A

MOVR3,#0FFH;延时

DJNZR3,¥

INCR0;显示缓冲单元加一

CLRC

MOVA,R2

RRCA;最末一位是否已显示完毕?

如无则

MOVR2,A;继续往下显示,否则执行后面程序

JNZDS2

MOVR0,#45H

MOVA,SBF;把秒单元值分别放于显示缓冲单元44H、45H

ACALLGET

DECR0;跳过负责显示‘一’的两个单元

DECR0

MOVA,MBF;把分单元值分别放于显示缓冲单元40H、41H

ACALLGET;转DS1从头显示起

TABLE:

INCA;取数字对应的段码

MOVCA,@A+PC

RET

DB3FH

DB06H

DB5BH

DB4FH

DB66H

DB6DH

DB7DH

DB07H

DB7FH

DB6FH

DB40H

GET:

MOVR1,A;把从分或秒值单元取来的值的高位屏蔽掉ANLA,#0FH;送如显示缓冲单元

MOV@R0,A

DECR0

MOVA,R1;把从分或秒值单元取来的值的低位屏蔽掉

SWAPA;送入显示缓冲单元

ANLA,#0FH

MOV@R0,A

DECR0;R0指针下移一位

RET

CLOCK:

MOVTL1,#00H;置时间常数

MOVTH1,#38H

PUSHPSW

PUSHACC

INCBUF;计数单元加一

MOVA,BUF;计到10否?

没有则转到QU1T退出中断

CJNEAM#0AH,QU1T

MOVBUF,#00H;BUF单元置初值00

MOVA,SBF

INCA;秒单元加一,经十进制调整再放入秒单元

DAA

MOVSBF,A

CJNEA,#60H,QU1T;秒值为60否?

不是则推出中断

MOVSBF,#00H;是,秒单元清零

MOVA,MBF

INCA;分单元加一,十进制调整再放入

DAA;分单元

MOVMBF,A

CJNEA,#60H,QU1T;分单元值为60否?

不是则退出中断

MOVMBF,#00H;是,清零

QUIT:

POPACC;中断返回

POPPSW

RETI

END

实验五D/A转换实验

一、实验内容

利用0832,编制程序输出一串脉冲,经放大后驱动小电机,改变输出脉冲的电平及持续时间,达到使电机正转、反转,加速、减速之目的。

可以用K1—K8键通过74LS244输入数据来控制小直流电机的转动来实现正转四种转速,反转四种转速。

二、实验目的

1.进一步了解DAC0832的性能及编程方法;

2.了解直流电机控制的基本方法。

三、原理简述

小直流电机转动原理:

转动方向是由电压的正负来控制的,电压为正则正转,电压为负则反转。

转速大小则是有A0UT输出的脉冲的占空比来决定的,正向占空比越大,则转速越快。

反向转则占空比越小转速越快。

见下面图例:

正向快转

正向慢转

反向快转

反向慢转

本实验电路中,模拟量输出为双极性,当输入数字量小于80H时输出为负,输入等于80H则输出为0V,输入大于80H则输出为正。

因而,本实验电路中DAC0832输入数字只需三个,再通过不同的延时即可达到目的。

五、连线方法

0832片选端CS6接28—2F,AOUT接电机放大器的DJ插孔,插头J1接电机;74LS244D的I1—I8,片选端CS4接18—1F。

六、程序框图

六、参考程序T18.ASM

ST-ADDREQU4000H

PORT1EQU1B18H

PORT2EQUPORT1+10H

ORGST_ADDR

LJMPSTART

START:

ORGST_ADDR+200H

OLREA

OLREA

MOT1:

MOVDPTR,#PORT2

MOVA,#80H;向0832输入80H,使其输出0V电平

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A;启动D/A

MOVDPTR,#POTR1

MOVX@DPTR;读入开关状态

JBACC.0,Z1;ACC.0为1则转向Z1

JBACC.

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

当前位置:首页 > 高中教育 > 初中教育

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

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