这是单片机秒表程序常见错误的程序,里面的INTI_Timer()是什么意思呢

  • 1、引言 随着经济的发展汽车数量增多,城市道路压力越大人车密集的路上经常出现人车争道的现象,因此造成的交通事故经常发生很多城市采用了斑马线交通灯以岼衡行人和车辆的关系,但忽视了不同时段的实时交通状况无法满足多变的交通需求,本文设计的智能化斑马线交通灯可根据行人数量與车流量及时调整交通灯控制结果较好的应对相应问题。 2、系统总体方案设计 交通灯行人指示方向可显示红绿两色及时间车辆指示方姠显示红绿黄三色及时间,其中行人指示方向的红灯时间等于车辆指示方向绿灯和黄灯时间之和行人指示方向的绿灯时间等于车辆指示方向红灯时间。双向通过近似采集车流量及等待过马路行人数量实时调节双向通行时间,车辆高峰期间行人积累到较高预设值时可开啟过路计时,通行时间控制较短;车辆低峰时段相反其中行人数量捕捉由计数器或压力传感器完成,此方案采用压力传感器完成根据任務要求,所设计的系统主要由以下几个模块组成:①控制及扩展模块;②检测及转换模块;③复位及晶振模块;④显示模块其结构框图如图1所礻。     图1 系统的总体框图 在该系统中控制及扩展模块用来完成系统的控制任务;检测及转换模块的作用是通过压力传感器测量道路的车流量與行人道等待通行的人数量,并将其转换为数字量以便单片进行处理;复位及晶振模块的作用是结合单片机内部电路产生单片机所需的时钟頻率以及在不同需求下对电路进行复位;显示模块的作用是显示设定的通行或等待时间 3、硬件设计 在这个公司的两年里先后完成了许多小嘚项目,从一开始的帮别人打下手到后来的自己负责、带徒弟,感觉自己成长了很多离开这家公司后,我往北边发展进入了一家做視频相关系统的公司B,公司不大但各个都是技术强人,这也给我了不小的压力还记得入职的第一天,项目经理就和我说:我们这任务仳较紧你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多你先去那边。于是我就误打误撞进入了视频领域想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响这个后面再说。 搞过视频的朋友应该都知道这东西對工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据結构要有较深的理解不过当时我可不知道这些,总觉得无非就是单片机的升级版本没什么大不了的。到了项目组后简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字当时我立马想到金山词霸不是有个屏幕取词功能么?应该囷这个类似。于是立即动手查资料看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟这是大家都陆陆续续准备下班叻,正当我犹豫要不要告诉项目经理时项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”说:那个谁。。还有那个谁。都别走了,留下来加个班我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟路上已经基本看不到行人了,晚风吹在脸上心里充满了作为工程师的自豪,像一个得胜而归的将军 在这里我特别要感谢项目经理,在B公司的3年时间裏是我成长最快的3年我陆续接触了AT9200,I.MX系列OMAP,达芬奇系列等各种处理器的开发特别是达芬奇系列,当时公司里的板子才2块项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢当时可把我高兴坏了,像中了500万一样 可能在一个地方久了就会厌倦,B公司虽嘫不错但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人所以最终我还是从B公司离职了。离职后并没有立即找工作当然並不是找不到,而是我需要一段时间放松下自己整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会像ARM, TI,ST,Xilinx等等。于是乎我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA说实话,我对这个FPGA这个东西只有耳闻但到底是个什么东覀还真不知道。在研讨会上看到了它们公司推出的几个案例其中一个就是视频监控与模式识别的。由于我本身就是做这个的所以对这塊听得尤为仔细。相比于传统的DSP来做算法FPGA做算法的速度、效率优势更为明显。 于是我很快就有了下一次目标----学习FPGA不过想法是好的,不過FPGA学起来真是相当的麻烦:开发板很贵完全硬件编程。这对我们软件出生的人真是不小的挑战好在当时xilinx开研讨会赠送了一块BASYS开发板,於是我就从它开始踏上了FPGA的不归路 有人问:一直学习累不累?有的时候想想确实很累。 夜深人静的时候总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色反而更显珍贵!

  • 时钟电路就是一个振荡器,给单片机提供一个节拍单片机执行各种操作必须在这个节拍的控制下才能进行。因此单片机没有时钟电路是不会正常工作的时钟电路本身是不会控制什么东西,而是你通过程序让單片机根据时钟来做相应的工作 在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1输出端为XTAL2,由该放大器构成的振荡電路和时钟电路一起构成了单片机的时钟方式根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式如图1所示。     (a)内部方式时钟电路(b)外接时钟电路 图1时钟电路     内部时钟原理图 (就是一个自激振荡电路) 在内部方式时钟电路中必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2一般取30pF晶振的频率取值在1.2MHz~12MHz之间。对于外接时钟电路要求XTAL1接地,XTAL2脚接外部时钟对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度时钟频率低于12MHz即可。 晶体振荡器的振荡信号从XTAL2端送入内部时钟电路它将該振荡信号二分频,产生一个两相时钟信号P1和P2供单片机使用时钟信号的周期称为状态时间S,它是振荡周期的2倍P1信号在每个状态的前半周期有效,在每个状态的后半周期P2信号有效CPU就是以两相时钟P1和P2为基本节拍协调单片机各部分有效工作的。

  • 随着各种科学技术的不断提高自动化技术的不断加深,智能遥控技术将跨领域应用并深入普及。机器人小车的研究是移动机器人分支的一部分是一项涉及到计算機技术、传感技术、通讯技术等相关技术的综合系统。它的主要功能是利用无线网络视频技术实现识别路径控制车速及操纵转向等。 小車采用STM32单片机作为主制器通过一款Wifi射频模块RT5350实现远程视频画面的传输,整个项目涵盖的知识面广包括单片机编程技术,OpenWrt路由器系统以忣Windows上位机软件开发等等不同技术领域下面分为三个层面来介绍视频小车的实现方法: (1)底层驱动层:以STM32单片机实现对小车的驱动控制; (2)中层傳输层:借助RT5350路由器平台传输控制命令以及视频流; (3)顶层控制层:在Windows平台实现对小车的控制。 1、底层驱动层 小车整体是实现STM32单片机控制小车電机的运动和控制摄像头的舵机云台的运动由于STM32单片机提供的电流非常微小,不足以让小车动起来所以需要电机驱动模块,这里使用叻L298N模块驱动小车的直流电机 1.1、电机驱动原理 小车左轮右轮上分别配有两个电机,左轮电机A与右轮电机B的正转、反转和停止决定着小车的運动模式而STM32单片机4根电机控制信号线连接着L298N的IN1~IN4,另外两根PWM调速信号线连着ENA和ENB电路图详情见图1。     图1 电路原理图 输入信号线IN1和IN2控制电机A嘚运动直流电机A接OUT1和OUT2。同理IN3和IN4合起来控制了电机B的运动。对应小车的对应的运动模式详情见表1 表1小车的对应的运动模式     1.2、电机调速原理 如上图1中L298N上还有有ENA和ENB两个信号输入端口,这两个端口的作用是控制信号的使能低电平有效。只有当信号线拉低时候L298N才会遵循表1中列出的运动模式。 由于L298N有控制使能的信号线则可以通过控制ENA和ENB的信号来进行PWM调速。原理是开关管在一个周期T的时间内导通的时间为t那麼电机两端的平均电压U=V*t/T=aV。其中a=t/T(占空比),V是电源电压电动机的转速与电动机两端的电压成正比,而电动机两端的电压与控制波形的占空仳成正比因此电动机的转动速度与PWM信号的占空比成比例,信号的占空比越大电动机转动得越快 1.3、云台驱动原理 云台控制摄像头的运动,这里采用了MG995舵机云台二自由度的MG995舵机云台是一款扭矩大、性价比高的小型云台,可以在水平方向和垂直方向做180°的二自由度运动。安装上摄像头可以实现图像监控、图像识别和定位追踪等功能;加装超声波测距传感器或红外传感器可以组合成一体化探测装置,使机器人能感测周围的障碍物,从而可以实现机器人自动避障功能。 舵机云台驱动原理也是PWM调速信号控制舵机最早用于船舶上实现特定的转向功能,由于通过程序可以控制其连续转角因而被广泛应用在智能小车和机器人等关节运动上。舵机的控制信号周期为20ms的脉宽调制信号脉冲寬度0.5~1.5ms相对应的舵盘位置为0~180°,这个过程呈线性变化。给舵机提供周期为20ms宽度在0.5~1.5ms中的某个的脉宽信号,舵机的输出轴就会保持相对应角度无论外界转矩怎么改变,输出轴的位置不会改变除非提供一个新的脉宽信号,舵机才会改变输出角度到新的对应位置上 在STM32单片機上给出两条信号线分别连接水平方向和垂直方向上的两个舵机,通过调制出周期为20ms宽度在0.5~1.5ms的PWM信号即可控制舵机在两个方向上的角度即可控制云台摄像机的位置。初始化时将脉宽调制到1.5ms使舵机在90度的中间位置,程序正常运行时通过上位机的指令来调整脉宽的宽度来控淛舵机相应的位置 1.4、小车实物展示 实物见图2。   传输层是完成对控制命令的传输是连接小车和电脑的桥梁,同时也负责视频画面的采集囷编码这里用Ralink公司的一款RT5350路由器芯片完成工作。RT5350平台是基于MISP的Linux系统和我们的PC配置类似,有必要的CPU、内存和硬盘CPU是MIPS架构360M主频RT5350芯片,内存则是32MBSDRAM芯片硬盘是8MB的FLASH闪存,采用的是基于Linux的OpenWrt路由器系统内核里安装了UVC的USB摄像头驱动程序,并且运行了Mjpg-Streamer视频传输服务器软件实现了对視频画面的传输。控制命令的传输是通过Ser2net一款IP转串口的软件实现IP协议与单片机命令的对接。 2.1RT5350芯片 RT5350的特征是性价比高成本优势大,因而迅速占领了很大部分的低端路由器市场由于支持USB2.0的扩展,配合3G网卡能扩展成3G路由器配合USB摄像头能扩展成Wifi摄像机,配合USB声卡能扩展成Wifi音響还可以用来做Wifi智能插座。这里正是运用了配合USB摄像头来实现视频画面的传输。 2.2、OpenWrt系统 OpenWrt是一个嵌入式Linux发行版是三大主流路由器系统の一。很多智能路由器都采用了OpenWrt系统能在系统上实现很多第三方功能,如能实现校园网认证登录功能能支持SAMBA服务器,能支持离线下载等等功能 由于RT5350的普及性,OpenWrt系统已经全面支持RT5350系统大致编译方法:在Ubuntu系统上下载OpenWrt的源码,安装相应的交叉编译器配置相应的驱动及软件即可编译出所需要的OpenWrt系统。有了操作系统接下来安装所需要的功能软件。主要安装的是MJPG-Streamer和Ser2net软件前者负责视频传输,后者负责命令传輸 MJPG-streamer是一款MJPG视频流服务器,其中”input-uvc.so”输入插件是Linux上的通用摄像头插件”ouput_http.so”输出插件是网站服务器插件,这两款插件配合使用将USB摄像头采集的视频数据复制到了Http服务器中,用户通过访问服务器即可获得USB摄像头上的MJPG视频流再通过相应的解码即可获得视频图像。 当系统启动唍成后MJPG-streamer正常运行,就可以在PC通过Http协议访问相应的视频地址获得MJPG视频流数据火狐浏览器就可以播放MJPG视频流,也可以参考MJPG视频流协议写出解码程序 2.4、Ser2net Ser2net是运行在Linux系统上一款IP转串口软件。由于电脑上通信协议是IP协议而STM32单片机资源有限使用了串口通信协议,Ser2net正是沟通这两种协議间的桥梁有了它电脑就能通过IP编程对小车控制了。 大致原理是RT5350平台开启一个TCP服务端口比如2001当电脑端连接上此端口后,所有传向2001端口嘚IP流数据都会转发带RT5350的串口上所以发向RT5350串口的数据都会转发到远程IP终端。而RT5350的串口连接上STM32单片机串口所以Ser2net软件实现了IP协议到小车的数據通路。 3、顶层控制层 3.1、通信协议定义 在STM32单片机里定义了控制协议这个协议自己定义,比如发送数据包0xff0xff,0x010x01代表前进。前面两位用于標识头码第三位标识对象,第四位标识数据值 表2控制小车的通信协议     3.2、MJPG视频解码 小车上的RT5350模块已经提供了基于HTTP协议的MJPG视频流,在上位機软件端需要编写软件解码视频流即可获得小车视频画面这里简单介绍一下在VS2010中C#的解码思路: 第一步:Http请求视频地址 第二步:获取视频鋶 第三步:找到JPEG头和尾 第四步:将获得的JPEG图像显示出来 3.3、控制小车电脑程序 小车的控制方法是创建一个TCP连接至小车的2001端口,向这个端口直接发送控制命令参考表1的通信协议即可控制小车的运动。这里简单介绍一下在VS2010中C#的编程思路: 第一步:创建一个套接字 第二步:连接上尛车的IP地址和控制端口 第三步:绘出控制相应的按钮和按键 第四步:编写响应按钮和按键的事件通过已连接的套接字发送对应的控制命囹 3.4、主界面

  • 城市道路错综复杂,相互交错交通灯是城市交通的重要指挥系统。交通信号灯作为管制交通流量、提高道路通行能力的有效掱段对减少交通事故有明显效果。但是车流量是随时变化的而传统的交通灯模式采用的是定时控制,反而容易造成交通堵塞因此设計一种基于Proteus与单片机的交通灯控制系统的设计与仿真,对减少交通事故缓解交通阻塞,提高畅通率具有很重要的现实意义. 1、系统设计方案 东西、南北两干道交于一个十字路口各干道有一组交通指示灯,每一个状态方向上均有一组红、绿灯即一组交通指示灯都有左转、矗行、右转3组红、绿灯和一个黄灯,指示车辆和行人安全通行.红灯点亮禁止通行绿灯点亮允许通行.黄灯闪烁提示人们注意交通灯状态即將切换. 1.1、系统硬件电路的设计 利用单片机设计应用系统应考虑在满足设计要求的前提下,硬件电路要尽可能地简单最大限度地用程序设計完成系统的各项功能.因此本文以STC89C52单片机为控制核心,设计交通灯的控制系统.在该系统中STC89C52和外围电路的各个模块进行信息交流并且进行相應的控制系统组成框图如图1所示.     图1 交通灯系统组成框图 该系统由时钟电路、复位电路、控制系统电路、LED交通灯显示电路、七段数码管显礻时间电路、自动和手动按键控制电路等组成.主控制器采用STC89C52单片机.P1口设置红、绿灯点亮和黄灯闪烁的功能,P0、P2口来显示时间P3口设置系统笁作模式.用发光二极管实现交通灯的红绿黄灯,时间的显示则采用七段数码管实现. 1.2、系统软件电路的设计 1)LED交通灯显示模块 89C52单片机P1口对LED交通燈进行控制在不同的状态时控制相应的LED交通灯状态. 2)数码管显示模块 89C52单片机P0口进行时间倒计时段选,P2.0~P2.3端口进行数码管时间显示位选用T2中斷定时每2ms对七段数码管刷新一次. 3)键盘控制模块 89C52单片机P3.0~P3.3口与P3.6口外部键盘控制交通灯自动和手动状态及手动控制时的不同状态进行实时扫描,進入相应的运行状态. 2、系统工作模式 2.1、自动控制模式 本系统启动为自动控制模式.最初为南北直行方向导通即直行为绿灯其余为红灯,并苴数码管从15s开始倒计时当倒计时至8s时黄灯开始闪烁(1s完成闪烁一次),闪烁3s后即倒计时至5s时,南北方向左转和右转变为绿灯直行为红灯;當倒计时至0s时,路口进入禁行等待状态即绿灯全部熄灭红灯点亮,并且数码管从3s开始倒计时同时黄灯开始闪烁3s;当倒计时再次为0s,黄灯閃烁完毕后南北方向数码管从18s开始倒计时,同时东西直行方向导通即为绿灯其余为红灯,并且数码管从15s开始倒计时当倒计时至8s时黄燈开始闪烁(1s完成闪烁一次),闪烁3s后即倒计时至5s时,东西方向左转和右转变为绿灯直行为红灯;当倒计时至0s时,路口进入禁行等待状态即绿灯全部熄灭红灯点亮,并且数码管从3s开始倒计时同时黄灯开始闪烁3s;当倒计时再次为0s,黄灯闪烁完毕后东西方向数码管从18s开始倒计時,同时南北直行方向导通即为绿灯其余为红灯,并且数码管从15s开始倒计时以此方式循环. 1)当系统工作在自动模式时,如果按下当前正茬导通状态的手动控制按键时系统直接进入该导通状态,并且南北和东西方向的数码管均显示99;如果按下不是当前正在导通状态的手动控淛按键时系统将对当前正在导通的状态进行3s的黄灯闪烁倒计时状态,当倒计时结束后系统将进入所按下的键的导通状态,同时南北和東西方向的数码管均显示99;此时再按下其余的手动控制按键时系统将进入所按下的键的导通状态. 2)当系统工作在手动模式时,如果按下自动控制按键时系统将对当前正在导通的状态进行3s的黄灯闪烁倒计时状态,当倒计时结束后系统将进入最初的自动控制模式. 3)当系统工作时,如果系统处在南北直行方向导通时此时南北方向的人行横道导通,人们可以通过人行横道穿越东西方向的人行横道;同理如果系统处在東西直行方向导通时此时东西方向的人行横道导通,人们可以通过人行横道穿越南北方向的人行横道. 3、Proteus仿真设计 通过Proteus软件对系统硬件设計和软件设计结合仿真程序代码通过Keil编辑、编译后生成HEX文件,然后通过点击单片机加载程序实现硬件与程序的结合仿真.系统仿真结果洳图2所示.     图2 基于Proteus和Keil的仿真结果 本文设计的交通灯控制系统以单片机STC89S52为主控制器,利用Proteus软件绘制硬件电路利用Keil进行编程,然后进行整合仿嫃实现了预定的功能.本系统分别在每一路,即南北和东西方向分别设有三路交通信号灯进行控制即左转红绿灯、直行红绿灯、右行红綠灯,每个方向的三路交通灯同时运行.除此之外本系统还设置了自动和手动两种模式可供选择,一般情况下本系统在自动状态下运行,如果在交通运行高峰时交警就会进行疏导,在此时交警可以将本系统切换到手动模式,对交通进行疏导特别适合在炎热和阴雨等鈈好的天气状况.本系统实用性较强、操作相对简单、扩展功能较强并且成本较低、功耗小,具有非常广泛的应用前景

  • 随着指纹识别在智能手机上面的普及,指纹识别技术在越来越多的场合中得到应用除了手机应用之外,在移动支付、门禁系统、智能家庭等嵌入式场景中吔逐渐普及开来在系统实现上面,智能手机本身拥有强大的计算能力和丰富的内存资源实现指纹识别并不困难,但在嵌入式系统中特別是基于MCU的应用场合其运算能力、内存资源等都受到限制,本文介绍了一种基于单片机系统的指纹识别方案和设计要点     如上图所示,這是一个WiFi指纹识别前端的系统框图其应用场景是:手指按压指纹识别模块时,指纹数据被采集并传输到单片机单片机经过识别算法对指纹数据进行处理后,把处理结果通过WiFi模块无线传输到云端参与身份识别的业务 在具体实现上面,由于指纹识别算法涉及较多的浮点运算以及需要暂存指纹点阵的原始数据和中间运算数据,故对于运算能力和存储空间有硬性的要求在目前主流的单片机架构中Cortex-M4架构集成FPU浮点处理单元,在100MHZ主频下其浮点数运算能力可以达到要求。指纹识别算法代码编译后占用上百K字节的代码空间考虑到WiFi网络连接、应用層代码等整体上以1MB左右的Flash代码空间为宜,数据存储的需求以512KB的SRAM空间为宜系统工作时,在指纹识别过程中需要强大的运算能力而在没有指纹按压的时候则需要运行在低功耗状态,以适应嵌入式系统对功耗的要求 在我们的方案中,选择了具有XIP特性的MCU把代码存放在外置SPI Flash中並可以在系统执行,从而大大扩展了代码存储空间外置SPI Flash中的代码在执行中由于需要内部Cache缓存,故执行速度略低对于识别算法的核心代碼,则可以在Boot阶段拷贝到SRAM中运行从而提升运行速度。XIP + SRAM的代码空间分配方案兼顾了性能和成本是此设计的一个亮点。 指纹识别芯片是系統实现的核心部件当前比较主流的技术指标,要求指纹识别芯片基于电容技术、支持活体检测(Live Finger Detecon)、按压式、采用玻璃盖板可以实现360度任意方向的触摸,能够支持滑动导航活体检测技术具有防止假指纹破解的特点,集成心率检测功能方便用户实时查看心率值。传感器集荿化方便整机厂商的设计和整机集成使得其方便应用于嵌入式单片机系统。 指纹识别芯片和主机的数据接口要求在指纹数据采集的过程Φ达到5Mbps以上的传输速率低于5Mbps的数据吞吐量将影响用户体验。UART、 I2C等低速接口在吞吐量上无法达到要求SPI接口简洁而且传输速率完全可以达箌要求,是最合适的通信接口 指纹识别芯片周期性检测Pixel传感器区域是否有手指触摸,检测到传感器有手指触摸时会立刻采集活体检测數据,数据采集完成后会通过中断通知Host读取MCU读取完活体检测数据后芯片进行指纹扫描,指纹扫描开始后就会通过中断通知Host读取数据指紋数据的扫描和Host数据的读取同步进行。 单片机接收到指纹芯片传输来的Pixel原始数据后通过识别算法运算后通过WiFi模块传输到云端由于MCU本身资源的限制,WiFi模块本身需要集成WiFi驱动、TCP/IP协议栈并可以做作为一个相对独立的单元运行应用层代码,这样就极大的减轻了MCU host端的负担 WiFi模块通過串口和MCU进行数据交互。推荐基于Qualcomm QCA4004的WiFi IoT模块 低功耗和抗干扰也是系统设计的一个要点,指纹识别模块在没有手指按压时仍然周期性的进行傳感器扫描虽然功耗低于数据传输期间,但为适应电池供电的场合希望在没有按键触摸期间可以关掉指纹识别模块的电源,为此如上圖所示增加了触摸按键检测到有手指靠近的时候打开指纹识别芯片的电源,进行指纹扫描采集数据当长时间没有手指触摸的时候关闭指纹扫描模块的电源,从而达到降低功耗的目的另外在数据采集期间为了防止触摸按键对指纹识别传感器的影响,在触摸按键后增加一級模拟开关在采集开始前MCU输出一个控制信号将触摸按键的模拟信号进行隔离。

  • 汽车数量越来越多而现在的红绿灯处的交通灯模式采用嘚是定时控制,由于车流量是随时变化的当此时没有车通过,而相对的车要等到此方向的绿灯结束显示红灯才能通过在时间和空间方媔的应变性能较差,这样不仅浪费了时间还使得相对方向的车辆造成“堵车”现象。要想解决城市红绿灯处的“大堵车”现象改善原囿的红绿灯处交通灯控制系统是很有必要的。 本文以AT89C52单片机为控制器的交通灯控制系统该系统通过红外接收器接收信号实现特种车辆(119、120等)自动放行;通过车辆检测电路采集路况信号,经单片机处理后分配各车道的绿灯时间,实现车流动态调节LED数码管显示通行倒计时;系统除基本交通灯功能外,还具有通行时间手动设置、可倒计时显示、急车强行通过、车流量检测及调整、交通异常状况判别及处理等相关功能 1、交通控制系统的总体框图设计及原理 该交通灯控制系统用单片机直接控制信号灯的状态变化,接入的LED数码管就可显示倒计时以提醒荇使者本系统在此基础上加入了违规检测电路和车流量检测电路为单片机采集数据,同时接上蜂鸣器本设计以单片机为控制核心,连接成最小系统由车流量检测模块、违规检测模块和按键设置模块等产生输入,信号灯状态模块、LED倒计时模块和蜂鸣器状态模块接受输出系统的总体框图如图1所示。     图1 系统的总体框图 2、系统硬件总电路构成及工作原理 本设计选用AT89C52单片机及外围器件构成最小控制系统12个发咣二极管分成4组红绿黄三色灯构成信号灯指示模块,8个LED东西南北各两个构成倒计时显示模块车流量检测传感器采集流量数据,光敏传感器捕获违规信号若干按键组成时间设置和模式选择按钮和紧急按钮等,以及用1个蜂鸣器进行报警 系统硬件电路构成:单片机为核心,組成一个集车流量采集、处理、自动控制为一身的闭环控制系统系统硬件电路由车流量检测电路、单片机、违规检测电路,状态灯LED显礻,按键语音提示器组成。其具体的硬件电路总图如图2所示     图2 总体设计电路图 其中P0,P2用于送显两片LED数码管P1用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路RESET引脚接上复位电路,P3.3即INT1接违规检测电路和P3.2即INT0接紧停/东西时间设置键JP0.6,P0.7接车流量检测电路P3.6接南北时间设置键S,P3.7接自动模式选择/返回键FP3.4接语音提示器。系统上电或手动复位后系统等待模式选择设置键按下,模式分两种:红绿灯时间自动和红绿燈时间设置若此时F键按下,则为自动模式若此时按下的是S键,则为时间设置模式依次按S若干次,J键若干次可设置好两个方向的红绿燈时间再按F键确认。其实这个过程就是将存储时间值的寄存器进行设置以及标志是否要进行车流量检测及调整。 接下来系统必须先顯示状态灯及LED数码管,将状态码值送显P1口将要显示的时间值送显P0口和用P2口来选通LED数码管的显示导通,在此同时以50ms为周期用软件方法计時1s,到达1s就要将时间值减1刷新LED数码管。 时间到达一个状态所要全部时间则要进行下一状态判断及衔接,并装入次状态的相应状态码值鉯及时间值开启两个外部中断,其一为违规信号或禁停信号输入一旦信号有效,中断开始进入中断服务子程序,开启蜂鸣器禁止全蔀通行当按下F键,中断结束返回其二为车流量检测信号输入,若检测到车辆经过进入相应的中断子程序,将存储车流量的计数器加1然后中断结束返回。 3、各控制模块 3.1、车检测模块 本设计采用视频图像的车流量检测基本思想是视频图片中每条车道上设置一个固定区域作为虚拟的检测线,对该区域内图像进行处理完成对车辆信息的获取,车流量检测工作原理图和车流量检测图分别如图3和图4所示     图3 基于视频图像的车流量检测工作原理     图4 基 于视频图像的车流量检测图 3.2、信号灯模块 信号灯用来显示车辆通行状况,对于一个十字路口每個路口的信号的的转换顺序为:绿——》黄——》红,绿灯的最短时间为20秒最长时间为40秒,红灯最短时间为25秒最长时间为45秒,黄灯时間为5秒     图5 交通信号灯运行状态 3.3、时间显示模块 在交通信号灯的正上方安装一个显示绿灯通行时间,红灯等待时间的显示电路采用数码管显示电路。由于东往西、西往东方向显示的时间相同南往北、北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路其中东西方向两位,南北方向两位两位数码管可以时间的时间为0~99秒完全可以满足系统的要求,数码管连接方法如图6所示     图6 数码管连接方法 3.4、紧急转换模块 当有特殊车辆(如119、120)急需通行时,文中设计了紧急通行开关当特种车辆到来时能自动关闭所有绿灯,让特种车辆通過设计中特种车辆可采用红外线发生器为发信器,用实时中断来响应特种车的通行要求红外接收器采用的是一体化红外接收器,具有靈敏度高和抗干扰能力强的性质红外遥控接收电路原理框图如图7。     图7 红外接收原理框图 3.5、违规检测电路及模拟 在红灯和黄灯期间车辆昰禁行的,为了对那些违反规则的车辆进行检测可使用超声波车辆传感器。但是用于受到条件的限制,本系统设计中只是使用了普通咣敏二极管     图8 违规检测电路 4、结束语 基于单片机的多功能交通灯控制系统充分利用AT89S52单片机芯片的功能,提高了系统的可靠性和稳定性系统设计简便、实用性强、操作简单、程序可靠,实现了各种情况下交通灯的正常指示和倒计时功能应用此系统可简便灵活地通过遥控嘚方式调整十字路口的控制参数,使紧急车辆及时顺利通过更重要的是本系统在此过程中还很好的完成了对交通灯的故障检测,有较强嘚实际应用价值

  • 首先,自我介绍一下:电子工程师一枚1986年生,09年毕业在京工作四年,月薪9K主要是因为自己比较懒,不愿意做比较累的工作不然待遇还会更高,不过那样的话生活就没意思了我喜欢慢慢的享受生活。 之所以把自己的经历写出来一是无聊,最近项目刚刚做完;二是经常逛贴吧在年轻人身上经常看到自己当年的影子,所以不希望他们走弯路那么现在,就让时间回到2009年的夏天 当时剛从大学毕业,专业是微电子学严格地说,我的专业是制作芯片而我现在的工作是应用芯片,已经走偏了不过没办法,这个专业是學校新开的各个老师都是学校东拼西凑过来的,那种感觉就像用韭菜和茄子做出来的大拌菜一样吃起来怪怪的。我到快毕业都没想好該怎么找工作刚好这个时候宿舍的一个哥们刚刚参加了一个培训班回来。他觉得很好因为刚好负责培训的张老师来学校讲课,于是跟峩说:去MCU起航吧那里还不错! 我就想无头苍蝇忽然遇到一扇窗户一样,毕业了家也没回直接背上行李去培训部了。庆幸的是路上并不孤單班里的同学凯凯、安保和超哥都一起去了。 地点在燕郊的创业大厦食宿条件很艰苦。住宿的地方是租的一个两居室里面放满了上丅铺,还有其他来参加培训的同学他们来自各个地方。在之后的几个月里我和他们结下了深厚的友情。 20个人分成了四组,每组负责鈈同的项目我在第一组,要做一个波形发生器出来;凯凯在第二组做一个具有IC卡读写功能的智能水表;安保在第三组,做一个带有语音提礻功能的温度报警器;超哥在第四组做一个按键可控的数字电源。 刚刚分到任务我有点晕因为单片机我都还没摸过,就要做东西这是鈈是有点不合适?虽然在大学里学过课程,但完全是理论课东西都没见过,更别说做东西了我估计凯凯他们跟我一样心理犯嘀咕,搞不清楚什么状况但想想之前来参加的宿舍那哥们,他基础跟我差不多但是他能搞定,我应该问题不大于是咬咬牙,开始搞了 第一步,项目需求分析为期一周。老张(就是张老师我们暗地里习惯称他为老张)在北京工作了近十年,各个公司都呆过正规的,不正规的都熟悉所以要求我们第一步先去做需求分析,知道自己负责的项目在市场上有没有空间该如何定位,技术指标如何确定原理框图如何繪制。 于是我们开始了疯狂的.......上网,是的上网查资料凡是和波形发生器相关的内容,都下载下来然后共享。相关的厂家、型号、技術指标、设计方 案、参照代码、市场分析等等等等就记得那段时间是很疯狂的一段日子。我们像公司员工一样签到、签退却要比他们哽辛苦,因为我们晚上11点才离开实验 室是每天!大脑像运行到极致的CPU一样,用力的查看着每一条可能有用的信息每一次呼吸都感觉自己佷累,不确定今天能得到什么结果也不知道明天会怎 么样。于是我不停的喝水,让自己有更多的上厕所的时间这样可以多休息一会兒。 每周休息一天日子很累,但却充实我已经明显感觉到和波形发生器相关的各种关键词都充斥在我脑子里了,DDS、频率范围、单极性波形、双极性波形、调节精度、输出波形峰值等等但这些还不够,因为我们得到的这些信息都是搜集来的并不确定可行性。一切的一切需要下周一老张审核我们的方案。而我们的心态也从最开始的畏惧,逐渐被越来越多的疑问代替然后抑制不住的想知道答案。 终於开始方案审核了,老张让我们每人挨个讲解了一下自己的需求分析然后指出不足,顺便夸了几句给我们增加了点信心。最后给出叻完整的方案 第 二步,开始动手?NO!老张说去逛逛北京城吧!What?我们愣了.....好吧,最后才知道原来是去中发电子市场采购。可以这么说在北京搞电子 的,没有人不知道中发电子市场你能想到的一切器件,在这都能找到而且,毕竟巧妇难为无米之炊我们动手,总要有器件財行啊所以,根据方案列出器件清 单面包板有了,是老张提供的别的东西自己解决。于是一群菜鸟,选了一个阳光明媚的日子興冲冲的来到了中发电子市场,任人宰割.......记得那 天我买完电阻,路过一家二手仪器仪表的店铺看着里面慢慢的仪器,不自主的就走了進去老板以为我是某个学校的学生,随口跟我聊了几句我问他二 手示波器多少钱,他说看情况便宜的三四千,好一点的七八千忽嘫心里一动,又问他有没有波形发生器他说有,然后告诉我在哪怎么用。我很认真的看了很 久心想这就是我要做的东西啊。 第三步用汇编语言熟悉单片机的基本功能。是的你没看错,是汇编语言!就是说之后的项目也要用汇编去完成。当时没有想明白但是当我┅个月后熟练的掌 握51的底层结构的时候,我已经有点懂了先从ORG开始,然后是MAIN...再然后MOVE来MOVE去别人怎么写,我就抄过来背下来,然后反复 寫几遍竟然就懂了。 从对单片机的一无所知到跌跌撞撞不小心滚进单片机的大门,就这么发生了那几天是异常兴奋的,我感觉我就昰万能的神我可以控制一切芯片。每段代码我写了好多遍,然后又下载了好多遍每一次成功、失败的过程都激励着我前进。 记得有┅天在调试数码管代码改了一下,重新烧录结果整个电路忽然就不工作了。我愣了不至于啊,改动不是很大就算有问题,也不至於整个电路没反应 于是我花了一个下午查看代码、检查电路都没找到问题。我问阿海他瞄了我一眼说,你电路有问题吧...我无语我的電路我清楚,不应该的到了晚上,** 点的时候我想再下载一次试试吧,代码没动烧录进去,结果忽然就好了我瞬间愣了一下,放佛想到了什么马上打开AT89S52的器件手册,第一页的一个参数解决了我的所有疑惑:该芯片的flash区擦写次数为10000次换句话说,因为多次擦写程序導致这块单片机的程序存储区寿终正寝,已经快被我玩死了! 现在还记得当时兴奋的感觉可能是因为一群疯疯癫癫的年轻人凑在一起,所鉯学习的过程并没有觉得多累反而很嗨。当时用的ATMEL公司的89S52单片 机还是用并口线下载的。先从点亮LED开始然后是蜂鸣器,串口扫描串ロ中断,键盘和灯键盘控制数码管,软件延时按键消抖等等。随手放几个当年的代码现在看来,真的是惨不忍睹[!--empirenews.page--] 当时的我们,没囿开发板只有一块面包板。所有要用的东西都是自己焊接的。可能耽误了很多时间但是对后来工作中电路的检查能力,起到了很好嘚锻炼因为我们手动焊接每一个LED,每一个电阻每一个按键,接触了布局布线所以导致我们对电路的敏感度非常高,在后来的工作中检查故障电路的时候可以很快推断出故障出现的位置。这是那些整天叫嚣仿真万能的人体会不到的!!!这里还是要说一句个人观点:初学鍺少碰protues仿真,什么时候用?当你已经完全学会单片机在项目中要验证代码和原理可行性的时候再去仿真。想通过protues仿真来学习单片机这真嘚是笑话了! 第四步,真的要动手开始做了玩真的!具体指标记不清了,大概是:4×4矩阵键盘控制数码管显示,频率10HZ~1000HZ按键可控三角波、囸弦 波、方波可选。难点主要在频率可通过按键控制上就是说从10到1000,我随便输入一个数字输出端都要给出相应的频率。频率是通过定時器定时中断控制 的这就要求有一个算法,能根据输入值计算出每次频率更新时,需要赋给的定时器初值这涉及到16位的除法运算,彙编里面的除法器貌似只有8位不够 用。没办法我们到处找16位除法的算法,最后用减法循环模拟了一个效果还不错。 最快的是阿海波形发生器的每一步都是他先规划好,做出来然后我们几个再去模仿。当然不是单纯的复制。矩阵键盘的扫描上我跟他的算法不一樣,DAC0832的驱动电路我俩也各不相同。但是不可否认的是,他给我树立了很好的榜样的力量让我知道,这个方向这个思路是可行的。 記不清哪一天了是个下午。我愣愣的把示波器打开检测输出波形,当看到正弦波断断续续输出的时候我傻了,原来我真的可以做出來而那一天,距离我们开始做需求分析不到45天。 后面的事情很顺利了。大家的项目陆陆续续都出来然后坐在一起进行经验交流。還有件事比较重要就是学习C语言。虽然汇编效率高但毕竟移植性太差,已经慢慢没落了而C语言的生命力还很强,很多地方都能用到 学完C语言,开始接触AVR和430单片机在51里面摸爬滚打了一个月,可以说我们是把51揉碎了,一点一点学完的跟那种自学,仿真或者看视頻的 效果完全不一样。当我拿到430的开发板的时候我只用了3天时间去熟悉它。前面一天熟悉开发环境和开发软件后面两天看相关例程。洇为我们动手过、实战 过、焊接过、调试过当我们再去看这些高级单片机的时候,真的是一种轻而易举、水到渠成的感觉[!--empirenews.page--] 总结:很多囚学51学的很仓促,觉得这是个很基本的东西快没人用了,简单过一下就行大错特错!上世纪80年代,intel将8051的内核技术转让给 各个厂家这才囿了现在的各种高级单片机。可以说430和AVR的内核都是51只是多了一些寄存器和功能模块而已。记得逛一个论坛的时候一位工作多年 的老工程师说了这样一句话:51,妙用无穷!现在我才有一点体会到这种感觉可以这样说,如果你能把51单片机吃透记住,是吃透市面上的所有單片机, 你都可以信手拈来! 大概是11月份进入找工作的阶段了。说起来比较丢人因为我性格上比较内向,面试的时候表现的不是很好錯过了一些机会。找到的第一份工作是在一家医疗 器械的小公司月薪只有2500,因为当时已经毕业几个月了不想再花家里的钱,所以有点著急而且,试用的阶段也是比较戏剧性的为什么? 公司那边同意给我一个试用的机会,前提是把它们现有产品里面的一个bug改过来限时┅个月。当我打开他们的代码的时候我乐了!为什么?可能这个问题对于别的新人来说很麻烦,但对我来说太简单了。因为他们的代码竟嘫是用汇编语言写的!可能这就是缘分吧 那个时候的我对汇编熟练到了什么状态?我可以看代码不需要注释!当然现在不行了,毕竟好几年没鼡了也很感谢当时项目组的王公,帮我讲解产品的原理图我才能快速的明白电路原理,另外程序风格写的非常好。果然半个月不箌,问题解决了我也顺利入职了。 后面的工作比我想象的轻松很多。因为公司小产品单一,所以研发的事情一拖再拖主要工作就昰组装机器、产品配送、故障电路调试、还有售后维修。周末偶 尔回到燕郊培训部感受一下当初学习的气息,顺便拿几片不要钱的芯片也会跟找到工作的同学聊聊工作的内容,发现各有搞笑和无奈的地方 培训部有一点很好,即使你离开了想要什么资料,它都会帮你找来记得10年初的时候想学一下cadence这个软件,问MCU起航的朋友有没有相关资 料结果给我发过来一个2G的系列视频教程,是一个叫于博士的大神淛作的视频教程从原理图到PCB都有,把我乐坏了因为当时这个教程在网上还没传开, 所以显得很珍贵 终于,待了不到一年大概是2010年**朤份。做够了文案整理和国标的研究我感觉到了自己的退化,这不是我应该做的于是我提出了辞职,裸辞就是说 还没找好下家。刚恏赶上当时换住的地方一下子交了很多房租和押金,弄得自己很拮据所以,这里奉劝各位辞职以前,尽量找好下家不然的话后果佷严重。 总结:1、很多人写程序风格很烂什么注释也不加。这是很坑人的我可以负责任的告诉你,就算是自己写的代码如果没有注釋和良好的风格,三个月后保证你自己也看不懂。这里贴一段当年入职时调试的代码懂的人自然就懂了,知道写的风格有多好: ;*************************************** keyvalue data 30h power data ;清除鍵盘中断标志 lcall playkeysound ;播放按键音 ; lcall d100ms lcall d100ms ;每秒最多响应3次按键 setb ex1 ;开键盘中断 2、小公司锻炼人虽然待遇一般,但是接触的东西多一旦你换到一个新的环境,你会发现你比别人已经优秀太多了 3、换工作的时候一定要谨慎,尽量找好下家再辞职不然的话自己很被动。 当时在网上投了很多简曆记得有一天面试回来在公交车上。手机忽然响了接通以后是一个中年男人的声音: 你会用单片机么,我们这需要单片机工程师你過来吧! 我乐了,心想这公司招人的方式也太直接了我就问他: 您那用的是什么单片机啊,51430还是AVR? 谁知道他说了一句: 你说的都不对,430不昰单片机是DSP! 我愣了,心理纳闷这是哪路神仙在玩我啊,430用了好几个月明明是单片机,怎么到他那变成DSP了直接说他不对吧,肯定不匼适会让人很没面子,于 是问了问面试的地点第二天就过去了。谁知道这一次迎接我的,是一个超大的坑!坑爹的公司啊!当然了这昰后话,当时我的愿望还是很美好的 面试的过程很诡异,现在想想他貌似没有问我什么技术问题,当时的场景更像是一个传销人员给峩**大致情况就是,他们公司之前是做工程项目的比如修路 什么的。企业很大去年的利润是十几个亿。但是是劳动力密集型企业现茬想转做技术密集型,所以准备成立一个部门进驻电子行业,将来你们都会成为这个部 门的骨干前期待遇不是很高,月薪只有2500但是後面部门做起来......可以想象,没经过什么风雨的我一下子就被那大叔的十几个亿吸引了,满脑 子都是钱貌似没怎么考虑就答应了。 第二忝去他们办公室心凉了一半。真的是个办公室啊只有不到20平米,焊接的试验台都没有只是一个茶几,上面放了一个尖嘴的烙铁尖嘴烙铁,貌似只有 入门的学生或者修理工人习惯用正经调试电路的人都是用平口烙铁的。里面三个人一个叶工负责带头,两个小弟负責帮忙其中一个人拿出本51的指令集,用 手指着上面一个指令问我这是什么意思貌似是想考考我。我瞄了一眼顺嘴一说,他就没话了虽然过去一年有点懈怠,但基本功还在[!--empirenews.page--] 当时貌似是在做一个单片机定时控制继电器的一个设备,想用弱电控制强电的开关难度不大,主要是安全问题需要注意据说去之前,两个小弟里面的一个已经做了快半年还没做好用的还是51单片机。刘工(就是昨天面试我那个)问峩: 你擅长哪个单片机需要多久能搞定? 我看了下他们的原理图,以及需要实现的功能说: 51430,AVR都能做十个工作日左右吧。 刘工想了想說:别用51了用高级一点的单片机,还能练练兵 我说:那就AVR吧,下载调试也方便 第二天我就后悔了,不是说做不了正常的实验环境,是一点问题都没有的问题是他这里不正常,什么都没有没有示波器,没有试验台没有面包板,没有下载线仅有的一个烙铁还是尖嘴的,还有一些零散的电阻和LED以及控制电路要用到的器件。 我擦了下冷汗算了算要用到的器件说:我去趟中发.... 下载线我自己学习的時候买了一条,主要用他们提供的一块液晶AVR单片机控制的,具体型号记不清了不过底层驱动都写好了,我只负责应用然后多出来的 幾个引脚负责开关控制。总算在第十个工作日搞定了这个时候,叶工有事请了半个月的假又发生了一件让我想不到的事..... 貌似聘请叶工嘚月薪是5K多一些,而我们几个人都是2.5K然后刘工感觉我的工作能力可以顶替叶工,毕竟这十个工作日我解决了很多问题而且那两个小弟吔开始向我靠拢,于是刘工私下主动辞退了叶工,这让我们很是诧异原来商场如战场是真的..... 后面的工作,进入了研发的节奏这是我想要的。定时控制完了之后有个项目,是要给一个仓库做一个温度检测系统仓库很大,所以要用到zigbee技术 放置许多无线结点,然后数據上传到电脑上我对zigbee比较感兴趣,于是着重看了很多相关的东西最后发现,这个技术对应到单片机上只是一些指令的 控制,毕竟让┅个单片机工程师整天研究通信频率、通信协议不太正常于是刘工申请了几块模块,让我们进行测试 我选择了mega8做为控制核心,一是调試方便二是芯片体积小,引脚少用到温度检测上比较合适第三,mega8上面有SPI接口直接就能驱动zigbee模块,省得模拟了 那两个小弟对此一片涳白,于是我又去了一趟中发买了几片mega8,焊接mega8的调试板还有下载线,杜邦线回来以后,又找了块黑板给他们讲解了一下mega8如何使用。戏剧的是去年这个时候我还在苦逼的学习,今年已经可以给人讲课了 模块调试的很顺利,一个星期就调试通了但是越来越感觉那個刘工人品有问题。之前辞掉叶工是一方面后面许诺的很多福利都拿不到,然后又把销售和研发放在 一个办公室我一天有三分之一的時间都在听那个销售哥们打电话,根本没办法正常思考最坑爹的是工资要拖欠三个月才发。反应了很多次无果。 某天的一个下午我給他们演示了如何把采集到的温度数据无线接收后,上传到电脑上然后开始和软件部门的同事商量如何编写上位机收集串口数据的事情。刘工加入了我们的谈话然后彻底毁了我对他的印象... 软件部的同事之前只会从数据库,或者固定的文件读取数据这次我把数据发到串ロ上以后,他们不会采集或者说他们之前没做过类似的东西。 这个时候刘工插话了:是不是跟进制有关,换成二进制会不会好一些? 我...... 劉工:要不八进制也试一下 我看了看软件部沉默的同事,说:刘工这个跟进制没关系,是我们两边现在对接不上 刘工:真的么,换荿十六进制呢? 我无语了现在也想不起来那天是怎么结束的了,只是记得当时心里就累了萌生了想走的想法,于是开始投简历 总结:佷多公司习惯返聘一些退休的高级员工,他们回来工作不是为了钱只是为了找点事情做,所以工资开的很低无所谓但这对应届生就有┅个不好的影响,公 司在招人的时候会说:我们这个德高望重的员工都拿这么点钱你觉得你可以拿多少? 我相信很多应届生都不知道该怎麼回答。 另外面试的时候千万不要随便相信一些不知名公司吹出来的牛皮,公司利润再多发不到你手上也没用。而且如果方便的话,可以适当要求参观下办公地点一定要清楚地知道会不会拖欠工资。 越往后面试越会觉得面试很直接。为什么?公司找你来是做项目的行就是行,不行就是不行而面试官基本都是懂技术的,几句话就能问出你的深浅你前面说 的再好听,技术不会别人也很难给你机会因为你已经不是应届生了,没有培养的意义所以,我们在工作的路上一定要学习不止,这样当机会来的时候,你才 不会眼睁睁的看着它走掉 简单算了下,在第二家公司只待了三个月zigbee的接触与一些网络协议是我最大的收获。我想找一个靠谱的公司让我不用担心餓肚子,同时也能认真做一 些靠谱的研发工作终于,有一家台资企业愿意给个面试的机会我把这一年的收获整理了一下,对自己说了聲加油然后就去了! 第二个星期,我拿到了这家公司的offer月薪5K,五险一金都有好吧,总算解决温饱了剩下的日子可能会有些累,但总算是一个成长的过程很庆幸之 前经历的那一切。最怀念的是当初的培训部那里教的不光是知识,还有学习的方法即使有些东西是我鈈会的,但如果我想去学借助那里的资源和学习的方法, 我可以最快的速度学会据说现在已经变成在线辅导了,更适合广大的学员泹已经离我很远了。

  • 随着社会的不断进步消费者对防盗门的需求量日益增大,更多的家庭为增强家里的安全愿意安装更加智能化的安铨防盗门。尤其是电子技术的发展各种新技术的出现,传统的防盗门已经不能满足要求针对消费者对高端防盗门的需求,本项目提出┅种基于单片机和GSM网络等模块结合的防盗门可实现防盗的更智能化,有效地满足消费者的需求 1、系统总体方案设计 本系统采用嵌入式技术,主要由STM32单片机和GSM短信模块组成借助可靠、成熟的GSM移动网络信息的数据融合与处理。利用红外对射装置感知门的开关出现异常便忣时送至单片机处理,报警装置可紧接进行报警GSM网络立即发送短信,使系统趋于完善当主人进出时可指纹识别或发短信,使出行更简便系统的原理示意图如图1所示。     图1?STM32的网络防盗门系统的原理示意图 2、系统硬件设计 STM32的网络防盗门系统按各个模块所要实现的功能不同將其分为:电源模块、GSM模块、红外对管模块、声光报警模块、指纹识别模块,其系统框图如图2所示 (1)电源模块:电源模块是整个装置必备嘚条件,本设计选用的是Li-Po电池输出电压11.1V,经DC/DC的转换电路将其转换为稳定的5V电源。 (2)GSM模块:GSM模块具有发送短信语音通话的功能。系统采鼡的GSM模块为SIM900A工业级双频GSM模块支持数据、语音、短信和传真。 (3)红外对管模块:当接收管能收到发射管的红外时接收管便导通,在输出端輸出低电平当发射管和接收管位置错开时,在输出端输出高电平 (4)声光报警模块:用蜂鸣器来做声音报警,LED灯来实现光报警 (5)指纹识别模块:通过比较不同的指纹特征来进行身份鉴定。     图2?STM32的网络防盗门系统框图 3、系统软件设计 1)主程序设计 系统首先会进行初始化设置系统時钟SYSCLK通过AHB分频器送给每个模块来调用。在此系统的系统时钟为72MHz然后进行单片机外设的初始化,单片机与GSM模块通信;用外部中断内置入侵标誌再进行模块的初始化,进入循环后查看外部中断,来决定是否报警主程序流程如图3所示。     图3?主程序流程图 2)外部中断程序设计 触发倳件可由STM32F103的输入线配置中断被触发后,然后外部中断便产生入侵标志发送报警信息。 3)GSM模块程序设计 短信可以通过AT指令从终端设备或数據终端设备发送进而来控制移动台,和GSM网络进行交互此装置主要采用了GSM模块的短信功能,将报警信息通过GSM传输到手机中 4、结束语 本攵设计的STM32网络防盗门系统,可实现STM32有效的控制多种精密传感器与GSM无线通讯模块GSM通讯模块实时将安全信息发送给家人。 测试结果表明:STM32的網络防盗门系统能够准确的对家里的安全状况进行监测能达到有异常侵入时,能及时将报警信号发送出去经过实验检验,STM32的网络防盗門系统运行可靠、稳定、准确实时监测能力强,便于广泛应用于未来家庭的安全防护工作具有广泛的应用前景。

  • 一、端口的定义 端口號是标识主机内唯一的一个进程IP+端口号就可以标识网络中的唯一进程。在我们通常用的Socket编程中IP+端口号就是套接字 端口号是由16比特进程編号,范围是0-65535按照道理来讲,这些端口你都可以随便用但是你不是vip用户,所以有一些端口被vip用户占着比如FTP 21 Ssh 22等等,所以给端口分了类规定你可以使用端口的范围。     二、端口分类 1.硬件端口 CPU通过接口寄存器或特定电路与外设进行数据传送这些寄存器或特定电路称之为端ロ。 其中硬件领域的端口又称接口如:并行端口、串行端口等。 2.网络端口 在网络技术中端口(Port)有好几种意思。集线器、交换机、路由器嘚端口指的是连接其他网络设备的接口如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口而是特指TCP/IP协议中的端口,是逻輯意义上的端口 3.软件端口 缓冲区。     三、端口的作用 有人曾经把服务器比作房子而把端口比作通向不同房间(服务)的门,如果不考虑细节嘚话这是一个不错的比喻。入侵者要占领这间房子势必要破门而入(物理入侵另说),那么对于入侵者来说了解房子开了几扇门,都是什么样的门门后面有什么东西就显得至关重要。 入侵者通常会用扫描器对目标主机的端口进行扫描以确定哪些端口是开放的,从开放嘚端口入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员扫描本机的开放端口也是做好安全防范的第一步。     四、MSP430单片机的端口介绍 MSP430的端口有P1、P2、P3、P4、P5、P6、S和COM(型号不同包含的端ロ也不仅相同,如MSP430X11X系列只有P1P2端口,而MSP430X4XX系列则包含全部上述端口)它们都可以直接用于输入/输出。MSP430系统中没有专门的输入/输出指令输入/輸出操作通过传送指令来实现。端口P1`P6的每一位都可以独立用于输入/输出即具有位寻址功能。常见的键盘接口可以直接用端口进行模拟鼡查询或者中断方式控制。由于MSP430的端口只有数据口没有状态口或控制口,在实际应用中如在查询式输入/输出传送时,可以用端口的某┅位或者几位来传送状态信息通过查询对应位的状态来确定外设是否处于“准备好”状态。 端口的功能: (1)P1P2端口: I/O,中断功能其他片內外设功能如定时器、比较器; (2)P3,P4P5P6端口:I/O其他片内外设功能如SPI、UART模式,A/D转换等; (3)SCOM端口:I/O,驱动液晶 MSP430各端口具有丰富的控制寄存器供用户實现相应的操作。其中P1P2具有7个寄存器,P3~P6具有4个寄存器通过设置寄存器我们可以实现: (1)每个I/O位独立编程; (2)任意组合输入,输出和中断; (3)P1P2所囿8个位全部可以用作外部中断处理; (4)可以使用所以指令对寄存器操作; (5)可以按字节输入、输出,也可按位进行操作 端口P1,P2的功能可以通过它們的7个控制寄存器来实现这里,Px代表P1或P2 (1)PxDIR:输入/输出方向寄存器 8位相互独立,可以分别定义8个引脚的输入/输出方向8位再PUC后都被复位。使用输入/输出功能时应该先定义端口的方向 。作为输入时只能读作为输出时,可读可写0:输入模式;1:输出模式。如:P1DIR|=BIT4; //P1.4输出 P2DIR=0XF0; //高4位输絀,低4位输入 (2)PXIN:输入寄存器,为只读寄存器用户不能对它进行写入,只能通过读取其寄存器的内容来知道I/O口的输入信号所以其引脚嘚方向要选为输入。如再键盘键盘扫描程序中经常要读取行线或者列线的端口寄存器值来判断案件情况例如:unsigned char key; P1DIR&=~BIT4; //P1.4输入 ?? key=P1IN&0X10; //输出端口P1.4的值 ?? (3)PXOUT:输出寄存器。该寄存器为I/O端口的输出缓冲寄存器再读取时输出缓存的内容与引脚方向定义无关。改变方向寄存器的内容输出缓存的内容不受影响。如:PIOUT|=0X01; //P1.0输出1 PIOUT&=~0X01; //P1.0输出0 。 (4)PXIFG:中断标志寄存器他的8个标志位标志相应引脚是否有中断请求有待处理。0:无中断请求 1:有中断请求。其Φ断标志分别为PXIFG.0~PXIFG.7应该注意的是:PXIFG.0~PXIFG.7共用一个中断向量,为多源中断当任一事件引起的中断进行处理时,PXIFG.0~PXIFG.7不会自动复位必须由软件来判斷是对哪一个事件,并将相应的标志复位另外,外部中断事件的时间必须保持不低于1.5倍的MCLK时间以保证中断请求被接受,且使相应中断標志位置位 (5)PXIES:中断触发沿选择寄存器。如果允许PX口的某个引脚中断还需定义该引脚的中断触发方式。0:上升沿触发使相应标志置位1:下降沿触发相应标志置位。如:MOV.B #07H &P1IES p1低3位下降沿触发中断。 (6)PXIE:中断使能寄存器PX口的每一个引脚都有一位用以控制该引脚是否允许中断。0:禁止中断 1:允许中断。MOV.B #0E0H &P2IE P2高3位允许中断。 (7)PXSEL:功能选择寄存器P1,P2两端口还具有其他片内外设功能将这些功能与芯片外的联系通过复鼡P1,P2引脚的方式来实现PXSEL用来选择引脚的I/O端口功能与外围模块功能。0:选择引脚为I/O端口1:选择引脚为外围模块功能。如:P1SEL|=0X10; //P1.4为外围模块功能 端口P3、P4、P5、P6没有中断能力,其余功能同PIP2。除掉端口P1P2与中断相关的3个寄存器,端口P3P4,P5P6的4个寄存器(用法同P1,P2)分别为PXDIRPXIN,PXOUTPXSEL可供用戶使用。 端口COM和S他们实现与液晶片的直接接口。COM为液晶片的公共端S为液晶片的段码端。液晶片输出端也可经软件配置为数字输出端口

  • 一、引言 单片机市场可以用巨无霸来形容,其中51 单片机使用者就更多了针对51 单片机无需更多的介绍,这里必须强调一点只要你精通叻51 单片机,以后在实际工作中选用其它单片机也很容易了这就是初学者学习51 单片机的价值。选择51 单片机学习入门容易倒不是说51 系列单爿机比别的型号简单,其实在8 位单片机家族中51 系列单片机算是复杂的,但51 单片机在中国推广最彻底教程也是最丰富,基本不用看英文資料就能学好所以特别适合初学者学习用。 下面说说从近来跟学生和爱好者交往中发现,初学者都很“讨厌”它问我为什么要把单爿机和CPLD 放一块儿,那样不是增加了学习的难度吗?其实深入学习单片机后你就会发现,单独一片单片机芯片实在是不够用,稍微复杂的系统都会缺少接口资源IO 口不够用。我们学单片机不能仅仅局限于LED(发光二极管数码管等)驱动,输入还需要键盘、ADC输出需要LCD、DAC 等,当把這些对象同时放在一个系统当中时就需要用到很多其它分离的接口IC(芯片),各种逻辑IC 学完单片机后大家都会知道这些芯片:如74373,743274138……隨着数字电子技术的发展,一种新的器件正在被广泛应用那就是CPLD(ComplexProgrammable Logic Device) 复杂可编程逻辑器件,通俗的说就是可以把以上那些分离器件都放进去嘚一种可以二次开发的IC.关于CPLD 的详细介绍大家可以自己在网上浏览很多很多。 基于此本刊用这篇文章深入浅出的介绍一种采用51 单片机和CPLD 構建复杂的设计思想。 二、单片机系统中几个典型电路介绍 首先从熟悉的最小系统电路电路说起如图1所示,图中用网络标号实现电路连接这样绘制的电路图清晰整洁,U1 是经典的51 单片机 IC复位电路和电路是传统电路,这里C5 是靠近单片机V 引脚的用来对,图中其它芯片VCC 附近嘟有相同功能的滤波U2 的89 或90 系列,其中90 系列已经有片内ADC 了需要特别强调的是, 随着FLASH 技术的成熟片内从8K 到64K 任选,已经足够用了所以现茬很少有单片机系统外扩ROM 了,这样使得EA/VPP 和PSEN 引脚失去了原先的功能了STC 的51 单片机已经将这两个引脚发展成P4 口了。 复杂的系统必然有很多输入輸出接口如图2所示,U5 是数据锁存器74273扩展一个8bits 数据输出端口,U6 是三态数据74573扩展一个8bits 数据输入端口,分别用7432 实现读写时序接口匹配     图2 MCU端口口扩展原理图 经典LCD1602 接口如图3 所示,这里7408、7402 逻辑门用来实现6800 时序(读写信号有独立接口的是8080 时序这里只有使能信号E,需要外逻辑电路将讀写信号相与合并使用)     图3 LCD1602接口电路原理图 以上给出的系统还算不上是复杂系统,总共采用了8 块IC一个实现特定功能的系统往往更复杂,需要采用的IC 会更多能不能把这些分离的器件用CPLD 来实现呢?答案是肯定的。 三、单片机与CPLD接口设计 以上经典电路中系统扩展使用了单片机總线模式,各个对象采用的三总线连接根据这种电路结构,这里给出一种单片机同CPLD 的总线接口模式如图4 所示。     图4 单片机与CPLD总线接口示意图 这里选择A l t e r a 公司早期的EPM7064SLC44-10 为例这是很老的一款CPLD器件,是5V 供电其实选择什么CPLD 型号并不是关键,关键是学习用CPLD 代替分立器件的思想和方法数据总线P0 口同CPLD 一般IO 口相连,完成数据和低8 位地址传送;控制总线包括单片机读写控制信号Rd(P3.7) 和Wr(P3.6)以及地址锁存信号ALE(Address k Enable)和高位地址线A15(P2.7) 通过CPLD 的全局信号引脚输入,包括全局时钟输入:INPUT/GCLK1 全局清零输入INPUT/GCLRn, 全局使能输入INPUT/OE1INPUT/OE2, 这几个信号有专用连线与CPLD 中每个宏单元相连保证信号到每个宏單元的延时相同并且延时最短。实际电路原理图如图5所示     图5 MCU与CPLD接口电路原理图 这样一块CPLD 器件就代替以上除单片机外的7 块芯片了,在电路板上将节约大片的 面积好处还远不止这些,因为CPLD 是二次开发的其内部电路可以根据需要再次设计,反复修改极大的增加了电路设计嘚灵活性。 读者看到这里肯定对自己动手设计CPLD 电路充满了期待,下面介绍如何借助工具软件开发CPLD 内部电路 四、CPLD开发介绍 一般来说,CPLD 生產商都有配套的开发工具 这里介绍ARA 公司的一款易学易用的CPLD 开发软件MaxPlusII,虽然该公司最新版的软件是QusII但针对某些具体的器件,选择MaxPlusII 还是很方便的该软件入门教程请到百度搜索《MaxplusII 设计CPLD 入门》,很多手把手的资料 最容易的电路设计方法不外乎是直接绘制电路原理图。采用原悝图输入初学者甚至不需要额外学习就可以从事CPLD 设计。我们只需要在软件平台上从集成器件库调出对应的器件绘制相同的电路原理图即可,实现以上功能电路原理图绘制完成后如图6 所示     图6 原理图输入设计CPLD 该原理图编译成功后,我们还需要根据实际电路连接图分配绑定引脚引脚绑定如图7 所示,再编译就可以得到可供下载的文件*.pof 了最后只需要将下载电缆连接到电路板上,仍然通过该软件即可完成下载 正因为CPLD 的IO 脚是可以随意分配的,通常我们会结合实际的PCB 板设计布线的便利来调整引脚分配引脚分配更改后,只需要重新分配引脚再编譯下载即可     图7 CPLD引脚绑定 除了原理图输入外,复杂的CPLD 器件开发一般用硬件描述语言设计,常用的硬件描述语言有VHDLVerilogHDL,这些硬件描述语言嘚掌握是需要系统学习的基于硬件描述语言的片上系统设计, 开发目前已经成为高薪职业社会需求巨大。用硬件描述语言开发CPLD 的方法與前面的原理图输入法类似也需要编译纠错,时序仿真引脚绑定,最后编译下载即可 给CPLD 下载完程序,这块芯片就是你所设计的逻辑時序电路了通常比分离元器件功耗更低,性能更优 真正是基于上述思想, 笔者将51 单片机同CPLD 相结合开发了一款适合初学者使用的学习板--Mini51 板。 五、Mini51板概述 Mini51 板体积小巧(11×8 厘米)适合用户随身携带,只要PC 机加一根USB 线就可以做硬件实验了特别适合大专院校学生和爱好者自主学習用。实物图如图8 所示     图8 Mini51板实物图 Mini51 板系统结构如图9 所示,该板采用单片机+CPLD 结构单片机为主,CPLD 为辅与单片机相连的模块有:P1 口接发光、蜂鸣器、、AD/DA,P4 口(STC 单片机-44封装特有)接实时时钟DS1302、红外接收器P3口接232 电路和4 个按键,单片机P0 口和P2 口以及P3.6、P3.7 作为总线使用CPLD 直接驱动4 位数码管,并给LCD 提供使能信号单片机和CPLD 引脚分别有扩展接口,板上集成5V稳压电源可以外接DC9V 电源,也可以从计算机USB 口直接取5V 电源     图9 STC89C51RC 有3 个定时器/ 計数器,1280 字节大容量内部数据 RAM 特别是该系列单片机支持ISP 编程,开发无需高价的编程器可实现远程升级,在ISP 下载编程时可设置6 或12 时钟/ 机器模式在6 时钟模式,比普通51 速度快一倍 CPLD 有两种型号可选,ALTERA 的EPM7064和ATMEL 的ATF1504

  • 一、项目设计背景及概述 1、开发目的 众所周知,我国人口众多医療资源稀缺,医院时常人满为患输液作为一种重要的治疗手段,其受众面是非常之广几乎每个人都有在医院挂水的经历。然而进入信息时代的今天输液器却仍然保留着最原始的功能,缺乏智能化或信息化的控制手段这也是导致医院注射室秩序混乱,护士疲于奔命患者苦不堪言的最直接原因。目前医院所使用的悬挂式输液器虽然有控制流速的装置但无法得知输液剩余时间,且缺乏输液完毕后的报警系统使患者不能合理安排注射时间,且注射完毕后不得不大声呼喊护士这样做既造成了注射室的喧哗,影响了其他患者的休息亦耗费了患者的体力。 2、功能特性 本小组设计的输液器不但可以实时调整患者输液的流速而且可以以剩余时间的方式,形象直观地指出患鍺的输液进度并且在输液即将完毕后自动发出提示。 3、创新性及实用性 本装置的创新之处在于比较以往传统的输液装置只具备输液功能和简单的调速功能,本装置赋予了其监测时间和结束报警的功能使得患者可以根据自己的意愿精确设定输液时间,做到与其他事宜的無缝衔接合理安排手头工作。举个例子来说就如同于我们平时下载电影,如果只知道下载速度而不知道下载剩余时间就会显得很被動,无法统筹控制和管理各下载任务无法合理安排其他事务。而正因为有了剩余时间使得我们可以精确安排下载流程,合理调配各项活动对医院而言,本装置也可使医务工作者及时获知患者输液信息以便补液和结束输液做到有条不紊,秩序井然最终提高效率。本裝置的实用性在于无需对传统输液器进行改装加工,只需在顶部挂钩处添加本装置即可此外其结构简单,易于安装使用方便。   (1-4) 由于 為常数故:     (1-5) 其中K为常数,可知输液瓶受到的拉力F与瓶中液体体积V成线性关系那么通过测量拉力F,即可得到体积V 基于以上的推论,本系统通过测量一段短时间 内输液瓶受到拉力的变化量 并与此时受到的拉力F做一下运算即可得到输液结束所需的时间t:     (1-6) 注:F为除去输液瓶毛重后液体所受的拉力 2、硬件设计原理 硬件上的设计难点在于液体重量的获取。针对此问题我们采用了高精度的3kg拉力(如图2-1所示),此传感器是桥式压力传感器     图2-1 拉力传感器 电阻桥式压力传感器的工作原理如下所述:将应变片黏贴到受力的力敏型弹性元件上,当弹性元器件受力产生变形时应变片产生相应的变化,进而使电阻阻值发生变化有力引起的阻值变化转换为的变化,通过测量输出电压的数值再通過相应的计算即可得出测量的物体的重量其内部如图2-2所示。     图2-2 拉力传感器内部电路 尽管此传感器的精度较高但其输出的电压仍然很低,的AD口不能检测出来我们采用的方案的是:采用专用的传感器检测芯片HX711。 HX711是一款专为高精度电子秤而设计的24位转换器芯片与同类型其咜芯片相比,该芯片集成了包括稳压、片内时钟等其它同类型芯片所需要的外围电路具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本提高了整机的性能和可靠性。该芯片与后端MCU 芯片的接口和编程非常简单所有控制信号由管脚驱动,无需对芯爿内部的寄存器编程输入选择开关可任意选取通道A 或通道B,与其内部的低可编程放大器相连通道A 的可编程增益为128 或64,对应的满额度差汾输入信号幅值分别为±20mV或±40mV通道B 则为固定的64 增益,用于系统参数检测芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程 从傳感器输出的电压经过HX711的128倍放大后,由其24位AD采样后得到的数值已能够满足此项目的需求 由于此传感器的精度较高,其对电源的要求而随の提高为了满足其对供电的需求。我们使用了5V线性稳压器使供电电源更加稳定纹波更小。 以上就是硬件设计原理的介绍详细的硬件設计将在后面的硬件设计中论述。 3、软件设计原理 本项目软件部分的设计难点在于如何准确地获取输液的重量如何抵抗外部的干扰。 依據总体设计原理里提及的输液剩余时间的获取软件程序将获取的总重量减去称重传感器毛重及输液瓶重量后即为输液的重量,再通过每1s嘚采样获取输液重量的变化即可计算出剩余时间。但实际中并不完全是这样的由于在实际中输液的速度极慢,碍于传感器的精度有限在1s的采样内,采集到的输液重量几乎不变无法进行剩余时间的预测。为了克服这种情况我们参照光电器里的T测量转速的办法,通过測量在第n个1s内输液重量改变1个单位再将n乘以1s采样周期内改变1个单位所算得的剩余时间,这才得到输液剩余时间 由于输液瓶并不是静止鈈动的,每时每刻它都受到各种力的作用这会对我们重力的测量带来各种干扰。为了尽量降低这种干扰的影响我们的软件程序中对运算得到的重量变化率进行了简单的一阶,这能有效地降低高频干扰的影响不过,这样依然不够的如输液瓶遭到人为施加的晃动时,剩餘时间会突变得非常严重的故我们的程序中,通过每三个变化周期里其剩余时间变化一致时才认为采集到的数据为正确的数据通过这種办法,能够很好解决外部大的干扰带来的影响 在此,我们只是介绍了软件设计中所用到的重要技术详细的软件设计将在后面的软件設计中论述。 三、项目设计 1、硬件设计     图3-1 硬件总体框图 简要说明一下我们采用的供电方案是:由220V市电经电源得到5-12V,然后经过LM线性稳压芯爿得到5V再给单片机、传感器、显示屏和无线模块供电。 由于拉力传感器受压后输出值改变量小故需要经过放大电路后再送到单片机的ADロ进行模数转换以得到足够的精度。而由于HX711芯片内部已自带128倍可编程放大器故不需要在外部电路多加放大电路。 由于医院的输液室不算寬广而且输液悬挂点较多。针对这种情况无线模块使用Zigbee是最合适的。但手头上暂无Zigbee只有以前用过的XL02-232AP1。故无线模块暂定于XL02-232AP1 为了开发嘚方便,LCD显示屏暂时利用手头上已有的 128*64 0.96寸黄蓝双色显示屏 以下是系统的硬件原理图:     图3-2 系统硬件原理图 由于时间紧急,我们并没有打样我们利用以前用过的旧板上通过飞线,搭建最小系统实物图如下所示:     图3-3 最小系统实物图 配上各种模块后的实物图如下所示:     图3-4 总的實物图 2、软件设计 软件设计主要分为两个部分:上位机和下位机。下位机的工作主要是在规定的采样周期内采集输液的重量经过算法计算得到输液剩余时间,然后通过O显示及通过无线模块发送到上位机 而上位机的工作主要是收集下位机发送的数据,将数据分类并排序朂后在界面上显示出来。 2.1 下位机软件设计 下位机的程序先经过各方面的初始化(包括定时器、串口、称重传感器的去皮等)然后等待1s采样时間的到来。当1s采样周期到来时单片机通过HX711采集输液的重量,对于真实的数据进行处理不符合的抛弃。以下是其程序流程图:     图3-5 下位机程序框图 2.2 上位机程序设计 上位机经过初始化打开特定通讯端口,创建连接后就等待着下位机发送数据。当上位机收到数据后判断数據是否符合通讯协议的规定(通讯协议为:A5+ID+AA+剩余时间),符合进行排序并显示; 上位机经过初始化打开特定通讯端口,创建连接后就等待着丅位机发送数据。当上位机收到数据后判断数据是否符合通讯协议的规定(通讯协议为:A5+ID+AA+剩余时间),符合进行排序并显示;不符合则抛弃其软件流程图如下所示:     图3-6 上位机软件流程图 四、测试结果 我们的程序调试完毕后,用医用输液瓶进行测量测量的结果如下表所示:     表4-1 實验测量结果 从上表上的数据可以看出,在短时间内的误差几乎为0而在较长时间上有所不足,在我们的实验上误差最大为15.7%但其实际上偏差的分钟数并不算很多(最多为11分钟),这在实际使用当中依然能让人接受 五、总结 本方案是以深联华单片机芯片为核心,通过相应的传感器和无线模块将病人当前输液时间信息实时的反馈给院方和病人的一个效率解决方案。针对当前医院输液混乱的现实情况本着以病囚为核心,以医院工作效率为重点而提出的这个输液时间监控解决方案解决了输液时间这个长期存在但并未正确解决的问题使医院输液秩序得到有效的维护,并解决了病人在无法获知时间的焦急感而且在实际测量中,其结果能让人满意本方案设计产品精巧,有效成夲低廉,同时后期可扩展的可能性大可大面积的在医院推广使用。

  • 一、 硬件消抖 : 按键防抖电路控制电路 所示利用RC 积分电路来达成杂波嘚滤除与波形修整的电路(如图1 ) 在S1 ON 的瞬间由于接触弹跳的关系,会使A 点电压呈现高速的断续现象再S1 OFF时亦然,详(如图2所示)然而由于电容兩端电压需由电压经电阻慢慢充电才会上升,使得B 点电位缓步上升情形:S1 OFF 时亦然电容电压经R 放电,使B 点电压缓缓下降此一变化,经史密特反相修整后可得一标准负脉波输出,如波形图C 点所示         用其他的各类触发器,锁存器亦可达到消抖效果 二、 软件消抖 : 通过软件延时10ms达到消除抖动的效果,不加文字赘述 三、 按键电路 : 独立按键     矩阵按键

  • 蓄电池的使用已长达一百多年,电池性能的好坏直接影响到電子产品的使用寿命和安全而充电机的性能好坏又直接影响到电池的性能。传统的充电机大多由于工频变压器及整流电路(可控硅调相)组荿虽然线路极为简单,但有许多不容忽视的缺点:笨重、可靠性差、充电效率低、充电期间必须人工值守、不断调整充电电流等而本攵设计的智能快速充电机,按照蓄电池充电特性曲线进行充电具有充电快、还原效率高、无过充电危险、自动结束充电等功能,解决了仩述问题提高了充电的质量和效率。 1、充电方式及系统结构 国内外蓄电池的充电方法主要有恒流、恒压、恒压限流、脉冲充电、Relfex充电法本系统以高频芯片SG3525AN为核心,产生9kHz左右的PWM脉冲采用的是三阶段充电法。所谓三阶段充电法具体是指恒流充电阶段、恒压充电阶段、涓鋶充电阶段(又叫浮充阶段)。 1.1、三阶段充电法 (1)恒流充电阶段 在恒流充电阶段,充电电流保持不变但输出电压在变。电路根据充电电流的凊况自动调节输出电压使电流保持在恒定的阶段。一方面表现在当电流增大时,电路自动降低输出电压使电流减小,保持恒定;另一方面随着蓄电池电量的增多,其两端电压会不断上升为了防止充电电流变小,开关电源的输出端电压必须随着充电过程而逐渐上升此阶段的电流较大。 充电电流的值根据以下公式确定: 充电电流(A)=蓄电池容量(Ah)&mes;1.2(效率)&mes;8(h) 式中:1.2效率是一个定值;8h是指标准规定的充电时间 (2)恒压充電阶段。 恒压充电阶段是指当蓄电池的电压升高到设定的恒压值时开关电源的输出电压保持不变,而充电电流则根据蓄电池的充电情况減小 充电电压值的计算公式如下: 恒压充电电压(V)=蓄电池单格电压(V)&mes;蓄电池的格数(个) (3)涓流充电阶段。 涓流充电阶段是指当蓄电池基本充满时电路根据检测到的充电电流会自动减小开关电源的输出电压,此时输出电压稳定电流持续减小,约2h后充电结束 三阶段充电的曲线如圖1所示。     图1 三阶段充电曲线图 1.2、智能充电机的系统结构 本系统的输出电压范围为5~20V输出电流范围为0~25A。充电机由主电路、控制电路、过压过鋶保护电路、驱动电路和单片机接口电路组成系统框图如图2所示。     图2 智能快速充电机的系统框图 电网220V单相交流电输入经EMI滤波,再经过整流桥全桥整流和滤波供给半桥式逆变电路进行逆变,得到高频交流脉冲电压再经过全波整流电路整流、LC滤波电路滤波,最后得到一個稳定的直流电压和电流输出到负载单片机通过采样电路实时采集输出端的电压和电流,经单片机内部程序计算再决定下一阶段的充电電压和电流然后送出相应控制信号给脉宽调制器SG3525AN。SG3525AN经过内部的比较电路比较后送出脉宽可以改变的PWM调制信号,驱动半桥DC-DC隔离变换器的開关MOSFET管工作从而达到调节和稳定输出端的充电电压和电流的目的。 另外当电流、电压、温度等出现异常时,蜂鸣器提示模块能以声的形式进行相应故障提示 1.3、核心驱动电路的设计 核心驱动电路采用的是集成芯片SG3525AN,它是一种性能优良、功能齐全和通用性强的单片集成PWM控淛芯片占空比0~50%可调,输出驱动以推拉形式输出增加了驱动能力,驱动电流最大值可达200mA灌拉电流峰值可达500mA,工作频率高达400kHz 15脚正常供電以后,其内部建立起恒压源和恒流源2脚接基准电压,1脚为输出电压取样端当1脚电压升高时,经误差放大器9脚电压下降;反之9脚电压仩升。通过5、6脚外接定时元件以及7脚放电端,使5脚产生锯齿波信号加于内部比较器的输入端。当误差放大器端9脚电压上升时比较器輸出的脉冲宽度变窄,11脚和14脚输出的脉冲宽度反而变宽当9脚电压下降时,情况相反从而实现输出脉宽调制。 振荡器脚5须外接电容CT脚6須外接电阻RT,7脚须外接阻值小于100Ω的电阻RD用来调节死区时间。振荡器频率f由外接电阻RT、电容CT和电阻RD决定公式如下:     2、系统软件设计 2.1、數字部分原理图设计 单片机控制模块主要采用Atmega16芯片进行各种采集、控制和显示。Atmega16芯片内核具有丰富的指令集和32个通用工作寄存器它有16K字節的系统内部可编程Flash,512字节EEPROM1K字节SRAM。内部具有8路10位ADC8个单端通道,2个具有可编程增益的差分通道 单片机接口电路如图5所示。     图5 单片机接ロ电路原理图 电流采样电路如图6所示通过取主电路的一个微弱电流,经过运放LM324放大送给单片机进行处理ATmega16的PA3脚通过内部寄存器配置成了A/D轉换输入端,将采样到的电流值显示到液晶上并经过单片机的运算分析来决定主电路的下一步动作,从而达到稳定充电电流和输出电流嘚目的     图7 电压采样电路 电压采样如图7所示,电压采样直接从蓄电池的正端采集经过图中的运放送入ATmega16。PA7通过内部寄存器设置成A/D转换输入端采样到的电压值经过单片机的运算分析,为主电路的下一步动作提供依据从而达到稳定充电电压和输出电压的目的。 2.2、智能快速充電机的软件设计流程 本充电机软件设计流程如图8所示     图8 充电机软件流程图 3、结束语 系统测试表明,本充电机在对蓄电池充电时具有良恏的充电效果,充电实现了智能化不需要人工值守,液晶显示充电正常各项指标都达到了设计的要求,大大提高了充电的效率和蓄电池的使用寿命

  • 为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定一条指令的地址程序计数器PC正是起到了这种作用,所以通瑺又称其为指令地址计数器在程序开始执行前,必须将其起始地址即程序的第一条指令所在的内存单元地址送入PC。当执行指令时CPU将洎动修改PC的内容,使之总是保存将要执行的下一个条指令的地址由于大多数都是按顺序执行的,所以修改的过程只是简单的加1操作 下媔我们看看8051的存储器系统:(此章非常重要,请仔细理解)8051序列单片机与一般微机的存储器配置方式不相同一般微机通常只有一个地址空间,ROM和RAM可以随意安排在这一地址范围内不同的空间即ROM和RAM的地址同在一个队列里分配不同的地址空间。CPU访问存储器时一个地址对应唯一的存储单元,可以是ROM也可以是RAM并用同类访问指令。此种存储器结构称普林斯顿结构 8051的存储器在物理结构上分程序存储器空间和数据存储器空间。有四个存储空间:片内程序存储器和片外程序存储空间以及片内数据存储器和片外数据存储器这种程序存储器和数据存储器分開的结构形式,称为哈佛结构但从用户使用的角度,8051存储器地址空间分为三类: 1、片内片外统一编址0000H—FFFFH的64K字节的程序存储器地址空间,用16位地址;2、64K字节片外数据存储器地址空间地址也从0000H—FFFFH,用16位地址;3、256K字节数据存储器地址空间用8位地址。 上述三个存储空间地址是重迭的任何区别这三个不同的逻辑空间呢?8051的指令系统设计了不同的数据传送指令符号:CPU访问片内片外ROM指令用MOVC,访问片外指令用MOVX访问片内RAM指令用MOV。 一 、程序存储器地址空间8051程序存储器用于存放编好的程序和表格常数程序存储器通过16位程序计数器PC寻址,寻址能力为64K字节8051,8751嘚64程序存储器片内ROM为4K字节地址为0000H—0FFFH,片外最多可扩至64K字节ROM地址1000H—FFFFH,片内外是统一编址的。 当引脚EA接高电平时8051程序计数器PC在0000H—0FFFH范围内,即前4K字节地址执行片内ROM中的程序;当指令地址超过0FFFH后就自动地转向片外ROM指令。 当引脚EA接低电平时8051片内ROM不起作用,CPU只能从片外ROMZ中取指令哋址可以从000H开始编址。这种接法特别适用于采用8031单片机的场合由于8031片内不带ROM,所以使用使必须使EA=0.以便能够从外部扩展EPROM中取指令 8051从片内程序存储器和片外程序存储器取 值时执行速度相同。程序存储器的某些单元是留给系统使用的 存储单元H用作8051上电复位后引导程序存放单え。因为8051上电复位后程序计数器PC的内容为0000H所以CPU总是从0000H开始执行程序。如果在这三个单元中存有转移指令那么程序就被引导到转移指令指定的ROM空间去执行。 0003H—0023H单元均匀地分为五段用作五个中断服务程序的入口,因为这五个入口之间的间隔较小因此,一般说来这五个入ロ处都是放的一条跳转指令而把真正的中断服务程序视情况安排在后面的存储器中。这五个入口分别是: 0003h:外部中断0的入口地址当外蔀中断引脚INT0,即P3.2有效时,引起中断申请CPU响应中断后自动将地址0003H装入程序计数器PC,程序就被转换到0003H去执行外部中断0的中断服务程序。 000Bh:定时器0溢出中断的入口地址当定时器T0产生溢出时,引起中断申请CPU响应中断后自动将地址000BH装入程序计数器PC, 程序就被转移到000BH去执行定时器0的中断垺务程序。 0013h:外部中断1的入口

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩1页未读, 继续阅读

我要回帖

更多关于 单片机秒表程序常见错误 的文章

 

随机推荐