单片机实验报告19371857.docx
- 文档编号:740363
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:17
- 大小:20.55KB
单片机实验报告19371857.docx
《单片机实验报告19371857.docx》由会员分享,可在线阅读,更多相关《单片机实验报告19371857.docx(17页珍藏版)》请在冰豆网上搜索。
单片机实验报告19371857
(此文档为word格式,下载后您可任意编辑修改!
)
目录
实验一流水灯实验1
一、实验目的1
二、实验实现的功能1
三、系统硬件设计1
四、系统软件设计2
五、实验过程中遇到的问题及解决方法2
实验二定时器或实时时钟实验3
一、实验目的3
二、实验实现的功能3
三、系统硬件设计3
四、系统软件设计3
五、实验过程中遇到的问题及解决方法3
实验三双机通信实验4
一、实验目的4
二、实验实现的功能4
三、系统硬件设计4
四、系统软件设计4
五、实验过程中遇到的问题及解决方法4
实验四交通灯实验5
一、实验目的5
二、实验实现的功能5
三、系统硬件设计5
四、系统软件设计5
五、实验过程中遇到的问题及解决方法5
实验一流水灯实验
1、实验目的
1)简单IO引脚的输出
2)掌握软件延时编程方法
3)简单按键输入捕获判断
二、实验实现的功能
1)开机是点亮12发光二极管,闪烁三下
2)按照顺时针循环依次点亮发光二极管
3)通过按键将发光二极管的显示改为顺逆时针方式
三、系统硬件设计
系统设计主要以51核心板为基础,使用资源主要有:
D1~D12三色LED显示灯,分别对应单片机P20~P27,P32~P35端口;二排三列矩阵键盘,由单片机P36,P37,P05~P07端口控制。
四、系统软件设计
程序主要分为两大模块,按键扫描与LED显示,按键扫描部分放在key()函数内,返回键值。
LED显示放在主函数main()中。
通过for循环实现多次显示,延时函数来控制显示时间。
预期效果:
开机后所有LED闪烁,接着顺时针流动,结束后,按下1键LED逆时针流动,按下2键所有LED闪烁。
部分源代码:
voidDelayMS(uintxms)
{
uinti,j;
for(i=xms;i>0;i--)
for(j=300;j>0;j--);
}
unsignedcharkey()
{unsignedchark=0;
P0|=0xe0;
P3&=0x3f;
if((P0&0xe0)!
=0xe0)
{DelayMS(100);
P0|=0xe0;
if((P0&0xe0)!
=0xe0)
{P3|=0xc0;
P3&=0x7f;
switch(P0&0xe0)
{
case0xe0:
break;
case0x60:
k=6;break;
case0xa0:
k=5;break;
case0xc0:
k=4;break;
}
P3|=0xc0;
P3&=0xbf;
switch(P0&0xe0)
{
case0xe0:
break;
case0x60:
k=3;break;
case0xa0:
k=2;break;
case0xc0:
k=1;break;
}
}
while((P0&0xe0)!
=0xe0)
{
P0&=0xe0;
W1=0;
W2=!
W2;
}
}
returnk;
}
main()
{
P2=0Xfb;
uchari,k;
for(i=4;i>0;i--)
{
P2=0X00;
LED9=0;
LED10=0;
LED11=0;
LED12=0;
DelayMS(300);
P2=0XFF;
LED9=1;
LED10=1;
LED11=1;
LED12=1;
DelayMS(300);
}
P2=0XFE;
DelayMS(300);
for(i=7;i>0;i--)
{P2=_crol_(P2,1);
DelayMS(300);
}
if(k==2)
{for(i=4;i>0;i--)
{
P2=code7[0];
LED9=0;
LED10=1;
LED11=0;
LED12=1;
DelayMS(300);
P2=0XFF;
LED9=1;
LED10=1;
LED11=1;
LED12=1;
DelayMS(300);
P2=code7[1];
LED9=1;
LED10=0;
LED11=1;
LED12=0;
DelayMS(300);
P2=0XFF;
LED9=1;
LED10=1;
LED11=1;
LED12=1;
DelayMS(300);
}
}
}
}
5、实验过程中遇到的问题及解决方法
按键扫描返回值错误,经仔细调试,发现未加按键释放检测语句;
LED最初显示时间较短,亮度较暗,修改延时程序,增长延时时间得以解决。
调试过程中经常存在个别LED显示异常,仔细检查程序发现是程序控制语句错误。
经过修改,问题得以解决。
指导老师签字:
日期:
实验二定时器或实时时钟实验
一、实验目的
1)数码管动态显示技术
2)定时器的应用
3)按键功能定义
二、实验实现的功能
1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。
2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。
上述二个功能至少完成一种功能。
三、系统硬件设计
系统设计主要以51核心板为基础,利用板上已有资源进行开发设计。
使用外部资源主要有:
D1~D12三色LED显示灯,分别对应单片机P20~P27,P32~P35端口;二排三列矩阵键盘,由单片机P36,P37,P05~P07端口控制。
4位8段共阴数码管,位选由单片机P00~P03端口控制,段选由P1端口控制。
使用的单片机内部资源主要有:
定时器模块;中断模块;
四、系统软件设计
程序主要有:
定时器配置与中断函数、数码管显示、按键扫描、LED显示四大模块。
定时器采用T1定时器,工作方式为模式1。
按键指令的执行才用switch结构,相应的键值执行相应的指令。
中断函数内更新时间值time,数码管显示指令放在main函数中。
预期效果:
开机后数码管显示00;这时通过按键设置倒计时初值(最大值99),1键4键分别为+-10,2键5键分别为+—1;设置好初值,按下确定键3,开始倒计时。
计时结束,LED灯闪烁,并等待下一次计时。
定时器初始化、开始函数
voidT1_init()
{
TMOD|=0x01;定时器设置10msin12Mcrystal,工作在模式1,16位定时
TH0=0x0dc;
TL0=0x00;
EA=1;开总中断
}
voidT1_star()
{
ET0=1;开定时器0中断
TR0=1;打开定时开关
}
主函数:
main()
{
T1_init();
P0=0xff;
while
(1)
{
keyscan();
k=key();
switch(k)
{
caseKM:
无任何按键按下默认为0返回
{
Display1();
break;
}
case1:
{
time+=10;1键设置十位加
time=time%99;最大值99取余循环
Display1();实时显示
k=KM;键值置位避免重复执行可否删去待验证
break;
}
case4:
{
time-=10;4键设置十位减
if(time<=0)time=0;
time=time%99;
Display1();
k=KM;
break;
}
case2:
{
time+=1;2键设置个位加
time=time%99;
Display1();
k=KM;
break;
}
case5:
{
time-=1;5键设置个位减
if(time<=0)time=0;
time=time%99;
Display1();
k=KM;
break;
}
case3:
3键确定开启定时器、中断
{
second=time;
T1_star();
Display1();
k=KM;
break;
}
default:
break;
}
}
}
中断函数:
voidtim(void)interrupt1using1
{
ET0=0;
TR0=0;关闭中断保证程序顺利运行
TH0=0x0dc;重新赋值
TL0=0x00;
count++;
if(count==100)
{
count=0;
time--;second秒减1
if(time==0)second
{这里添加定时到0的代码,可以是灯电路,继电器吸合等,或者执行一个程序
time=0;second减到0是重新赋值99
light();
}
}
if(time!
=0)
{ET0=1;TR0=1;}定时时间未到需要恢复中断
}
五、实验过程中遇到的问题及解决方法
按键4和5的减功能不能实现,经调试发现,是按键扫描程序的问题,未加释放检测语句,修改后,问题解决。
数码管不能够显示,推测是延时较短所致,增加延时时间问题得以解决。
倒计时结束后,LED显示不正常,并且不能够复位,过程只能执行一次,仔细检查程序,发现是由于中断程序内没有屏蔽中断响应,造成程序跑飞所致,经过修改,为题解决。
指导老师签字:
日期:
实验三双机通信实验
一、实验目的
UART串行通信接口技术应用
二、实验实现的功能
用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。
三、系统硬件设计
系统设计主要以51核心板为基础,利用板上已有资源进行开发设计。
使用外部资源主要有:
二排三列矩阵键盘,由单片机P36,P37,P05~P07端口控制。
4位8段共阴数码管,位选由单片机P00~P03端口控制,段选由P1端口控制。
使用的单片机内部资源主要有:
定时器模块;串口收发模块;串口中断模块;
四、系统软件设计
程序主要有:
定时器初始化模块,串口收发初始化模块,数码管显示模块;按键扫描模块;
定时器采用T1定时器,工作方式为模式2,自动重装初值。
针对不同的键值发送相应的数值,采用switch结构。
发送功能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告 19371857