单片机实验报告.docx
- 文档编号:3739569
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:41
- 大小:2.23MB
单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(41页珍藏版)》请在冰豆网上搜索。
单片机实验报告
学生实验报告
(理工类)
课程名称:
单片机原理及应用专业班级:
14电子信息工程
(1)班
学生学号:
1415101005学生姓名:
丁剑
所属院部:
电子信息工程学院指导教师:
徐志国
2016——2017学年第1学期
金陵科技学院教务处制
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。
纸张一律采用A4的纸张。
实验报告书写说明
实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。
各院部可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:
1存储器块清零实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.11.09实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
(1)掌握存储器读写方法
(2)了解存储器的块操作方法
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
指定存储器中某块的起始地址和长度,要求能将其内容清零。
四、实验结果与分析
1、程序如下
//软件实验一存储器块清零
xdataunsignedcharBuffer[256]_at_0x4000;
voidmain()
{
unsignedintindex;
unsignedcharxdata*ptr;
ptr=&Buffer;//起始地址
for(index=0;index<=255;index++){
*ptr++=0;//清0,地址加一
}
}
2、实验结果
程序未运行前状态
程序运行后结果如下图所示;
程序运行结果如下图所示:
五、实验问题及心得
思考题
如何将存储器块的内容置成某固定值(例全填充为0FFH)?
请学生修改程序,完成此操作
答:
程序如下:
xdataunsignedcharBuffer[256]_at_0x4000;
voidmain()
{
unsignedintindex;
unsignedcharxdata*ptr;
ptr=&Buffer;//起始地址
for(index=0;index<=255;index++){
*ptr++=0xff;//清0,地址加一
}
}
心得体会:
只有事先把程序的各部分作用弄清楚,再在原程序上修改,才能达到预计的效果。
实验项目名称:
实验2内存块移动实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.05.04实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
(1)掌握存储器读写方法
(2)了解存储器的块操作方法
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
四、实验结果与分析
实验程序如下:
xdataunsignedcharBuffer1[256]_at_0x3000;
xdataunsignedcharBuffer2[256]_at_0x4000;
voidmain()
{
unsignedintindex;
unsignedcharxdata*ptr1;
unsignedcharxdata*ptr2;
ptr1=&Buffer1;
ptr2=&Buffer2;
for(index=0;index<=255;index++){
*ptr2++=*ptr1++;
}
}
实验结果:
运行结果如下图所示:
(原图上修改后的图下)
五、实验问题及心得
本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。
另外,若源块地址和目标块地址有重叠,该如何避免?
修改后结果如下图所示:
心得体会:
汇编语言也有它的独到之处需要不断尝试。
实验项目名称:
3.P1口输入输出实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.05.04实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
(1)掌握存储器读写方法
(2)了解存储器的块操作方法
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
1、实验电路及连线
实验1:
P1口循环点灯实验2:
P1口输入输出
Delay:
MOVR6,#0H
MOVR7,#0H
DelayLoop:
DJNZR6,DelayLoop
DJNZR7,DelayLoop
RET
2、实验程序
8051延时子程序的延时计算问题,对于程序
查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为:
(256×255+2)×2×12÷6≈261ms
3、实验框图
四、实验结果与分析
1.实验程序:
实验结果如下:
五、实验问题及心得
若是12MHZ的晶振,延时程序如何修改?
答:
修改程序如下
Loop:
mova,#01h
movr2,#8
Output:
movP1,a
rla
callDelay
djnzr2,Output
ljmpLoop
Delay:
MOVr5,#5
movr6,#5
MOVr7,#5
DelayLoop:
djnzr5,DelayLoop
djnzr6,DelayLoop
djnzr7,DelayLoop
ret
end
心得:
通过本次实验让我深刻认识到延时在单片机程序中的重要作用,以及延时的使用方法。
掌握了延时的使用方法。
实验项目名称:
实验4计数器实验实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.11.09实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
学习8051内部定时/计数器使用方法
8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。
将其数值按二进制数在P1口驱动LED灯上显示出来
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
连线
连接孔1
连接孔2
1
P1.0
L0
2
P1.1
L1
3
P1.2
L2
4
P1.3
L3
5
单脉冲输出
T0
1、实验电路
2、实验框图
四、实验结果与分析
1、程序如下
实验结果
五、实验问题及心得
思考题
若定时计数器T0,按计数器模式和方式0工作,程序如何修改?
答:
修改后的程序如下所示:
movTMOD,#00000100b;方式1,记数器
movTH0,#0
movTL0,#0
setbTR0;开始记数
Loop:
movP1,TL0;将记数结果送P1口
ljmpLoop
end
心得体会:
了解了如何设置定时器计数器方式控制字的使用,以及定时计数程序的使用。
实验项目名称:
实验5外部中断实验实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.11.09实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
3.用单次脉冲申请中断,在中断处理程序中对输出信号进行反转
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
1、实验电路
2、实验框图
主程序框图外部中断子程序框图
四、实验结果与分析
实验程序如下
#include
sbitLED=P1^0;
bitLEDBuf;
voidExtInt0()interrupt0
{
LEDBuf=!
LEDBuf;
LED=LEDBuf;
}
voidmain()
{
LEDBuf=0;
LED=0;
TCON=0x01;//外部中断0下降沿触发
IE=0x81;//打开外部中断允许位(EX0)及总中断允许位(EA)
while
(1);
}
实验结果:
模拟仿真
五、实验问题及心得
思考题
若采用INT1中断源,电路如何连接,程序如何修改?
答:
连线P3.2换成P3.3
#include
sbitLED=P1^0;
bitLEDBuf;
voidExtInt0()interrupt2
{
LEDBuf=!
LEDBuf;
LED=LEDBuf;
}
voidmain()
{
LEDBuf=1;
LED=1;
TCON=0x04;//外部中断0下降沿触发
IE=0x84;//打开外部中断允许位(EX0)及总中断允许位(EA)
while
(1);
}
心得体会:
通过本次实验我们学习了外部中断技术的基本使用方法。
学习中断处理程序的编程方法。
实验项目名称:
实验6定时器记数实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.11.09实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
1、学习8051内部计数器的使用和编程方法。
2、进一步掌握中断处理程序的编程方法。
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
1、实验电路
Y
主程序框图定时中断子程序框图
2、实验框图
四、实验结果与分析
实验程序:
#include
#defineTick10000//10000x100us=1s
#defineT100us(256-50)//100us时间常数(6M)
unsignedintC100us;//100us记数单元
bitLEDBuf;
sbitLED=P1^0;
voidT0Int()interrupt1
{
C100us--;
if(C100us==0){
C100us=Tick;//100us记数器为0,重置记数器
LEDBuf=!
LEDBuf;//取反LED
}
}
voidmain()
{
TMOD=0x02;//方式2,定时器
TH0=T100us;
TL0=T100us;
IE=0x82;//EA=1,IT0=1
LEDBuf=0;
LED=0;
C100us=Tick;
TR0=1;//开始定时
while
(1){
LED=LEDBuf;
}
}
实验模拟
五、实验问题及心得
思考题
若定时时间为500us,计数器初始值是多少?
#include
#defineTick10000//10000x100us=1s
#defineT100us(256-6)//100us时间常数(6M)
unsignedintC100us;//100us记数单元
bitLEDBuf;
sbitLED=P1^0;
voidT0Int()interrupt1
{
C100us--;
if(C100us==0){
C100us=Tick;//100us记数器为0,重置记数器
LEDBuf=!
LEDBuf;//取反LED
}
}
voidmain()
{
TMOD=0x02;//方式2,定时器
TH0=T100us;
TL0=T100us;
IE=0x82;//EA=1,IT0=1
LEDBuf=0;
LED=0;
C100us=Tick;
TR0=1;//开始定时
while
(1){
LED=LEDBuf;
}
}
心得体会:
通过本次实验我们学习了8051内部计数器的使用和编程方法,进一步掌握中断处理程序的编程方法
实验项目名称:
实验7A/D转换实验实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.11.09实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
1、掌握A/D转换与单片机的接口方法。
2、了解A/D芯片ADC0809转换性能及编程。
3、通过实验了解单片机如何进行数据采集。
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
1、实验电路
2、实验框图
主程序框图
1、实验电路
2、实验框图
主程序框图
四、实验结果与分析
实验程序:
#definemode0x82
xdataunsignedcharCTL_at_0x9003;
xdataunsignedcharPA_at_0x9000;
xdataunsignedcharCS0809_at_0x8000;
unsignedcharRead0809()
{
unsignedchari;
CS0809=0;//起动A/D
for(i=0;i<0x20;i++);//延时>100us
return(CS0809);//读入结果
}
main()
{
unsignedcharb;
CTL=mode;
while
(1){
b=Read0809();
PA=b;
}
}
modeequ082h;方式0,PA,PC输出,PB输入
CS0809equ8000h
PortAequ9000h;PortA
PortBequ9001h;PortB
PortCequ9002h;PortC
CAddrequ9003h;控制字地址
org0
movdptr,#CAddr
mova,#mode
movx@dptr,a
movdptr,#CS0809
mova,#0
movx@dptr,a;起动A/D
mova,#40h
djnzACC,$;延时>100us
movxa,@dptr;读入结果
movr7,#100
dly:
movdptr,#PortA
movx@dptr,a
djnzr7,dly;延时
ljmp0
end
实验现象如下图所示:
五、实验问题及心得
思考题
试编程用中断方式读回A/D结果。
Mode equ 082h;
CSO8O9 equ 8000h
PortA equ 8000h
PortB equ 8000h
PortC equ 8000h
CAddr equ 8000h
mov dptr,#Caddr
mov a,#mode
movx @dptr,#CS0809
mov a,#0
movx @dptr,a;
mov a,#40h
mjnz ACC,$;
movx a,@dptr;
mov r7,#100
心得体会:
通过本次实验,我们学会了掌握A/D转换与单片机的接口方法,了解了A/D芯片ADC0809转换性能及编程。
实验项目名称:
实验8八位段数码管显示实验学时:
2
同组学生姓名:
陈超逸实验地点:
B403
实验日期:
16.11.09实验成绩:
批改教师:
徐志国批改时间:
一、实验目的和要求
了解数码管动态显示的原理。
了解用总线方式控制数码管显示
利用实验仪提供的显示电路,动态显示一行数据
二、实验仪器和设备
伟福LAB6000仿真实验系统,奔腾以上计算机,装有WAVE集成调试软件
三、实验原理
1、实验电路
2、实验框图
否
是
四、实验结果与分析
实验程序:
#defineLEDLen6
xdataunsignedcharOUTBIT_at_0x8002;//位控制口
xdataunsignedcharOUTSEG_at_0x8004;//段控制口
xdataunsignedcharIN_at_0x8001;//键盘读入口
unsignedcharLEDBuf[LEDLen];//显示缓冲
codeunsignedcharLEDMAP[]={//八段管显示码
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
voidDelay(unsignedcharCNT)
{
unsignedchari;
while(CNT--!
=0)
for(i=100;i!
=0;i--);
}
voidDisplayLED()
{
unsignedchari,j;
unsignedcharPos;
unsignedcharLED;
Pos=0x20;//从左边开始显示
for(i=0;i OUTBIT=0;//关所有八段管 LED=LEDBuf[i]; OUTSEG=LED; OUTBIT=Pos;//显示一位八段管 Delay (1); Pos>>=1;//显示下一位 }OUTBIT=0;//关所有八段管} voidmain() {unsignedchari=0;unsignedcharj; while (1){LEDBuf[0]=LEDMAP[i&0x0f]; LEDBuf[1]=LEDMAP[(i+1)&0x0f]; LEDBuf[2]=LEDMAP[(i+2)&0x0f]; LEDBuf[3]=LEDMAP[(i+3)&0x0f]; LEDBuf[4]=LEDMAP[(i+4)&0x0f]; LEDBuf[5]=LEDMAP[(i+5)&0x0f]; i++; for(j=0;j<30;j++) DisplayLED();//延时 } } 实验结果: 五、实验问题及心得 思考题: 1、该数码管是共阴极还是共阳极? 答: 共阳极。 2、LED显示方法有哪些? 答: 接并口显示和单片机串口动态扫描的led显示。 心得: 通过本次实验,我们解了数码管动态显示的原理,也了解了如何用总线方式控制数码管显示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告