单片机原理及应用实验报告模板汇编.docx
- 文档编号:9816569
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:38
- 大小:390.93KB
单片机原理及应用实验报告模板汇编.docx
《单片机原理及应用实验报告模板汇编.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实验报告模板汇编.docx(38页珍藏版)》请在冰豆网上搜索。
单片机原理及应用实验报告模板汇编
实验报告
课程名称单片机原理及应用
专业电子信息工程
班级信息1201B
学号
学生姓名
学院信息工程学院
实验报告一
实验名称
P1口实验
实验时间
2014年月日
学生学号
学生姓名
同组人员
专业班级
信息1201B
实验类型
验证性
指导老师
实验地点
1号楼614
学时
2
一、实验要求
P1口做为输出口,接8只发光二极管,编写程序,使发光二极管循环点亮。
二、实验目的
1、学习P1口的使用方法。
2、学习延时子程序的编写和使用。
三、实验说明
P1口为准双向口,P1的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器的相应位写入“1”,该位才能作为输入。
8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“1”使它再成为一个输入。
可以用第二个实验做一下试验。
先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
再来看一下延时程序的实现。
现常用的有两种方法,一是用定时器中断来实验,一是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振为6.144MHZ,则一个机器周期为约为0.2us。
现要写一个延时0.1S的程序,可大致写出如下:
DEL1:
MOVR2,#200
DEL2:
MOVR3,#126
DEL3:
DJNZR3,DEL3
DJNZR2,DEL2
RET
四、实验电路
五、实验程序
#include
voiddelay10ms(intn)
{
inti=0,j;
while(n--)
{
for(i=0;i<10;i++)
for(j=0;j<120;j++);
}
}
voidmain()
{
unsignedchari=0;
P1=0x01;
while
(1)
{
delay10ms(100);
P1=P1<<1;
if(i==8)
{
i=0;
P1=0x01;
}
i=i+1;
}
}
六、实验中遇到的问题及解决办法
指导教师批阅成绩
指导教师签字:
年月日
实验报告二
实验名称
简单I/O口扩展实验
实验时间
2014年月日
学生学号
学生姓名
同组人员
专业班级
信息1201B
实验类型
验证性
指导老师
禹定臣
实验地点
1号楼614
学时
2
一、实验要求
1、P1口做为输入口,接8个扭子开关,以实验台上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。
二、实验目的
1.学习在单片机系统中扩展简单I/O接口的方法。
2.学习数据输出程序的设计方法。
3.学习模拟交通灯控制的实验方法。
三、实验说明
P1口为准双向口,P1的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器的相应位写入“1”,该位才能作为输入。
8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“1”使它再成为一个输入。
可以用第二个实验做一下试验。
先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
再来看一下延时程序的实现。
现常用的有两种方法,一是用定时器中断来实验,一是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
四、实验电路
五、实验程序#include
sbitCLK=P3^0;
voidmain()
{CLK=0;
WR=1;
while
(1)
{unsignedinttemp=8;
P2=P1;
CLK=1;
while(temp--);
CLK=0;
}
}
六、实验中遇到的问题及解决办法
指导教师批阅成绩
指导教师签字:
年月日
实验报告三
实验名称
交通灯控制实验
实验时间
2014年月日
学生学号
1234131024
学生姓名
许帅
同组人员
专业班级
信息1201B
实验类型
综合性
指导老师
禹定臣
实验地点
1号楼614
学时
2
一、实验要求
用汇编和C51编写模拟交通灯的控制程序。
二、实验目的
1.学习汇编和C51程序的编写方法。
2.学习模拟交通灯控制的实现方法。
三、实验说明
要完成本实验,首先必须了解交通路灯的亮灭规律。
假设交通灯的亮灭规律为:
初始态是两个路口的红灯全亮,之后,东西路口的红灯亮,南北路口的绿灯亮,南北方向通车,延时一段时间后,南北路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,南北路口红灯亮,而同时东西路口的绿灯亮,东西方向开始通车,延时一段时间后,东西路口的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到南北路口方向,重复上述过程。
四、实验电路
五、实验程序
#include
unsignedcharsegdata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedchars=0,q=0;
voiddelay1()
{
unsignedchari,j,k;
for(i=0;i<4;i++)
for(j=0;j<100;j++)
for(k=0;k<250;k++);
}
voiddelay2()
{unsignedcharx,y;
for(x=0;x<40;x++)
for(y=0;y<100;y++);
}
voidmain()
{
unsignedcharc;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
EX0=1;
IT0=1;
TR0=1;
P2=0x00;
P2_0=1;
P2_3=1;
for(c=0;c<6;c++)
{
delay1();
}
while
(1)
{if(s==60)
{
s=0;
}
if(s<10){
P2_5=0;
P2_0=P2_3=1;
P1=0xfe;
P0=segdata[(10-s)/10];
delay2();
P1=0xfd;
P0=segdata[(10-s)%10];
delay2();
}
elseif(s<15)
{P2_3=1;
P2_1=1;
delay2();
P2_1=0;
P1=0xfe;
P0=segdata[(15-s)/10];
delay2();
P1=0xfd;
P0=segdata[(15-s)%10];
delay2();
}
elseif(s<35)
{P2_0=0;
P2_3=1;
P2_2=1;
P1=0xfe;
P0=segdata[(35-s)/10];
delay2();
P1=0xfd;
P0=segdata[(35-s)%10];
delay2();
}
elseif(s<40)
{P2_0=1;
P2_2=0;
P2_1=0;
P2_4=1;
delay2();
P2_4=0;
P1=0xfe;
P0=segdata[(40-s)/10];
delay2();
P1=0xfd;
P0=segdata[(40-s)%10];
delay2();
}
elseif(s<60)
{P2_0=1;
P2_3=0;
P2_2=0;
P2_1=0;
P2_5=1;
P1=0xfe;
P0=segdata[(60-s)/10];
delay2();
P1=0xfd;
P0=segdata[(60-s)%10];
delay2();
}
}
}
voidint0(void)interrupt1
{q++;
//TR0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(q==20)
{q=0;
s++;
}
}
/*voidit0()interrupt0
{
TR0=1;
}*/
六、实验中遇到的问题及解决办法
指导教师批阅成绩
指导教师签字:
年月日
实验报告四
实验名称
外部中断实验
实验时间
2014年月日
学生学号
学生姓名
同组人员
专业班级
信息1201B
实验类型
验证性
指导老师
禹定臣
实验地点
1号楼614
学时
2
一、实验要求
在上一实验(交通灯控制实验)内容的基础上增加允许急救车优先通过的要求。
有急救车到达时,各方向交通灯信号为全红,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。
本实验以单脉冲为中断申请,表示有急救车通过。
二、实验目的
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
三、实验说明
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。
要保护的地方,除了累加器ACC、PSW外,还要注意:
一是主程序中的延时程序和中断处理程序中延时程序不能混用,本实验中,主程序中的延时用的寄存器和中断延时用的寄存器应不相同。
第二,主程序中往端口输出数据操作要先保存再输出。
四、实验电路
五、实验程序
#include
unsignedcharcodesegdata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedcharn;
voiddelay(unsignedchark)
{
unsignedchari,j;
for(i=0;i for(j=0;j<110;j++); } voiddxshanshuo() { unsignedchara; for(a=0;a<6;a++) { P2=0x80; delay(100); P2=0x00; delay(100); } } voidnbshanshuo() { unsignedcharb; for(b=0;b<6;b++) { P2=0x02; delay(100); P2=0x00; delay(100); } } voidmain() { unsignedcharc; EA=1; IT0=1; EX0=1; P2=0x00; P2=0x09; for(c=0;c<6;c++) { delay(100); } while (1) { P2=0x21; for(c=0;c<12;c++) { delay(100); } P2=0x20; dxshanshuo(); P2=0x00; P2=0x0c; for(c=0;c<12;c++) { delay(100); } P2=0x04; nbshanshuo(); P2=0x00; } } voidint0(void)interrupt0 {unsignedchartemp,i; temp=P2; P2=0x09; for(i=0;i<50;i++) {delay(250); } P2=temp; } 六、实验中遇到的问题及解决办法 指导教师批阅成绩 指导教师签字: 年月日 实验报告五 实验名称 定时器实验 实验时间 2014年月日 学生学号 学生姓名 同组人员 专业班级 信息1201B 实验类型 验证性 指导老师 禹定臣 实验地点 1号楼614 学时 2 一、实验要求 由AT89C51内部定时器T1,按方式1工作,即作为16位定时器使用每0.1秒钟T1溢出中断一次。 P1口的P1.1—P1.7分别接八个发光二极管。 要求编写程序模拟一时序控制装置。 开机后第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2、L4、L6、L8亮,第七秒钟八个二极管全亮,第八秒钟八个二极管全灭,以后又从头开始,L1、L3亮,然后L2、L4亮,……一直循环下去。 二、实验目的 1.学习51单片机内部定时/计数器的使用和编程方法。 2.进一步掌握中断处理程序的编程方法。 三、实验说明 1、定时常数的确定 定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/12。 本实验中时钟频率为6.144MHZ,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔0.1S产生一次中断,CPU响应中断后R0中计数值减一,令(R0)=0AH,即可实现1S延时。 时间常数可按下法确定: 机器周期=12÷6.144×106=1.9531×10-6S,需设初值X,则(216-X)×1.9531×10-6=0.1 X=14336 化为十六进制: X=3800H,故初始值TH1=38H,TL1=00H 2、初始化程序 包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。 由于只有定时器中断,IP不必设置。 注意一点,定时器1初始化时建议用下述指令: ANLTMOD,#0FH ORLTMOD,#10H 而不要用如下指令: MOVTMOD,#10H 否则定时器0被屏蔽,可能会影响串行口波特率,使程序不能执行。 3、设计中断服务程序和主程序 中断服务程序要将时间常数重新送入定时器中,为下一次中断做准备。 主程序则用来控制发光二极管按要求顺序亮灭。 四、实验电路 五、实验程序 #include #defineucharunsignedchar #defineuintunsignedint uchara; voiddelay() {uchari,j; for(i=0;i<20;i++) for(j=0;j<110;j++); } voidmain() {P1=0xff; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; TR0=1; while (1) { if(a==1) {P1=0xfa; delay(); } if(a==2) {P1=0xf5; delay();} if(a==3) {P1=0xaf; delay(); } if(a==4) {P1=0x5f; delay(); } if(a==5) {P1=0xff; delay(); a=0; } } } voidint0()interrupt1 {ucharx; TH0=(65536-50000)/256; TL0=(65536-50000)%256; x++; if(x==20) {x=0; a++; } } 六、实验中遇到的问题及解决办法 指导教师批阅成绩 指导教师签字: 年月日 实验报告六 实验名称 8255A可编程并行接口实验 实验时间 2014年月日 学生学号 学生姓名 同组人员 专业班级 信息1201B 实验类型 综合性 指导老师 禹定臣 实验地点 1号楼614 学时 2 一、实验要求 利用8255A可编程并行接口芯片,B口作为输入口接8个开关,A口作为输出口接8只发光二极管,开关控制相应发光二极管。 二、实验目的 1.了解8255A芯片的结构及编程方法。 2.掌握通过8255A读取开关数据的方法。 三、实验说明 先根据电路设计确定各端口的地址,向控制口写入方式控制字,设置好各端口的工作方式,实验中A、B、C都应工作在方式0,B口输入,A口输出。 方式字为82H。 四、实验电路 五、实验程序 #include #include #defineCOMXBYTE[0xbfff] #definePAXBYTE[0xb3ff] #definePBXBYTE[0xb7ff] voidmain() {unsignedchartemp; PB=0xff; COM=0x82; while (1) {temp=PB; PA=temp; } } 六、实验中遇到的问题及解决办法 指导教师批阅成绩 指导教师签字: 年月日 实验报告七 实验名称 数码显示实验 实验时间 2014年月日 学生学号 学生姓名 同组人员 专业班级 信息1201B 实验类型 综合性 指导老师 禹定臣 实验地点 1号楼614 学时 2 一、实验要求 用共阳极7段显示器显示按键的键值,要求用74LS164做为显示接口,用矩阵式键盘,至少识别16个按键,键值能在7段显示上显示。 二、实验目的 1.理解LED七段数码管的显示控制原理。 2.掌握数码管与单片机的接口技术,能够编写数码管显示驱动程序。 3.熟悉接口程序调试方法。 三、实验说明 用74LS164作为显示接口,单片机串行口工作在方式0。 可将共阳极7段显示器的段码放在数组中,根据键值查数组,通过串口送出段码并显示。 四、实验电路 五、实验程序 #include unsignedcharcodesegdata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsignedchara,key; unsignedchartemp; unsignedchari,j,k; voiddelay(unsignedcharz) {while(z--) { for(i=0;i<10;i++) for(j=0;j<250;j++); } } voidkeysel() {unsignedm,n; temp=0x0f; P1=temp; if(P1! =temp) {delay (2); if(P1! =temp) {m=P1&temp; temp=~temp; P1=temp; n=P1&temp; key=m|n; switch(key) { case0xee: key=0; break; case0xde: key=1; break; case0xbe: key=2; break; case0x7e: key=3; break; case0xed: key=4; break; case0xdd: key=5; break; case0xbd: key=6; break; case0x7d: key=7; break; case0xeb: key=8; break; case0xdb: key=9; break; case0xbb: key=10; break; case0x7b: key=11; break; case0xe7: key=12; break; case0xd7: key=13; break; case0xb7: key=14; break; case0x77: key=15; break; default: break; } } } } voidmain() {SCON=0x00; EA=1; ES=1; key=0; a=segdata[key]; SBUF=a; P0=0x00; while (1) {keysel(); P1=segdata[key]; SBUF=a; P0=0x00; } } voidoutput()interrupt4 {if(TI) {P0=0x01; a=segdata[key]; SBUF=a; delay(10); P0=0x00; } TI=0; } 六、实验中遇到的问题及解决办法 指导教师批阅成绩 指导教师签字: 年月日 实验报告八 实验名称 液晶显示屏1602显示实验 实验时间 2014年月日 学生学号 学生姓名 同组人员 专业班级 信息1201B 实验类型 综合性 指导老师 禹定臣 实验地点 1号楼614 学时 2 一、实验要求 用Protues设计一LCM1602液晶显示接口电路。 要求利用P0口接LCM1602液晶的数据口,P2.0~P2.2做LCM1602液晶的控制信号输入端。 编写程序,实现字符串的显示。 二、实验目的 1.掌握LCM1602液晶模块显示西文的原理及使用方法。 2.掌握8位数据模式驱动LCM1602液晶的C语言编程方法。 3.掌握用LCM1602液晶模块显示字符的C语言编程方法。 三、实验说明 液晶显示屏(LCD,LiquidCrystalDisplay)主要用于显示文本及图形信息。 液晶显示屏具有轻薄、体积小、耗电量低、无辐射危险、平面直角显示以及影像稳定不闪烁等特点;因此,在许多电子应用系统中,常使用液晶显示屏作为人机界面。 本实验采用的1602液晶模块是2行16个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 实验 报告 模板 汇编
![提示](https://static.bdocx.com/images/bang_tan.gif)