1、桂林电子科技大学信息科技学院嵌入式实训下嵌入式系统开发与应用实训实训报告倒计时秒表1 整机设计1.1 设计要求使用Qt编程,在ARM实验箱的液晶显示屏幕上实现99秒倒计时,采用AT89S51单片机模块与ARM9实验箱之间的串口通信,实现数码管显示、按键控制的同步,通过按键可以实现“运行/暂停”、“调整计时初值”的功能,当倒计时到0时,会有指示灯闪烁或亮。使用串口连接单片机模块与ARM9实验箱,单片机模块要求:接收串口发来的命令进行输出显示,当按键按下后将按键信息通过串口发送出去;ARM9实验箱模块要求:通过Qt编程实现相应的计算和控制功能。即单片机要求承担信息输入、输出的“中转站”功能,不承担
2、主控任务。1.1.1设计任务采用AT89S51单片机与ARM9实验箱之间的串口通行,通过Qt编程设计一个99秒倒计时秒表。1.1.2性能指标要求1、使用Qt编程,在ARM实验箱的液晶屏幕上实现99秒倒计时;2、实验箱通过串口与单片机模块通信,实现数码管显示、按键控制的同步;3、通过按键实现“运行/暂停”、“调整计时初值”功能;4、倒计时为0时,指示灯闪烁;5、扩展多位数码管,实现多位显示(动态扫描);2方案设计2.1方案论证方案一:做个简单的普通倒计时秒表。就是能让它倒计时,还可以同按键控制它的开始与暂停,能够实现单片机与实验箱之间的串口通信。方案二:做个多功能倒计时秒表,通过按键可以实现“运
3、行/暂停”、“调整计时初值”功能,让单片机承担主控任务,ARM实验箱上做的UI界面仅仅承担同步显示功能。方案三:做个多功能倒计时秒表,通过按键可以实现“运行/暂停”、“调整计时初值”功能,单片机可以接收串口发来的命令进行输出显示,当按键按下后将按键信息通过串口发送出去,ARM实验箱可以实现与单片机的同步,同时可以进行互相控制,即通过ARM实验箱可以控制单片机显示和ARM实验箱上的UI的同步显示,繁反之通过单片机也可以控制实验箱与单片机的同步操作功能。显示采用多位数码管来实现。经过以上对方案的说明:方案一过于简单,无法实现本次实训的功能要求;方案二叫方案一有改进,但是无法实现互相控制的功能要求,
4、也就是失去了本次实训的意思(本次实训主要是ARM上的Qt编程);本次实训采用了方案三。2.2工作原理AT89S51单片机支持串口通信,串口有4个模式。可分别用串并转换、并串转换、异步串行通信(2中模式)。异步串行通信中,有1+8+1和1+8+1+1两种帧格式,多机通信是特殊的通信方式。基本原理是两组移位寄存器,将并行通信转换成串行通信模式(发送部分),或反之(接收部分)。可全双工运行。速度通过移位脉冲决定,具体一般通过定时器1的自动壮哉模式产生的溢出脉冲给出。以上是物理层和数据链路层的单片机串口模式的约定,其他层需要软件人员根据需要自行把握。另外。电平需要根据实际通信环境做改变,如232、48
5、5或红外等。SCS2410 UART单元提供2个独立的异步串行通信口。皆可共组于中断和DMA模式,每个单元UART单元包含一个16字节的FIF0,用于数据接收和发送,SCS2410 UART包括可编程波特率、红外发送/接收、1/2个停止位、5位/5位/7位/8位数据宽度和奇偶校验。虚拟机可以在串口模式下试下与SCS2410 UART的通信,SCS2410 显示终端2实现程序的功能后,可以通过串口与与51单片机实现串口通信。通过对两芯片的一些专用寄存器的应用,就可以实现两机之间的彼此通信。2.3总体框图倒计时秒表设计总体框图2.4各功能电路实现原理及电路设计1)单片机最小系统:保证单片机的正常工
6、作,一般包括:单片机、晶振电路、复位电路。见左下图。单片机最小系统 下载口2)下载口:单片机的程序下载接口,主要接在单片机的P1口还有就是复位接口、电源和地(GND)。见右上图3)报警指示电路:报警指示电路由二极管、三极管、蜂鸣器和两电阻组成,倒计时到0的状态下,禁止倒计时,二极管闪烁,发出报警声。见右下图报警指示电路 按键电路4)按键电路:由四个按键、四个电阻组成分别实现秒表暂停/运行、加计时、减计时、复位功能。见左上图。5)数码管显示电路:采用的是共阴数码管,通过动态扫描实现秒表数字的显示。见右下图数码管显示电路 串口连接电路6)串口连接电路:采用的是MAX232电压转换芯片,通过电压转换
7、芯片连接串口,实现单片机与arm间的串口通信。见左上图3 软件设计3.1 UI截面图#include widget.h#include ui_widget.hWidget:Widget(QWidget *parent) :QWidget(parent),ui(new Ui:Widget)ui-setupUi(this);ui-lcdNumber-setSmallDecimalPoint(true);sec=43.21;ui-lcdNumber-display(sec);SEC = 60;ui-spinBox-setValue(SEC);s1 = new QTimer;connect(s1,SI
8、GNAL(timeout(),this,SLOT(display();connect(ui-pushButton_3,SIGNAL(clicked(),this,SLOT(run_stop();connect(ui-pushButton_4,SIGNAL(clicked(),this,SLOT(reset();connect(ui-pushButton,SIGNAL(clicked(),this,SLOT(add();connect(ui-pushButton_2,SIGNAL(clicked(),this,SLOT(sub();s2 = new QTimer;s2-start(100);co
9、nnect(s2,SIGNAL(timeout(),this,SLOT(readCom();myCom = new Posix_QextSerialPort(/dev/tts/0,QextSerialBase:Polling);myCom -open(QIODevice:ReadWrite);/以读写方式打开串口myCom-setBaudRate(BAUD9600);/波特率设置,我们设置为9600myCom-setDataBits(DATA_8);/数据位设置,我们设置为8位数据位myCom-setParity(PAR_NONE);/奇偶校验设置,我们设置为无校验myCom-setStopB
10、its(STOP_1);/停止位设置,我们设置为1位停止位myCom-setFlowControl(FLOW_OFF);/数据流控制设置,我们设置为无数据流控制myCom-setTimeout(50);Widget:Widget()delete ui;void Widget:display()sec = sec - 0.01;if(seclcdNumber-display(0);update();send(sec,1,0);elsesend(sec,0,0);ui-lcdNumber-display(sec);void Widget:run_stop()QString str = ui-pus
11、hButton_3-text();if(str = Start)s1-start(10);ui-pushButton_3-setText(Stop);elses1-stop();ui-pushButton_3-setText(Start);void Widget:reset()SEC = ui-spinBox-value();ui-lcdNumber-display(sec = SEC);send(sec,0,1);update();void Widget:paintEvent(QPaintEvent *)QPainter painter(this);painter.setPen(Qt:gra
12、y);if (sec readAll();switch(temp0)case 0x01:run_stop();break;case 0x02:add();break;case 0x03:sub();break;case 0x04:reset();break;default:break;void Widget:add()if(SEC = 99.0)return;elseui-spinBox-setValue(+SEC);void Widget:sub()if(SEC = 0.0)return;elseui-spinBox-setValue(-SEC);void Widget:send(doubl
13、e p,int ledd,int spk)char str4;str0 = 0xBB;str2 = (int)m + 1 * 128;str1 = (int)(m - (int)m)*100) + 1 * 128;str3 = 0;myCom-write(str);4 制作与调试过程首先在收集资料的基础上画好原理图,自己编写单片机程序,然后用proteus仿真软件验证功能的正确性。在仿真实现的情况下,做出硬件电路板,首先通过下载接口将硬件电路与电脑连接,这个下载接口不仅仅可以下载程序还可以给芯片供电,接好下载线后,测试芯片是否可以正常工作,在芯片和各个模板电路能正常工作的情况下,将之前写好的程
14、序下载到硬件电路上。之后就开始用Qt编写ARM的程序,花了两天的时间终于编写好了ARM的c+程序,在编译通过之后。就开始在虚拟机中运行测试,之后到实验室将虚拟机与ARM实验箱通过串口连接起来。在ARM实验箱的显示屏上验证倒计时秒表功能与实训要求是否相符合,即将Qt写好的程序先拷贝到虚拟机下运行,再通过Qt的嵌入式开发工具链编译链接生成实验箱可以执行的文件,将这个可执行文件拷贝到实验箱与虚拟机共享目录下运行,在实验箱上观察秒表倒计时显示是否与题目要求099倒计时相符合,同时验证报警指示功能是否与实训要求相符合,接着就是测试四个功能的作用是否是题目要求相匹配,我首先按下暂停/运行按键,观察秒表到时候是否可以正常运行,再在暂停状态下按下秒表复位,验证秒表是否可以实现复位功能,在接着在此状态下验证加计时和减计时的功
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1