单片机实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.TKSTDIO 集成开发环境简介
TKSTDIO 是一个集成开发环境软件。
它提供了工程管理、文件编辑、编译连接、调试与仿真等强大功能。
在此环境下可方便地开发单片机应用系统。
在TKSTDIO 集成开发环境中,工程是一个非常重要的概念。
它是用户组织一个应用的所有源文件、设置编译连接选项、生成可调试下载文件和最终Bin 文件的一个基本结构,所有工作都围绕工程而展开。
一个工程管理一个应用的所有源文件、库文件及其它输入文件,并根据实际情况进行相应的编译连接设置。
实验基本操作步骤:
(1)建立自己实验项目文件夹(以学号或姓名命名);
(2)打开TKSTDIO ;
(3)[文件]→[新建]→[工程]→[Project Wizard]→[选择自己文件夹]→[输入工程名]→[确定]→[输入/选择单片机型号(STC89C51RC )]→[确定];
(4)[文件]→[新建]→[文件]→[Asm File]→[选择自己文件夹]→[输入文件名]→[确定];
(5)在弹出窗口输入/粘贴/打开实验1源程序;
(6)[工程]→[生成“ ”];
(7)[调试]→[启动/停止调试]→……;
(8)[打开STC-ISP.EXE];
(9)[打开程序文件]→[工程文件夹→DeBugRel →*.hex ]→[打开]→[DownLoad/下载]→程序在实验箱/开发板上运行,观察运行情况。
2.实验箱驱动与译码电路
由于实验箱上扩展器件较多,所以在系统总线上加了驱动器。
数据总线(P0)口通过双向驱动器芯片74LS245驱动。
低5位地址(A0A1A2A3A4)和控制信号(WR ———、RD ———
、ALE )通过单向驱动器芯片74LS244驱动。
系统通过两片3-8译码器芯片74LS138级联形成4-16译码逻辑,其译码输出作为实验箱上其它扩展器件译码控制信号,确定其地址范围。
P 2.7P 2.6P 2.5P 2.4作译码器输入,译码输出SEL0~SEL7所确定的地址空间分别为:0xxxH 、1xxxH
、图1.1 实验箱驱动与译码电路
2xxxH 、3xxxH 、4xxxH 、5xxxH 、6xxxH 、7xxxH ,译码输出SEL,8~SEL15所确定的地址空间分别为:、8xxxH 、9xxxH 、AxxxH 、BxxxH 、CxxxH 、DxxxH 、ExxxH 、FxxxH 。
3.实验项目
实验1 用发光管模拟广告牌
一、实验目的
1.熟悉TKStdio 集成开发环境,学习程序编辑、编译调试,下载运行的方法。
2.熟悉试验箱配置;
3.熟悉简单输出接口电路设计;
4.掌握控制应用程序设计。
二、实验内容
(1)接口电路
一片74LS374锁存器扩展输出口,端口地址为2xxxH ,取2FFFH 用74LS244作驱动器,8个共阳极发光二极管接扩展输出口上。
用输出数据控制8个发光二极管亮灭,模拟广告牌显示效果。
接口电路如图1.2所示。
某一输出线输出“0”,控制所连接的发光二级管亮(输出“1”,灭)。
(2)模拟广告灯效果
从LED1到LED8依次点亮一个,循环2次;从LED81到LED1依次点亮一个,循环2次;8个灯全亮、全灭交替2次(闪烁2次),两个状态之间延时0.2秒。
(3)程序控制方式
设计对等点亮、熄灭的状态控制字,建立一个控制字表,程序依次查表取得状态控制字输出,实现广告灯效果
三、参考程序
ORG 0000H
AJMP START
ORG 0030H
START: MOV DPTR,#TABLE
LOOP2:
CLR A
图1.2 发光二极管接口电路
MOVC A,@A+DPTR
PUSH DPL
PUSH DPH
CJNE A,#01H,LOOP1
JMP START
LOOP1: MOV DPTR,#2FFFH
MOVX @DPTR,A
LCALL DELAY
POP DPH
POP DPL
INC DPTR
JMP LOOP2
DELAY: M OV R3,#20
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
TABLE: D B 0FEH,0FDH,0FBH,0F7H ;从低位到高位依次点亮一个,循环2次控制字DB 0EFH,0DFH,0BFH,7FH
DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,7FH
DB 7FH,0BFH,0DFH,0EFH ;从高位到低位依次点亮一个,循环2次控制字
DB 0F7H,0FBH,0FDH,0FEH
DB 7FH,0BFH,0DFH,0EFH
DB 0F7H,0FBH,0FDH,0FEH
DB 00H, 0FFH,00H, 0FFH,01H ;全亮、全灭交替2次,即闪烁2次
END
四、实验要求与步骤
1.编辑、调试、运行参考程序,观察显示结果,理解程序如何控制灯产生动态变化;
2.修改程序,变换灯动态变化方式。
例如,让两个灯点亮循环;
3.参考程序中用查表法,得到灯的点亮/熄灭控制字,修改程序程序,改用循环指令更新控制字,实现灯动态变化。
五、实验报告要求
1.画出实验接口电路;
2.写出修改功能的程序。
附:循环法参考程序
ORG 0000H
AJMP START
ORG 0030H
START: MOV DPTR,#2FFFH
MOV R2,#10H
MOV A,#0FEH
LOOP1: MOVX @DPTR,A
ACALL DELAY
RL A
DJNZ R2,LOOP1
MOV R2,#10H
MOV A,#7FH
LOOP2: MOVX @DPTR,A
ACALL DELAY
RR A
DJNZ R2,LOOP2
MOV R2,#08H
MOV A,#0AAH
LOOP3: MOVX @DPTR,A
ACALL DELAY
CPL A
DJNZ R2,LOOP3
JMP START
DELAY: M OV R3,#20
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
实验2 动态LED显示技术
一、实验目的
1.熟悉动态LED显示器接口电路;
2.掌握动态LED显示原理;
3.学习动态LED显示程序设计。
二、实验内容
(1)显示器接口电路
8位LED显示器接口电路如图1.3所示。
一片74LS374锁存器扩展段码输出口,端口地址为0xxxH(取0FFFH),用74LS244作驱动器。
一片74LS374扩展位选输出口,端口地址为1xxxH去(取1FFFH),用75451作驱动器。
连接8位LED显示器。
(2)显示功能要求
在8位LED显示器上显示12345678数字。
图1.3 LED显示器接口电路
三、参考程序
ORG 0000H
AJMP START
ORG 0030H
START: MOV R6,#08H
MOV R0,#78H
MOV A,#01H
BUFFER:MOV @R0,A
INC R0
INC A
DJNZ R6,BUFFER
ACALL DISPLAY
SJMP START
DISPLAY:MOV R0,#7FH
MOV R7,#0FEH
MOV A,R7
REPEAT: MOV DPTR,#1FFFH
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DPTR,#0FFFH
MOVX @DPTR,A
ACALL DELAY
DEC R0
MOV A,R7
JNB ACC.7,RT
RL A
MOV R7,A
AJMP REPEAT
RT: RET
DELAY: MOV R3,#05H
DL: MOV R4,#80H
DJNZ R4,$
DJNZ R3, DL
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
四、实验要求与步骤
1.编辑、调试、运行参考程序,观察显示结果,理解显示缓冲区存储顺序与显示器的位序对应关系及动态选通的顺序关系;
2.修改延时程序,使延时比较长,运行程序,观察显示结果;
3.修改延时程序,使延时比较短,运行程序,观察显示结果;
4.修改程序实现在8位显示器上显示6为数据,如654321。
五、实验报告要求
1.画出实验接口电路;
2.结合对延时程序的修改,分析对显示效果的影响;
3.写出修改功能程序。
实验3 计数器/定时器应用技术
一、实验目的
1.掌握单片机计数器/定时器应用方法与技术;
2.掌握单片机中断系统的应用方法与技术;
3.学习定时器/计数器和中断功能的应用程序设计。
二、实验内容
使用单片机内部定时器/计数器0定时50ms,利用软件对50ms中断计数,实现秒表的功能,在两位LED显示器上显示秒数。
三、参考程序
SECOND EQU 30H
TCOUNT EQU 31H
ORG 0000H
LJMP START
ORG 000BH
LJMP INT0X
START: MOV SECOND,#00H
MOV A,SECOND
MOV B,#10
DIV AB
MOV TCOUNT,#00H
MOV TMOD,#01H
MOV TH0,#(65536-50000) /256
MOV TL0,#(65536-50000)MOD 256
SETB TR0
SETB ET0
SETB EA
LCALL DISPLAY
INT0X: MOV TH0,#(65536-50000) /256
MOV TL0,#(65536-50000)MOD 256
INC TCOUNT
MOV A,TCOUNT
CJNE A,#20,NEXT
MOV TCOUNT,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,NEXT
MOV SECOND,#00H
NEXT: NOP
RETI
DISPLAY:MOV A,SECOND
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0FFFH
MOVX @DPTR, A
MOV DPTR,#1FFFH
MOV A, #0FDH
MOVX @DPTR,A
LCALL DELAY
MOV A,B
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0FFFH
MOVX @DPTR,A
MOV DPTR, #1FFFH
MOV A, #0FEH
MOVX @DPTR, A
LCALL DELAY
LJMP DISPLAY
RET
DELAY: MOV R5,#2
D1: MOV R6,#20
D2: MOV R7,#100
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
TAB: D B 3FH, 06H, 5BH, 4FH,66H,6DH,7DH
DB 07H,7FH,6FH,77H,7CH,39H,5EH,79H
END
四、实验要求与步骤
1.编辑、调试、运行参考程序,观察运行结果,理解程序执行的原理过程;
2.重新设定定时器的定时时间,如10ms,20ms等,修改程序实现秒表功能;
3.改用定时器/计数器1实现同样功能。
五、实验报告要求
1.分析定时器/计数器及中断系统初始化控制字的设置;
2.分析计算不同定时设定时,初值的计算。
2.分析秒表的误差。
实验4 A/D转换器应用技术
一、实验目的
1.学习A/D转换器接口电路技术;
2.掌握A/D转换启动原理;
3.学习A/D转换器应用程序设计。
二、实验内容
单片机连接ADC0809,从通道IN0输入0~5V模拟量,转换的数字量以十进制在LED 显示器上显示出来。
接口电路如图1.4所示。
单片机系统“ALE”信号线经分频器接ADC0809的“CLOCK”信号线上作转换时钟,实验箱系统的译码逻辑信号“SEL8”与写控制信号“YWR”经或非逻辑接ADC0809的“ALE”和“START”信号线上,译码逻辑信号“SEL8”与读控制信号“YRD”经或非逻辑接ADC0809的“ENABLE”信号线上,形成通道IN0的启动地址和数据端口地址都为8FF0H。
ADC0809转换结束信号“EOC”接单片机外部中断输入信号线上。
具体电路参阅《单片机实验箱操作手册》中的模数转换模块。
三、参考程序
DPBUF1 EQU 33H
DPBUF2 EQU 34H
DPBUF3 EQU 35H
SECOND EQU 36H
ORG 0000H
LJMP START
图1.4 A/D转换器接口电路
ORG 0003H
LJMP INT
ORG 0030H
START: SETB EA
SETB IT0
SETB EX0
MOV DPTR,#8FF8H
MOVX @DPTR,A ;启动A/D转换器
HERE: SJMP HERE
DISP: MOV DPTR,#DPCD ;DPTR指向段码表
MOV A, DPBUF1 ;从显示缓冲去读取百位显示数
MOVC A,@A+DPTR ;查表得到段码
MOV DPTR,#0FFFH ;DPTR指向段码输出口
MOVX @DPTR,A ;显示字符段码输出
MOV DPTR, #1FFFH ;DPIR指向位选口
MOV A, #0FBH ;百位选通字
MOVX @DPTR, A ;选通百位
LCALL DELAY
MOV DPTR,#DPCD
MOV A, DPBUF2 ;从显示缓冲去读取十位显示数
MOVC A,@A+DPTR ;查表得到段码
MOV DPTR,#0FFFH
MOVX @DPTR,A ;段码输出
MOV DPTR, #1FFFH
MOV A, #0FDH
MOVX @DPTR, A ;选通十位
LCALL DELAY
MOV DPTR,#DPCD
MOV A, DPBUF3 ;从显示缓冲去读取个位显示数
MOVC A,@A+DPTR ;查表得到段码
MOV DPTR,#0FFFH
MOVX @DPTR,A ;输出段码
MOV DPTR, #1FFFH
MOV A, #0FEH
MOVX @DPTR, A ;选通个位
RET
INT: MOV DPTR,#8FF8H
MOVX A,@DPTR ;读取转换结果
MOV B,#100 ;把转换结果二进制数转换成3位十进制数
DIV AB ;分离出百位数
MOV DPBUF1,A ;把百位数送显缓区DPBUF1单元
MOV A,B
MOV B,#10
DIV AB ;分离出十位数
MOV DPBUF2,A ;把十位数送显缓区DPBUF2单元
MOV DPBUF3,B ;把分离出的个位数送DPBUF3单元
LCALL DISP ;以十进制显示转换结果
MOV DPTR,#8FF8H ;在启动转换器
MOVX @DPTR,A
RETI
DELAY: MOV R5,#3
D1: MOV R6,#1
D2: MOV R7,#20
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
DPCD: DB 3FH, 06H, 5BH, 4FH,66H,6DH,7DH
DB 07H,7FH,6FH,77H,7CH,39H,5EH,79H
END
四、实验要求与步骤
1.编辑、调试参考程序
2.接入一个量值的模拟量,运行程序,记录模拟量输入值和显示数值;
2.分别接入不同量值的模拟量,运行程序,记录模拟量输入值和显示数值;
3.将模拟量输入改接与其他通道,修改程序,重复1、2实验要求
五、实验报告要求
1.画出实验接口电路;
2.写出修改要求的程序;
3.分析转换精度。