实验一
一实验目的
1. 学习Keil C51 集成开发环境的操作;
2. 熟悉 TD-51 系统板的结构及使用。
二实验设备
PC机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或“TD-PITE 教学实验系统+TD-51 系统平台”
三实验内容
编写实验程序,将 00H~0FH 共 16 个数写入单片机内部 RAM 的 30H~3FH 空间。通过本实验,学生需要掌握Keil C51 软件的基本操作,便于后面的学习。
四实验程序
ORG 0000H
LJMP START
ORG 0040H
START:MOV R0,#30H
MOV R2,#10H
MOV A,#00H
MOV DPTR,#3000H
LOOP1:MOV @R0,A
MOVX @DPTR,
INC R0
INC DPTR
INC A
DJNZ R2,LOOP1
SJMP $
END
五实验结果
实验二
查表程序设计实验
一实验目的
学习查表程序的设计方法,熟悉 51 的指令系统。
二实验设备
PC机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或 “TD-PITE 教学实验系统+TD-51 系统平台”
三实验内容
1. 通过查表的方法将 16 进制数转换为 ASCII 码;
2. 通过查表的方法实现y=x2,其中x为 0~9 的十进制数,以BCD码表示,结果仍以BCD 码形式输出。
四实验步骤
1. 采用查表的方法将 16 进制数转换为 ASCII 码根据 ASCII 码表可知,0~9 的 ASCII 码为 30H~39H,A~F 的 ASCII 码为 41H~46H,算法为(假定待转换的数存放在 R7 中):当 R7≤9 时,相应的 ASCII 码为:R7+30H;当 R7>9 时,相应的 ASCII 码为:R7+30H+07H。
实验步骤:
(1)编写实验程序,编译、链接无误后联机调试;
(2)将待转换的数存放在 R7 中,如令 R7 中的值为 0x86;
(3)在语句行设置断点,运行程序;
(4)程序停止后查看寄存器 R6、R5 中的值,R6 中为高 4 位转换结果 0x38,R5 中为低 4 位转换结果 0x36;
(5)反复修改 R7 的值,运行程序,验证程序功能。
五实验程序及结果
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#ASCTAB
MOV A,R7
MOV P1,A
ANL A,#0FH
MOVC A,@A+DPTR
MOV R5,A
MOV P2,A
MOV A,R7
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV R6,A
MOV P2,A
SJMP MAIN
ASCTAB: DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H
END
2. 通过查表实现y=x2,x 为 0~9 的十进制数,存放与 R7 中,以 BCD 码的形式保存,结果 y 以 BCD 码的形式存放于寄存器 R6 中。
实验步骤:
(1)编写实验程序,经编译、链接无误后,进入调试状态;
(2)改变 R7 的值,如 0x07;
(3)在语句行处设置断点,运行程序;
(4)程序停止后,查看寄存器 R6 中的值,应为 0x49;
(5)反复修改 R7 中的值,运行程序,验证程序功能。
程序及结果:
ORG 0000H
LJMP START
ORG 0040H
START:MOV A,R7
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R6,A
MOV P1,A
SJMP $
RET
TAB:DB 00H,01H,04H,09H,10H
数据排序实验
一实验目的
熟悉 51 的指令系统,掌握数据排序程序的设计方法。
二实验设备
PC机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或 “TD-PITE 教学实验系统+TD-51 系统平台”
三实验内容
在单片机片内 RAM 的 30H~39H 写入 10 个数,编写实验程序,将这 10 个数按照由小到大的顺序排列,仍写入 RAM 的 30H~39H 单元中。
四实验步骤
(1) 编写实验程序,编译、链接无误后联机调试;
(2)为 30H~39H 赋初值,如:在命令行中键入 E CHAR D:30H=9, 11H, 5, 31H, 20H, 16H, 1, 1AH, 3FH, 8 后回车,可将这 10 个数写入 30H~39H 中;
(3)将光标移到语句行 SJMP $处,点击命令,将程序运行到该行;
(4)查看存储器窗口中 30H~39H 中的内容,验证程序功能;
(5)重新为 30H~39H 单元赋值,反复运行实验程序,验证程序的正确
实验程序及结果
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R6,#0AH
MOV R0,#30H
LOP: ;CLR F0
MOV A,R6
MOV R7,A
; DEC R7
MOV A,R0
MOV R1,A
LOP1: INC R1
MOV A,@R0
SUBB A,@R1
JC NEXT
MOV A,@R0
XCH A,@R1
MOV @R0,A
;SETB F0
NEXT: DJNZ R7,LOP1
;JNB F0,ENDD
inc r0
DJNZ R6,LOP
MOV P1,39H
MOV P2,30H
ENDD: SJMP $
END
实验三
中断系统实验
一实验目的
了解 MCS-51 单片机的中断原理,掌握中断程序的设计方法。
二实验设备
PC机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或 “TD-PITE 教学实验系统+TD-51 系统平台”,示波器一台。
三实验内容
手动扩展外部中断 INT0、INT1,当 INT0 产生中断时,使 LED8 亮 8 灭闪烁 4 次;当 INT1 产生中断时,使 LED 由右向左流水显示,一次亮两个,循环 4 次。
因为 51 单片机加入了中断系统,从而提高了 CPU 对外部事件的处理能力和响应速度。增强型单片机 SST89E554RC 共有 8 个中断源,即外部中断 0(INT0)、定时器 0(T0)、外部中断 1(INT1)、定时器 1(T1)、串行中断(TI 和 RI)、定时器 2(T2)、PCA 中断和 Brown-out 中断。
四实验步骤
1. 定时器中断实验实验步骤:
(1)编写实验程序,经编译、链接无误后,启动调试功能;
(2)运行实验程序,使用示波器观察 P1.0 及 P1.1 引脚上的波形;
(3)使用示波器测量波形周期,改变计数值,重新运行程序,反复验证程序功能;
(4)按复位键退出调试状态。
五实验程序及结果
ORG 0000H
LJMP START
ORG 0003H
LJMP EINT0
ORG 0013H
LJMP EINT1
ORG 0040H
START: MOV P1, #00H
SETB IT0
SETB EX0
SETB IT1
SETB EX1
SETB EA
SJMP $
EINT0: MOV R7, #04H
ELP0: MOV P1, #0FFH
ACALL DELAY
MOV P1, #00H
ACALL DELAY
DJNZ R7, ELP0
RETI
EINT1: MOV A, #03H
MOV R7, #10H
ILP1: MOV P1, A
RL A
RL A
ACALL DELAY
DJNZ R7, ILP1
RETI
DELAY: MOV R6, #0FFH
DLP1: MOV R5, #0FFH
DLP2: DJNZ R5, DLP2
DJNZ R6, DLP1
RET
END
实验现象:
每按一次INT0都会出现LED亮8 灭闪烁4次,而每按一次INT1,LED流水闪烁,一次亮两个,循环4次。
优先级:
ORG 0000H
LJMP START
ORG 0003H
LJMP EINT0
ORG 0013H
LJMP EINT1
ORG 0040H
START: MOV P1, #00H
MOV IP,#00H
SETB IT0
SETB EX0
SETB IT1
SETB EX1
SETB EA
SETB PX1
SJMP $
EINT0: MOV R7, #04H
ELP0: MOV P1, #0FFH
ACALL DELAY
MOV P1, #00H
ACALL DELAY
DJNZ R7, ELP0
RETI
EINT1: MOV A, #03H
MOV R4, #10H
ILP1: MOV P1, A
RL A
RL A
ACALL DELAY
DJNZ R4, ILP1
RETI ;延时子程序
DELAY: MOV R6, #0FFH
DLP1: MOV R5, #0FFH
DLP2: DJNZ R5, DLP2
DJNZ R6, DLP1
RET
END
实验现象:
按INT1后在LED 灯流水显示期间按下INT0,LED 灯仍会出现流水显示现象,而不是闪烁。当按INT0灯闪烁其间按INT0灯出现流水显示,说明INT1优先级要高于INT0。
实验四定时/计数器实验
一实验目的
1. 了解 MCS-51 单片机定/计数器的工作原理与工作方式;
2. 掌握定时/计数器 T0 和 T1 在定时器和计数器两种方式下的编程;
3. 学习定时/计数器 T2 的可编程时钟输出功能。
二实验设备
PC机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或 “TD-PITE 教学实验系统+TD-51 系统平台”,示波器一台。
三实验内容
1. 使用定时器 0 与定时器 1 进行定时,在 P1.0 和 P1.1 引脚上输出方波信号,通过示波器观察波形输出,测量并记录方波周期。
2. 将定时/计数器 1 设定为计数器方式,每次计数到 10 在 P1.0 引脚上取反一次,观察发光二极管的状态变化。
四实验步骤
1. 定时器实验按照实验要求编写实验程序。
实验步骤:
(1)编写实验程序,编译、链接后联机调试;
(2)运行实验程序,使用示波器观察 P1.0 与 P1.1 引脚上的波形并记录周期;
(3)改变计数初值,观察实验现象,验证程序功能。
五程序及结果
#include "SST89x5x4.h"
sbit Wave1 = P1^0;
sbit Wave2 = P1^1; //用查询法
void main()
{ TMOD = 0x11; //定时器方式寄存器
TH0 = 0x00; //定时器0计数初值
TL0 = 0x00;
TH1 = 0x00; //定时器1计数初值
TL1 = 0x00;
TR0 = 1; //启动定时器0
TR1 = 1; //启动定时器1
while(1)
{ if(TF0 == 1) //定时器0溢出标志
{ TH0 = 0x00;
TL0 = 0x00;
Wave1 = ~Wave1;
TF0 = 0;
}
else if(TF1 == 1) //定时器1溢出标志
{
TH1 = 0x00;
TL1 = 0x00;
Wave2 = ~Wave2;
TF1 = 0;
}
}
实验现象:LED灯D0,D1亮灭间替。
2. 计数器实验实验
实验步骤:
(1)按图3-3-1连接实验线路图;
(2)编写程序,联机调试;
(3)运行实验程序,按单次脉冲 KK1,观察发光管 D0 的状态,每 10 次变化一次;
(4)实验结束,按复位按键退出调试
程序及结果
#include "SST89x5x4.h"
sbit P10Value = P1^0;
//用查询法
void main()
{
TMOD = 0x60; //设定定时器1计数方式
TH1 = 0xF6; //计数初值
TL1 = 0xF6;
TR1 = 1; //启动定时器1
for(;;)
{
while(TF1 == 0); //判定时器1溢出标志
P10Value = ~P10Value;
TF1 = 0;
}
}
单片机实训实验报告
课 题:单片机实训
院 系:电子信息工程学院
班 级
学 号:
姓 名:
指导老师:熊老师、罗老师
日 期:2011.6.10
一、硬件系统
1、自制单片机实验板由七部分组成:
(1).8路跑马灯
(2)动态扫描共阳型数码管
(3)4X4矩阵键盘
(4)蜂鸣器
(5)4路独立键盘
(6)温度传感器
(7)I2C通信方式的EEPROM芯片24C02
二、Keil C u Vision2 简述与使用
1.打开 u Vision2
2.新建工程:菜单【project】→【New Project】选择工程存放的路径,并输入工程文件名,然后点“保存”
3.进入器件选择界面树列表框内选择“Atmel”→“AT89C52”,然后点“确定”完成器件选择。
4.编辑源程序:
新建文件:菜单【File】→【new…】。然后输入代码,编辑完成后菜单【File】→【Save】或【Save As…】把代码文件存入硬盘。C源文件存为.C后缀,汇编源文件存为.a或.src后缀,并存放在同一个工程文件夹下。
5.加入源文件到工程中:
在左边浮动窗口【File】选项卡里展开“Target 1”树,在“Source Group 1”上右键单击,弹出菜单,选【Add File to Group“Source Group 1”】,选择需要加入的源文件,点“Add”按钮加入,加入完成后按“Close”关闭。
6.设置编译选项:先选中左边浮动窗口【File】选项卡里“Target1“树节点,然后选菜单【Project】→【Options for Target “Target 1”】。
7.在弹出的“Options for Target “Target 1”” 对话框中选择[output]选项卡,勾选“Create HEX File”然后按“确定”完成设置。
8. 按“F7”开始编译,编译成功后会在工程文件夹内生成.Hex目标文件生成的.hex文件就可以用来对AT89S52芯片进行编程和运行了。
三.STC-ISP V29 Beta5 下载软件的使用
1.连接好电源线与串口线(附件中的九孔对九孔线分别连接电脑和点偏激开发板)。
2.检查电源板上电源指示灯是否亮起,如果亮起则检查USB电源线,如果已亮则关掉电源看后面的步骤。
3.启动软件。
4.选择好STC单片机的型号(STC89CF52RC).
5.选择好你使用的计算机串口号.
6.点击OPEN FILE选择你用KEIL编译好的HEX文件.
7.直接点击下载按钮.
8.点击下载的时候按下”冷启动“按键,是单片机上电。
9.如果正常会看到下载程序进度条闪过的过程。
四、实验项目
1、 I/O口输出P1口发光二极管显示
2、 数码管显示
单管显示
多管动态显示
3、 按键控制
独立键盘
矩阵键盘
4、 信号发生(延时、定时计数器应用)
5、中断的应用
五、实验内容
(一).I/O口输出P1口发光二极管显示
1.实验工具:8路跑马灯,开发软件Keil u Vision2,STC-ISP V29 Beta5 下载软件。
2.实验要求:八路跑马灯从右边向左依次发亮。
3.实验目的:学习P1口的使用,延时程序的编写和调用。
4.实验程序:
org 0000h
start:jb p3.2,start
lcall delay
jb p3.2,start
mov r0,#8
mov a,#0feh
l1:mov p1,a
lcall delay2
rl a
djnz r0,l1
mov p1,#0ffh
sjmp start
delay:mov r1,#20
del:mov r2,#250
djnz r2,$
djnz r1,del
ret
delay2:mov r3,#200
dl:mov r4,#255
DJNZ r4,$
djnz r3,dl
ret
end
5.实验图8路跑马灯
(二)、数码管动态扫描
1.实验工具:共阳型数码管,开发软件Keil u Vision2,STC-ISP V29 Beta5 下载软件。
2.实验要求:让其中的一个数码管依次显示0到9。
3. 实验目的:学习数码管的显示原理,及共阳极数码管显示电路;掌握动态扫描间隔时间.
4.实验电路图如下
5.实验程序:
org 000h
ljmp start
org 0030h
start:mov p2,#7fh
mov r0,#10
mov r1,#0
loop:mov a ,r1
movc a ,@a+dptr
mov p0,a
lcall delay
inc a
mov r1 ,a
djnz r0,loop
db:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
delay:mov r6,#1000
dell:mov r7,#250
del:djnz r7,del
djnz r6,dell
ret
End
(三).矩阵按键控制
1.实验要求:采用扫描方式,识别4*4矩阵按键,没按下一个键,则对应的1位或2位发光二极管被点亮。
2.实验目的:采用扫描方式,识别4*4矩阵按键,没按下一个键,则对应的1位或2位发光二极管被点亮。
3.实验电路图
按下某一件键,在P1口对应灯里显示对应键的反码
4.实验程序:
ORG 0000H
SETB P3.6
M1:JNB P3.2,L1
JNB P3.3,L2
JNB P3.4,L3
JNB P3.5,L4
AJMP M1
L1:CLR P3.6
LCALL DELAY1
SETB P3.6
LCALL DELAY1
AJMP M1
L2:CLR P3.6
LCALL DELAY2
SETB P3.6
LCALL DELAY2
AJMP M1
L3:CLR P3.6
LCALL DELAY3
SETB P3.6
LCALL DELAY3
AJMP M1
L4:CLR P3.6
LCALL DELAY4
SETB P3.6
LCALL DELAY4
AJMP M1
DELAY1:MOV R6,#2
DEL1:MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL1
RET
DELAY2:MOV R6,#5
DEL2:MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL2
RET
DELAY3:MOV R6,#10
DEL3:MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL3
RET
DELAY4:MOV R6,#15
DEL4:MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL4
RET
END
<四>.小喇叭报警器
1. 实验要求:声音是由震动产生的,一定频率的震动就产生了一定频率的声音。这实验是让不同的按键控制蜂鸣器的不同频率和发声时间。
2. 实验目的:a.学习频率子程序的编写和使用。
b.学习蜂鸣器驱动电路。
3.实验电路图:
3. 实验程序:
org 0000h
SETB P3.6
M1:JNB P3.2,L1
JNB P3.3,L2
JNB P3.4,L3
JNB P3.5,L4
AJMP M1
L1:CLR P3.6
CALL DELAY1
SETB P3.6
CALL DELAY1
DJNZ R1,L1
AJMP M1
L2:CLR P3.6
CALL DELAY2
SETB P3.6
CALL DELAY2
DJNZ R2,L2
AJMP M1
L3:CLR P3.6
CALL DELAY3
SETB P3.6
CALL DELAY3
DJNZ R3,L3
AJMP M1
L4:CLR P3.6
CALL DELAY4
SETB P3.6
CALL DELAY4
DJNZ R4,L4
AJMP M1
DELAY1:MOV R6,10
DEL1:MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL1
RET
DELAY2:MOV R6,#50
DEL2:MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL2
RET
DELAY3:MOV R6,#120
DEL3:MOV R7,#50
DJNZ R7,$
DJNZ R6,DEL3
RET
DELAY4:MOV R6,#180
DEL4:MOV R7,#25
DJNZ R7,$
DJNZ R6,DEL4
RET
END
<五>.中断的应用
1.实验要求:对外部中断源INT0、INT1设置边沿触发中断方式,利用按键产生中断功能。按下S17或S18,产生INT0或INT1的中断信号,使数码管显示处迅速速递增1或递减1.递增1时,伴随蜂鸣器的“嘀--嘀”声音,数码管显示处迅速增加1.当9999再加1时,数码管恢复成0000。递减1时,伴随着蜂鸣器的“嘀”声音,数码管显示处迅速递减1.当0000再减1时,数码管保持0000不变。
2.实验目的:a.学习INT0、INT1的边沿触发中断程序。
b.结合数码管、按键识别和 ,学习小型系统程序的编写。
c.从显示结果中观察、理解按键的抖动现象。
3.电路图如
4.实验程序:
SECOND EQU 30H
TCOUNT EQU 31H
ORG 00H
LJMP START
ORG 0BH
LJMP INT0X
START: MOV SECOND,#00H
MOV A,SECOND
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
MOV TCOUNT,#00H
MOV TMOD,#01H
MOV TH0,#(65536-50000) / 256
MOV TL0,#(65536-50000) MOD 256
SETB TR0
SETB ET0
SETB EA
SJMP $
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,NEX
MOV SECOND,#00H
NEX: MOV A,SECOND
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
NEXT: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
六、实验总结
为期一周的实训结束了,从第一天编辑最简单的程序到后来编辑较复杂的程序,整周实训感觉时间挺紧,对如何编写好程序可谓是费劲心思,最后程序完成则有一种成功的喜悦。在实训中,我感觉理论知识的不足,编写过程中不细心导致不必要的错误等,故此,理论知识和细心度是我努力的方向,希望学好单片机掌握这门知识。
单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实…
通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机…
海南大学届单片机实验报告4份论文题目学生姓名学号所在院系专业班级授课教师完成时间蜂鸣器实验实验目的1熟悉实验板中蜂鸣器工作原理掌握…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
单片机实验报告(二)实验名称:定时器及外部中断南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技…
实验三外部中断实验报告班级学号姓名教师一实验目的1掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部…
实验名称中断技术基本时钟和定时功能实验45姓名学号实验班号21机器号一实验目的1了解中断原理包括对中断源中断向量中断类型号中断程序…
51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右…
时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。在学习单片机这门课程之前,就早早的听各种任课老师和学长学…