首页 智能电子计步器毕业论文

智能电子计步器毕业论文

举报
开通vip

智能电子计步器毕业论文 本 科 生 毕 业 论 文 设计题目: _ 智能电子计步器 __ 上海商学院 本科生毕业论文 论文题目: 智能电子计步器 学生姓名:_____ 胡黛娟_________ 学生学号: 07103040212 指导教师: 沙立仁 二级院系:__ 信息与计算机学院____ 专业班级: 072班 完成时间:____ _2011...

智能电子计步器毕业论文
本 科 生 毕 业 论 文 设计题目: _ 智能电子计步器 __ 上海商学院 本科生毕业论文 论文题目: 智能电子计步器 学生姓名:_____ 胡黛娟_________ 学生学号: 07103040212 指导教师: 沙立仁 二级院系:__ 信息与计算机学院____ 专业班级: 072班 完成时间:____ _2011年4月20日_______ 目 录 声明 II I PAGEREF _Toc5304 I PAGEREF _Toc5304 I摘 要 Abstract I PAGEREF _Toc1223 V 第1章 概述 1 1.1 课题背景 1 1.2 课题意义 1 第2章 系统分析与 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 比较 3 2.1 系统的功能分析 3 2.2 系统总体设计思路 3 2.3 方案论证与比较 4 2.3.1输入模块 4 2.3.2 显示模块 5 第3章 硬件设计及介绍 6 3.1 微处理器模块 6 3.1.1 外形和电路图符号 6 3.1.2 功能特点和组成 6 3.2 传感模块 8 3.3 显示模块 8 3.3.1 数码管类别 9 3.3.2 数码管引脚排列 10 3.4 元件清单及开发环境 10 3.4.1 元件清单 10 3.4.2 设计开发环境 11 3.5 硬件电路图设计及PCB印刷板 11 3.5.1 硬件总电路图 11 3.5.2 关键部分电路图 12 3.5.3 PCB 图 14 第4章 软件设计及调试 16 4.1总设计思路 16 4.2计步主程序设计 16 4.3调试检查 21 4.4硬件使用说明 21 第5章 总结 23 参考文献 24 致谢 24 上海商学院学位论文原创性声明 本人郑重声明: 本人所呈交的学位论文,系我个人在导师的指导下进行研究工作所取得的成果。除文中已特别加以标注和致谢的地方外,不包含其它个人或机构已经发表或撰写过的研究成果。对本研究做出贡献的其它个人和集体,均已在文中明确说明和致谢。本人充分意识到本声明的法律结果完全由本人承担。 学位论文作者签名:____ _ 日 期: 年 月 日 学位论文使用授权的声明 本人完全了解上海商学院有关保留和使用学位论文的规定,学校有权保留和向有关部门或机构送交本论文的复印件和电子版,允许论文被查阅和借阅。学校可以将本学位论文的全部或部分内容编入有关数据库,可以采用影印、缩印或其它复印手段保存和汇编本学位论文。 保密论文在解密后适用本声明。 论文作者签名:____ _ 论文导师签名:__ ___ 日 期: 年 月 日 摘 要 随着经济不断增长,在快节奏、高效率的现代社会中,人们深知身体健康很重要。在不良饮食习惯与工作压力下,不少人处于亚健康状态。事实证明坚持步行,就能达到锻炼的目的。计步器的出现满足了这类人的需求。计步器的主要功能是检测步数,通过步数和步幅可计算行走的路程,高级的计步器还可以计算人体消耗的热量。但这些计算的主要依据是步数的检测。 本次智能电子计步器设计主要的功能是通过传感器的感应使计步器计步数,扩展功能是计时和计算频率,也就是计走过步数所用的时间从而算出每分钟走多少步数。设计由震荡传感器和计数器两部分组成。计数部分采用单片机ET44M210开发调试并编入程序。传感部分使用自己制作的弹珠震荡模块来实现,既经济又实用。并且考虑到手工制作的会比较粗糙,可能在震荡过程中多计或少计步数,使计步不精确。为了解决这个问题特别加入防抖动的部分,使其检测更精准。 论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点说明了系统的设计思路和详细设计过程。 关键词:震荡传感器 ET44M210单片机 计步器 Abstract With the economy growing in a fast paced, high efficiency, the modern society, people know that health is very important. In unhealthy eating habits and working pressure, many people of sub-health state.In the Facts walk can achieve the purpose of the exercise. Pedometer satisfied the demand for this kind of person. The main function is to test pedometer quantity .Through the steps and stride can calculate the distance. Senior pedometer can compute the human consumption quantity of heat. But these calculation steps is the main basis of detection. This intelligent electronic pedometer design main function is the induction by sensors to project pedometer efficiency. Function expansion project is timing and calculation frequency. It is also plans to step time used past calculate how many steps per minute walk. Design by vibration sensor and counter . Count part adopts single-chip microcomputer ET44M210 development of commissioning and put into procedures. Sensing part using homemade marbles concussion module to realize by myself. It is economical and practical. Considering the hand-made will coarser. It may be in shock process much plan or less quantity, and make plan project step are not accurate. In order to solve this problem is especially to join the jitter part and make its detection more accurate. This paper mainly introduced the development background and subject to complete the functions and development process. Key illustrates the designing idea of the system and detailed design process. Keywords: shock sensor , ET44M210 microcontroller , pedometer 第1章 概述 1.1 课题背景 随着经济的不断发展,快节奏、高效率的现代社会中,健康的生活对我们而言越来越重要。当今生活的不良饮食习惯与工作压力双重考验下,人们的亚健康趋于严重,而对于繁忙工作的人群来说,锻炼只可以说是一种美好的向往。因此在交通工具已十分发达的今天,最容易被遗忘的健身 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是什么?是步行。下定决心,最容易坚持终生的健身方法是什么?也是步行。 根据有关资料显示步行对我们的身体健康起到了很大的作用 1. 步行能增强心脏功能使血管弹,减少血管破裂的可能性。 2. 步行能增强肌肉力量,强健腿足、筋骨,并能使关节灵活,促进人体血液循环和新陈代谢。 3. 步行可以增强消化腺的分泌功能,促进胃肠有规律的蠕动,增加食欲,对于防治高血压、糖尿病、肥胖症、 习惯性便秘等症都有良好的作用。 4. 在户外新鲜空气中步行,大脑思维活动变得清晰、灵活,可有效消除脑力疲劳,提高学习和工作效率。据有关专家测试,每周步行三次,每次一小时,连续坚持4个月者与不喜欢运动的人相比,前者反映敏锐,视觉与记忆力均占优势。 5. 步行可以保护环境,消除废气污染,对强健身体,提高身体免疫力,减少疾病,延年益寿也有积极的推动作用。 综上所述为了我们的能拥有一个健康年轻的身体,也为了不增加城市交通负担和环境污染,步行可以说是最明智的选择。 1.2 课题意义 俗话说“百练不如一走”,“步行是运动之王”。 科学家最新研究结果提示,如果一个人可以步行400米,折算一下是500步左右。这就说明他的身体状况至少能多活6年以上,而且走得越快,寿命就越长。 可能在很多人眼里看来, 步行与身体情况以及寿命没有直接性的联系,但根据多次调查发现,老年人能否在短时间内可以走完500步是一个重要的标志,并且间接关系着他们能不能抵御更大的疾病。美国匹兹堡大学医学院从事该研究的带头人艾恩·纽曼教授指出,那些无法走完500步的老年人,在将来的生活中,要比能走完500步的人更加具有面对严重疾病或死亡的危险。纽曼及其科研小组对2700位年龄介于70~79岁的老年人进行了测试,让他们完成步行任务,并且不带任何比赛奖励的性质。所有参于测试者都事先经过体检,证明其身体健康,他们也都表示走这点路一点也不费劲。但最终只有86%的人完成了比赛。科学家随后对所有的参与者进行了6年的跟踪研究。研究发现完成步行者与未完成者之间出现很大的不同。那些没有走完全程的人,在后来患上重病或死亡的危险非常大。完成步行所用时间也相当重要。那些虽然完成步行,但处在最慢的25%人群中的人,其死亡的危险程度明显比快行者高出3倍。 美国医学专家推荐了一个用走路自测健康状况的公式:如果你能在10分钟内走完1000步,说明健康状况良好;如果能在20分钟内走完2000步,说明健康状况优秀;而如果能在30分钟内走完3000步,那么你的身体状况与一个青壮年小伙子一样棒。 正因为步行对健康起到如此重要的作用,而又需要比较合理的测出行走的步数,一个小巧方便的计步器是不可或缺的。它是一种健康电子产品,顾名思义就是在你走步的时候帮你计算一共走了多少步,是一个既经济又科学的小工具。计步器可以帮我们完成每天走步计数目标。 总的来说,计步器的开发研制对健康生活极其关键。它不仅仅是一个计数的机器,更是一个督促运动,与健康密切联系的必需品。 第2章 系统分析与方案比较 2.1 系统的功能分析 1. 基本功能: 根据所学的知识,设计一个计步器,要求自行设计供电电源,该计步器能够实现计步功能。即加1计数器:步数最大值为99999。 2. 扩展功能: (1)记录本次健身时间:时间单位为分钟。 (2)能够计算和显示平均速率:每分钟走的步数。 2.2 系统总体设计思路 计步器由控制器模块,输入模块,输出模块和电源模块组成。对仿真器进行编程,使单片机作为主控制设备对采集到的传感器信号进行处理,最后通过LED数码管显示输出。系统组成框图如图2.1所示。 图2.1系统方案框图 2.3 方案论证与比较 根据总体设计思路分别对输入模块和显示模块做出分析和比较。 2.3.1输入模块 方案一: 采用独立式按键作为输入模块,其特点是直接使用I/O口构成单个按键电路,接口电路配置较为灵活,按键识别和软件结构简单。但是当键数较多时,占用的I/O口较多,比较浪费资源,其原理图如图2.2所示: 图2.2 独立的功能按键 方案二: 采用矩阵式键盘作为输入电路,其特点是当键数越多时越节约I/O口,比较节省资源,但缺点是电路和软件结构稍稍繁琐。其原理图如图2.3所示 图2.3 4*4矩阵式键盘电路图 综上所述,本设计使用独立式按键作为计步器的计数按键。原因是这个计步器按键较少,仅需3个按键。若采用键盘输入为软件设计增加负担。并且考虑到本次设计中使用的I/O口不是很多,选择方案一是明智之举。 2.3.2 显示模块 方案一: 用LCD显示,需要使用专用的驱动控制芯片,如PIC16F873,其特点是软件实现比较复杂,且价格较贵。 方案二: 采用LED数码管串行静态显示,虽然其显示亮度高,但是如果显示器位数较多,需要增加锁存器,占用I/O口线较多,CPU的消耗大。并且电路连接较为繁琐。 方案三: 采用LED数码管并行动态显示,显示亮度不及静态显示,但电路相对简单,适合于显示位数较多的设计。 综上所述,考虑到用到5位数字显示,为了不增加电路的负重感,所以采用方案三使用2个三位一体并行动态数码管。该数码管具有程序编写简单,对外界环境要求低,易于维护的特点。其排列形状如图2.4所示。 图2.4 数码管排列形状 第3章 硬件设计及介绍 3.1 微处理器模块 本设计规定使用ET44M210芯片,该芯片由台湾义统电子股份有限公司(Etoms Electronics Corp.)设计,是一款采用CMOS工艺制造,低价格﹑高性能﹑低功耗的8位SoC微控制器。 3.1.1 外形和电路图符号 图3.1 外形图 图3.2 电路图符号 3.1.2 功能特点和组成 ET44M210芯片采用RISC指令集架构,数据存储器容量1.3KB,程序存储器容量16KB,堆栈层数16层,中断源20个。主要功能特点有: 1) 具有42个I/O引脚,可设置上拉电阻和按键唤醒功能 2) 具有一个8位定时/计数器TCC和16位长时定时器FRC 3) 具有一个串行外围接口SPI 4) 具有2路﹑16位的脉宽调制输出PWM 5) 具有一个10位﹑16路模数转换器ADC 6) 具有一个2.4GMH无线射频调制解调器WM 7) 具有一个符合USB1.1通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 的全速USB接口 芯片的内部组成如下图3.3所示: 图3.3 微处理器内部组成 本次设计中所涉及到的微处理器部分是输入输出I/O接口,定时器/计数,中断控制。 (1)输入输出I/O接口 芯片最多可以有42个I/O引脚(PTA0~7,PTB0~7,PTC0~5,PTD0~7,PTE0~7,PTF0~3),通过有关寄存器的设置可以定义这些引脚为输入或输出。所有引脚都可以选择内部上拉电阻,部分引脚可以选择集电极开路。此外,还可以选择按键唤醒功能。 (2)定时器/计数器 芯片除了通常的带预除器的8位的计数器外,还有一个16位的“长时计数器”,可以很方便地实现长时定时,具有定时器溢出中断的功能。 (3)中断控制 芯片所有功能模块的响应都是通过中断工作方式来实现的。 ET44M210将ROM存储器的0x10到0xA8的区域作为20个中断响应入口。本设计是用FRC计时器0x0020自由计数器溢出中断,自由计数器从ffffH到0000H时可以发生中断[1][2] 3.2 传感模块 本次设计由于没有现成的传感器使用,并考虑到降低成本,合理利用身边易获得的材料自制一个震荡模块,其由一盒子和一个小钢珠组成,用无导电性的有机玻璃制作成盒子状,使用氯仿将一块导电的铜片粘合固定于盒子底部,再将另一块铜片粘在盒子的正前方玻璃壁上,并确保2块铜片无连接。最后将能起到导电作用的小钢珠放置其中,在前后摇动盒子的同时,将会使小钢珠一前一后运动,使电路导通从而计步。最后在盒子的前后各连一根导线作为输入端和接地端,让震荡信息转化为开关信号达到传感器的作用。为了方便使用和收纳,增加了一个插座使得计步器在不使用时可以与传感器分开保存,在需要使用时才连接的作用。 本设计新颖,构思巧妙,改变了现有摆锤与开关传感器分离设计的思念,合理设计成一体化的震荡模块,通用于各种造型的壳体或者电路板结构上,确保其计步精度不因电路板焊接差异而产生误差,也可大大降低实际生产成本。结构示意图如下图3.4所示: 图3.4 自制传感器示意图 3.3 显示模块 本次设计使用的是型号为SP420562K三位一体共阴数码管。 3.3.1 数码管类别 按照数码管上各发光二极管的电极的连接方式不同,可以将数码管分为共阳极数码管和共阴极数码管两种。 共阴极数码管是指把a、b、c、d、e、f、g这7个发光二极管的阴极连接到一起,形成公共阴极(COM)的数码管。共阴极数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。共阴极数码管内部连接如图3.5所示。 图3.5 共阴数码管内部连接图 共阳极数码管是指把a、b、c、d、e、f、g这7个发光二极管的阳极连接到一起,成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM接到+5V电源上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阳数码管内部连接如图3.6所示。  图3.6 共阳数码管内部连接图 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。本设计根据上述比较后选择了动态显示驱动,动态显示驱动是将所有数码管的8个显示笔划”a,b,c,d,e,f,g,dp”的同名端连在一起。其占用CPU时间多,显示数据有闪烁感,但能够节省大量的I/O端口,硬件开销小,而且功耗更低,可以降低成本和电源功耗。 硬件译码就是显示的段码完全由硬件完成,CPU只要送出 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的BCD码即可,硬件接线有一定标准。软件译码是用软件来完成硬件的功能,硬件简单,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。[5] 3.3.2 数码管引脚排列 而本次设计使用到的数码管型号为SP420562K,其中引脚11,7,4,2,1,10,5,3连接输入端;引脚12,9,8连接输出端。排列顺序以及引脚分布如图3.7和图3.8所示。 图3.7 数码管的排列 图3.8 数码管的引脚图 3.4 元件清单及开发环境 3.4.1 元件清单 开发电路板一块 ET44M210芯片一块 SP420561K (三位)LED数码管2组 160欧电阻8个,1千欧5个 按键3个:开关,切换模式,计数 S9013 NPN型三极管5个 发光二级管1个:指示灯 导线若干 3.4.2 设计开发环境 Windows XP/2000 Visual Studio 2008 Protel 2004 ET44M210仿真器软件:ETUSBWICE 2.12 3.5 硬件电路图设计及PCB印刷板 3.5.1 硬件总电路图 根据以上的分析和设计思路综合设计并使用PROTEL2004软件画出总电路图如图3.9所示: 图3.9 总设计电路图 3.5.2 关键部分电路图 其中,显示部分使用I/O引脚是PTB0~7作为数码管输入的八个端口,设计时为避免电流过大而导致数码管损坏又在其每个输入口串联一个电阻。电阻值根据电压3.3伏除以数码管电流20毫安计算得到约为160欧。PTD0~4作为输出5个端口,分别输出个位到万位上的数字,并串联S9013 NPN型三极管放大电路。其中NPN型三极管的发射极连接数码管的输入端。基极连接一个电阻值为1000欧的电阻,集电极接地。实验过程中使用万用表区别三极管的3个极。首先将万用表打到1K档,先用黑表笔接三极管的任意一个脚,再用红表笔测其他两个脚,直到找到红表笔测的任意两个脚都是数十K时,说明黑表笔所接的是三极管的基极,另两个脚阻值大的是发射极,阻值小的是集电极。具体电路图如图3.10显示部分所示: 图3.10 显示部分 本设计采用1.5v电池2节,外形小巧易携带。电路图如下图3.11所示: 图3.11 电池部分 本设计的滤波部分由2个电容组成,一个10微法的电解电容,滤除低频波;另一个0.1微法的瓷片电容,滤除高频波。滤波电路图如下图3.12所示: 图3.12 滤波部分 根据单片机要复位,本质上是在其RESET脚上保持一定时间的高电平,检测到这个电平保持时间大于它要求的时间就会自动复位的道理。本次复位电路设计是由一个按键一个较小电容和电阻组成。按键按下后:电容相当于被短路放电、RST直接和VDD相连,就是高电平,此时进入“复位状态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到RST,仍然是“复位状态”,稍后,充电结束,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作。电容和电阻的取值则根据RC电路响应时间,上电对电容充电,充电的时间保证在复位高电平要求时间。一般10uf和10k就可以了,只要复位脚通过至少2个时间机器周期的高电平,单片机就复位。它们选取也是按照大于等于2个时间机器周期的时间常数计算出来的。电路图如图3.13所示: 图3.13 复位电路 3.5.3 PCB 图 设计PCB的流程主要包括:1.准备原理图和SPICE netlist。2.规划电路板也就是采用板材的物理尺寸,和元件的封装形式极其安装位置,此步极为关键。3.设置参数包括元件的布置参数和布线参数。4装入SPICE netlist 及元件封装完成电路板的自动布线。5.布局元件由protel2004自动完成。6.自动布线和手工调整。7.保存及输出文件。 其中特别需要注意的有两点:首先,要仔细考虑PCB尺寸的大小过大导致印制线条长,阻抗增加;过小则散热不好。其次布线时要注意输入/输出端用的导线应尽量避免相邻平行。 本设计的PCB如下图3.14所示: 图3.14 印制电路板 第4章 软件设计及调试 4.1总设计思路 本设计采用C语言对单片机进行编程。为了使程序条理清晰,整个程序由计数,定时,计算频率,数码管显示四部分组成。其中定时器用的是FRC计时器,当FRCE是1时开通计时器功能,0则关闭。FRCOF,状态寄存器的计时器溢出标志。当FRC的值从ffffH→0000H时,FRC溢出中断标志FRCOF置为1,程序转入该中断向量地址0x0020去执行对应的中断子程序。显示部分显示的是5位计步数(最大计数为99999),步数走过的时间(分钟为单位)以及频率(取整数)。以下详细介绍了主程序的设计。[2] 4.2计步主程序设计 主程序包括开始-停止-清零过程,频率计算部分和计数部分。 主要设计思路是:按键1 与PTC2管脚连接,只有在count_off = =1模式下按键有效,功能是切换不同的显示内容,默认状态是Diaplay_mode=0显示当前步数;按下一次Diaplay_mode=1 显示时间:格式为hh-mm(小时-分钟);再按下一次Diaplay_mode=2 显示当前时间内的步频,为步数比上时间。如果时间min<1分钟 按时间min=1分钟计算。 按键2 与PTC4管脚连接。作用是启动/停止/清零计数。按键3与PTC3管脚连接。作用是模拟传感器走步,按下一次步数+1,只有在count_off = =0(计步数计时状态)下按键有效。默认状态是count_off = =2处于清零等待状态,此时按下按键2,count_off = =0,为计步数状态,同时计时开始。按下按键3,步数加1。再次按下按键2,count_off = =1,为停止计步数计时状态,数据不清零,此时按下按键1即可切换显示内容。再次按下按键2,count_off = =2,清零,等待下一次的计数周期。计数部分流程图如下图4.1所示: 图4.1 计数部分流程图 计算频率就是周期性信号在单位时间(1分钟)内变化次数,若在一定时间间隔T内测得这个周期性信号的重复变化次数N,其频率就表示为f=N/T。具体流程图如下图4.2所示: 图4.2频率设计流程图 主程序代码段及注释: //******************************************************************************** void main( void ) { IOCA = 0x00; IOCB = 0x00; IOCC = PUCC = PTC5 + PTC4 + PTC3 +PTC2+ PTC1 + PTC0; //PTC0~5为输入端口 上拉电阻 IOCD = 0x00; IOCE = 0x00; IOCF = 0x00; //PTF0驱动红色二极管灯 PTA = 0x00; PTB = 0x00; //PTB驱动led 输出 PTC = 0x00; PTD = 0x00; //PTD0-4 控制led0-4 5个数码管的通断 PTE = 0x00; PTF = 0x00; Delay_Nms(1000); //等待 1秒 稳定 可以缩短时间 去除也可以 // HFRC = 21; //FRC定时器10ms VALUE >> 8 // LFRC = 160; INTF = 0x00; FRCC = 0; PRIE = 0x01; INTE = GIE+EINT1E+FRCOE+EINT0E; // 中断设置 FRCOE 外部中断0,1使能 INTF = 0x00; //请中断标志 EINTED = 0x00; //下降沿触发外部中断 count_P=0; // 初始化的时候步数为0 count_off =2; // 初始化的时候停止计数计时 Diaplay_mode = 0; //默认显示走过的步数 PTF=0x01; //开始红色led亮 while(1) { if(count_off ==0) //显示当前计数值 按下计数按键显示增加1 { BuShuTran(count_P); } else if(count_off ==1) //如果处于停止计时计数状态 led显示 ----- //此时按下显示模式切换的话 可以在屏幕上显示步数、走过时间xx小时 xx分钟 //以及显示走过的频率 默认显示为走过的步数 //PTC2为模式切换按键 按下后切换显示内容 只有停止计数后按下有效 { if(!(PTC & PTC2)) { Delay_Nms( 50 ); while(!(PTC & PTC2)) ; //按键延时去抖动 Delay_Nms( 50 ); Diaplay_mode++; //切换模式 if(Diaplay_mode> 2) Diaplay_mode=0; } //******************************************************************************** 4.3调试检查 在调试过程中,我所做的首先是查找电路中是否有焊接位置的错误,其次检查是否有虚焊部分。在确保电路焊接无误的情况下,连接USB下载程序,编译无错误。为了检查程序是否能是电路成功运行,我把传感的部分先用按键代替。这样做的目的是检查除了传感部分的其他部分能否正常运行。最后才连接自制的震荡传感器,在实验过程中,确实也碰到了事先预想的问题,也就是震荡一次多计数的问题,根据原先的设想的解决办法:加入防抖动程序或者加长延时时间和并联一个较小电容。经过实验比较,三个方法中较易进行的是把延时时间变长,程序如下: { if(!(PTC & PTC2)) { Delay_Nms( 50 ); while(!(PTC & PTC2)) ; //按键延时去抖动 } 经过多次比较后,选择了最合适的延时时间,使计数更精确。 4.4硬件使用说明 按键介绍如下: 本设计一共3个按键,按键1在电路板下方左边起切换作用,按键2在中间起开关作用,按键3在右边代替传感器时使用起计数作用。 操作过程是如下: 1. 初始状态,屏幕显示”-----”。上电时,默认为count_off = =2,Diaplay_mode=0状态。此时按下按键2,计数开始,计时也开始。 2. 按下按键3(代替传感器时使用),按一次步数增加1,指示灯每秒闪一次。 3. 若想停止计数,则再次按下按键2,此时屏幕显示步数(默认Diaplay_mode=0),(如果再按按键3计数也不会增加)。这点的好处是在换上震荡传感器使用时,不会因为来不及拆下而导致继续计步,使计数测量过程很切实际。 4. 此时可以按下按键1,按下一次显示时间,再按下显示频率,在按下又显示步数,循环显示。 5. 计步完毕,需要清零,按下按键2,此时屏幕又重新显示”-----”,表示清零等待下一个计步数周期。 第5章 总结 经过近四个月的学习与努力,我的毕业设计已经基本完成。在次过程中由于对仿真软件不太熟悉,在使用ET_USBICE软件设计过程中遇到过一些困难,在沙立仁导师的帮助下一一解决了,不仅学会了一些电路仿真设计能力,而且在解决这些问题的过程也是对自身专业素质的一种提高。 在制作硬件的过程中心得体会也是不少。在焊接过程中元件必须清洁和镀锡,焊接前用小刀刮掉氧化膜,然后再进行焊接。焊接时应使电烙铁的温度高于焊锡的温度以烙铁头接触松香刚刚冒烟为好。焊接点的上锡数量焊接点上的焊锡数量不能太少,太少了焊接不牢,机械强度也太差。而太多容易造成外观一大堆而内部未接通。焊锡应该刚好将焊接点上的元件引脚全部浸没,轮廓隐约可见为好。 在调试过程中,首先检查程序段的逻辑问题。程序段的延时等部分是否编写合理,检查无误。进而检查电路连接问题。必须检查有无漏焊、虚焊以及由于焊锡流淌造成的元件短路。虚焊较难发现,可用镊子夹住元件引脚轻轻拉动,如发现摇动应立即补焊。解决了上述问题后再次进行检测,最终完成了调试。 通过搭建电路板学习到手工电烙铁的焊接技术,能够独立的完成简单电子产品的安装与焊接、印制电路板图的设计制作等。熟悉电子产品的安装工艺的生产流程,了解电子产品的调试方法。其次,熟悉常用电子器件的类别、型号、规格、性能及其使用范围,能查找资料,查阅有关的电子器件图书等。 最后,虽然还是不够娴熟,但基本能编写一些简单的程序。这些知识不仅在课堂上有效,在日常生活中更是有着现实意义,也对自己的动手能力是个很大的锻炼。在设计中,提高了自己解决问题的能力。通过本次设计培养了我理论联系实际的能力,提高了我分析问题和解决问题的能力,增强了独立工作的能力。 由于本系统从开始的 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 到后来的具体实施的这段时间,无论在时间和细致程度来说都是有限的,所以程序真正投入使用还是会有些许不妥之处,希望各位老师能给予批评和指导。能在今后的不断的学习和努力中,把程序做得更好,真正达到本设计的作用。最后,感谢导师沙立仁老师所给予的帮助。 参考文献 [1]沙立仁. ET44M210汇编语言讲义 [2]董胜源. ET44系列USB单片机控制与实践[M].北京:北京航空工业大学出版社 [3]梁森. 自动检测技术及应用[M].北京:机械工业出版社 [4]杨颂华,冯毛官,孙万蓉,胡力山. 数字电子技术基础[M].西安:西安电子科技大学出版社 [5]李朝青. 单片机原理及接口技术[M].北京:电子工业出版社 ,2004 [6]谭博学,苗汇静. 集成电路原理及应用[M].北京:电子工业出版社 ,2003.9 [7]白中英. 数字逻辑与数字系统(第四版 立体化教材)[M].北京:科学出版社 ,2008 [8]崔武子,赵重敏,李青. c程序设计教程[M].北京:清华大学出版社,2007.6 [9]马忠梅. 单片机的c语言应用程序设计[M]. 北京:北京航天大学出版社,2003.11 [10]李义府. 模拟电子技术基础[M]. 国际科技大学出版社,2004 [11]Harprit Singh Sandhu.Runing Small Motors with PIC Microntrollers,McGraw Hill Professional[J].2009 [12]Bosch Rexroth AG.Rexroth MTX The new CNC system solution-perfect cutting and forming[J]. 2006 致谢 在我的论文完成过程中,得到了很多人的帮助与支持。 首先,最感谢的是我的导师沙立仁老师,感谢他对我学业的关心与指导,他以严谨的治学态度,给我提出了许多批评与建议,使我受益匪浅。在我完成毕业设计的过程中,他抽出很多时间和我讨论系统的设计问题,使我的论文得以如期完成,在此致上最真挚的谢意。 其次,感谢家人给予我学业上和生活上的支持与照顾。同时感谢给与我帮助的各位老师同学以及朋友们。 附录 实物图: 设计代码及详细注释如下: //=============================头文件================================= #include "et44m210C.h" //**************************************************************************** #define VALUE 5536 // 宏定义预载值 VALUE65536-60000 //(65536- HFRC:LFRC)*(1/6MHZ) //21 160 //*******************************变量定义***************************** const unsigned char LED[12]//0~9 DP -数码数据 ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x80,0x40}; //0x80代表"." 0x40代表"-" unsigned char Led_Data[5] = {0,0,0,0,0}; //显示模式下Led_Data[4] Led_Data[3] 显示小时数据 led2显示"-"作为间隔 //Led_Data[1] Led_Data[0] 分钟 unsigned int Pinlv = 0; // 中断计数变量 tcount unsigned char tcount = 0; // 中断计数变量 tcount unsigned char sec = 0; // 设置秒变量 sec unsigned int min = 0; // 设置分变量 min unsigned int minend = 0; // 设置分变量 minend 存储最后时间数据 unsigned char hour = 0; // 设置时变量 hour unsigned char i = 0; //变量 unsigned char count_off = 0; //是否停止计数 计时 count_off =0 计数计时开始 //count_off =1 停止计数计时 此时可以选择显示模式 //count_off =2 清零频率 时间 步数数据 unsigned int temp=0; //变量 unsigned char Diaplay_mode = 0; // 设置显示状态标志 Diaplay_mode=0显示走过的步数 // Diaplay_mode=1 显示走过的时间 Diaplay_mode=2 显示走过的频率(步/分钟) unsigned int count_P = 0,count_Pend = 0; //所计步数 unsigned char led_dis = 0; //***************************** 子程序定义 *************************** void Delay_Nus(unsigned int n) ; //延时Nus void Delay_Nms( unsigned int n ); //延时Nms void LED_Display( void ); //LED扫描显示子程序 void BuShuTran(unsigned int nu); //将步数转换为led显示的内容 void TimeTran(unsigned int no ); //将时间转换为led显示的内容 void PinlvTran(unsigned int nf); //将频率转换为led显示的内容 //***************************** main主程序 ********************** void main( void ) { IOCA = 0x00; IOCB = 0x00; IOCC = PUCC = PTC5 + PTC4 + PTC3 +PTC2+ PTC1 + PTC0; //PTC0~5为输入端口 上拉电阻 IOCD = 0x00; IOCE = 0x00; IOCF = 0x00; //PTF0驱动红色二极管灯 PTA = 0x00; PTB = 0x00; //PTB驱动led 输出 PTC = 0x00; PTD = 0x00; //PTD0-4 控制led0-4 5个数码管的通断 PTE = 0x00; PTF = 0x00; Delay_Nms(1000); //等待 1秒 稳定 可以缩短时间 去除也可以 // HFRC = 21; //FRC定时器10ms VALUE >> 8 // LFRC = 160; INTF = 0x00; FRCC = 0; PRIE = 0x01; INTE = GIE+EINT1E+FRCOE+EINT0E; // 中断设置 FRCOE 外部中断0,1 INTF = 0x00; //请中断标志 EINTED = 0x00; //下降沿触发外部中断 count_P=0; // 初始化的时候步数为0 count_off =2; // 初始化的时候停止计数计时 Diaplay_mode = 0; //默认显示走过的步数 PTF=0x01; //开始红色led亮 while(1) { if(count_off ==0) //显示当前计数值 按下计数按键显示增加1 { BuShuTran(count_P); } else if(count_off ==1) //如果处于停止计时计数状态 led显示 //此时按下显示模式切换的话 可以在屏幕上显示步数、走过时间xx小时 xx分钟 //以及显示走过的频率 默认显示为走过的步数 //PTC2为模式切换按键 按下后切换显示内容 只有停止计数后按下有效 { if(!(PTC & PTC2)) { Delay_Nms( 50 ); while(!(PTC & PTC2)) ; //按键延时去抖动 Delay_Nms( 50 ); Diaplay_mode++; //切换模式 if(Diaplay_mode> 2) Diaplay_mode=0; } if(Diaplay_mode==0) //显示计数值 { BuShuTran(count_P); //数码管显示当前走过的步数 } else if(Diaplay_mode==1) { TimeTran(minend); //数码管显示走过时间值 } else if(Diaplay_mode==2) { PinlvTran(Pinlv); //数码显示走步频率 (取整数) } } else if(count_off ==2) //显示"-----" 表明处于停止计数 等待开始状态 { Led_Data[0]=11; Led_Data[1]=11; Led_Data[2]=11; Led_Data[3]=11; Led_Data[4]=11; LED_Display(); } } } //******************************** 中间按键中断 **************************** void INT0_ISR( void ) interrupt EINT0_VEC // 用于显示停止计数时候的不同显示内容 { Delay_Nms( 100 ); //延时 键盘去抖动 while(!(PTC & PTC4)); // 按键按下PTC 的 PTC4管脚电平为低PTC & PTC4=0 PTC4 EINT1 Delay_Nms( 50 ); count_off++; if(count_off>2) count_off=0; if(count_off ==0) INTF &= ~FRCOF; else if(count_off ==1) //count_off ==1 停止计数 默认显示步数 此时按下最左边按键可以切换显示内容 { // Delay_Nms( 20 ); Pinlv=0; minend=min+1; temp=count_P; while(temp>=minend) { temp=temp-minend; Pinlv++; } } else if(count_off ==2) //count_off ==1清零 等待重新开始 { min=0; minend=0; count_P=0; sec=0; Diaplay_mode=0; } INTF &= ~EINT0F; //清中断 } //****************************** 最右边按键计数中断 ********************************** void INT1_ISR( void ) interrupt EINT1_VEC // 按下一次计数+1 { Delay_Nms( 100 ); //延时 键盘去抖动 while(!(PTC & PTC3)); // 按键按下PTC 的 PTC4管脚电平为低PTC & PTC4=0 PTC4 EINT1 Delay_Nms( 50 ); if(count_off==0) //有效计时计数过程中 才计数 { count_P++; //步数增加 } INTF &= ~EINT1F; } //****************************** FRC定时器 中断*************************** void FRC_ISR(void) interrupt FRCO_VEC // 从5536计数到65536 计60000个数 耗时10ms { HFRC = 21; //FRC定时器10ms VALUE >> 8 LFRC = 160; tcount++; //10ms加一次 if(tcount == 100) //100次为1秒 { tcount=0; sec++; if(sec>=60) { sec=0; min++; } if(count_off==2) //count_off==2 清零min计数 { min=0; } PTF=~PTF; } if(count_off==0) //count_off==0计数状态下才清中断 才能计时 其他状态计时停止 INTF &= ~FRCOF; } //**************************** 延时us程序 ************************* void Delay_Nus(unsigned int n) { while(n--){}; } //*********************************** 延时ms程序 ********************** void Delay_Nms( unsigned int n ) { unsigned int i = 0 , j = 0; for( i = 0 ; i < n ; i++ ) for( j = 0 ; j < 1000 ; j++ ); } //********************************** 步数显示 ************************ void BuShuTran(unsigned int nu) //将传过来的步数处理 显示于数码管 { led_dis=0; while(count_P>=10000) //计算第五位显示内容 { count_P-=10000; led_dis++; } Led_Data[4] = led_dis; led_dis=0; while(count_P>=1000) //计算第四位显示内容 { count_P-=1000; led_dis++; } Led_Data[3] = led_dis; led_dis=0; while(count_P>=100) //计算第3位显示内容 { count_P-=100; led_dis++; } Led_Data[2] = led_dis; led_dis=0; while(nu>=10) //计算第2位显示内容 { led_dis++; nu-=10; } Led_Data[1] = led_dis; // Led_Data[1]= count_P/10; Led_Data[0] = nu; LED_Display(); } void TimeTran(unsigned int no) //将传过来的时间处理 显示于数码管 { temp=no; led_dis=0; while(temp>=60) //60分钟1小时 { led_dis++; temp=temp-60; } Led_Data[4]=0; while(led_dis>=10) { Led_Data[4]=Led_Data[4]+1; led_dis=led_dis-10; } Led_Data[3]=led_dis; Led_Data[2]=11; //显示分隔符号"-" led_dis=0; while(temp>=10) { led_dis++; temp=temp-10; } Led_Data[1]=led_dis; Led_Data[0]=temp; LED_Display(); } void PinlvTran(unsigned int nf) //将传过来的步频处理 显示于数码管 { temp=nf; led_dis=0; while(temp>=10000) //计算第五位显示内容 { temp-=10000; led_dis++; } Led_Data[4] = led_dis; led_dis=0; while(temp>=1000) //计算第四位显示内容 { temp-=1000; led_dis++; } led_dis=0; while(temp>=100) //计算第三位显示内容 { temp-=100; led_dis++; } Led_Data[2] = led_dis; led_dis=0; while(temp>=10) //计算第二位显示内容 { led_dis++; temp-=10; } Led_Data[1] = led_dis; led_dis=0; Led_Data[0] = temp; LED_Display(); //显示 } //****************************** 数码管显示程序 *************************** void LED_Display( void ) { PTD = 0x01; //PTD控制哪一个led数码管显示 5个led数码管 for( i = 0 ; i < 5 ; i++ ) { PTB = LED[ Led_Data[i] ]; //查表取显示数据 Delay_Nus( 200 ); //延时保证显示亮度 PTD <<= 1; //左移点亮不同的数码管 } } //**************************************************************************** SHANGHAI BUSINESS SCHOOL Downstream Port *3 Upstream Port RF Module ROM/RAM I/O PORT TIMER/C PWM ADC SPI MCU USB HUB+ Embedded Port WM PLL 36
本文档为【智能电子计步器毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥17.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
北溟愚鱼
暂无简介~
格式:doc
大小:5MB
软件:Word
页数:0
分类:工学
上传时间:2018-09-23
浏览量:44