《(20)--20嵌入式系统开发设计案例2.pdf》由会员分享,可在线阅读,更多相关《(20)--20嵌入式系统开发设计案例2.pdf(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、08 嵌入式系统开发 设计案例 8.1 嵌入式综合实例分析 目录 CONTENTS 8.2 系统设计 8.3 QT界面设计 8.3 QT界面设计-环境监测系统实例分析 设计背景 随着实际生活中,生活水平的提高,人们对环境越来越敏感。越来越多的智能家居、智能农业系统出现,改变了生活方式。而在环境因素中,最多的就是温度、湿度、光照、PM2.5等。本项目设计一个室内温湿度监测系统。8.3 QT界面设计-环境监测系统实例分析 设计背景 蜂鸣器 温湿度传感器 电机 CPU LCD触屏 8.3 QT界面设计-环境监测系统实例分析 项目流程 系统功能分析 硬件分析 8.3 QT界面设计-环境监测系统实例分析
2、 DHT11温度传感器电路图 8.3 QT界面设计-环境监测系统实例分析 DHT11时序图 18ms 20-40us 80us 80us 50us 26-28us 50us 70us 8.3 QT界面设计-环境监测系统实例分析 蜂鸣器电路图 8.3 QT界面设计-环境监测系统实例分析 直流电机电路图 8.3 QT界面设计-环境监测系统实例分析 项目流程 系统功能分析 嵌入式Linux系统搭建 应用程序编写 硬件分析 系统调试 Linux环境搭建 驱动程序设计 Linux操作系统移植 DHT11驱动设计:static struct file_operations cvt4418_dht11_fo
3、ps=.owner=THIS_MODULE,.release=dht11_sensor_release,.open=dht11_sensor_open,.read=dht11_sensor_read,;8.3 QT界面设计驱动程序设计.release=dht11_sensor_release,static int dht11_sensor_release(struct inode*inode,struct file*filp)module_put(THIS_MODULE);dht11_dev.lock=0;return 0;8.3 QT界面设计驱动程序设计.open=dht11_sensor_
4、open,static int dht11_sensor_open(struct inode*inode,struct file*filp)if(dht11_dev.lock)return-EBUSY;try_module_get(THIS_MODULE);dht11_dev.lock=1;return 0;8.3 QT界面设计驱动程序设计 8.3 QT界面设计驱动程序设计 主机发送主机发送开始信号开始信号 是否是否 成功成功 打印错误并返回打印错误并返回 否否 是是 记录开记录开始时间始时间 设置中断,设置中断,回调函数回调函数读取数据读取数据 延时后,延时后,清除中断清除中断 数据是数据是
5、否正确否正确 返回返回 否否 是是 格式化数据并复格式化数据并复制到用户空间制到用户空间 返回返回.read=dht11_sensor_read(struct file*filp,char _user*buffer,size_t count,loff_t*f_pos)8.3 QT界面设计驱动程序设计 主机发送主机发送开始信号开始信号 是否成是否成功?功?打印错误并返回打印错误并返回 是是 记录开记录开始时间始时间 设置中断,设置中断,回调函数回调函数读取数据读取数据 否否 static int dht11_reset(struct dht11_sensor_dev*dev)gpio_direc
6、tion_output(dev-pin,1);dev-write_bit(dev-pin,0);msleep(18);dev-write_bit(dev-pin,1);gpio_direction_input(dev-pin);dev-delay(20);return 0;if(!dht11_reset(&dht11_dev)do_gettimeofday(&dht11_dev.lasttv);else printk(*%s():reset fail n,_func_);return-1;setup_interrupts();static int setup_interrupts(void)i
7、nt result;dht11_dev.irq=gpio_to_irq(dht11_dev.pin);result=request_irq(dht11_dev.irq,dht11_interrupt,IRQ_TYPE_EDGE_BOTH,DEVICE_NAME,(void*)&dht11_dev);switch(result).return 0;8.3 QT界面设计驱动程序设计 延时后,延时后,清除中断清除中断 数据是数据是否正确否正确?返回返回 否否 是是 格式化数据并复格式化数据并复制到用户空间制到用户空间 返回返回 msleep(20);clear_interrupts();static
8、 void clear_interrupts(void)free_irq(dht11_dev.irq,(void*)&dht11_dev);NX_GPIO_SetPullSelect(2,8,CFALSE);gpio_direction_output(dht11_dev.pin,1);if(tmp!=dev-value4)printk(KERN_INFO%s%d%dn,_func_,dev-value4,tmp);return 0;length=sprintf(str,%u%u%u%u%un,dht11_dev.value0.dht11_dev.value4);if(count=length)
9、int r=copy_to_user(buffer,str,length);return r?r:length;static int dht11_checksum(struct dht11_sensor_dev*dev)char tmp=0;tmp=dev-value0+dev-value1+dev-value2+dev-value3;if(tmp!=dev-value4)printk(KERN_INFO%s%d%dn,_func_,dev-value4,tmp);return 0;return 1;QT是一个夸平台的C+图形用户界面库,基于面向对象的设计思想,提供了信号(signal)与槽(
10、slot)的通信机制,具有可查询,可设计的属性,以及强大的事件和事件过滤器。8.3 QT界面设计QT概述 产生历叱:1991年 QT最早由奇趣科技公司开发。1996年 进入商业领域,是目前linux桌面KDE的基础。2008年 奇趣被诺基亚公司收购,成为诺基亚旗下的编程工具。2012年 QT被IT公司Digia收购。2014年 跨平台集成开发环境QT Creator 3.1.0发布,从此逐步实 现了对多平台支持。8.3 QT界面设计QT概述 支持平台:windows xp、7、8、10 Linux、FreeBSD Mac os Win CE 8.3 QT界面设计QT概述 成功案例:Linux桌
11、面环境KDE WPS Office Skype网络电话 Google Earth VLC播放器 .8.3 QT界面设计QT概述 QT安装:https:/download.qt.io/archive/qt/8.3 QT界面设计QT概述 8.3 QT界面设计QT概述 信号与槽(Signal&Slot)是 Qt 编程的基础,也是 Qt 的一大创新。当某个对象的状态发生变化时,该对象会触发一个信号。这个信号与另外一些对象的槽函数绑定,信号的触发将导致执行这些槽函数,这些槽函数进行对象状态变化的特殊处理,从而完成对象之间的通信。交通灯 车 信号 行驶 停止 发出信号的对象 发出的信号 接收信号的对象 被
12、调用的槽函数 8.3 QT界面设计QT概述 信号与槽的使用方法:1.在头文件里定义信号与槽。2.在.cpp里实现槽函数。3.在构造函数里连接。connect(sender,&QObject:destroyed,this,&MyObject:objectDestroyed);connect(sender,SIGNAL(destroyed(QObject*),this,SLOT(objectDestroyed(Qbject*);信号与槽的特性:1.一个信号可以触发多个槽函数。2.一个槽函数也可以连接多个信号。3.信号也可以连接信号。8.3 QT界面设计QT概述 QT Creator简介 8.3 Q
13、T界面设计QT概述 QT Creator简介 8.3 QT界面设计QT概述 QT Creator简介 8.3 QT界面设计QT概述 QT Creator简介 创建一个工程:1.Create project。2.Qt Widget Project。3.Qt Gui Application。4.输入工程名字,挃定工程保存位置。5.挃定目标文件。创建一个工程:6.选择基类,输入类名。7.完成。8.3 QT界面设计QT概述 8.3 QT界面设计-QT程序设计 创建工程 8.3 QT界面设计-QT程序设计 设计界面 8.3 QT界面设计-QT程序设计 头文件 8.3 QT界面设计-QT程序设计.cpp文件 8.3 QT界面设计-QT程序设计.cpp文件 8.3 QT界面设计-QT程序设计.cpp文件 8.3 QT界面设计-QT程序设计.cpp文件 8.3 QT界面设计-QT程序设计.cpp文件 8.3 QT界面设计-移植与调试 x86平台下发布:8.3 QT界面设计-移植与调试 8.3 QT界面设计-移植与调试 8.3 QT界面设计-移植与调试(5)启动NFS服务,挂载目标代码目录,目标代码传输到实验箱,观察实验现象。8.3 QT界面设计-移植与调试 温度或湿度大于上限 温度和湿度小于上限 共 同 学 习 共 同 进 步 加 油!