通信与信息工程学院
2010/2011 学年 第 二 学期
实 验 报 告
课 程 名 称 单片机原理及应用
专 业
班 级
学 号
学 生 姓 名
指 导 教 师
日 期 : 2011 年 4 月 15 日
实验一:单片机汇编语言程序设计
一.实验目的
1. 学习MedWin 或Keil c51仿真软件的使用。
2. 学习Proteus仿真软件的使用。
3. 在MedWin 或Keil仿真环境下编写一个标准的汇编程序,排除语法错误,完成仿真调试和运行。
二.实验内容
1. 编程实现在外部RAM中把200CH开始的300H个字节数据传送到8100开始的单元中去.。
2. 已知在内部RAM中有以array为首址的数据区,依次存放单字节数组长度及数组内容,求这组数据的和,并将和接着该数据区存放.假定数组之和小于255,请编写程序。
三.主要仪器设备:
PC机 一台
MedWin 或Keil c51单片机仿真软件
Proteus 软件
四.实验类型:
设计+验证
备注:
教师演示与学生操作结合。使学生了解Proteus与MedWin或Keil c51的联合使用方法。
五.实验的过程与结果:
(1) ORG 1000H
MOV R0,#array
MOV A,@R0
MOV R7,A
CLR A
INC R0
LOOP: ADD A,@R0
INC R0
DJNZ R7,LOOP
MOV @R0,A
SJMP $
END
(2) MOV DPTR,#200CH
MOV P2,#81H
MOV P0,#00H
MOV r1,#30H
LOOP: MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R1,LOOP
SJMP $
END
六.实验小结
本次实验,我第一次进行单片机上机操作,有以下几点收获:
1)上机前,应了解指令相关知识,为编写汇编语言源程序打下基础.
2)按指令功能划分的分类方式有助于掌握指令系统,应该重点掌握;指令系统中的符号说明任何一种机器语言都有自己的语法规则.
3)掌握单片机指令系统并能很好地运用学会编写常用程序,是应用好单片机的基础.
4)基本掌握了单片机的编程,单片机应用时应该注意的问题,能够在MedWin 或Keil仿真环境下编写一个标准的51汇编程序,排除语法错误,完成仿真调试和运行。
综上,本次试验成功完成。
实验二: MCS-51单片机中断系统
MCS-51单片机定时/计数器及其应用
一.实验目的:
1. 根据Proteus工程提供的电原理图按要求编写简单算法程序,并用MedWin 或Keil仿真软件调试,最后在Proteus中验证程序的正确性。
2. 掌握Proteus与MedWin 或Keil的联合使用方法。
3. 了解并掌握定时器中断相关知识。
二.实验内容
1. 试用定时器中断技术设计一个秒闪电路,其功能是使发光二极管LED每秒闪亮400ms,设系统主频为6MHZ.
2. 设8051单片机定时器T0作定时器用,时钟频率为6MHz,试编程由P1.0和P1.1分别输出周期为2ms和500ms的方波.
三.主要仪器设备:
PC机 一台
MedWin 或Keil c51单片机仿真软件
Proteus 软件
四.实验类型:
演示+设计+验证
备注:
教师演示与学生操作结合。使学生了解Proteus与MedWin或Keil c51的联合使用方法。
五.实验的过程与结果:
(1)分析:
定时器工作在方式0,系统主频为6MHz,最小定时时间为2us
需要计数器计数的个数: 100ms/2us=50000
计数初值:65536-50000=15536=3CB0H
程序段:
ORG 0000H
RESET: LJMP MAIN
ORG 000BH
LJMP IT0P
ORG 0100H
MAIN: MOV SP, #60H
MOV TMOD, #01H
PTOMO: MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
SETB ET0
SETB EA
HERE: LJMP HERE
IT0B : CLR P1.5
MOV B,#01H
LOOP1: MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ B,LOOP1
CPL P1.5
MOV B,#02H
LOOP2: MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ B,LOOP2
CPL P1.5
RETI
END
仿真截图:
(2) 1由P1.0输出周期为2ms的方波:
分析: 周期为2ms,1ms处翻转
(2^16-M)/6000000*12=0.01
65536-5000=60536=0FE0CH
ORG 0000H
RESET: AJMP MAIN
ORG 000BH
AJMP IT0P
ORG 0100H
MAIN: MOV SP, #60H
MOV TMOD, #01H
PTOMO: MOV TL0,#0CH
MOV TH0, #0FEH
SETB TR0
SETB ET0
SETB EA
HERE: AJMP HERE
IT0P: MOV TL0, #0CH
MOV TH0, #0FEH
CPL P1.0
RETI
RET
END
2由P1.1输出周期为500ms的方波:
分析:周期为500ms,250ms处翻转
(2^16-M)/6000000*12=0.25
65536-12500=53036=0CF2CH
程序段:
ORG 0000H
RESET: LJMP MAIN
ORG 000BH
LJMP IT0P
ORG 0100H
MAIN: MOV SP, #60H
MOV TMOD, #01H
PTOMO: MOV TL0, #2CH
MOV TH0, #0CFH
SETB TR0
SETB ET0
SETB EA
HERE: LJMP HERE
IT0P: MOV B, #04H
LOOP: MOV TL0, #2CH
MOV TH0, #0CFH
DJNZ B,LOOP
CPL P1.1
RETI
END
六.实验小结
这次实验,使我学会了使用proteus进行单片机的仿真,学习了MedWin 或Keil c51仿真软件的使用, 能够在MedWin 或Keil仿真环境下编写一个标准的51汇编程序。能够根据Proteus工程提供的电原理图按要求编写简单算法程序,并用MedWin 或Keil仿真软件调试,最后在Proteus中验证程序的正确性。通过设计电子时钟的综合实验掌握了单片机编程的基本思想,以及中断、定时程序的基本编写方法。获益匪浅,本次试验成功。
实验三:单片机串行通信接口技术
一.实验目的
1. 掌握51单片机串口通信原理。
2. 学会运用仿真软件编写基本串口通信程序。
3. 了解如何利用软件自带的功能观察串口通信的结果。
二.实验内容
1. 试设计一个8051单片机的双机通信程序,并编写程序将A机片内RAM 40H-50H的数据块通过串行口传送到B机片内的RAM 60H-7FH中去。
2. 以8051串行口按工作方式3进行数据通信,设波特率为1200bit/s,第9数据位作奇偶校验位,以中断方式传送数据,请编写通信程序。
三.主要仪器设备:
PC机 一台
MedWin 或Keil c51单片机仿真软件
Proteus 软件
四.实验类型:
设计+验证
备注:
教师指导学生如何利用软件自带的功能观察串口通信的结果。
五.实验的过程与结果:
分析:1200bit/s------SMOD=0
N=256-2^0*fosc/(1200*12*32)
方式二定时,TMOD=02H,用到定时器0。
SCON=D0H(方式三,REN=1)
该程序段调用了一个循环程序在发、收两端分别进行11次传送。
程序段:
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP IT0P
ORG 0100H
MAIN: MOV TMOD,#02H
MOV TL1,#0F3H
MOV TH1,#0F3H
SETB TR0
MOV SCON,#50H
MOV R0,#40H
MOV R1,#60H
ACALL SOUT
SJMP $
IT0P: JNB RI,SEND
ACALL SIN
CLR RI
SJMP NEXT
SEND: ACALL SOUT
CLR TI
NEXT: RETI
SOUT: MOV B,#0AH
LOOP1: MOV SBUF,A
INC R0
DEC B
DJNZ B,LOOP1
RET
SIN: MOV B,#0AH
LOOP2: MOV A,SBUF
MOV @R1,A
INC R1
DEC B
DJNZ B,LOOP2
RET
END
(1) 分析:中断服务程序对TI、RI进行判断,并将程序转入带奇偶校验的SOUT SIN程序,实现通信。
程序段:
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP IT0P
ORG 0100H
MAIN: MOV TMOD,#02H
MOV TL0,#0E8H
MOV TH0,#0E8H
SETB TR1
MOV SCON,#D0H
MOV R0,#00H
MOV R1,#80H
ACALL SOUT
SJMP $
IT0P: JNB RI,SEND
ACALL SIN
CLR RI
SJMP NEXT
SEND: ACALL SOUT
CLR TI
NEXT: RETI
SOUT: PUSH PSW
PUSH Acc
MOV A,@R0
MOV C,P
CPL C
MOV TB8,C
MOV SBUF,A
INC R0
POP Acc
POP PSW
SIN: PUSH PSW
PUSH Acc
MOV A,SBUF
MOV C,P
JNC MM
JNB RB8,ERROR
MM: JB RB8,ERROR
ANL A,#7FH
MOV @R1,A
INC R1
POP Acc
POP PSW
ERROR: RETI
END
仿真截图:
(利用proteus仿真自带的vitual terminal,来验证,我们的编写效果。根据题目要求,使用1200bit/s来进行单片机与虚拟终端之间的通信.)
六.实验小结:
通过这第三个实验,开始感觉有些难,后来慢慢也就做下来了,虽然做的不是特别好。此次又学会了利用单片机串行口,实现双机通信。掌握了双机通信的原理和编程方法以及通信程序编制方法。通过半个学期的学习发现《单片机》的确是一门很有用的课程,对今后的学习工作有很大的帮助,因为单片机目前在社会中有在和极其广泛的用途。但是我觉得就我们在课堂上学到的这点知识还极其有限,更多的东西还靠”个人修行”.
希望以后多进行这样的实验,增强自己的动手能力。只有坚忍不拔,迎难而上,才能摘取胜利的果实!
实验1 二进制到BCD转换
一、实验目的
学习星研Star16L仿真器系统的基本操作,
熟悉EL-Ⅱ型通用接口板实验电路,
掌握简单的数值转换算法。
二、实验仪器和设备
PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路。
三、实验内容
1)将给定的一个单字节二进制数(存放在R2中),转换成非压缩的二—十进制(BCD)码,并存放到R3R4R5中。
2)(选作)将给定的一个双字节二进制数(存放在R2R3中),转换成压缩的二—十进制(BCD)码,并存放到R4R5R6中。
四、实验方法
1、将星研仿真器与微机和目标板相互连接构成完整的硬件仿真系统
1)仿真器与仿真头的硬件连接:STAR16L仿真器与仿真头PODPH51(DIP)用两根40芯扁平电缆连接,注意电缆插头的方向。参见下图。
2)仿真头与EL-Ⅱ型通用接口板的硬件连接:将EL-Ⅱ型通用接口板的8051CPU芯片拔下,将仿真头PODPH51插入该CPU插座(40脚DIP),注意芯片的上下方向
3)仿真器与微机的连接:通过USB接口将微机与仿真器相连,打开仿真器电源。仿真器与微机的第一次连接将自动引导安装程序,在该驱动程序的安装过程中,请勿执行其它应用程序。
2 、单片机仿真系统运行调试
通过双击微机桌面的星研图标,或通过开始菜单,起动星研仿真系统程序,通过输入程序,编译通过后,进入调试状态,打相应的观察窗口,观测CPU内部各个寄存器,存储器以及外部存储器的状态,通过单步或断点运行,验证程序运行的正确性,并修正错误。
五、参考程序清单及框图
1)单字节二进制到非压缩BCD
;NAME T1_1_BCD
ORG 0000H ;0100H不能用,与星研软件冲突??
BCD1: MOV A, R2 ;二进制数送A
MOV B, #100 ;100作为除数送入B
DIV AB
MOV R3, A ;百位数送R3,余数在B中
MOV A, #10 ;分离十位和个位数
XCH A, B ;余数送A,除数10在B中
DIV AB ;分离出十位在A, 个位在B中
MOV R4, A ;十位送R3
MOV A, B
MOV R5, A ;个位送R4
NOP
LJMP BCD1
END
2)(选作)双字节二进制到压缩BCD
;NAME T1_2_BCD
ORG 0000H
BCD2: CLR A
MOV R4, A
MOV R5, A
MOV R6, A
MOV R7, #16
LOOP: CLR C
MOV A, R3
RLC A
MOV R3, A
MOV A, R2
RLC A
MOV R2, A
MOV A, R6
ADDC A, R6
DA A
MOV R6, A
MOV A, R5
ADDC A, R5
DA A
MOV R5, A
MOV A, R4
ADDC A, R4
DA A
MOV R4, A
DJNZ R7, LOOP
LJMP BCD2
END
参考程序框图
单字节二进制数转换成非压缩BCD码
六、实验要求
1、基本内容:按照实验要求连接系统,编制程序并运行,说明如何利用仿真器验证程序的正确性。
2、拓展内容:按照子程序模式修改程序,并通过程序调用实现对任意输入的二进制数据进行码制转换。
注:必做和选作的要求相同。
七、星研仿真系统基本操作步骤
1)进入星研仿真软件
2)建立项目文件——仿真头选择:PODPH51(DIP);CPU选择:8051类
3)新建源文件——后缀为.ASM
4)输入源程序——编译、链接、修改错误
5)进入调试状态
6)调试程序,查看运行结果
7)退出星研仿真系
八、实验数据记录:
1)、单字节二进制到非压缩BCD
2)、双字节二进制到压缩BCD
数据分析:
对于一个8位二进制码bn-1bn-2……b1b0,,其在十进制编码方式下的值为
式1
把上式写出套乘的形式:
式2
式中的每项乘2,相当于将寄存器中的二进制码左移1位,这就意味着利用移位寄存器可以完成二进制与8421BCD的转换。
在移位的过程中,当现态Sn<5时,次态不变。当现态Sn=5、6、7时,左移一次,其次态Sn+1将会超过9,对于一个BCD码来说,这样的状态属于禁用状态。而当Sn=8、9时,左移1位,则会向高1位的BCD码输入一个进位的信号 ,由于二进制和BCD码权不一致,当发生进位时,虽然码元只是左移1位,但次态Sn+1将减少6。基于上面这两种情况,在B/BCD转换时需要对转换结果加以校正。校正过程如下:当Sn>=5时,我们让Sn先加上3,然后再左移1位,次态 Sn+1=2(Sn+3)=2Sn+6,正好补偿由于进位而减少的数值,并且向后一个变换单元送入一个进位信号, 再将待转换的二进制码从最高位开始左移BCD的寄存器(从高位到低位排列),每移一次,检查每一位BCD码是否大于4,是则加上3,否则不变。左移8次后,即完成了转换。需要注意的是第八次移位后不需要检查是否大于5。并检查每一个BCD码是否大于4,因为如果大于 4(比如 5、6),下一步左移就要溢出了,所以加 3,等于左移后的加 6,起到十进制调节的作用。
单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实…
通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机…
海南大学届单片机实验报告4份论文题目学生姓名学号所在院系专业班级授课教师完成时间蜂鸣器实验实验目的1熟悉实验板中蜂鸣器工作原理掌握…
编号实验报告姓名学号实验班级实验时间实验报告总份片数12份片实验教师学院1实验一开发软件使用与调试方法一实验目的学习KEIL的使用…
成绩重庆邮电大学自动化学院综合实验报告题目51系列单片机闭环温度控制学生姓名蒋运和班级0841004学号20xx213316同组人…
微机原理与单片机接口技术实验报告册河南理工大学电气学院专业班级学号姓名1目录实验一流水灯实验3一实验目的3二实验实现的功能3三系统…
基于单片机的温度数据采集系统实验报告班级电技姓名田波平学号指导老师仲老师101班10120xx108题目基于单片机的温度数据采集系…
单片机实验报告报告人xxx学号20xx211812班号20xx211407指导老师姚燕20xx0615实验一仿真软件的使用以及跑马…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…