河南理工大学单片机实验报告.docx
- 文档编号:18602802
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:27
- 大小:19.61KB
河南理工大学单片机实验报告.docx
《河南理工大学单片机实验报告.docx》由会员分享,可在线阅读,更多相关《河南理工大学单片机实验报告.docx(27页珍藏版)》请在冰点文库上搜索。
河南理工大学单片机实验报告
《微机原理与单片机接口技术》
实验报告册
河南理工大学电气与自动化学院
专业班级:
学号:
学生姓名:
指导老师:
实验一流水灯实验
一、实验目的
1.、简单I/O引脚的输出
2.、掌握软件延时编程方法
3.、简单按键输入捕获判断
二、实验实现的功能
1、开机是点亮12发光二极管,闪烁三下
2、按照顺时针循环依次点亮发光二极管
3、通过按键将发光二极管的显示改为顺逆时针方式
三、系统硬件设计
1、AT89C51单片机
2、12个LED数码管
3、K1正反转转换开关
四、系统软件设计
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitkh1=P3^6;
sbitkl1=P0^5;
tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff};
tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f};
tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};
voiddelay1()//延时40ms
{
uintx,y;
for(x=200;x>0;x--)
for(y=220;y>0;y--);
}
voiddelay2()//延时150ms
{
uintx,y;
for(x=500;x>0;x--)
for(y=200;y>0;y--);
}
voidstart()//点亮12个发光二极管,闪烁3次
{
uchartemp;
while(temp<=2)
{
P2=0x00;
P3=0xc3;
delay2();
P2=0xff;
P3=0xff;
delay2();
temp++;
}
}
voidmain()//主函数
{
ucharb,z,n;
start();
while
(1)
{
n=b;
z=(n%2);
if(z==1)
{
ucharx;
for(x=0;x<12;x++)
{
P2=tab3[x];
P3=tab4[x];
delay1();
kh1=0;
kl1=1;
if(!
kl1)
{
delay1();
if(!
kl1)
b+=1;
while(!
kl1);
}
}
}
if(z==0)
{
ucharx;
for(x=0;x<12;x++)
{
P2=tab1[x];
P3=tab2[x];
delay1();
kh1=0;
kl1=1;
if(!
kl1)
{
delay1();
if(!
kl1)
b+=1;
while(!
kl1);
}
}
}
}
}
五、实验过程中遇到的问题及解决方法
在运行试验时发现单片机焊接过程中把LED焊反了,导致实验过程中灯不会亮,之后重新按顺序焊接后,问题解决,灯顺利点亮,完成实验。
指导老师签字:
日期:
实验二定时器实验
一、实验目的
1、数码管动态显示技术
2、定时器的应用
3、功能键的定义
二、实验实现的功能
通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。
三、系统硬件设计
1、设计板
2、12个数码管
3、复位键
4、K1K2键
四、系统软件设计
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitk1=P3^6;
sbitk2=P3^7;
sbitki1=P0^5;
sbitki2=P0^6;
sbitki3=P0^7;
sfrP1M1=0x91;
sfrP1M0=0x92;
tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
tab2[]={0xf7,0xfb,0xfd,0xfe};
tab3[4]={0};
uinta=0;
uintb=0;
voidDelay100ms()//@11.0592MHz
{
unsignedchari,j,k;
i=5;
j=52;
k=195;
do
{
do
{
while(--k);
}while(--j);
}while(--i);
}
voidDelay5ms()//@11.0592MHz
{
unsignedchari,j;
i=54;
j=199;
do
{
while(--j);
}while(--i);
}
voidfaguang()
{
ucharx;
while(x<=2)
{
P2=0x00;
P3=0xc3;
Delay100ms();
P2=0xff;
P3=0xff;
Delay100ms();
x++;
}
}
voiddisplay()
{
chart;
switch(t)
{
case0:
P0=tab2[t];
t++;
P1=tab1[tab3[0]];
break;
case1:
P0=tab2[t];
t++;
P1=tab1[tab3[1]];
break;
case2:
P0=tab2[t];t++;
P1=tab1[tab3[2]];
break;
case3:
P0=tab2[t];
t=0;
P1=tab1[tab3[3]];
break;
default:
break;
}
}
voidinterrupt_timer1()interrupt3
{
TH1=0xfc;
TL1=0x67;
a++;
if(a==1000)
{
b++;
a=0;
tab3[0]=b%10;
tab3[1]=b/10%10;
tab3[2]=b/100%10;
tab3[3]=b/1000%10;
}
display();
}
voidmain()
{
ucharm,k;
uintn=1;
P1M1=0x00;
P1M0=0xff;
TMOD=0x10;
TH1=0xfc;
TL1=0x67;
ET1=1;
EA=1;
while
(1)
{
if(!
TR1)
{
k=0;
for(k=0;k<50;k++)
{
k1=0;
k2=0;
ki1=1;
ki2=1;
ki3=1;
if(!
ki1)
{
Delay5ms();
if(!
ki1)
{
TR1=1;
break;
}
while(!
ki1);
}
if(!
ki2)
{
Delay5ms();
if(!
ki2)
n+=1;
while(!
ki2);
}
if(!
ki3)
{
Delay5ms();
if(!
ki3)
n+=100;
while(!
ki3);
}
tab3[0]=n%10;
tab3[1]=n/10%10;
tab3[2]=n/100%10;
tab3[3]=n/1000%10;
for(m=0;m<4;m++)
{
P0=tab2[m];
P1=tab1[tab3[m]];
Delay5ms();
}
if(m==4)
m=0;
}
}
if(b==n)
{
TR1=0;
b=0;
n=1;
faguang();
}
}
}
五、实验过程中遇到的问题及解决方法
在设计实验时,在给计数器编写程序的时候,对于计数器的采用,以及控制字的编写,都不太会编写。
通过翻阅书籍,咨询老师同学和上网搜查,认真学习和掌握这一部分的知识和技巧,写出正确的程序来对计数器进行控制,达到实验目的,实现该功能。
指导老师签字:
日期:
实验三双机通信实验
一、实验目的
UART串行通信接口技术应用
二、实验实现的功能
用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。
三、系统硬件设计
1、两个单片机
2、两组LED数码管
3、两根串口线
4、2*3矩阵式按键
四、系统软件设计
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitH1=P3^6;
sbitH2=P3^7;
sbitL1=P0^5;
sbitL2=P0^6;
sbitL3=P0^7;
sbitW1=P0^0;
tab1e[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ucharnum,a,b,c,n;
voidsend();
voiddelay(ucharx)
{
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
voidmain()
{
SCON=0x50;
TMOD=0x20;
PCON=0x00;
TH1=0xf4;
TL1=0xf4;
TR1=1;
W1=0;
while
(1)
{
n=num;
send();
}
}
voidsend()//发送
{
H1=0;
H2=1;
L1=1;
L2=1;
L3=1;
if(!
L1)
{
delay(5);
if(!
L1)
num=1;
while(!
L1);
}
if(!
L2)
{
delay(5);
if(!
L2)
num=2;
while(!
L2);
}
if(!
L3)
{
delay(5);
if(!
L3)
num=3;
while(!
L3);
}
H1=1;
H2=0;
L1=1;
L2=1;
L3=1;
if(!
L1)
{
delay(5);
if(!
L1)
num=4;
while(!
L1);
}
if(!
L2)
{
delay(5);
if(!
L2)
num=5;
while(!
L2);
}
if(!
L3)
{
delay(5);
if(!
L3)
num=6;
while(!
L3);
}
if(num!
=n)
{
SBUF=num;
while(!
TI);
TI=0;
}
if(RI)
{
c=SBUF;
RI=0;
}
P1=tab1e[c];
}
五、实验过程中遇到的问题及解决方法
双机通信实验中,要两个单片机互相传输数据以及接收数据。
这个实验对我来说程序编写有一定的困难。
通过网络上的查询,对有关实验编写好的的程序进行调用,与同组人员讨论,对程序进行调试,完成实验。
指导老师签字:
日期:
实验四交通灯实验
一、实验目的
1、按键、数码管、发光二极管综合应用编程技术
2、数据存储于EEPROM的技术(也可以不使用)
3、定时中断技术
4、按键中断技术
二、实验实现的功能
1、对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。
2、紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。
再按该键,恢复正常显示。
三、系统硬件设计
1、单片机模板
2、12个二极管
3、复位键
四、系统软件设计
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitw1=P0^0;//定义端口//
sbitw2=P0^1;
sbitw3=P0^2;
sbitw4=P0^3;
sbitl1=P0^5;
sbitl2=P0^6;
sbitl3=P0^7;
sbith1=P3^6;
sbith2=P3^7;
sbitdongr=P2^6;
sbitdongg=P2^7;
sbitdongy=P3^2;
sbitxir=P2^0;
sbitxig=P2^1;
sbitxiy=P2^3;
sbitnanr=P3^3;
sbitnang=P3^4;
sbitnany=P3^5;
sbitbeir=P2^3;
sbitbeig=P2^4;
sbitbeiy=P2^5;
ucharmiao,mode,step,nbs,dxs,cnt;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
voiddelay(uintz)
{
uchary;
uintx;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidkeyscan(void)
{
l1=0;l2=1;l3=1;
if(h1==0)
{
mode=mode+1;
if(mode==2)
mode=0;
}
}
voidinit(void)
{
TMOD=0x11;//定时器初始化//
ET0=1;
ET1=1;
EA=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
}
voidsegscan(void)//检测哪个按键被按下//
{
w1=0;w2=1;w3=1;w4=1;
P1=0;
delay(200);
P1=0;
w1=1;w2=0;w3=1;w4=1;
P1=0;
delay(200);
P1=0;
w1=1;w2=1;w3=0;w4=1;
P1=table[miao/10];
delay(200);
P1=0;
w1=1;w2=1;w3=1;w4=0;
P1=table[miao%10];
delay(200);
P1=0;
}
voidmain(void)
{
init();
while
(1)
{
if(mode==0)
{
TR1=1;
switch(step)
{
case0:
nanr=0;
beir=0;
dongg=0;
xig=0;
dongr=1;
xir=1;
step=step+1;
break;
case1:
if(miao==20)
{
miao=0;
dxs=1;
step=step+1;
}
break;
case2:
if(miao==3)
{
dxs=0;
miao=0;
dongg=1;
xig=1;
dongy=0;
xiy=0;
step=step+1;
}
break;
case3:
if(miao==2)
{
miao=0;
dxs=0;
dongy=1;
xiy=1;
dongr=0;
xir=0;
nang=0;
beig=0;
nanr=1;
beir=1;
step=step+1;
}
break;
case4:
if(miao==25)
{
miao=0;
nbs=1;
step=step+1;
}
break;
case5:
if(miao==3)
{
miao=0;
nbs=0;
nang=1;
beig=1;
nany=0;
beiy=0;
step=step+1;
}
break;
case6:
if(miao==2)
{
nany=1;
beiy=1;
step=0;
}
break;
}
}else{
TR1=0;
nanr=0;
beir=0;
dongr=0;
xir=0;
nang=1;
nany=1;
beig=1;
beiy=1;
dongg=1;
dongy=1;
xig=1;
xiy=1;
}
}
}
voidt0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
segscan();
}
voidt1()interrupt3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
cnt++;
if(cnt==20)
{
keyscan();
cnt=0;
miao=miao+1;
if(dxs==1)
{
dongg=~dongg;
xig=~xig;
}
if(nbs==1)
{
nang=~nang;
beig=~beig;
}
if(miao==26)
{
miao=0;
}
}}
五、实验过程中遇到的问题及解决方法
本次试验实现红绿灯转换时,是对于定时变换总是编程失败,无法实现试验所要求的功能,尤其对于亮灯时间以及亮灯顺序的把握不太好。
我和同组人员一起上网搜索有用的资料和程序,认真思考探索计算后,多次调试程序直到功能达到实验目的。
指导老师签字:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河南 理工大学 单片机 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)