单片机原理及应用实验报告模板汇编.docx

上传人:b****8 文档编号:9816569 上传时间:2023-02-06 格式:DOCX 页数:38 大小:390.93KB
下载 相关 举报
单片机原理及应用实验报告模板汇编.docx_第1页
第1页 / 共38页
单片机原理及应用实验报告模板汇编.docx_第2页
第2页 / 共38页
单片机原理及应用实验报告模板汇编.docx_第3页
第3页 / 共38页
单片机原理及应用实验报告模板汇编.docx_第4页
第4页 / 共38页
单片机原理及应用实验报告模板汇编.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

单片机原理及应用实验报告模板汇编.docx

《单片机原理及应用实验报告模板汇编.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实验报告模板汇编.docx(38页珍藏版)》请在冰豆网上搜索。

单片机原理及应用实验报告模板汇编.docx

单片机原理及应用实验报告模板汇编

 

 

实验报告

 

课程名称单片机原理及应用

专业电子信息工程 

班级信息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个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1