您的当前位置:首页单片机并行口实验报告

单片机并行口实验报告

2022-10-03 来源:小侦探旅游网


单片机并行口实验报告

实验二 并行口

实验报告

班级: 学号: 姓名: 教师:

一、实验目的

通过实验了解8051并行口输入方式和输出方式的工作原理及编程方法。

二、实验内容

1、输出实验

如图4-1所示。以8031的P2口为输出口。通过程序控制发光二极管的亮灭。

2、输入实验

如图4-1所示。以8031的P1口为输入口。用开关向P1.0~P1.3输入不同的状态,控制P2口P2.4~P2.7发光二极管的亮灭。

3、查询输入输出实验 如图1-1所示。以8051的P1.6或P1.0为输入位,以P2口为输出,二进制计数记录按键的次数。

图1-1

三、编程提示

1、输出实验程序

(1)设计一组显示花样,编程使得P2口按照设计的花样重复显示。

(2)为了便于观察,每一状态加入延时程序。

2、输入实验程序

开关打开,则输入为1;开关闭合,则输入为0。读取P1.0~ P1.3的状态,并将它们输出到P2.4~ P2.7,驱动发光二极管。所以发光二极管L1~L4的亮灭应与开关P1.0~ P1.3的设置相吻合。

3、查询输入输出程序

(1)编程计数P1.0按键次数,按键不去抖动。

(2)编程计数P1.6按键次数,按键不去抖动。

(3)编程计数P1.0按键次数,按键软件延时去抖动。

观察(1)、(2)、(3)、的结果。

四、实验器材

计算机,目标系统实验板

五、实验步骤

1、在KEILC中按要求编好程序,编译,软件调试,生成.HEX文件。

2、断开电源,按图1-1所示,连好开关及发光二极管电路。

3、下载程序。

4、调试运行程序,观察发光二极管状态。

六、C源程序清单

1、#include

#define uchar unsigned char #define ON 0 #define OFF 1

sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7;

void delay1(void);

void main(void)

{

led1=led2=led3=led4=led5=led6=led7=led8=OFF;

while(1) {

led1=led8=ON; delay1();

led2=led7=ON;

delay1();

led3=led6=ON; delay1();

led4=led5=ON; delay1();

led1=led8=OFF; delay1();

led2=led7=OFF; delay1();

led3=led6=OFF; delay1();

led4=led5=OFF; delay1();

} }

void delay1(void) {

uchar i,j,k;

for(i=0;i<10;i++) for(j=0;j<100;j++) for(k=0;k<255;k++);

}

2、#include

#define uchar unsigned char

sbit k8=P1^0; sbit k7=P1^1; sbit k6=P1^2; sbit k5=P1^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7;

void main(void) {

while(1) {

if(!k8) led5=0; if(!k7) led6=0; if(!k6) led7=0; if(!k5) led8=0; if(k8) led5=1; if(k7) led6=1; if(k6) led7=1; if(k5) led8=1;

} } 3、(1)和(2)

#include #define uchar unsigned char

sbit k8=P1^0; sbit k2=P1^6;

void main(void) {

uchar num1,num2; num1=0; num2=0; while(1) {

if(!k8) {

num1++;

P2=~num1; }

if(!k2) {

num2++; P2=~num2;

} } }

3、(3)

#include #define uchar unsigned char

void delay(uchar); sbit k8=P1^0; sbit k7=P1^1; sbit k6=P1^2; sbit k5=P1^3; sbit k4=P1^4; sbit k3=P1^5; sbit k2=P1^6; sbit k1=P1^7;

void main(void) {

uchar num; num=0; while(1) {

if(!k3||!k4||!k5||!k6||!k7) {

num++; P2=~num;

delay(100); }

if(!k8) {

num=0; P2=~num; delay(100); } } }

void delay(uchar k ) {

uchar x,y,z;

for(x=k;x>0;x--) for(y=20;y>0;y--)

for(z=250;z>0;z--); }

七、总结

对于这次的实验来说,还是不难的,因为看懂了图1-1后,在加上原来学过的C语言,所以这三个程序还是很容易搞定的,在按键去抖动的程序中,由于k1和k2和其他的键并不一样,这两个键在硬件上已经去抖动了,

因篇幅问题不能全部显示,请点此查看更多更全内容