微机原理与单片机接口技术
实验报告册
河南理工大学电气学院
专业
班级
学号
姓名
目录
实验一 流水灯实验................................................................................................... 3
一、 实验目的.......................................................................................................... 3
二、实验实现的功能................................................................................................. 3
三、系统硬件设计..................................................................................................... 3
四、系统软件设计..................................................................................................... 3
五、实验过程中遇到的问题及解决方法..................................................................... 6
实验二 定时器或实时时钟实验.................................................................................... 7
一、实验目的............................................................................................................ 7
二、实验实现的功能................................................................................................. 7
三、系统硬件设计..................................................................................................... 7
四、系统软件设计..................................................................................................... 7
五、实验过程中遇到的问题及解决方法.................................................................... 10
实验三 双机通信实验.............................................................................................. 11
一、实验目的.......................................................................................................... 11
二、实验实现的功能................................................................................................ 11
三、系统硬件设计................................................................................................... 11
四、系统软件设计................................................................................................... 11
五、实验过程中遇到的问题及解决方法.................................................................... 13
实验四 交通灯实验................................................................................................. 14
一、实验目的.......................................................................................................... 14
二、实验实现的功能................................................................................................ 14
三、系统硬件设计................................................................................................... 14
四、系统软件设计................................................................................................... 14
五、实验过程中遇到的问题及解决方法.................................................................... 17
实验一 流水灯实验
一、实验目的
1)简单I/O引脚的输出
2)掌握软件延时编程方法
3)简单按键输入捕获判断
二、实验实现的功能
1)开机是点亮12发光二极管,闪烁三下
2)按照顺时针循环依次点亮发光二极管
3)通过按键将发光二极管的显示改为顺逆时针方式
三、系统硬件设计
四、系统软件设计
试验程序如下:
#include <10f08.h>
#define uint unsigned int
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P4_4=P4^4;
void Delay100ms()
{
unsigned char i, j, k;
i = 5;
j = 52;
k = 195;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay300ms()
{
unsigned char i, j, k;
i = 13;
j = 156;
k = 83;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void shun_z()
{
uint m,n;
bit a;
for(m=0;m==0;)
{
EX0=1;
a=P0_5;
P3_2=a;
P2=0xfe;
P4_4=1;
a=P0_5;
P3_2=a;
P3_3=1;
P3_4=1;
P3_5=1;
Delay300ms();
for (n=0;n<8;n++)
{
a=P0_5;
P3_2=a;
P2=P2<<1;
P2=P2|0x01;
if(n==7) break;
Delay300ms();
}
P4_4=0;
Delay300ms();
P4_4=1;
P3_3=0;
Delay300ms();
P3_3=1;
P3_4=0;
Delay300ms();
P3_4=1;
P3_5=0;
Delay300ms();
P3_5=1;
}
}
void int0() interrupt 0
{
uint m,n;
EX0=0;
for(m=0;m==0;)
{
P4_4=1;
P3_3=1;
P2=0xff;
P3_5=0;
Delay300ms();
P3_5=1;
if(P0_5==0) break;
P3_4=0;
Delay300ms();
P3_4=1;
if(P0_5==0) break;
P3_3=0;
Delay300ms();
P3_3=1;
if(P0_5==0) break;
P4_4=0;
Delay300ms();
P4_4=1;
if(P0_5==0) break;
P2=0x7f;
Delay300ms();
if(P0_5==0) break;
for(n=0;n<8;n++)
{
P2=P2>>1;
P2=P2|0x80;
if(n==7) break;
Delay300ms();
if(P0_5==0) break;
}
if(P0_5==0) break;
}
}
void SSS()
{
uint m,n;
EX0=0;
P2=0xfe;
P4_4=1;
P3_3=1;
P3_4=1;
P3_5=1;
Delay100ms();
for (n=0;n<8;n++)
{
P2=P2<<1;
if(n==7) break;
Delay100ms();
}
P4_4=0;
Delay100ms();
P3_3=0;
Delay100ms();
P3_4=0;
Delay100ms();
P3_5=0;
Delay100ms();
for (m=0;m<4;m++)
{
P2=0x00;
P4_4=0;
P3_3=0;
P3_4=0;
P3_5=0;
Delay300ms();
P2=0xff;
P4_4=1;
P3_3=1;
P3_4=1;
P3_5=1;
Delay300ms();
}
Delay300ms();
}
void main()
{
P4SW|=0x10;
P3_6=0;
IT0=0;
EX0=1;
EA=1;
SSS();
shun_z();
}
五、实验过程中遇到的问题及解决方法
指导老师签字:
日期:
实验二 定时器或实时时钟实验
一、实验目的
1)数码管动态显示技术
2)定时器的应用
3)按键功能定义
二、实验实现的功能
1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。
2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。
上述二个功能至少完成一种功能。
三、系统硬件设计
四、系统软件设计
试验程序如下:
#include <10f08.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
Uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar chocode[]={0xfe,0xfd,0xfb,0xf7};
uchar N,M;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
sbit P4_4=P4^4;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P0_7=P0^7;
void Delay1ms()
{
unsigned char i, j;
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
void Delay300ms()
{
unsigned char i, j, k;
i = 13;
j = 156;
k = 83;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void display(uchar N,M)
{
P1M0=0xff;
P1M1=0x00;
P0=chocode[3];
P1=table[M];
Delay1ms();
P0=chocode[2];
P1=table[N];
Delay1ms();
P0=chocode[1];
P1=table[0];
Delay1ms();
P0=chocode[0];
P1=table[0];
Delay1ms();
}
void Scan_Key(void)
{
uchar m;
bit FLAG0=0;
P3_6=0;
P3_7=1;
P0=0xff;
m=P0;
switch(m&0xf0)
{
case 0xd0: N++;
FLAG0=1;
break;
case 0xb0: M++;
FLAG0=1;
break;
default: break;
}
if(FLAG0)
{
while((P0|0x0f)!=0xff) {
display(N,M);
}
}
else
{
display(N,M);
}
P3_6=1;
P3_7=0;
P0=0xff;
m=P0;
switch(m&0xf0)
{
case 0xd0: N--;
FLAG0=1;
break;
case 0xb0: M--;
FLAG0=1;
break;
default: break;
}
if(FLAG0)
{
while((P0|0x0f)!=0xff) {
display(N,M);
}
}
else
{
display(N,M);
}
P3_7=1;
P3_6=0;
}
main()
{
P4SW|=0x10;
P1=0x0;
while(1)
{
uchar i;
Scan_Key();
P0=0xff;
if(P0_7==0)
{
while((P0|0x0f)!=0xff)
{
display(N,M);
}
while(1)
{
for(i=0;i<120;i++)
{
TMOD=0x01;
TH0=0xd8;
TL0=0xf0;
TR0=1;
display(N,M);
do{display(N,M);} while(TF0==0);
}
if((M|N)==0)
{
while(1)
{
P0=0xff;
P2=0x00;
P4_4=0;
P3_3=0;
P3_4=0;
P3_5=0;
Delay300ms();
P2=0xff;
P4_4=1;
P3_3=1;
P3_4=1;
P3_5=1;
Delay300ms();
}
}
if(M==0)
{
M=9;
N--;
}
else M--;
}
}
}
}
五、实验过程中遇到的问题及解决方法
指导老师签字:
日期:
实验三 双机通信实验
一、实验目的
UART 串行通信接口技术应用
二、实验实现的功能
用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。
三、系统硬件设计
四、系统软件设计
试验程序如下:
#include <10f08.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
sbit P3_6=P3^6;
sbit P3_7=P3^7;
sbit P0_3=P0^3;
uchar n;
void Delay10ms()
{
unsigned char i, j;
_nop_();
_nop_();
i = 108;
j = 144;
do
{
while (--j);
} while (--i);
}
void UartInit(void)
{
PCON &= 0x7F;
SCON = 0x50;
AUXR &= 0xBF;
AUXR &= 0xFE;
TMOD &= 0x0F;
TMOD |= 0x20;
TL1 = 0xFD;
TH1 = 0xFD;
ET1 = 0;
TR1 = 1;
ES=1;
EA=1;
}
void Scan_Key(void)
{
uchar m,i;
bit FLAG0=0;
P3_6=0;
P3_7=1;
for(i=0;i<2;i++)
{
P0=0xf7;
m=P0;
Delay10ms();
switch(m&0xf0)
{
case 0xd0: n=i*3+1;
FLAG0=1;
break;
case 0xb0: n=i*3+2;
FLAG0=1;
break;
case 0x70: n=i*3+3;
FLAG0=1;
break;
default: break;
}
P3_6=1;
P3_7=0;
}
}
void send()
{
SBUF=table[n];
while(!TI);
TI=0;
}
void receive()
{
while(RI==0);
P1=SBUF;
RI=0;
}
main()
{
UartInit();
P1M0=0xff;
P1M1=0x00;
P1=0x0;
while(1)
{
Scan_Key();
send();
receive();
}
}
五、实验过程中遇到的问题及解决方法
指导老师签字:
日期:
实验四 交通灯实验
一、实验目的
1)按键、数码管、发光二极管综合应用编程技术
2)数据存储于EEPROM的技术(也可以不使用)
3)定时中断技术
4)按键中断技术
二、实验实现的功能
1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。
2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。
3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。
三、系统硬件设计
四、系统软件设计
实验程序如下:
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar i,j=1;
uint p,q,m=0,n=30;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code wei[]={0x07,0x0b,0x0d,0x0e};
void delay(uint x)
{
while(x--)
{
for(p=250;p>0;p--);
}
}
void key()
{
uint i;
P0=0xff;
P3=0x7f;
i=P0;
i=i&0xff;
if(i!=0xff)
{
delay(10);
i=P0;
i=i&0xff;
if(i!=0xff)
{
i=P0;
switch(i)
{
case 0x7f: j=0;TR0=0; break;
case 0xdf: j=1;TR0=1; break;
}
while(i!=0xff)
{
i=P0;
i=i&0xff;
}
}
}
}
void sun()
{
if(m%2==1&&n>10)
{
for(q=0;q<160;q++)
{
P1=table[n/10];
P0=wei[3];
delay(2);
P1=table[n%10];
P0=wei[2];
delay(2);
P2=0xf3;P3=0xcf3;
delay(2);
}
}else if(m%2==1&&n>5)
{
for(q=0;q<160;q++)
{
P1=table[n/10];
P0=wei[3];
delay(2);
P1=table[n%10];
P0=wei[2];
delay(2);
P2=0x75;P3=0xf7;
delay(2);
}
}else if(m%2==1&&n>0)
{
for(q=0;q<80;q++)
{
P1=table[n/10];
P0=wei[3];
delay(2);
P1=table[n%10];
P0=wei[2];
delay(2);
P2=0x75;P3=0xf7;
delay(2);
}
for(q=0;q<80;q++)
{
P0=1;
delay(2);
P2=0xf7;
P3=0xf7;
delay(2);
}
}else if(m%2==0&&n>10)
{
for(q=0;q<160;q++)
{
P1=table[n/10];
P0=wei[1];
delay(2);
P1=table[n%10];
P0=wei[0];
delay(2);
P2=0x9e;P3=0xdf;
delay(2);
}
}else if(m%2==0&&n>5)
{
for(q=0;q<160;q++)
{
P1=table[n/10];
P0=wei[1];
delay(2);
P1=table[n%10];
P0=wei[0];
delay(2);
P2=0xae;P3=0xef;
delay(2);
}
}else if(m%2==0&&n>0)
{
for(q=0;q<80;q++)
{
P1=table[n/10];
P0=wei[1];
delay(2);
P1=table[n%10];
P0=wei[0];
delay(2);
P2=0xae;P3=0xef;
delay(2);
}
for(q=0;q<80;q++)
{
P0=1;
delay(2);
P2=0xbe;
P3=0xff;
delay(2);
}
}
}
void init()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
}
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
i++;
if(i==20)
{
i=0;
n--;
if(n<1)
{
n=30;
m++;
}
}
}
void main()
{
init();
TR0=1;
while(1)
{
key();
if(j==0)
{
P2=0xb6;P3=0xf7;
}else
if(j==1)
{
sun();
}
}
}
五、实验过程中遇到的问题及解决方法
指导老师签字:
日期:
单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实…
通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机…
海南大学届单片机实验报告4份论文题目学生姓名学号所在院系专业班级授课教师完成时间蜂鸣器实验实验目的1熟悉实验板中蜂鸣器工作原理掌握…
编号实验报告姓名学号实验班级实验时间实验报告总份片数12份片实验教师学院1实验一开发软件使用与调试方法一实验目的学习KEIL的使用…
成绩重庆邮电大学自动化学院综合实验报告题目51系列单片机闭环温度控制学生姓名蒋运和班级0841004学号20xx213316同组人…
基于单片机的温度数据采集系统实验报告班级电技姓名田波平学号指导老师仲老师101班10120xx108题目基于单片机的温度数据采集系…
单片机实验报告报告人xxx学号20xx211812班号20xx211407指导老师姚燕20xx0615实验一仿真软件的使用以及跑马…
单片机与嵌入式系统实验报告1一软件模拟调试实验本部分实验内容主要为指令系统和汇编语言程序设计采用软件模拟调试的方法目的在于通过这些…
时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。在学习单片机这门课程之前,就早早的听各种任课老师和学长学…