串行通讯接口实验九十九秒计时器.docx
- 文档编号:6908049
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:10
- 大小:208.09KB
串行通讯接口实验九十九秒计时器.docx
《串行通讯接口实验九十九秒计时器.docx》由会员分享,可在线阅读,更多相关《串行通讯接口实验九十九秒计时器.docx(10页珍藏版)》请在冰豆网上搜索。
串行通讯接口实验九十九秒计时器
串行通讯接口实验
(2)
一、实验目的
1、采用串行方式一,实现两个单片机采用点对点通讯的功能;
2、0-99秒计时器设计;
二、基本实验实现功能及参考电路
◆两个单片机采用点对点通讯;通信方式选方式1:
十位异步收发通信;
◆单片机工作晶振频率为11.0592MHz,串行通信波特率为2400b/s。
◆发送机发送数字0-9;接收机接收到数据后将数据回传给发送机;并将接收数据在本机P1口显示;
◆发送机将接收到数据与已经发送数据比较,如果两个数据相等,则确认接收数据正确,并将发送数据通过P1口显示;如果比较后确认数据不等,则在P1口显示数字E。
图1基本实验实现功能及参考电路图
三、应用单片机定时器实现秒表计时功能
◆设计定时器,每隔一秒的时间,计时器自动加一,计时器个位满十向十位进位,累计计时99秒即清0重新计数。
◆计时过程中,能够响应外部按键命令,实现计时器清零、暂停功能。
图299秒计时器设计电路
四、实验过程
(一)、基本实验实现功能
1,实验原理部分:
采用串行方式一,实现功能——两个单片机采用点对点通讯,采用十位异步收发的通信方式;单片机工作晶振频率为11.0592MHz,串行通信波特率为2400b/s。
2,实验仿真效果图及实验电路分析:
实验电路分析:
发送机发送数字0-9;接收机接收到数据后将数据回传给发送机;并将接收数据在本机P1口显示;发送机将接收到数据与已经发送数据比较,如果两个数据相等,则确认接收数据正确,并将发送数据通过P1口显示;如果比较后确认数据不等,则在P1口显示数字E。
3,实验程序及关键语句注释:
发送部分程序:
#include
#defineucharunsignedchar
#defineuintunsignedint
main()
{
ucharm=0;
uchardat[10]={1,2,3,4,5,6,7,8,9,0};
uchark=0;
uintj=0;
TMOD=0x20;%T1设为定时模式2
TL1=0xF4;%定时初值
TH1=0xF4;%重置的定时初值
PCON=0x00;%设置波特率
SCON=0x50;%设置为方式一发送数据
TR1=1;%启动T1
while
(1)
{
SBUF=dat[m];%通过串行口发送显示码
do{}while(!
TI);%等待发送完成
TI=0;
do{}while(!
RI);%等待回答
RI=0;
k=SBUF;
if(k==dat[m])%若返回值相同,则显示已发送
{
P1=dat[m];
m++;
if(m==10)
m=0;
}
elseP1=0x0e;%否则显示E
for(j=0;j<12500;j++);
}
}
接收部分程序
#include
#defineucharunsignedchar
#defineuintunsignedint
main()
{
ucharm=0;
uchark=0;
uintj=0;
TMOD=0x20;%T1设为定时模式2
TL1=0xF4;%定时初值
TH1=0xF4;%重置的定时初值
PCON=0x00;%设置波特率
SCON=0x50;%设置为方式一接收数据
TR1=1;%启动T1
while
(1)
{
do{}while(!
RI);%等待接收完成
RI=0;
k=SBUF;
P1=k;
SBUF=k;%返回结果
do{}while(!
TI);%等待发送完成
TI=0;
for(j=0;j<12500;j++);%延时
}
}
4,实验调试分析:
调试中遇到的问题及解决方法。
在实验中,未将clockfrequency频率改成相同,导致显示E,后一直在修改程序错误,最后找到是这个没有修改,其余均未遇到问题,并正常运行仿真得到实验预期现象。
(二)、应用单片机定时器实现秒表计时功能
1,实验原理部分:
定时器每隔一秒的时间,计时器自动加一,计时器个位满十向十位进位,累计计时99秒即清0重新计数。
P1口显示个位,P口显示十位。
计时过程中,能够响应外部按键命令,实现计时器清零、暂停功能。
2,实验仿真效果图:
程序正常运行:
当按下左边的清零开关时:
当按下右边暂停开关时:
3,实验程序及关键语句注释:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitp1=P3^3;
sbitp2=P3^2;
main()
{
uintm=0;
uintn=0;
uchardat[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uintj=0;
EA=1;%打开总中断允许
EX1=1;%允许外部中断1中断
IT1=1;
EX0=1;
IT0=1;
TMOD=0x10;%定时器调整为方式一
while
(1)
{
loop:
for(m=0;m<10;m++)
{P2=dat[m];
for(n=0;n<10;n++)
{if(p2==0)
gotoloop;
P1=dat[n];
for(j=0;j<20;j++)
{TH1=0x3C;
TL1=0xB0;
TR1=1;
do{}while(!
TF1);
TF1=0;
}
}
TR1=0;
n=0;
}
m=0;
}
}
voidint1()interrupt2%暂停
{
do{}while(!
p1);
}
voidint0()interrupt0%清零
{
uintn=0;
uintm=0;
uchardat[1]={0x3F};
P2=dat[m];
P1=dat[n];%P1,P2口都输出零
}
4,实验调试分析:
调试中遇到的问题及解决方法:
实验中先了解数码显示管的结构及工作原理,然后清楚C1中断服务程序编写的规定和语法。
在实验中,一开始不能灵活使用中断语句,导致不能实现暂停和清零过程,后来通过PPT的学习及相关程序的模仿,完成程序的编译及仿真,得到预期实验现象。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行 通讯 接口 实验 九十九 计时器
![提示](https://static.bdocx.com/images/bang_tan.gif)