单片机原理及应用
实验指导书
2008年10月
目 录
一、 实验环境介绍 ............................................................................................................ 1
1.1 Keil集成开发环境介绍 ...........................................................................................1 1.2 G2010+实验箱介绍 ................................................................................................ 11 1.3 EasyProbe 8052F仿真器介绍................................................................................12
二、 实验内容 .................................................................................................................. 13
实验一 练习使用集成调试软件 ..................................................................................13 实验二 简单和分支程序设计 ......................................................................................14 实验三 循环和查表程序设计 ......................................................................................15 实验四 简单输入/输出 .................................................................................................16 实验五 外部中断 ..........................................................................................................17 实验六 定时器应用 ......................................................................................................19 实验七 计数器应用 ......................................................................................................21 实验八 串行口应用 ......................................................................................................23 实验九 C51编程 ..........................................................................................................26
三、 附录 .......................................................................................................................... 27
单片机原理及应用实验指导书
一、 实验环境介绍
1.1 Keil集成开发环境介绍
Keil集成开发环境是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编语言、PLM语言、C语言的程序设计,界面友好,易学易用。
(1) 建立工作文件夹
在规定的盘符建立一个以自己学号命名的文件夹,作为工作文件夹,将日后实验所有的文件都存放在该文件夹中。
(2) 进入集成开发环境
双击桌面图标,进入uVision2集成开发环境。
(3) 新建工程
选择菜单“工程—新建工程”,弹出“新建工程”对话框;
1
单片机原理及应用实验指导书
在“保存在”下拉列表中选择自己的工作文件夹,在“文件名”文本框中键入工程名(不需要键入扩展名,扩展名默认为 .uv2),单击“保存”按钮,关闭“新建工程”对话框,弹出“为目标‘target 1’选择设备”对话框,选择目标芯片型号;
选择Atmel公司的C52芯片,单击“确定”按钮,关闭对话框,新建一个工程。
2
单片机原理及应用实验指导书
(4) 选择调试方式
单击“目标选项”按钮,弹出“目标’Target 1’属性”对话框;单击“调试”标签,选择调试方式。
3
单片机原理及应用实验指导书
若使用软件模拟方式,则选中“S 使用仿真器”,其他选项保持默认状态,不要随意更改;若使用硬件仿真器调试,则选中“U 使用”,并在其后的下拉列表中选择“Micetek Driver”,再选中“启动时加载程序”和“运行到main()”,其他选项保持默认状态,不要随意更改。单击“确定”按钮,关闭该窗口。
(5) 新建源程序
单击“新建文件”按钮,在弹出的文本窗口中输入汇编语言源程序;
4
单片机原理及应用实验指导书
输入完毕后,单击“保存”按钮,弹出“另存”对话框;
确认“保存在”为自己的工作文件夹,在“文件名”文本框中键入源程序文件名和扩展名(一定要输入扩展名,汇编语言源程序的扩展名为 .ASM);单击“保存”按钮,关闭对话框,保存源程序。
(6) 将源程序添加到工程中
右键单击“工程窗口”中的“Source Group 1”,在弹出的菜单中选择“增加文件到组”;(注:软件汉化有误)
5
单片机原理及应用实验指导书
弹出“增加文件到组”对话框;
6
单片机原理及应用实验指导书
在“文件类型”下拉列表中选择“Asm源文件”;
选中欲添加的源程序,单击“Add”按钮,源程序添加到工程中。但是,该对话框并不关闭,等待用户继续添加其他程序。添加完毕后,单击“关闭”按钮,关闭对话框。“工程窗口”中,“Source Group 1”下将出现该源程序文件名。
7
单片机原理及应用实验指导书
若对同一个文件二次添加,则会弹出如下警告框。
(7) 编译和连接
单击“构造所有目标文件夹”按钮,对原程序进行编译和连接,构造结果将在“构造”窗口中显示。如果程序有语法错误,则会指出错误类型及所在行,修改后,重新构造,直至没有任何语法错误。
8
单片机原理及应用实验指导书
(8) 开始调试
单击“开始/停止调试”按钮,进入调试状态。
9
单片机原理及应用实验指导书
在调试状态下,“构造工具栏”变为“调试工具栏”。通过单步运行,查看寄存器、存储器的值,判断程序是否运行正确。若不正确,找出问题所在,单击“开始/停止调试”按钮,停止调试,进入编辑状态,修改程序,重新编译、调试。
(9) 查看寄存器
进入调试状态后,“工程窗口”变为“寄存器窗口”,可以查看CPU各寄存器的值。
(10) 查看存储器
单击“存储器窗口”按钮,打开存储器窗口;该窗口共有4个标签,可显示4个存储器的值。单击一个标签,在地址栏中输入要查看的存储器单元的类型及地址。
片内数据存储器 I : [地址] 片外数据存储器 X : [地址] 程序存储器 C : [地址]
若要人为修改某存储单元的值,可右键单击该单元,在弹出的菜单中选择“更新存储器”,在弹出的文本框中输入该单元的新值,单击“确定”即可。注:十六进制数前加“0x”。
(11) 单步运行
在调试状态下,源程序的左边有一个黄色的箭头,指示当前程序执行的位置,即将要执行的一条指令。单击“单步”按钮,程序执行一条指令,黄色箭头下移一行。寄存器和存储器的值的变化显示在相应位置。执行过的指令左边用一绿色方块标记。
(12) 运行到光标行
若想快速、连续执行若干条指令,可将光标定位在这些指令的最后一行处,单击“运行到光标行”按钮,即可。
(13) 全速运行
对于有些程序,只有全速运行才能实现其功能,这时只需单击“运行”按钮;若要暂停运行,单击“暂停”按钮。
(14) 将源程序从工程中删除
一个程序调试成功后,若要调试另一个程序,可不必新建工程,只需新建一个源程序,添加到原有的工程中,同时,将前一个源程序从工程中删除。
在“工程窗口”中,单击要删除的源程序名,按“Delete”键,在弹出的对话框中选择“确定”即可。
对于初学者,一般一个工程中只包含一个源程序,应将多余的源程序删除。
10
单片机原理及应用实验指导书
1.2 G2010+实验箱介绍
SICElab-G2010+实验箱是一个开放式综合实验/仿真系统,具有如下个模块。 新型实用模块: (1)LCD液晶实验 (2)点阵LED广告屏 (3)DS12887实时时钟 (4)红外线发送、接收 (5)直流电机恒速控制 (6)电子琴模拟实验 (7)串行ROM / I2C ROM / 看门狗 (8)步进电机调速
传感器模块: (1)温度传感器 (2)压力传感器 (3)霍尔传感器 (4)红外传感器
传统实验模块:
(1)模数转换器A/D0809 (2)数模转换器D/A0832 (3)8155控制键盘/显示 (4)V/F转换器LM331 (5)串口通讯MAX232 (6)音响电路LM386 (7)EPROM27C256扩展 (8)RAM62扩展 (9)微型打印机接口 (10)PWM模块
通用实验模块: (1)模拟信号发生器 (2)开关量发生器 (3)发光二极管组 (4)信号发生器 (5)74LS138译码器 (6)分频器电路 (7)LED6位数码管 (8)20个键盘组 (9)逻辑笔 (10)门电路
自由实验模块:
由DIP40锁紧插座及240个插孔组成,CPU所有信号均以插孔方式引出,还设计了常用门电路、晶振源、电源插孔等,可以完成以上实验模块的组合实验以及由实验者自行命题和新器件、新方案的实验,使得实验方式和内容不受。
11
单片机原理及应用实验指导书
1.3 EasyProbe 8052F仿真器介绍
EasyProbe 8052F仿真器是单片机专业用仿真器,具有高性能仿真存储区,实时硬件断点,实时追踪记录功能,支持标准8031/32/51/52//58微控制器。
系统性能
* 双CPU架构,全开放设计
* 完全实时仿真,最高速度可达40MHz
* 轻巧实用,可以不使用仿真电缆而直接插入用户仿真系统,便于现场调试 * 以115200bps通过RS232串口与主机通信
* 支持8XC31/32/51/52/58及78C31/32/51/52//58等 51系列内核的CPU * 尺寸:9.0cm 宽:6.5 cm 高:3.0 cm, 重:125g
高性能仿真存储区
* 128K仿真存储区,包括K程序存储区和K数据存储区 * 可按下列属性进行映射: - Overlay(Internal):内部 - Target(External): 外部
* 目标处理器可完整保留自身的存储区和I/O空间 * 全空间K个实时硬件断点
原始程序级开发功能
K硬件执行断点,支持所有程序空间
可对原始程序或C语言进行单步操作 ( Step Into / Over )
循环单步操作 ( Cycle ) 后可显示地址总线、数据总线、周期状态、介面状态及外部追踪位状态资讯
单机执行功能
内建Flash,可下载程序至仿真器中,下载后可单机执行程序,不须连接PC
12
单片机原理及应用实验指导书
二、 实验内容
实验一
1. 实验目的
(1)练习使用Keil集成调试软件; (2)进一步熟悉汇编语言指令的功能。
练习使用集成调试软件
2. 实验内容
按照实验指导书的说明,结合附录中的例子,练习使用Keil集成调试软件,为以后的实验打下基础。
3. 实验器材
计算机1台
4. 实验步骤
(1)新建工程; (2)输入源程序;
(3)将源程序添加到工程中; (4)编译和连接; (5)运行程序;
(6)观察记录运行过程和结果。
5. 实验报告要求
(1)列出源程序,并加以注释; (2)结构复杂的程序,画出流程图; (3)对实验过程和结果进行分析; (4)写出心得体会。
13
单片机原理及应用实验指导书
实验二
1. 实验目的
(1)掌握简单程序设计方法; (2)掌握分支结构程序设计方法。
简单和分支程序设计
2. 实验内容
(1)编写程序,计算30H、31H单元和32H、33H单元中两个4位BCD码的和,结果
存放到34H、35H单元;
(2)编写程序,将30H、31H、32H单元中的3个数按从小到大的顺序排列,结果仍存
放在这3个单元。
3. 实验器材
计算机1台
4. 实验步骤
(1)新建工程 (2)输入源程序
(3)将源程序添加到工程中 (4)编译和连接 (5)运行程序
(6)观察、记录程序运行的过程和结果
14
单片机原理及应用实验指导书
实验三
循环和查表程序设计
1. 实验目的
(1)掌握循环结构程序设计方法; (2)掌握查表程序设计方法。
2. 实验内容
(1)编写程序,查找30H~39H单元10个数中奇数的个数,结果存放到40H单元;(2)编写程序,查表得到两个数的乘积。
3. 实验器材
计算机1台
4. 实验步骤
(1)新建工程 (2)输入源程序
(3)将源程序添加到工程中 (4)编译和连接 (5)运行程序
(6)观察、记录程序运行的过程和结果
15
单片机原理及应用实验指导书
实验四
1. 实验目的
(1)进一步理解I/O口的工作原理 (2)掌握输入/输出程序的设计方法
简单输入/输出
2. 实验内容
编写程序,实现开关控制发光二极管的亮、灭。
3. 实验器材
(1)计算机1台 (2)仿真器1台 (3)实验箱1台
4. 硬件连线
开关 P1.0
P1.1 发光二极管
5. 实验程序
MAIN:
ORG LJMP ORG MOV MOV SJMP END
0000H MAIN 0030H C, P1.0 P1.1, C MAIN
6. 实验步骤
(1)确认关闭实验箱电源,按题目要求接线;
(2)打开实验箱电源,注意观察电源指示灯是否点亮;
(3)进入集成开发环境,新建工程,注意需使用硬件仿真器; (4)输入程序,编译,单步运行,检查系统是否工作正常; (5)全速运行程序,拨动开关,控制发光二极管的亮、灭; (6)关闭实验箱电源,改变接线,做其他实验。
7. 思考与发挥
(1)如何实现多个开关控制多个发光二极管? (2)如何实现8个发光二极管循环点亮?
16
单片机原理及应用实验指导书
实验五
外部中断
1. 实验目的
(1)进一步了解外部中断的结构和工作原理; (2)掌握外部中断的应用程序设计方法。
2. 实验内容
编写程序,利用脉冲按钮产生中断,观察外部中断的响应、处理及返回过程。3. 实验器材
(1)计算机1台 (2)仿真器1台 (3)实验箱1台
4. 硬件连线
脉冲输出 INT0_________
(P3.2) 引脚
5. 实验程序
ORG 0000H
LJMP MAIN ORG 0003H
LJMP INT0_SERVE ORG 0030H MAIN: SETB EX0 SETB IT0 SETB EA LOOP: MOV A, #01H MOV A, #02H MOV A, #03H SJMP LOOP
INT0_SERVE: MOV 30H, A
RETI END
17
单片机原理及应用实验指导书
6. 实验方法
将光标定位在 LJMP INT0_SERVE
指令处,按下“运行到光标行”按钮,程序全速运行,等待外部中断。
按动脉冲按钮,产生下降沿,程序将中断运行,返回监控状态。
继续单步执行程序,观察中断程序的执行及中断返回过程。查看累加器A或30H单元的值,可知主程序的中断位置。
重复进行实验,中断位置会不同。
7. 思考与发挥
设计一个实验,验证外部中断低电平触发方式。
18
单片机原理及应用实验指导书
实验六
定时器应用
1. 实验目的
(1)进一步了解定时器的结构和工作原理; (2)掌握定时器的应用程序设计方法。
2. 实验内容
编写定时程序,利用音响电路产生不同频率的声音
3. 实验器材
(1)计算机1台 (2)仿真器1台 (3)实验箱1台
4. 硬件连线
P1.0 音响输入
5. 实验程序
查询方式(TIM0_JNB.ASM) ORG 0000H LJMP MAIN
ORG 0030H
MAIN: MOV TMOD, #00000010B MOV TH0, #80H MOV TL0, #80H SETB TR0
LOOP: JNB TF0, $ CLR TF0 CPL P1.0
SJMP LOOP
END
中断方式(TIM0_INT.ASM) ORG 0000H
LJMP MAIN
19
单片机原理及应用实验指导书
MAIN:
TIM0:
ORG LJMP ORG MOV MOV MOV SETB SETB SETB
SJMP CPL RETI END
000BH TIM0
0030H
TMOD, #00000010B TH0, #80H TL0, #80H ET0 EA TR0 $ P1.0
6. 实验方法
全速运行程序,从喇叭中发出一定频率的声音。
7. 思考与发挥
(1)如何改变声音频率?
(2)计数初值变大,声音频率将如何变化? (3)如何延长定时时间,使发光二极管闪亮?
20
单片机原理及应用实验指导书
实验七
计数器应用
1. 实验目的
(1)进一步了解计数器的结构和工作原理; (2)掌握计数器的应用程序设计方法。
2. 实验内容
编写计数程序,记录按键次数。
3. 实验器材
(1)计算机1台 (2)仿真器1台 (3)实验箱1台
4. 硬件连线
脉冲输出 T0 (P3.4) 引脚 P1.0 发光二极管
5. 实验程序
ORG 0000H LJMP MAIN ORG 000BH LJMP CNT0
ORG 0030H
MAIN: MOV TMOD, #00000101B MOV TH0, #0FFH MOV TL0, #0FDH SETB ET0 SETB EA SETB TR0
SJMP $
CNT0: CPL P1.0
RETI
END
6. 实验方法
全速运行程序,按动脉冲按钮,每发出3个脉冲,发光二极管改变一次状态。 21
单片机原理及应用实验指导书
7. 思考与发挥
若要求每发出5个脉冲,发光二极管改变一次状态,如何修改程序?
22
单片机原理及应用实验指导书
实验八
1. 实验目的
串行口应用
(1)进一步了解串行口的结构和工作原理; (2)掌握串行口的应用程序设计方法。
2. 实验内容
利用8031单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。
3. 实验器材
(1)计算机1台 (2)仿真器1台 (3)实验箱1台
4. 硬件连线
P3.0 RXD P3.1 TXD
两台实验箱用通讯电缆连接
5. 实验程序
发送程序(查询方式)
MAIN:
ORG LJMP ORG MOV MOV MOV JNB CLR
0000H MAIN
0030H
SCON, #10000000B A, #12H SBUF, A TI, $ TI
SJMP $ END
发送程序(中断方式)
ORG 0000H
23
单片机原理及应用实验指导书
MAIN:
SEND:
LJMP ORG LJMP ORG MOV MOV MOV SETB SETB
SJMP CLR RETI END
MAIN 0023H SEND
0030H
SCON, #10000000B A, #12H SBUF, A ES EA $ TI
接收程序(查询方式)
MAIN:
ORG LJMP ORG MOV JNB CLR MOV
SJMP END
0000H MAIN
0030H
SCON, #10010000B RI, $ RI
A, SBUF $
接收程序(中断方式)
ORG LJMP ORG LJMP ORG MAIN: MOV SETB SETB SJMP
RECEIVE:
24
0000H MAIN 0023H RECEIVE
0030H
SCON, #10010000B ES EA $
单片机原理及应用实验指导书
CLR RI MOV A, SBUF RETI END
6. 实验方法
接收方先运行,把光标定位在 MOV A, SBUF
指令的下一条指令处,按“运行到光标行”按钮等待接收数据。
发送方后运行,把光标定位在 CLR TI
指令处,按“运行到光标行”按钮,程序很快运行结束,数据发送完毕。
接收方接收到数据后,程序中断运行,返回监控状态,查看累加器A中的内容是否为发送方发送的数据。
7. 思考与发挥
(1)发送方是否可以先运行? (2)如何发送一组数据?
25
单片机原理及应用实验指导书
实验九
1. 实验目的
初步掌握C51程序设计方法。
C51编程
2. 实验内容
编写并调试出一个C51实验程序。
3. 实验器材
(1)计算机1台 (2)仿真器1台 (3)实验箱1台
4. 实验程序
main() {
int x, y, z; x = 10; y = 20; z = x + y; x++; y--;
while (1); }
本例中main是主函数名,要执行的主函数的内容称为主函数体,主函数体用大括号{ }括起来。函数体中包含若干条将被执行的程序语句,每条语句都必须以分号为结束符。
5. 实验方法
保存源程序时,输入扩展名.C ;
使用观察窗口查看变量的值。按“查看调用堆栈窗口”按钮打开观察窗口;在“局部”标签中显示出变量的值;或者,右键单击程序中的变量名,在弹出的菜单中选择“增加 到观察窗口”—“#1”或“#2”。
6. 思考与发挥
用C51语言编写一个数据排序程序。
26
单片机原理及应用实验指导书
三、 附录
1. 数据交换
交换片内数据存储器30H和31H单元的内容。 源程序:(XCH.ASM) ORG 0000H LJMP MAIN
ORG 0030H
MAIN: MOV 30H, #12H MOV 31H, #34H MOV A, 30H MOV 30H, 31H MOV 31H, A
SJMP $
END
2. 片外数据交换
交换片外数据存储器0030H和0031H单元的内容。 源程序:(MOVX.ASM) ORG 0000H LJMP MAIN
ORG 0030H
MAIN: MOV DPTR, #0030H MOV A, #12H MOVX @DPTR, A
MOV DPTR, #0031H MOV A, #34H MOVX @DPTR, A MOV DPTR, #0030H MOVX A, @DPTR MOV R0, A
MOV DPTR, #0031H MOVX A, @DPTR MOV DPTR, #0030H
MOVX
@DPTR, A
27
单片机原理及应用实验指导书
MOV MOV MOVX
SJMP END
DPTR, #0031H A, R0 @DPTR, A $
3. 查表程序
片外程序存储器从0050H单元开始存放有10位学生的成绩,根据累加器A中的学号,查出该学生的成绩。 源程序:(MOVC.ASM)
ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A, #05H MOV DPTR, #CJTAB MOVC A, @A+DPTR SJMP $ ORG 0050H CJTAB: DB 98H, 74H, 83H, 85H, 77H DB 65H, 92H, 68H, 84H, 70H END
注意观察程序存储器中成绩表的存放情况。
4. 双字节数加法
片内数据存储器30H(高8位)、31H(低8位)单元和32H、33H单元存放有两个双字节无符号数,将其相加,和存放在30H、31H单元中。 源程序:(ADD_W.ASM)
MAIN:
28
ORG LJMP ORG MOV MOV MOV MOV MOV ADD
0000H MAIN 0030H
30H, #12H 31H, #34H 32H, #0ABH 33H, #0CDH A, 31H A, 33H
单片机原理及应用实验指导书
MOV 31H, A MOV A, 30H ADDC A, 32H MOV 30H, A
SJMP $
END
思考与发挥:
如何实现双字节数减法?
5. 双字节数加一
将30H(高8位)、31H(低8位)单元双字节数加一。源程序:(INC_W.ASM)
ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A, 31H ADD A, #01H MOV 31H, A MOV A, 30H ADDC A, #00H MOV 30H, A SJMP MAIN END
该程序为循环结构,可连续单步运行。 思考与发挥:
如果为BCD码加一,程序将如何修改?
6. 双字节数左移
将30H、31H单元双字节数左移一位。 源程序:(RLC_W.ASM) ORG 0000H LJMP MAIN
ORG 0030H
29
单片机原理及应用实验指导书
MAIN: MOV 30H, #12H MOV 31H, #88H
LOOP: MOV A, 31H CLR C RLC A MOV 31H, A MOV A, 30H RLC A MOV 30H, A SJMP LOOP END
该程序为循环结构,可连续单步运行。 思考与发挥:
如果要右移一位,程序将如何修改?
7. 比较大小
比较片内数据存储器30H和31H单元的两个无符号数的大小,将较大者存入32H单元。
源程序:(MAX_2.ASM)
MAIN:
COMP:
BIG:
ORG LJMP ORG MOV MOV MOV CJNE JNC MOV MOV
SJMP END
0000H MAIN 0030H
30H, #12H 31H, #34H A, 30H
A, 31H, COMP BIG A, 31H 32H, A $
思考与发挥:
若要存放较小数,程序将如何修改?
30
单片机原理及应用实验指导书
8. 寻找最大值
片内数据存储器30H~39H单元中存放有10个无符号数,找出其中最大数存放到40H单元中。
源程序:(MAX_10.ASM)
MAIN:
LOOP:
COMP:
NEXT:
ORG LJMP ORG MOV MOV MOV ┇ MOV MOV MOV MOV MOV CJNE JNC MOV INC DJNZ MOV
0000H MAIN 0030H
30H, #82H 31H, #23H 32H, #98H ┇
39H, #33H A, 30H R0, #31H R7, #09H B, @R0
A, B, COMP NEXT A, B R0
R7, LOOP 40H, A
SJMP $ END
思考与发挥:
若要寻找最小值,程序将如何修改?
9. 单字节BIN码BCD码
将累加器A中的二进制码转换为BCD码,结果存放在片内数据存储器30H(百位)、31H(十位)、32H(个位)单元中。 源程序:(BIN2BCD.ASM)
MAIN:
ORG LJMP ORG MOV MOV
0000H MAIN 0030H A, #0BAH B, #H
31
单片机原理及应用实验指导书
DIV MOV MOV MOV DIV MOV MOV
SJMP END
AB
30H, A A, B B, #0AH AB
31H, A 32H, B $
10. 单字节BCD码BIN码
将累加器A中的压缩BCD码转换为二进制码。 源程序:(BCD2BIN.ASM)
MAIN:
ORG LJMP ORG MOV PUSH ANL SWAP MOV MUL MOV POP ANL ADD
SJMP END
0000H MAIN 0030H A, #26H ACC
A, #0F0H A
B, #0AH AB B, A ACC
A, #0FH A, B $
11. 子程序
片内数据存储器30H、31H单元存有两个无符号数a和b,编程计算a2+b2,将结果存取32H单元。由子程序求数的平方。设结果为单字节数。 源程序:(SUBROUT.ASM)
MAIN:
32
ORG LJMP ORG MOV MOV
0000H MAIN 0030H 30H, #2 31H, #3 单片机原理及应用实验指导书
MOV A, 30H LCALL SQR MOV 32H, A MOV A, 31H LCALL SQR ADD A, 32H MOV 32H, A
SJMP $
SQR: MOV B, A MUL AB
RET
END
实验方法:
单步执行程序,注意观察程序的执行顺序。
33
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- shangjiatang.cn 版权所有 湘ICP备2022005869号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务