单片机原理及应用
实验报告
实验要求
一、实验目的
二、实验电路及汇编源程序(程序要加注释)
三、仿真结果(或硬件调试结果)分析
实验一:存储器读写
一、 实验目的:
1、 掌握寄存器、存储器读写等汇编指令;
2、掌握编程软件编辑、编译、调试等基本操作。
二、 实验内容:
1、将下面的汇编程序输入到WAVE集成开发软件中
ORG 0000H
SJMP START
ORG 0030H
START:MOV R0,#07H
MOV R1,#0FEH
ADD A,R0
ADDC A,R1
MOV DPTR,#2000H
MOVX @DPTR,A
MOVX A,@DPTR
INC A
MOV P1,A
END
2、 选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。
3、 选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
思考题:试用汇编语言编写一段程序,判断R1、R2、R3三个寄存器中存放的数据大小,并按从大到小的顺序重新存放到R1、R2、R3三个寄存器中。
程序如下:
ORG 0000H
SJMP START
ORG 0030H
START:MOV R1,#31H
MOV R2,#30H
MOV R3,#32H
CLR C
MOV A,R1
SUBB A,R2:比较R1与R2大小
JC LOOP1;R1小于R2时 跳转
MOV A,R1
SUBB A,R3;R1与R3比较大小
JC LOOP2
RET
LOOP1:RET
LOOP2:MOV A,R1
XCH A,R3;较大的数放在R1中
MOV R1,A
MOV A,R2
SUBB A,R3;R2与R3比较大小
JC LOOP3
RET
LOOP3:MOV A,R2
XCH A,R3
MOV R2,A;排序
RET
实验二:I\O端口操作
一、 实验目的:
1、 掌握I/O端口读写等汇编指令;
2、 掌握仿真软件PROTEUS硬件电路设计及仿真、调试等基本操作方法。
二、 实验内容:
1、 参考下图,用PROTEUS完成单片机硬件电路设计
2、 用WAVE软件完成发光二级管亮灭程序,用延时子程序设计一段时间延时,编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。
三、 思考题:
单片机晶振设为12MHZ,试计算延时子程序的延时时间。
程序如下:
ORG 0000H
AJMP MAIN
ORG 0030H ;程序开始地址
MAIN:MOV P2,#001H ;显示第一个led
ACALL DELAY ;调用延时函数
MOV P2,#002H
ACALL DELAY
MOV P2,#004H
ACALL DELAY
MOV P2,#008H
ACALL DELAY
MOV P2,#010H
ACALL DELAY
MOV P2,#020H
ACALL DELAY
MOV P2,#040H
ACALL DELAY
MOV P2,#080H
ACALL DELAY
AJMP MAIN ;跳转主函数,循环
DELAY:MOV R5,#0FAH ;长延时
LOOP1:MOV R6,#0FAH
LOOP2:NOP ;空指令
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R6,LOOP2 ;判断,跳转
DJNZ R5,LOOP1
RET
仿真图:
实验三:定时中断
一、 实验目的:
1、 熟悉单片机定时器工作原理;
2、 掌握定时器定时控制的编程方法。
二、 实验内容:
编写一段汇编程序,实现P1.0口输出周期为20ms的方波,(用单片机定时器T1采用定时方式1)。并用PROTEUS仿真验证。
三、参考电路图:
四 实验报告(见附1参考格式)
a) 统一格式,A4纸双面打印。(实验报告格式见附1)
b) 汇编源程序及注释。
c) 仿真结果(或硬件调试结果)分析。
汇编源程序如下:
ORG 0000H
AJMP START
ORG 001BH
AJMP T1INT
ORG 0030H
START: MOV TMOD,#10H ;单片机定时器T1采用定时方式1
MOV TH1,#0D8H;65535-10V4=D8F0H ;计算初值
MOV TL1,#0F0H
SETB TR1 ;定时器1启动
SETB ET1
SETB EA
MAIN: AJMP MAIN
T1INT: CLR TF1 ;清零
MOV TH1,#0D8H
MOV TL1,#0F0H
CPL P1.0 ;取反
RETI
END
仿真结果如下:
实验五:外部中断
一、实验目的:
1、 掌握外部中断控制的原理及编程方法;
2、 掌握硬件实验箱的使用方法;
3、 熟悉汇编程序基本格式与编程方法。
二 实验器材:
1、 单片机实验箱、51单片机最小系统电路板、串口调试线、PC机
2、 MCS51集成开发环境。
三、实验内容及基本步骤:
编写外部中断控制程序,控制8个指示灯的亮灭,模拟交通灯控制。
将实验箱上的P3.2(外部中断0)和P3.3(外部中断1)分别接2个按钮,P1.0和P1.1接2个发光二极管,编写外部中断控制程序,控制2个指示灯的亮灭,按下按钮1,指示灯1亮;按下按钮2,指示灯1灭2亮,如此反复。
四、实验报告(见附1参考格式)
a) 统一格式,A4纸双面打印。(实验报告格式见附1)
b) 汇编源程序及注释。
c) 仿真结果(或硬件调试结果)分析。
程序如下:
ORG 0000H
LJMP START
ORG 0003H ;程序入口地址
LJMP INT0
ORG 0013H
LJMP INT1
ORG 0100H
START:CLR IT0 ;清零
CLR IT1
SETB EX0 ;置高电平
SETB EX1
SETB EA
SJMP $ ;延时
INT0:SETB P1.0
CLR P1.1
RETI;按下按钮1,指示灯1亮
INT1:SETB P1.1
CLR p1.0
RETI;按下按钮2,指示灯2亮
实验结果如下:
实验六:8270显示器接口
一、 实验目的:
1、掌握数码管显示的基本原理;
4、 掌握8279键盘显示器接口芯片的使用方法;
5、 提高汇编应用程序编程方法与技巧。
二、 实验器材:
1、单片机实验箱、51单片机最小系统电路板、串口调试线、PC机
2、MCS51集成开发环境。
三、实验内容及原理:
编写数码管显示程序,用两个数码管显示出两个数字。
1、8279的使用方法
首先掌握两个口地址,命令口地址0CFE9H。数据口地址:0CFE8H。命令口地址主要是CPU将初始化指令或控制指令对8279完成相关设置。数据口地址完成显示数据字形码的传送。
1)8279最主要的初始化操作是清除显示缓冲区命令
DDD为1XX时允许清除显示器,清除命令需要16us的时间,在此期间CPU不能向8279写入命令。
2)写显示RAM命令(选择哪个数码管)
AI为1时,显示RAM自动加1,AI为0时,显示位置由AAAA决定。
四、实验内容:
编写数码管显示程序,用一个数码管显示出一个数字。程序参考流程图如下,参考流程框图完成程序的编写并下载到EL实验箱上进行验证。
程序如下:
ORG 0000H
LJMP START
ORG 0030H
MOV DPTR,#0CFE9H ;命令入口地址
MOV A,#0D1H ;清除
MOVX @DPTR,A
NOP ;空指令,延时
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LOOP:MOV DPTR,#0CFE9H ;数据入口地址
MOV A,#80H
MOVX @DPTR,A
MOV DPTR,#0CFE8H
MOV A,#3FH
MOVX @DPTR,A
SJMP LOOP
RET
结果如下:
第二篇:单片机实验报告3
蜂鸣器驱动实验
一、实验目的:
1、利用单片机的P1口作I/O口,学会蜂鸣器的使用
2、学习并掌握定时器/计数器的编程
二、实验学时:3学时
三、实验设备及器件
PC机 一台
DP-51PROC单片机综合仿真实验仪 一台
频率计 一台
四、实验要求:
1、编写一段程序,用P1.3口控制(输出3K到4K频率的方波),使B5区的蜂鸣器发出嘹亮的响声。
2、按照例程输入一段程序,用P1.3口控制,使B5区的蜂鸣器发出“生日快乐”的音乐。(选做)
五、实验步骤:
(一)、新建工程文件
1、点击工具栏Project选项,在下拉菜单中选择New Project命令,弹出项目文件保存对话框,输入项目名后,点击保存按钮。
2、在工程建立完毕以后,uVision会弹出器件选择窗口,选择相应的器件型号。如想修改,可点击工具栏Project选项,在下拉菜单中选择Select Device for Target ?Target?命令。
3、点击工具栏File选项,选中New命令,新建文件,输入源程序。
4、把文件保存到磁盘中,如用汇编语言编写程序用.asm为扩展名,如用C语言编写程序用.c为扩展名。
5、添加该文件到工程中,在Projectwindos窗口内,选中Source Group1然后点击鼠标右键,选择Add files to Group “Source Group1”,选择刚才创建的源程序文件,单击Add按钮。
(二)、程序文件的编译、链接
1、使用导线把 A2区的P13和B5区的BUZZ接线柱相连;
2、编写一个输出3K到4K频率的方波的程序,步骤如下:
1)先编写一个延时程序(120~200?s);
2)再编写一个循环程序,改变P1.3脚的电平,然后延时。在单片机综合仿真实验仪上运行该程序,B5区蜂鸣器会发出嘹亮的声音。
3、按照下面的程序在Keil C51集成开发环境中建立工程文件,并进行调试仿
真。
ORG 8000H
JMP MAIN
ORG 800BH
JMP INTT0
ORG 8100H
MAIN: MOV SP,#60H
MOV TMOD,#01H
SETB ET0
SETB EA
SETB TR0
START0: SETB P1.3
MOV 30H,#00H
NEXT: MOV A,30H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV R2,A
JZ ENDD
ANL A,#0FH
MOV R5,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
JMP D1
SING: DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV TH0,A
MOV 21H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A
MOV 20H,A
SETB TR0
D1: CALL DELAY
INC 30H
JMP NEXT
ENDD: CLR TR0
JMP START0
INTT0:
PUSH PSW
PUSH ACC
MOV TL0,20H
MOV TH0,21H
CPL P1.3
POP ACC
POP PSW
RETI
DELAY: MOV R7,#02
DELAY0: MOV R4,#187
DELAY1: MOV R3,#248
DJNZ R3,$
DJNZ R4,DELAY1
DJNZ R7,DELAY0
DJNZ R5,DELAY
RET
TABLE: DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H
DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H
TABLE1: DW 64260,64400,64524,64580,64684,64777,64820,64898
DW 64968,65030,65058,65110,65157,65178,65217
END
软件调试的具体步骤如下:
1)打开keil集成开发环境,新建一个新的工程文件。
2)根据需要为工程选择目标器件组和相应的器件号。
3)创建源程序文件并输入程序代码。
4)保存创建的源程序项目文件。
5)把源程序文件添加到项目中。
6)点击菜单栏上的Project项,选择Option for target ?target1?将出现调试环境设置界面。在Debug栏内选UseSimulator用软件模拟仿真。
7)编译连接环境设置,选中Create Hex File选项,在编译时就可以自动生成目标代码文件*.hex。
硬件调试仿真的具体步骤如下:
1)修改源程序入口地址为8000H;
2)点击菜单栏上的Project项,选择Option for target ?target1?将出现调试环境设置界面。在Debug栏内选Use MON51选项,并在该栏后的驱动方式选择框内的选这时的驱动程序库。对于51仿真器应选择Keil Monitoe-51 Diver选项。同时在Settings项中设置串行通信的端口和波特率9600bps,这要求和通信协议上一致。由于MON51监控程序已经占用了0000H~7FFFH,用户应用程序必须从8000H开始存放。故在off-chip code memory-Eprom设为0x8000,长度0x4000。off-chip Xdata memory-Ram设为0xC000,长度0x4000。
3)配置好环境设置后,对文件进行编译。如果编译成功,则产生目标文件。如果有错误则更正错误,重新编译直至完全正确为止。
4)连接好DP-51PROC实验仪,对实验仪上电,打开DPFlash,把仿真器上的开关拨到LOAD模式,ISP跳线JP14 跳开,按下复位键,即进入下载状态。在DPFlash上型号的下拉菜单选择DP-51PROC,然后根据你所插的通信口选择相应的通信口。点击编程按钮,选择MON51选项,开始下载到TKSMonitor51仿真器的Flash中。再将仿真器工作模式改为run,重启,仿真器进入调试状态。
5)关掉DPFlash,点击DEBUG菜单,选中Start/Stop Debug Session调试命令,这样既可以把用户程序下载到仿真器的SRAM中。单击go!,进行控制。 脱机运行的具体步骤如下:
1)修改源程序入口地址为0000H;
2)点击菜单栏上的Project项,选择Option for target ?target1?将出现调试环境设置界面。Target属性的设置,设置Off-Chip Code Memory栏内的Eprom选项,start下输入0x0000,size下输入0x4000;Off-Chip Xdata memory栏内的Eprom选项,start下输入0xC000,size下输入0x4000。
3)连接好DP-51PROC实验仪,对实验仪上电,打开DPFlash,把仿真器上的开关拨到LOAD模式,ISP跳线JP14 跳开,按下复位键,即进入下载状态。在DPFlash上型号的下拉菜单选择DP-51PROC,然后根据你所插的通信口选择相应的通信口。装载文件,点击编程按钮,选择编程文件区选项,将生成的目标文件下载到TKSMonitor51仿真器的Flash中。再将仿真器工作模式改为run,重启,仿真器进入脱机运行状态。
六、实验注意事项:
1、硬件调试或运行的运行的时候打开电源,不要保持电源的常开状态,以免实验箱运行时间过长烧坏。
2、Debug时,需关掉DPFlash,否则调试时开发环境报错。