桂林电子科技大学信息科技学院嵌入式实训下文档格式.docx
- 文档编号:13230018
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:20
- 大小:186.77KB
桂林电子科技大学信息科技学院嵌入式实训下文档格式.docx
《桂林电子科技大学信息科技学院嵌入式实训下文档格式.docx》由会员分享,可在线阅读,更多相关《桂林电子科技大学信息科技学院嵌入式实训下文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
5、扩展多位数码管,实现多位显示(动态扫描);
2方案设计
2.1方案论证
方案一:
做个简单的普通倒计时秒表。
就是能让它倒计时,还可以同按键控制它的开始与暂停,能够实现单片机与实验箱之间的串口通信。
方案二:
做个多功能倒计时秒表,通过按键可以实现“运行/暂停”、“调整计时初值”功能,让单片机承担主控任务,ARM实验箱上做的UI界面仅仅承担同步显示功能。
方案三:
做个多功能倒计时秒表,通过按键可以实现“运行/暂停”、“调整计时初值”功能,单片机可以接收串口发来的命令进行输出显示,当按键按下后将按键信息通过串口发送出去,ARM实验箱可以实现与单片机的同步,同时可以进行互相控制,即通过ARM实验箱可以控制单片机显示和ARM实验箱上的UI的同步显示,繁反之通过单片机也可以控制实验箱与单片机的同步操作功能。
显示采用多位数码管来实现。
经过以上对方案的说明:
方案一过于简单,无法实现本次实训的功能要求;
方案二叫方案一有改进,但是无法实现互相控制的功能要求,也就是失去了本次实训的意思(本次实训主要是ARM上的Qt编程);
本次实训采用了方案三。
2.2工作原理
AT89S51单片机支持串口通信,串口有4个模式。
可分别用串并转换、并串转换、异步串行通信(2中模式)。
异步串行通信中,有1+8+1和1+8+1+1两种帧格式,多机通信是特殊的通信方式。
基本原理是两组移位寄存器,将并行通信转换成串行通信模式(发送部分),或反之(接收部分)。
可全双工运行。
速度通过移位脉冲决定,具体一般通过定时器1的自动壮哉模式产生的溢出脉冲给出。
以上是物理层和数据链路层的单片机串口模式的约定,其他层需要软件人员根据需要自行把握。
另外。
电平需要根据实际通信环境做改变,如232、485或红外等。
SCS2410UART单元提供2个独立的异步串行通信口。
皆可共组于中断和DMA模式,每个单元UART单元包含一个16字节的FIF0,用于数据接收和发送,SCS2410UART包括可编程波特率、红外发送/接收、1/2个停止位、5位/5位/7位/8位数据宽度和奇偶校验。
虚拟机可以在串口模式下试下与SCS2410UART的通信,SCS2410显示终端2实现程序的功能后,可以通过串口与与51单片机实现串口通信。
通过对两芯片的一些专用寄存器的应用,就可以实现两机之间的彼此通信。
2.3总体框图
倒计时秒表设计总体框图
2.4各功能电路实现原理及电路设计
1)单片机最小系统:
保证单片机的正常工作,一般包括:
单片机、晶振电路、复位电路。
见左下图。
单片机最小系统
下载口
2)下载口:
单片机的程序下载接口,主要接在单片机的P1口还有就是复位接口、电源和地(GND)。
见右上图
3)报警指示电路:
报警指示电路由二极管、三极管、蜂鸣器和两电阻组成,倒计时到0的状态下,禁止倒计时,二极管闪烁,发出报警声。
见右下图
报警指示电路
按键电路
4)按键电路:
由四个按键、四个电阻组成分别实现秒表暂停/运行、加计时、减计时、复位功能。
见左上图。
5)数码管显示电路:
采用的是共阴数码管,通过动态扫描实现秒表数字的显示。
数码管显示电路
串口连接电路
6)串口连接电路:
采用的是MAX232电压转换芯片,通过电压转换芯片连接串口,实现单片机与arm间的串口通信。
见左上图
3软件设计
3.1UI截面图
#include"
widget.h"
ui_widget.h"
Widget:
:
Widget(QWidget*parent):
QWidget(parent),
ui(newUi:
Widget)
{
ui->
setupUi(this);
lcdNumber->
setSmallDecimalPoint(true);
sec=43.21;
display(sec);
SEC=60;
spinBox->
setValue(SEC);
s1=newQTimer;
connect(s1,SIGNAL(timeout()),this,SLOT(display()));
connect(ui->
pushButton_3,SIGNAL(clicked()),this,SLOT(run_stop()));
pushButton_4,SIGNAL(clicked()),this,SLOT(reset()));
pushButton,SIGNAL(clicked()),this,SLOT(add()));
pushButton_2,SIGNAL(clicked()),this,SLOT(sub()));
s2=newQTimer;
s2->
start(100);
connect(s2,SIGNAL(timeout()),this,SLOT(readCom()));
myCom=
newPosix_QextSerialPort("
/dev/tts/0"
QextSerialBase:
Polling);
myCom->
open(QIODevice:
ReadWrite);
//以读写方式打开串口
myCom->
setBaudRate(BAUD9600);
//波特率设置,我们设置为9600
setDataBits(DATA_8);
//数据位设置,我们设置为8位数据位
setParity(PAR_NONE);
//奇偶校验设置,我们设置为无校验
setStopBits(STOP_1);
//停止位设置,我们设置为1位停止位
setFlowControl(FLOW_OFF);
//数据流控制设置,我们设置为无数据流控制
setTimeout(50);
}
~Widget()
deleteui;
voidWidget:
display()
sec=sec-0.01;
if(sec<
0)
run_stop();
//stop
display(0);
update();
send(sec,1,0);
else
send(sec,0,0);
run_stop()
QStringstr=ui->
pushButton_3->
text();
if(str=="
Start"
)
s1->
start(10);
setText("
Stop"
);
stop();
reset()
SEC=ui->
value();
display(sec=SEC);
send(sec,0,1);
paintEvent(QPaintEvent*)
QPainterpainter(this);
painter.setPen(Qt:
gray);
if(sec<
0)
painter.setBrush(Qt:
red);
white);
painter.drawEllipse(300,50,25,25);
readCom()
QByteArraytemp=myCom->
readAll();
switch(temp[0])
case0x01:
break;
case0x02:
add();
case0x03:
sub();
case0x04:
reset();
default:
add()
if(SEC==99.0)
return;
setValue(++SEC);
sub()
if(SEC==0.0)
setValue(--SEC);
send(doublep,intledd,intspk)
charstr[4];
str[0]=0xBB;
str[2]=(int)m+1*128;
str[1]=(int)((m-(int)m)*100)+1*128;
str[3]=0;
write(str);
4制作与调试过程
首先在收集资料的基础上画好原理图,自己编写单片机程序,然后用proteus仿真软件验证功能的正确性。
在仿真实现的情况下,做出硬件电路板,首先通过下载接口将硬件电路与电脑连接,这个下载接口不仅仅可以下载程序还可以给芯片供电,接好下载线后,测试芯片是否可以正常工作,在芯片和各个模板电路能正常工作的情况下,将之前写好的程序下载到硬件电路上。
之后就开始用Qt编写ARM的程序,花了两天的时间终于编写好了ARM的c++程序,在编译通过之后。
就开始在虚拟机中运行测试,之后到实验室将虚拟机与ARM实验箱通过串口连接起来。
在ARM实验箱的显示屏上验证倒计时秒表功能与实训要求是否相符合,即将Qt写好的程序先拷贝到虚拟机下运行,再通过Qt的嵌入式开发工具链编译链接生成实验箱可以执行的文件,将这个可执行文件拷贝到实验箱与虚拟机共享目录下运行,在实验箱上观察秒表倒计时显示是否与题目要求0~99倒计时相符合,同时验证报警指示功能是否与实训要求相符合,接着就是测试四个功能的作用是否是题目要求相匹配,我首先按下暂停/运行按键,观察秒表到时候是否可以正常运行,再在暂停状态下按下秒表复位,验证秒表是否可以实现复位功能,在接着在此状态下验证加计时和减计时的功
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 桂林 电子科技大学 信息 科技学院 嵌入式 实训下
![提示](https://static.bdocx.com/images/bang_tan.gif)