单片机实验教案.docx
《单片机实验教案.docx》由会员分享,可在线阅读,更多相关《单片机实验教案.docx(46页珍藏版)》请在冰豆网上搜索。
单片机实验教案
单片机技术实验
教案
冯杰
第一章系统概述
1.1系统组成
Dais系列单片机微机仿真实验系统的51单片机实验与仿真由管理CPU、目标CPU和通用电路、接口实验电路及稳压电源组成,通过RS232C串行接口与PC微机相连,系统硬件主要内容如下:
CPU
管理CPU、目标CPU8032/78E438/STC系列单片机
系统存储器
监控管理程序在管理CPU的FLASH中、RAM61256二片(64K)、BPRAM61256(32K)。
接口芯片
及单元实验
8251、8253、8255、8259、ADC0809、DAC0832、164、74LS273、74LS244、电子发声单元,电机控制单元,开关及发光二极管、单脉冲触发器、继电器控制等
外设接口
打印接口,RS232C串口、51仿真接口
显示器
6位LED、二路双踪示波器
键盘
32键自定义键盘
EPROM编程器
对EPROM2764/27128快速读出
系统电源
+5V/2A,±12V/0.5A
1.2系统功能与特点
⑴自带键盘、显示器,能独立运行,也可以PC机为操作平台。
两种工作方式任意选择,均全面支持《单片机原理与应用》等课程的实验教学。
⑵系统采用紧耦合多CPU技术,用STC89C58作为系统管理CPU,8032/78E438/STC系列单片机作为目标机仿真与实验CPU,其软硬件资源100%出借。
⑶目标CPU采用主频为11.0592MHz,支持扩展仿真(即RAM仿真),亦支持ROM仿真(即FLASH下载式仿真)。
在ROM仿真模式下,可实现对P0、P2的I/O口功能。
⑷配有二片61C256静态存储器构成系统的64K程序空间,地址范围为0000H~0FFFFH,还配一片61C256(32K)作为用户设置的断点区(BPRAM)。
⑸实验项目完整丰富,与课程教学紧密结合,同时配有直流电机、步进电机、音响等实验对象,可支持控制应用类综合实验。
⑹系统接口实验电路为单元电路方式,电路简捷明快,一体机的8位数据总线以扁平线或排线形式引出,这样既减轻繁琐的连线工作,又提高学生的实验工作能力。
⑺通过RS232通信接口,在Windows集成软件的支持下,利用上位机丰富的软件硬件资源,实现用户程序的编辑、编译、调试运行,提高实验效率。
⑻具有最丰富的调试手段,系统全面支持硬件断点,可无限制设置断点,同时具有单步、宏单步、连续运行及无限制暂停等功能,100%保护用户现场,返回监控。
⑼向用户提供ISA总线接口及PARK板接口,为研发与创新实验的实施创造了必备的拓展环境。
⑽向用户提供KEIL驱动程序,将Dais驱动程序加入KEIL的配置文件,即可实现Dais仿真实验系统与最优秀的KEIL无缝连接。
1.3系统资源分配
实验系统寻址范围定义如下:
空间地址
器件选用
用途与说明
0000H~7FFFH
6116
监控程序空间
0000H~0FFFFH
PROM
目标机程序空间
0000H~0FFFFH
实验接口电路
数据及IO空间
系统已定义的I/O地址如下:
接口芯片
口地址
用途
74LS273
0FFDDH
字位口
74LS273
0FFDCH
字形口
74LS245
0FFDEH
键入口
8255A口
0FFD8H
EP总线
8255B口
0FFD9H
EP地址
8255C口
0FFDAH
EP控制
8255口
0FFDBH
控制字
第二章MCS-51单片机实验指导
本实验指导是为适应各大、中专院校开设单片机原理与应用方面的课程设置需要而编写,供学生编程用。
完成本实验指导中的实验,可使学生基本掌握MCS-51单片机的结构原理、程序框图和实验步骤。
免除了主讲教师和实验辅导老师为设计、准备调试实验线路和实验程序所需的工作量,节约宝贵的时间。
一、实验指导书中所列的实验程序已经固化到系统管理CPU中,在“P.”状态下,按动“0”键→再按“EV/UN”键,将程序传送到以0000H为起始地址的RAM中。
因实验程序中采用子程序形式较多,要互相调用,所以必须把程序全部传送到实验系统中,对中断入口等地址的指令按照实验要求输入。
其中MCS-51实验程序地址范围:
0000~1FFFH,您可以通过系统自带的键盘显示输入各种命令运行系统RAM中的实验程序,显示实验结果完成各个实验项目。
二、实验接线图上的粗实线表示用户在实验时要用导线连接起来。
三、所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据贵校(院)的教学要求,选择相应实验。
四、对同一问题的解决办法往往不是唯一的欢迎用户在使用本书过程中提出最为优秀的实验方案,指示错误和不足,希望用户反馈给我们,以便及时修改。
五、每个实验程序的序号、实验名称、入口地址见下表。
软件部分实验
实验序号
软件实验名称
入口地址
实验一
清零程序
0640H
实验二
拆字程序
0660H
实验三
拼字程序
0680H
实验四
数据区传送子程序
07B0H
实验五
数据排序实验
09B0H
实验六
查找相同数个数
0AA0H
实验七
无符号双字节快速乘法子程序
0970H
实验八
多分支程序
0A10H
实验九
脉冲计数(定时/计数器实验)
06E0H
实验十
电脑时钟(定时器、中断综合实验)
0030H
实验十一
二进制到BCD转换
联机操作
实验十二
二进制到ASCII转换
联机操作
实验十三
八段数码管显示程序
联机操作
实验十四
键盘扫描显示实验
联机操作
硬件部分实验
实验序号
硬件实验名称
入口地址
实验一
P1口亮灯实验
0790H
实验二
P1口转弯灯灯实验
0C30H
实验三
P3口输入P1口输出
0810H
实验四
工业顺序控制实验
0190H
实验五
8255ABC口输出方波
0580H
实验六
PA口控制PB口实验
0770H
实验七
8255控制交通灯
0BB0H
实验八
简单I/O扩展实验
0B80H
实验九
0809A/D转换实验
05A0H
实验十
0832D/A输出方波实验
调零0617H,方波061FH
实验十一
电子音响实验
music.bin
实验十二
继电器控制实验
0F00H
实验十三
步进电机实验
0CA0H
实验十四
8253方波实验
0EC0H
实验十五
串并转换实验
0F30H
实验十六
外部数据存储器扩展
0F50H
实验十七
8032串行口应用实验
(一)—双机通信
发送0F80H、接收_0FC0H
实验十八
8032串行口应用实验
(二)—与PC机通信
发送0F80H、接收_0FC0H
实验十九
小直流电机调速实验
05E0H
实验二十
LED16×16点阵显示实验
0188H
实验二十一
2×16LCD液晶显示接口实验
0FFCH
实验二十二
红外收发实验
1000H
实验二十三
数字温度传感实验
1003H
实验二十四
外部中断处理(急救车与交通灯实验)
联机操作
多CPU系列教学实验系统状态设置
Dais-多CPU实验系统有多种工作模式,系统对各模式的状态设置定义如下:
1.接口实验模式:
上电或复位系统无条件进入接口实验模式,显示闪动的“P.”。
2.串口出借模式:
在“P.”状态按F2功能键,系统进入串口出借模式,显示“P......”,该状态用户可以自行定义串行口。
按F1功能键或按复位按钮,均使系统返回初始状态“P.”。
3.下载仿真模式:
在“P.”状态按F1功能键,系统进入下载式仿真模式,显示“H.”,在该状态只有按F2功能键才能返回状态“P.”。
在联机状态下,通过菜单栏“设置→仿真模式”,在对话框中设置:
1.接口实验模式:
片外RAM=系统,片外ROM=系统
2.串口出借模式:
片外RAM=用户,片外ROM=系统
3.下载仿真模式:
片外RAM=系统,片外ROM=用户
实验一顺序结构程序设计
一、实验目的
掌握汇编语言设计和调试方法。
二、实验内容
把外部RAM中2000h单元的内容拆开,高位送2001h单元,低位送2002h单元,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。
三、程序流程
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在“P.”状态下键入0000,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se02.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~2002h中内容变化情况。
五、思考
如何用断点方式调试本程序。
ORG0000H
LJMPSTART
ORG0030H
START:
MOVDPTR,#2000H
MOVXA,@DPTR
ANLA,#0F0H
SWAPA
MOVDPTR,#2001H
MOVX@DPTR,A
MOVDPTR,#2000H
MOVXA,@DPTR
ANLA,0FH
MOVDPTR,#2002H
MOVX@DPTR,A
SJMP$
END
实验二循环结构程序设计
一、实验目的
熟悉MCS-51指令系统,掌握程序设计方法。
二、实验内容
编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。
三、程序框图
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵对片内RAM地址50h~5AH进行不规则置数。
⑶在“P.”状态下键入0000,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se05.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查片内50~5Ah中内容是否按从小到大排列。
五、思考:
修改程序把50~5Ah中内容按从小到大排列。
ORG0000H
LJMPSTART
ORG0030H
START:
MOVR7,#09H
MOVR0,#50H
MOVR6,#00H;清除标志
START1:
CLRC
MOVA,@R0
INCR0
SUBBA,@R0
JCLOOP1
MOVR6,#01H
DECR0
MOVA,@R0
INCR0
XCHA,@R0
DECR0
MOV@R0,A
INCR0
LOOP1:
DJNZR7,START1
CJNER6,#00H,START
SJMP$
END
实验三选择结构程序设计
一、实验目的
掌握汇编语言的编程。
二、实验内容
编写程序,根据送入的数据转移运行。
三、程序框图
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在20H中分次送入00、01、02、03。
⑶在“P.”状态下键入0A10,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se08.asm,用连续或单步方式运行程序。
3、运行结果检查
(1)在单步运行时每走一步可观察其运行结果。
(2)在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后观察每次运行程序后,数码管上数字循环情况。
ORG0000H
LJMPSTART
ORG0030H
START:
MOV20H,#00H
MOVA,20H
MOVB,#03H
MULAB
MOVDPTR,#TAB
JMP@A+DPTR
SJMP$
ORG3000H
TAB:
LJMPLOOPA
LJMPLOOPB
LJMPLOOPC
LOOPA:
MOVA,#01H
LOOPA1:
MOVP1,A
LCALLDELAY1S
RLA
LJMPLOOPA1
LOOPB:
MOVA,#03H
LOOPB1:
MOVP1,A
LCALLDELAY1S
RLA
LJMPLOOPB1
LOOPC:
MOVA,#05H
LOOPC1:
MOVP1,A
LCALLDELAY1S
RLA
LJMPLOOPC1
DELAY1S:
MOVR7,#10
DELAY1S3:
MOVR6,#200
DELAY1S2:
MOVR5,#250
DELAY1S1:
DJNZR5,DELAY1S1
DJNZR6,DELAY1S2
DJNZR7,DELAY1S3
RET
END
实验四中断实验
一、实验目的
熟悉单片机中断概念及中断编程方法。
二、实验内容
编写程序,从P3.3输入脉冲,记录输入脉冲个数,并用P1口外部链接的发光二极管显示技术结果。
二、参考程序
ORG0000H
LJMPSTART
ORG0013H
LJMPINT1_COUNT
ORG0030H
START:
MOVSP,#60H
MOVA,#00H
SETBIT1;下降边沿触发方式
SETBEX1;开启INT1中断
SETBEA
SJMP$
INT1_COUNT:
INCA
MOVP1,A
RETI
END
实验五LED显示实验
一、实验要求
利用实验系统提供的显示设备,动态显示一行数据。
二、实验目的
⑴了解数码管动态显示的原理;
⑵了解用总线方式控制数码管显示。
三、实验说明
本实验系统提供了8位七段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
四、程序框图
ORG0000H
LJMPSTART
ORG0030H
START:
MOVSP,#60H
MOV50H,#8CH;显示字符P.
MOV51H,#40H
MOV52H,#79H
MOV53H,#24H
MOV54H,#30H
MOV55H,#19H
MOV56H,#12H
MOV57H,#02H
LOOP1:
LCALLDISPLAY
LJMPLOOP1
DISPLAY:
MOVP2,#0FH
MOVP0,50H
LCALLDELAY20MS
MOVP2,#1FH
MOVP0,51H
LCALLDELAY20MS
MOVP2,#2FH
MOVP0,52H
LCALLDELAY20MS
MOVP2,#3FH
MOVP0,53H
LCALLDELAY20MS
MOVP2,#4FH
MOVP0,54H
LCALLDELAY20MS
MOVP2,#5FH
MOVP0,55H
LCALLDELAY20MS
MOVP2,#6FH
MOVP0,56H
LCALLDELAY20MS
MOVP2,#7FH
MOVP0,57H
LCALLDELAY20MS
LJMPDISPLAY
DELAY20MS:
MOVR7,#20
DELAY1:
MOVR6,#100
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
TAB:
DB40H,79H,24H,30H,19H,12H,02H;0123456的字符码
DB78H,00H,10H,08H,03H,46H,21H,06H,0EH;789ABCDEF的字符码
TAB1:
DB8CH;P.的字符码
TAB2:
DB7FH;空,不显示的字符
END
键盘电路实验
电路图:
程序:
;用int1中断实现按键功能,键值存放在4fh单元中
;通过P1口输出按键值,用发光二极管显示按键值
;通过P2.4--P2.6和三八译码器输出八列按键扫描码
;通过P2.0---P2.3读入按键的行值
;行列值组合,就是按键的键值
ORG0000H
LJMPSTART
ORG0013H
LJMPkey_value
ORG0030H
START:
MOV4fH,#00h;存放按键键值单元
MOVP1,#00H
MOVP2,#0FFH
setbex1
setbit1
setbea
KEY_SCAN:
MOVP2,#0FH
LCALLDELAY5MS
MOVP2,#1FH
LCALLDELAY5MS
MOVP2,#2FH
LCALLDELAY5MS
MOVP2,#3FH
LCALLDELAY5MS
MOVP2,#4FH
LCALLDELAY5MS
MOVP2,#5FH
LCALLDELAY5MS
MOVP2,#6FH
LCALLDELAY5MS
MOVP2,#7FH
LCALLDELAY5MS
LJMPKEY_SCAN
DELAY5MS:
MOVR7,#40
DELAY1:
MOVR6,#100
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
KEY_VALUE:
PUSHACC
PUSHPSW
MOVA,P2
MOV4FH,A
MOVP1,A
POPPSW
POPACC
RETI
END
LED和键盘综合实验
电路图:
参考程序:
ORG0000H
LJMPSTART
ORG0013H
LJMPKEY_VALUE
ORG0030H
START:
MOVSP,#60H
MOV4fH,#00h;存放按键键值单元
MOVP2,#0FFH
setbex1
setbit1
setbea
MOV50H,#0CH;显示字符P.
MOV51H,#0CH
MOV52H,#7FH
MOV53H,#7FH
MOV54H,#7FH
MOV55H,#7FH
MOV56H,#7FH
MOV57H,#0CH
LOOP1:
LCALLDISPLAY
LJMPLOOP1
DISPLAY:
MOVP2,#0FH
MOVP0,50H
LCALLDELAY20MS
MOVP2,#1FH
MOVP0,51H
LCALLDELAY20MS
MOVP2,#2FH
MOVP0,52H
LCALLDELAY20MS
MOVP2,#3FH
MOVP0,53H
LCALLDELAY20MS
MOVP2,#4FH
MOVP0,54H
LCALLDELAY20MS
MOVP2,#5FH
MOVP0,55H
LCALLDELAY20MS
MOVP2,#6FH
MOVP0,56H
LCALLDELAY20MS
MOVP2,#7FH
MOVP0,57H
LCALLDELAY20MS
LJMPDISPLAY
DELAY20MS:
MOVR7,#20
DELAY1:
MOVR6,#100
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
KEY_VALUE:
PUSHACC
PUSHPSW
MOV4FH,P2
LCALLKEY_VALUE_DISP
POPPSW
POPACC
RETI
KEY_VALUE_DISP:
MOVA,4FH
ANLA,#0F0H
SWAPA
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV56H,A
MOVA,4FH
ANLA,#0FH
MOVCA,@A+DPTR
MOV57H,A
RET
TAB:
DB40H,79H,24H,30H,19H,12H,02H;0123456的字符码
DB78H,00H,10H,08H,03H,46H,21H,06H,0EH;789ABCDEF的字符码
TAB1:
DB8CH;P.的字符码
TAB2:
DB7FH;空,不显示的字符
END
实验六电脑时钟(定时器、中断综合实验)
一、实验目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。
二、实验内容
编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
三、程序框图
四、实验步骤
连续运行程序,在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。
五、思考
(1)电子钟走时精度和程序中那些常数有关?
(2)修改程序使定时器工作方式改变,调节有关参数,进一步提高精度。
六、参考程序
ORG0000H
LJMPSTART
ORG000BH
LJMPT0_INT
ORG0013H
LJMPKEY_VALUE
ORG0030H
START:
MOVSP,#60H;设置堆栈指针
MOV4fH,#00h;存放按键键值单元
MOVP2,#0FFH
mov58h,#00h;存放T0中断次数,每次20ms,50次为1秒
mov59h,#56;存放“秒”的单元
mov5ah,#34;存放“分”的单元
mov5bh,#12;存放“时”的单元
MOVTH0,#HIGH(-50000);设置T0定时器初值