当前位置:文档之家› MATLAB教室人数统计(源码和GUI)

MATLAB教室人数统计(源码和GUI)

MATLAB教室人数统计(源码和GUI)
MATLAB教室人数统计(源码和GUI)

一、课题介绍

该课题为基于MATLAB的教室人数统计,带有丰富的人机交互GUI界面。实现教室人数的计数统计,进而统计出勤率,上课认真听讲的比例。原先预设总人数,未出勤或者书本遮住脸部、趴着玩手机等必然无法采集到人脸,从而对应数量缺失,得出出勤率或听讲率。该课题采用肤色原理进行人脸定位和人脸分割。本课题中,为了界面GUI的美观,刻意将分割出的人脸单独显示在GUI对应的axes里。是个不错的毕业设计选题。

二、基本流程

读入图片(或调用笔记本自带摄像头),灰度处理,转YcbCr,二值化,人脸区域定位,计数

三、实现步骤

1、进行调用笔记本摄像头,代码如下:

vid=videoinput('winvideo',1);

set(vid,'ReturnedColorSpace','rgb');

preview(vid);

2、采集帧图像

I = getsnapshot(vid);

axes(handles.axes1);

imshow(I)

3、人脸检测

if size(img1, 3) == 1 % 灰度图像,插入白色或黑色框

if mean(img1(:)) > 128 % 图像较亮,使用黑框

shapeInserter = vision.ShapeInserter();

else % 图像较暗,使用白框

shapeInserter = vision.ShapeInserter('BorderColor','White');

end

else % 彩色图像,插入红色框

shapeInserter = vision.ShapeInserter('BorderColor','Custom','CustomBorderColor',[255 0 0]);

end;

% 绘制边框以圈出结果

img1 = step(shapeInserter, img1, int32(bboxes));

axes(handles.axes2); %用axes命令设定当前操作的坐标轴是axes_src

imshow(img1);

title('框出人脸区域')

4、人脸计数

for i = 1:size(intbbox, 1)%取列数

xs = intbbox(i, 1);

xe = xs + intbbox(3,i);

ys = intbbox(i, 2);

ye = ys + intbbox(i,4);

end

sum=mat2str(i)

最终实现结果如下所示

---------------------

四、运行截图

GUI界面设计图

运行效果图

Matlab GUI编程教程

Matlab GUI编程教程 介绍 什么是GUI呢 ? GUI是Graphical User Interface 图形用户界面的意思,象很多高级编程语言一样,Matlab也有图形用户界面开发环境,随着计算机技术的飞速发展,人与计算机的通信方式也发生的很大的变化,从原来的命令行通讯方式(例如很早的DOS系统)变化到了现在的图形界面下的交互方式,而现在绝大多数的应用程序都是在图形化用户界面下运行的。 记得读书的时候,大学开学不久,学校很多同学就开始报考全国计算机等级考试了,当然我也是其中的一分子,其中C语言是大多数人选择的科目,当时在学C 语言的时候,经常也会遇到人机交互的例子,譬如一个计算两个数相加的程序,运行程序后便切换到了Dos模式,然后在此模式下输入两个数,再回车,才能返回运算结果。当时就觉得很不方便,也不友好,后来才得知C语言是面向过程的语言,是非面向对象的语言(VC++,VB,Matlab等是面向对象的)。那么下面我们就来看看Matlab是如何简单、快速而友好地解决这类问题的吧。 Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:File/New/GUI 如下图所示; 选择Blank GUI(Default)

2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下图所示; 布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。 3.我们先为数据1文本框添加代码; 点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。 function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

MATLAB教室人数统计(源码和GUI)

一、课题介绍 该课题为基于MATLAB的教室人数统计,带有丰富的人机交互GUI界面。实现教室人数的计数统计,进而统计出勤率,上课认真听讲的比例。原先预设总人数,未出勤或者书本遮住脸部、趴着玩手机等必然无法采集到人脸,从而对应数量缺失,得出出勤率或听讲率。该课题采用肤色原理进行人脸定位和人脸分割。本课题中,为了界面GUI的美观,刻意将分割出的人脸单独显示在GUI对应的axes里。是个不错的毕业设计选题。 二、基本流程 读入图片(或调用笔记本自带摄像头),灰度处理,转YcbCr,二值化,人脸区域定位,计数 三、实现步骤 1、进行调用笔记本摄像头,代码如下: vid=videoinput('winvideo',1); set(vid,'ReturnedColorSpace','rgb'); preview(vid); 2、采集帧图像 I = getsnapshot(vid); axes(handles.axes1); imshow(I) 3、人脸检测 if size(img1, 3) == 1 % 灰度图像,插入白色或黑色框 if mean(img1(:)) > 128 % 图像较亮,使用黑框 shapeInserter = vision.ShapeInserter(); else % 图像较暗,使用白框 shapeInserter = vision.ShapeInserter('BorderColor','White'); end else % 彩色图像,插入红色框 shapeInserter = vision.ShapeInserter('BorderColor','Custom','CustomBorderColor',[255 0 0]); end; % 绘制边框以圈出结果 img1 = step(shapeInserter, img1, int32(bboxes)); axes(handles.axes2); %用axes命令设定当前操作的坐标轴是axes_src imshow(img1); title('框出人脸区域') 4、人脸计数 for i = 1:size(intbbox, 1)%取列数 xs = intbbox(i, 1); xe = xs + intbbox(3,i); ys = intbbox(i, 2); ye = ys + intbbox(i,4);

教室人数统计系统,单片机课程设计

微机原理与接口技术 课程设计说明书课程名称:微机原理与接口技术综合实验 设计题目:教室人数统计系统(第68组) 院系:机械与电子控制工程学院 班级: 设计者: 指导教师: 实验设计时间:

机电学院《微机原理与接口技术》课程设计任务书 设计要求:扩展两个光电传感器和一块8*8点阵LED显示器,控制系统需要实现: 1.检测教室里的人数。并在8*8点阵LED显示器显示出来; 2.设置一个按键实现复位清零。 3.用发光二极管模拟电灯,当教室有人时,发光二极管发光,无人时发 光二极管不发光。 4. 工作计划安排: 在初期大体上我们组细化为五个部分 1.对硬件器材的学习与认识 2.硬件电路板的焊接 3.程序设计与调试 4.系统软硬件知识的综合学习与研究 5.试验总结及实验报告的书写 我组组员工作的具体分工如下 卢航:主程序设计与过程调试 张沈汇:显示程序设计与过程调试 李明华、森达:辅助程序设计及过程调试 金晓东、郑斌:实验报告的撰写及程序设计调试 在本次实验中,我组齐心协力,共同研究与学习,虽各有分工,但又互相帮助,互相学习。做到每一个人各有侧重点的同时,又对总体的每一步有所参与,对总体的设计与调试都有所掌握。

目录 一,系统基本功能和实施方案(第4页) 二,设计思路及硬件部分(第4-8页) 三,程序流程图(第9-11页) 四,系统制作过程及结果(第11-12页) 五,调试程序(第12-15页) 六,心得体会(第15-16页) 七,参考文献

一、系统基本功能和实施方案 1、设计目的: 如果在进自习室前就能知道教室里有多少人,是否满员,而不用推门进去才知道,将会节省自习同学的很多时间,同时也节省管理人员的很多时间,带来很大的方便,不会更多的影响自习的同学。因此我们小组选择了设计这个教室人数统计系统,利用51单片机系统和两个光电对管器件统计教室进出的人数,最后把教师当前人数显示在一个8*8LED显示器上,方便想要自习的同学选择教室,以及管理人员的管理工作。 2、基本功能的实施方案: 模拟教室人员的进出,在出入口安装两个光电对管GK102,分别G1和G2;一块8*8LED显示教室目前人数;一个发光二极管显示教室人数是否为零;还有一个复位按键显示器清零。当有人进去时,先响应G1,后响应G2,此时将人数加一并显示出来;当有人出去时,先响应G2,后响应G1,此时将人数减一并显示出来。如果人数为零则发光二极管熄灭。如检测到复位按键按下则熄灭发光二极管,同时将人数变成零并显示出来。 二、1)设计思路 本程序分主程序、两中断程序、显示子程序与延时子程序四部分。 各部分功能如下: 1、主程序: 主程序完成相应存储单元和标志位的清零、8155的设置、开机界面显示、中断设置、对按键按下方式的检测和处理等工作。 按键按下方式及系统相应完成的功能如下: 系统起始功能:显示教室中人数并根据人数控制发光二极管亮灭。 2、中断程序: 两中断程序分别对人数增减标志位(R0)进行赋1和-1的操作。两中断响应先后决定对人数增减标志位(R2)进行赋1还是-1。具体实现方式为:在一个中断程序中加入对另一中断是否响应的判断。如另一中断没有响应,则进行赋1或-1的操作。 3、显示子程序: 显示子程序采用定行值,扫描列值的方法。具体见8*8LED原理的介绍。4、延时子程序:(一个) 本程序中有两个延时子程序,分别完成2ms的延时。 以上各部分程序的具体实现方式见程序流程图和源程序。 2)硬件部分 系统电路原理图:

一个简单的Matlab_GUI编程实例

Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下

图所示; 布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。 1. 2. 3.function edit1_Callback(hObject, eventdata, handles) 4.% hObject handle to edit1 (see GCBO) 5.% eventdata reserved - to be defined in a future version of MATLAB

6.% handles structure with handles and user data (see GUIDATA) 7.% Hints: get(hObject,'String') returns contents of edit1 as text 8.% str2double(get(hObject,'String')) returns contents of edit1 as a double 复制代码 然后在上面这段代码的下面插入如下代码: 1. 2.%以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字,则现实空白内容input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0if (isempty(input)) set(hObject,'String','0')endguidata(hObject, handles); 复制代码 这段代码使得输入被严格限制,我们不能试图输入一个非数字。 4.为edit2_Callback添加同样一段代码 5 现在我们为计算按钮添加代码来实现把数据1和数据2相加的目的。 用3中同样的方法在m文件中找到pushbutton1_Callback代码段 如下; 1.function pushbutton1_Callback(hObject, eventdata, handles) 2.% hObject handle to pushbutton1 (see GCBO) 3.% eventdata reserved - to be defined in a future version of MATLAB 4.% handles structure with handles and user data (see GUIDATA) 复制代码

教室人数自动计数装置

目录 第1章绪论 (1) 1.1设计背景 (1) 1.2设计内容及解决问题 (1) 第2章系统方案设计 (2) 2.1设计任务及要求 (2) 2.2系统设计思路 (2) 2.3光电传感器简介 (2) 2.4方案1设计 (3) 2.5方案2设计 (3) 2.6方案论证 (4) 2.7系统总体框图及原理 (4) 第3章硬件电路设计 (5) 3.1单片机最小系统设计 (5) 3.2键盘显示模块设计 (5) 3.3电源电路设计 (6) 3.4外部检测设备设计 (6) 3.5显示模块设计 (7) 第4章系统软件设计 (8) 第5章设计总结 (13) 参考文献 (14) 附录Ⅰ基本使用器件 (15) 附录Ⅱ芯片型号 (16)

摘要 近来在主要的大城市还有一些规模较大的学校中,人口流动量非常大,在一定程度上给生活带来不便。本文主要介绍了教室人数自动计数装置的工作原理,在对各种计数方法进行分析后提出了基于光电传感器和单片机系统的计数测量控制装置,并给出了智能计数器控制的硬件电路设计、软件电路设计和系统程序流程图。本文详细分析了系统的组成及工作原理,给出了系统各个硬件、软件的设计方法。该计数系统安装方便,维护简单,工作稳定,运行可靠,对于学校、商场、会议室等人员流动很大的公共场所有很高的使用价值,方便对于人员流动的管理及配送、具有很高的使用价值和经济价值。 关键词:单片机;光电传感器;智能计数器

第1章绪论 1.1 设计背景 在学校等人员流动较大的地方,如果对人数的变动没有有效的管理和控制,那么对工作和学习的效率是有害的。如何对于人员流动进行实时的、有效的、精确的计数成为学校等场所十分关注的问题,因此设计一款实用有效的人数计数器是很必要的。 电子计数器是一种多功能的电子测量仪器,至今已有30多年的发展历史。早期设计师们追求的目标主要是扩展计数范围,提高计数精度、稳定度等,这些也是衡量一款计数器的主要指标。目前这些计数日趋完善,现代的应用技术可以让计数器的范围扩展到无限大。当今,单片机技术迅速发展,基于单片机技术开发的计数设备也广泛应用到各个领域。单片机以体积小、功能强、可靠性高、性价比高等特点,已成为实现现代工业生产技术进步和开发机电一体化智能测控产品的重要手段。如今的自动计数器大多采用非接触式的计数触发方式,早已开发出多种型号的专用检测芯片,利用MCS51系列的单片机作为控制核心的计数器成为了计数应用领域的潮流。 1.2 设计内容及解决问题 如何构成检测电路、MCS51系列单片机用何种方式对外部计数脉冲进行计数显示控制、LED显示模块的选择、单片机的扩展、提高单片机抗干扰能力和系统的稳定性。

Matlab gui新手入门指南

1、从最简单的开始 编程最基本的目的就是——我执行一个操作,程序做出一个反应。 “一个操作”包括:点击鼠标,拖动滑块,填写数据,选择选项…… “做出一个反应”包括:计算一些东西,然后储存在哪里,或者贴个图出来,或者显示在哪里…… -------------------------------------------------------------------------------------------------------------------编程的基本思想: 目的->当点击按钮A时,然后执行任务C, 则->进入按钮A的回调函数callback里,写下任务C的代码。 -------------------------------------------------------------------------------------------------------------------a:不知道callback在哪??右键单击按钮,view callbacks->选择callback)别的控件也一样。 a:不同的回调函数啥意思?? callBack 最常用的就是它。如果控件是按钮,那点击按钮时,则按钮下的Callback就会执行;如果是滑块,则拖动滑块时,滑块名下的callback就会执行;总之,就是对控件默认操作时,matlab后台就会自动调用它名下的的callback。正常用途,全放在callback下就够了。如果其他的,实在是想知道,了解一下也未尝不可。 ButtonDownFcn 就是鼠标在它(代指各种控件)上面点击一下,你放在这个函数名下的代码就会执行。(ps:按钮的callback也是点击,所以会覆盖掉这个buttondownfcn。) CreateFcn 顾名思义,在生成这个控件,显示之前,执行你放在这个函数名下的代码; DeleteFcn 一样。在控件要销毁,但是被毁灭之前执行这个函数名下的代码。貌似“真的要退出吗”这一类就是写在这里。 KeyPressFcn 当前控件获得焦点且有按键按下时执行。(什么是焦点?就是这个控件被鼠标点了(或者是tab轮选到了)。你打开一个记事本,然后再点这个网页,再随便按几个按键,记事本上有字不?没有对吧。因为它没获得焦点,所以你的按键它不会反应的。只有你最后再点它一下,再按几个按键,结果怎么样?有字了吧?)这里的KeyPressFcn也是一样的道理。 一般在这下面的代码还会判断下按键是什么,然后执行相应的代码。 ResizeFcn,SelectionChangeFcn不常用。也懒得去看了。附几句,控件都有Resize的属性,好像默认是不可调整,如果要用到这个函数,去把它打开先。 SelectionChangeFcn 是在群按钮组件中,改变选择时,所执行的函数。 哪些控件支持哪些回调函数?很简单,你在它上面右键就可以看到了,点进去就可以编辑了。 可以在property inspect中在需要的回调函数下设置%automatic就可以自动添加相应的回调函数框架。 2、常用控件代码框架参考 --------------------------------------------------------------------- Toggle Button的callback一般写法

基于80C51的简易人数统计器

基于8051的教室人数统计系统仿真研究报告 组员:王煜阳于宏建周勋雨 指导教师:赵建东 日期: 2011.6.10

内容摘要: 教室人数技术器系统设计,通过Proteus软件模拟教室人员的出入,当有同学进入时进行加计数,当有同学外出时进行减计数,并把现在教室人数通过LED 显示出来。通过这个程序,教室可以很好的了解教室内的学生人数,既方便了学生的人数统计,同时也方便了老师的教学进展。次系统硬件电路简单,程序简单易懂,照此思想,通过利用红外光敏开关作为外部脉冲,可实际设计出应用系统。 关键词: 单片机8051 89C51 8155 人数统计 LED显示光敏二极管传感器

目录 1.目的和意义 (4) 1.1设计目的及意义 (4) 1.2设计内容 (4) 1.3设计要求 (4) 2.硬件电路设计 (4) 2.1设计思路 (4) 2.2单片机电路如图: (5) 2.3光敏二极管传感器(程序中利用开关了进行仿真) (6) 3.软件电路设计 (7) 3.1工作原理 (7) 3.2程序流程图: (7) 3.2.1程序主流程图: (7) 3.2.2 加法流程图: (8) 3.3汇编程序 (9) 4.电路调试 (12) 5.参考文献: (13) 6.结题感想 (13)

4 | 1.目的和意义 1.1设计目的及意义 教室人数统计对于一些人数比较大的课堂一直是个比较困难的问题。于是,基于单片机80C51我们设计了一个教室人数自动统计系统。通过本次课程设计加深了对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。掌握外部中断和LED 显示的设置以及相应的传感器原理。通过此次课程设计能够将单片机软件结合起来,对程序进行编辑,校验。 1.2设计内容 设计教室人数统计系统,人员进入时系统进行加计数,人员离开时系统进行减计数并能够通过LED 实时显示教室内的人数。 1.3设计要求 统计出教室内上课人数并能够通过LED 显示出来。 2.硬件电路设计 2.1设计思路 教室前门不开,只通后门。测量系统硬件框图如图1所示。利用两个光敏二极管传感器,当有人从后门进出的时候,将产生电压脉冲,再利用单片机的外部中断功能进加减计数,最终显示出教室中的实际人数。 我们小组在设计电路上参考了所学教材上P195页的知识内容,设计了利用89C51通过8155及74LS138扩展4只共阴极LED 数码管的接口电路,并结合了所查的资料进行了光敏二极管的理论研究(开关中以开关替代)。图中8155的B 扣和所有LED 的a~h 引线相连,故B 口为字形扣;各LED 的位选线和8155的C 口相连,故C 口为字位口。8155的端口地址如下:2100H _命令/状态口 2101H_A 口 2102H_B 口 2103H_ C 口

matlab中gui教程

11 图形用户界面(GUI )制作 用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。如键盘、鼠标、跟踪球、话筒都可成为与计算机交换信息的接口。 图形用户界面(Graphical User Interfaces ,GUI )则是由窗口、光标、按键、菜单、文字说明等对象(Objects )构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。 假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑GUI 的制作。但是如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。 MATLAB 为表现其基本功能而设计的演示程序demo 是使用图形界面的最好范例。MATLAB 的用户,在指令窗中运行demo 打开那图形界面后,只要用鼠标进行选择和点击,就可浏览那丰富多彩的内容。 即便比较熟悉MATLAB 的读者,在他初次编写GUI 程序时,也会感到棘手。为使读者获得制作自己GUI 的体验,本章“入门”节提供了一个简单的示例。读者只要输入所提供的程序,就可引出相应的界面。 本章第2节叙述图形用户界面的设计原则和一般制作步骤。第3、4节分别介绍用户菜单、用户控件的制作。出于“由浅入深”的考虑,前4节制作GUI 是通过M 脚本文件实现的。利用M 函数文件制作GUI ,需要解决数据传递问题,为此专设第5节给予阐述和示例。MATLAB 5.x 版为方便用户制作图形界面,提供了一个交互式的设计工具guide 。关于该工具的使用方法,被放在第6节中,以一个综合例题为设计目标逐步展开。 在此提醒读者,假如要比较准确的理解本章程序和掌握本章内容,请先阅读第10章关于图柄的内容。 11.1 入门 【*例11.1-1】对于传递函数为1 212++=s s G ζ的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面。本例演示:(A )图形界面的大致生成过程;(B )静态文本和编辑框的生成;(C )坐标方格控制键的形成;(D )如何使用该界面。 (1)产生图形窗和轴位框: clf reset H=axes('unit','normalized','position',[0,0,1,1],'visible','off'); set(gcf,'currentaxes',H); str='\fontname{隶书}归一化二阶系统的阶跃响应曲线'; text(0.12,0.93,str,'fontsize',13); h_fig=get(H,'parent'); set(h_fig,'unit','normalized','position',[0.1,0.2,0.7,0.4]); h_axes=axes('parent',h_fig,... 'unit','normalized','position',[0.1,0.15,0.55,0.7],... 'xlim',[0 15],'ylim',[0 1.8],'fontsize',8);

基于单片机统计教室人数系统设计

微机原理与接口技术 课程设计说明书 课程名称:微机原理与接口技术综合实验 设计题目:教室人数统计系统 院系:机械与电子控制工程学院 班级:机电1011班机电1012班 设计者: 周子航(10223058)韩振洋(10223036)尤兴权(10223024)狄长路(10223034) 龚军建(10223035)姚雪阳(10223053)设计时间:2012 年6月25日至2012年7月4号

机电学院《微机原理与接口技术》课程设计任务书 ●设计要求:扩展两个光电传感器和一块8*8点阵LED显示器 ●控制系统需要实现: 1.检测教室里的人数。并在8*8点阵LED显示器显示出来; 2.设置一个按键实现复位清零。 3.用发光二极管模拟电灯,当教室有人时,发光二极管发光, 无人时发光二极管不发光。 注:我们组作品的扩展功能: 1、当教室内人数超过十人时,8*8点阵LED显示器显示 “OK”; 2、早退报警功能; 3、上课倒计时50分钟功能; 4、开机显示“BJTU”功能。 ●工作计划安排: 在初期大体上我们组细化为五个部分 1.对硬件器材的学习与认识 2.仿真程序的大致框架

3.程序设计与调试 4.系统软硬件知识的综合学习与研究 5.试验总结及实验报告的书写 我组组员工作的具体分工如下 周子航、韩振洋:主程序设计与仿真调试 龚军建、尤兴权:辅助程序设计及会议记录 狄长路、姚雪阳:实验报告的前期撰写及过程调试 在本次实验中,我组齐心协力,共同研究与学习,虽各有分工,但又互相帮助,互相学习。做到每一个人各有侧重点的同时,又对总体的每一步有所参与,对总体的设计与调试都有所掌握。

matlab gui教程

什么是GUI呢? GUI是Graphical User Interface 图形用户界面的意思,象很多高级编程语言一样,Matlab也有图形用户界面开发环境,随着计算机技术的飞速发展,人与计算机的通信方式也发生的很大的变化,从原来的命令行通讯方式(例如很早的DOS系统)变化到了现在的图形界面下的交互方式,而现在绝大多数的应用程序都是在图形化用户界面下运行的。 记得读书的时候,大学开学不久,学校很多同学就开始报考全国计算机等级考试了,当然我也是其中的一分子,其中C语言是大多数人选择的科目,当时在学C语言的时候,经常也会遇到人机交互的例子,譬如一个计算两个数相加的程序,运行程序后便切换到了Dos模式,然后在此模式下输入两个数,再回车,才能返回运算结果。当时就觉得很不方便,也不友好,后来才得知C语言是面向过程的语言,是非面向对象的语言(VC++,VB,Matlab等是面向对象的)。那么下面我们就来看看Matlab是如何简单、快速而友好地解决这类问题的吧。 Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:File/New/GUI 如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下图所示;

布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double 然后在上面这段代码的下面插入如下代码: %以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字, 则现实空白内容 input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0 if(isempty(input)) set(hObject,'String','0')

一个实例搞定MATLAB界面编程(最好的matlab gui界面编程入门教程)

一个实例搞定MATLAB界面编程 作者:彭军 邮件:pjun9@https://www.doczj.com/doc/0112396572.html, 博客:https://www.doczj.com/doc/0112396572.html,/pengjun 下面请跟我一步一步做一个图像处理的程序,如果您坚持做完这个实例,我想MATLAB界面编程对您而言,就没有什么难度了。当然,我这里说的是,您首先要有一定的MATLAB 编程基础。还有,我的MATLAB版本是2008a。在2008a以前的版本中没有工具栏编辑器,如果需要工具栏要手动写程序,这个我就不多讲了。好了,废话少说,跟我来吧! 在MATLAB的命令窗口(Command Window)中运行guide命令,来打开GUIDE界面,如下: 然后,选择空模板(Blang GUI),点击OK,即可打开GUIDE的设计界面,如下:

点击工具栏上的菜单编辑器(Menu Editor),打开菜单编辑器,如下: 在Menu Bar中新建一个菜单项,名字为“文件”,其他设置请看下图: 在“文件”菜单下添加菜单项:“打开”,“保存”,“退出”。见下图:

如果需要在菜单项“退出”上面添加一个分割线的话,选中“Separator above this item”就行了。

保存我的界面为pjimage.fig.保存完毕之后,会自动打开pjimage.m文件,而我们所有的程序都是要写在这个M文件里面的。在编程中,我们的每一个鼠标动作都对应一个Callback 函数。那么我们的菜单项也是如此的。 在界面上,单击鼠标右键选择“Property Inspector”,即可打开属性窗口。当我们点击不同的控件时,其对应的属性都会在这里显示,我们可以进行修改。最主要的属性莫过于Tag属性和String属性。 设置当前Figure窗口的Tag属性为:figure_pjimage,窗口的标题(Name属性)为:图像处理实例。如下: 然后,点击工具栏的保存按钮。之后,点击工具栏的运行按钮(Run Figure)。注意,工具栏的图标都会有提示的,像运行按钮的提示就是Run Figure.我们会看到如下的界面: 那说明,我们保存的.fig文件的目录不是当前目录,但是没关系啊,我们只要点击“Change Directory”来改变当前目录。当然,如果你想把当前目录添加到MATLAB路径也可以,那就点击“Add to Path”就OK了。我在这里推荐点击“Change Directory”,因为没有什么太大必要把其添加到MATLAB路径中,一般是工具箱需要添加或者我们的函数或程序写完了,而在MATLAB的命令窗口找不到我们的函数的时候,我们可以将函数或程序所在的目录添加到MATLAB路径。 总之吧,点那个按钮,要看个人的爱好了。不管点击两个按钮的那一个按钮,都会正确的运行程序的。 我们的程序运行时的样子,是这样的:

经典GUI基础入门:MATLAB中GUI用户图形界面学习

GUI指导教程系列(1):GUI入门基本操作 为什么在MATLAB中要使用GUI呢?其实GUI就是Matlab中的Visual Basic,是面向对象的编程,可以使Matlab程序的终端用户,即使不懂的Matlab也可以轻易操作该程序! 如果没有图形用户界面(GUI)我们只能从命令行(Command Window)中调用相关程序,这相对比较繁琐,并且不是所有用户都是这个能力。就好比计算机的DOS 系统,在有windows的情况下,您会选择DOS吗?当然我们也不排除骨灰级的人物! 在本节教程我们主要针对没有GUI创建和使用经历的网友,但是必要的MATLAB 基础知识是需要的。在教程中我们将创建一个简单的GUI程序,它执行两个数的加法运行,然后显示其运算结果。 好下面开始我们的教程! 一、打开和创建GUI界面 1、首先打开Matlab,在Command Window中输入guide回车 2、此时打开GUI编辑器GUIDE(GUI Developer的缩写) 2.1 界面上有两个标签也“Creat New GUI”和“Open Existing GUI” 如果创建新的GUI此时我们选择第一个标签页,但如果打开其它已经存在的GUI 就点击第二个标签吧

2.2 这里我们选择第一个标签下的“Blank GUI”(空白GUI),下面还有几个系统GUI模版,你可以根据需要选择其它的。 2.3 点击“OK”我们正式进入GUIDE界面,呵呵,是不是感觉似曾相识 3、添加你需要的控件到figure中 在添加控件之前,您最好对您的GUI界面布局已经有一定的构思了,否则盲目性太大了不利于您的编程。下面是我们构思的布局。

MATLAB+GUI入门实例

1.首先我们新建一个GUI文件:File/New/GUI 如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下图所示;

布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。 3.我们先为数据1文本框添加代码; 点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,’String’) returns contents of edit1 as text % str2double(get(hObject,’String’)) returns contents of edit1 as a

double 然后在上面这段代码的下面插入如下代码: %以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字,则现实空白内容input= str2num(get(hObject,’String‘)); %检查输入是否为空. 如果为空,则默认显示为0 if(isempty(input)) set(hObject,’String‘,’0‘) end guidata(hObject, handles); 这段代码使得输入被严格限制,我们不能试图输入一个非数字。 4.为edit2_Callback添加同样一段代码 5 现在我们为计算按钮添加代码来实现把数据1和数据2相加的目的。 用3中同样的方法在m文件中找到pushbutton1_Callback代码段如下; function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) 在上面这段代码后添加以下代码; a = get(handles.edit1,’String‘); b = get(handles.edit12,’String‘); % a and b are variables of Strings type, and need to be converted % to variables of Number type before they can be added together total = str2num(a) + str2num(b);

教室人数统计

目录 1.目的和意义 (1) 1.1设计目的及意义 (1) 1.2设计内容 (1) 1.3设计要求 (1) 2.硬件电路设计 (1) 2.1设计思路 (1) 2.2单片机电路如图 (2) 2.3光敏二极管传感器 (2) 3.软件电路设计 (2) 3.1工作原理 (3) 3.2程序流程图 (4) 3.2.1程序主流程图 (4) 3.2.2 加法流程图 (5) 3.2.3 减法流程图 (5) 3.3汇编程序 (6) 4.电路调试 (9) 5.仿真结果 (10) 6.实验感想 (10) 7.参考文献 (11)

1.目的和意义 1.1设计目的及意义 教室人数统计对于一些人数比较大的课堂一直是个比较困难的问题。于是,基于单片机89C51我们设计了一个教室人数自动统计系统。通过本次课程设计加深了对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。掌握外部中断和LED显示的设置以及相应的传感器原理。通过此次课程设计能够将单片机软件结合起来,对程序进行编辑,校验。 1.2设计内容 设计教室人数统计系统,人员进入时系统进行加计数,人员离开时系统进行减计数并能够通过LED实时显示教室内的人数。 1.3设计要求 统计出教室内上课人数并能够通过LED显示出来。 2.硬件电路设计 2.1设计思路 教室前门不开,只通后门。利用两个光敏二极管传感器,当有人从后门进出的时候,将产生电压脉冲,再利用单片机的外部中断功能进加减计数,最终显示出教室中的实际人数。 设计电路利用89C51通过8155及74LS138扩展4只共阴极LED数码管的接口电路,并结合了所查的资料进行了光敏二极管的理论研究(开关中以开关替代)。图中8155的B扣和所有LED的a~h引线相连,故B口为字形扣;各LED的位选线和8155的C口相连,故C口为字

matlabgui初学者教程

什么是GUI呢? GUI是Graphical User Inteface 图形用户界面的意思。象很多高级编程 语言一样。Matlab也有图形用户界面开发环境。随着计算机技术的飞速发展。人与计算机 的通信方式也发生的很大的变化。从原来的命令行通讯方式(例如很早的DOS系统)变化到 了现在的图形界面下的交互方式。而现在绝大多数的应用程序都是在图形化用户界面下运行 的。 记得读书的时候。大学开学不久。学校很多同学就开始报考全国计算机等级考试了。当然我也是其中的一分子。其中C语言是大多数人选择的科目。当时在学C语言的时候。经常也会遇到人机交互的例子。譬如一个计算两个数相加的程序。运行程序后便切换到了Dos模式。然后在此模式下输入两个数。再回车。才能返回运算结果。当时就觉得很不方便。也不友好。后来才得知C语言是面向过程的语言。是非面向对象的语言(VC++,VB,Matlab等是面向对象的)。那么下面我们就来看看Matlab是如何简单、快速而友好地解决这类问题的吧。 Matlab GUI编程教程(适用于初学者)1首先我们新建一个GUI文件:File/New/GUI如下图所示; 选择Blank GUI(Default) 2?进入GUI开发环境以后添加两个编辑文本框。6个静态文本框。和一个按钮。布置如下 图所示;

布置好各控件以后。我们就可以来为这些控件编写程序来实现两数相加的功能了。 3 ?我们先为数据1文本框添加代码; 点击上图所示红色方框。选择edit1_Callback 。光标便立刻移到下面这段代码的位置。function edit1_Callback(hObject, eve ntdata, han dies) % hObject han dle to editl (see GCBO) % even tdata reserved - to be defi ned in a future version of MATLAB % han dles structure with han dles and user data (see GUIDATA) % Hin ts: get(hObject,'Stri ng') retur ns contents of editl as text % str2double(get(hObject,'Stri ng')) retur ns contents of editl as a double 然后在上面这段代码的下面插入如下代码: 9以字符串的形式来存储数据文本框1的内容?如果字符串不是数字。 则现实空白内容 in put = str2 num ( get ( hObject,' Stri ng ')); %佥查输入是否为空?如果为空,则默认显示为0 if (isempty (input )) set (hObject,' String ',' 0') end guidata ( hObject, han dies );

基于单片机的教室人数统计

沈阳航空航天大学 课程设计 (论文) 题目教室人数统计系统的设计 班级 学号 学生姓名 指导教师

沈阳航空航天大学 课程设计任务书 课程名称专业综合课程设计 院(系)自动化学院专业测控技术与仪器 班级04070101 学号姓名 课程设计题目教室人数统计系统的设计 课程设计时间: 2013 年12 月30 日至2014 年1 月10日 课程设计的内容及要求: 1.设计一个教室人数统计系统,系统功能如下: ①采用单片机作为控制核心电路; ②由安装于门口的两个光电传感器用于识别进出教室的人数; ③采用二位数码管显示教室里的人数。 2.设计硬件电路原理图。 3.焊接硬件电路并进行调试。 4.软硬件结合调试,系统能脱离开发系统单独运行。

指导教师年月日 负责教师年月日 学生签字年月日 沈阳航空航天大学 课程设计成绩评定单 课程名称专业基础课程设计 院(系)自动化学院专业测控技术与仪器 课程设计题目教室人数统计系统的设计 学号姓名答辩日期年月日指导教师(答辩组)评语:

课程设计成绩 指导教师(答辩组)签字 年月日

目录 0 前言 (2) 1 总体方案设计 (2) 2 硬件电路设计 (3) 2.1 单片机系统 (3) 2.1.1 AT89C51性能 (3) 2.1.2 AT89C51各引脚功能 (3) 2.1.3复位电路设计 (5) 2.1.4 时钟电路设计 (5) 2.3 LED显示系统设计 (7) 2.3.1LED基本结构 (7) 2.3.2 LED译码方式 (7) 3 软件设计 (8) 3.1工作原理 (8) 3.2程序流程图: (9) 3.3 显示子程序 (9) 4 调试分析 (10) 参考文献 (11) 课设体会 (12) 附录1 电路原理图 (14) 附录2 程序清单 (15)

学校人员定位人数统计管理系统

学校人员定位人数统计管理系统

一、系统意义 1)无需刷卡,自动考勤。摒弃传统卡片贴近读卡器刷卡考勤,学生进出大门自 动化人数统计、考勤; 2)让老师和学生不感到受管束的感觉,享受VIP式的门禁进出享受。 3)加强学校人员定位人数管理,提高学校的安全防范水平,实时动态了解学生 的情况,确保学生在校人生安全。 二、系统架构及方案阐述 学校人员定位人数统计管理系统是上海仁微电子科技有限公司根据现实的学校管理需求,加强本学校人员区域人数的管理,采用双频半有源RFID技术来跟踪和记录每个人员在教室、图书馆、食堂等一些场所的进出情况,实现高效率的自动识别要求,统计在教室内、图书馆内、食堂内的人员人数。同时对学校的一些危险区域,进行定位报警。 2.1 门禁识别 进出识别示意图 每张RFID双频卡内都有一个标签ID号,当RFID卡出现在低频激活器感应天线唤醒区域时,感应卡被低频激活器天线不断发射的电磁波信号激活,佩戴在人身上的双频电子标签的低频芯片将实时解析出该激活器天线编号,同时检测出该低频信号的RSSI场强值,然后唤醒并传入标签,接着标签打开2.4G 无线射频芯片进行一次强信号发射(无线发射的数据包中含标签ID和激活器

天线编号以及低频场强RSSI值)。有效识别范围内的2.4G远距离读写器将收到该标签以2.4G频段发射的数据包,解析出该数据包中的标签ID号和激活器天线编号后以及RSSI值后立刻上传到上位机电脑,从而实现对RFID卡的识别。通过部署两组低频感应天线,实现人员进出自动识别和区域人数统计。 2.2 区域定位 人员区域定位示意图 在一些重点区域或者危险区域进行人员区域定位,一旦进入该区域进行人员定位并实现报警提示,同时结合视频监控功能,实现视频联动。采用低频激活器棒状天线,每根天线的激活区域为1m到10m距离可调,当人进入天线唤醒区域时,标签实时把标签身份ID与激活天线地址码ID发送出去,2.4G远距离读写器接收到后直接作为人员区域定位的数据依据。同时可以进行报警提示和视频联动分析。 三、案例介绍

相关主题
文本预览
相关文档 最新文档