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