基于单片机的光电计数器设计内容摘要:

;缺点是各模块都采用独立电源,会使 系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。 改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。 综上所述,我们选择第二种方案,电源的电路图如图 31所示。 图 ( 31) 电源电路图 发射和接收部分 光电耦合器是以光为媒介传输电信号的一种电一光一电转换器件,它由发光源和受光器两部分组成。 为了能准确地远距离地感应到产品经过光电门,就必须选择敏感性高且稳定的信号感应器件,而光电耦合器满足这个条件。 光电耦合器是发光源和受光 器件组装在同一密闭的壳体内,彼此间用透明绝缘体隔离。 发光源的引脚为输入端,受光器件的引脚为输出端,常见的发光源为发光二极管,受光器为光敏二极管、 光敏三级管 等,实际电路发光源选用高亮发光管和硅光电 9 池。 光电传感器的电路图如图 32 所示。 图 ( 32) 光电传感器 显示部分 该系统要求显示计数功能。 基于上述原因,我们考虑了三种方案: 方案一:完全采用 LCD 显示。 完全 采用 LCD 显示可显示有限的符号和数码字苻,能满足设计的需要。 方案二:完全采用点阵式 LCD显示。 这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等,也可满足设计的需要。 方案三:采用 LED显示, LED 只显示数字输出。 这种方案既满足系统功能要求,又简单,成本有低。 权衡利弊,第三种方案的优缺点, 决定采用方案三来实现数字显示。 系统中采用的数码管为共阴极数码管,显示电路图的电路如图 33所示。 10 图 ( 33) 显示电路图 报警部分 当计数器计数值大于最大设 定值时,置位 KEYBOARD, 使 KEYBOARD引脚为高电平,计数器停止计数。 SPEAKER就开始报警, 若按下 S1,计数器立即复位,同时停止报警。 报警电路的电路图如图 34所示。 图 ( 34) 报警电路图 本程序设计采用大家熟悉的 C 语言来进行程序的编写, C 语言通俗易懂,易于模块化设计,同时也容易调试和修改,它不需要对单片机硬件有深入的了解,也能编写出正确实用的程序,是今后硬件程序设计的发展方向。 11 系统程序设计总体思路 由于光电技术电路需要在数码管上显示通过光电门的人数数量,因此可以在内部存储器空间定义它的显示缓存区,用来暂存数码管显示的当前值。 系统在初始化程序之中,首先打开中断总允许位( EA=1) ,接着打开外部中断 0、外部中断 1 允许位( IE0=1。 IE1=1) ,设置外部中断类型控制位( IT0=1。 IT1=1) ,当 INT0、 INT1 引脚下降沿到来时进入中断程序,并设计数初始值为 0,扫描键盘,等待工作人员设置最大人数值。 定义中断标志位 INT0FLAG、 INT1FLAG,当有外部中断产生时,在中断服务程序中分别置位 INT0FLAG、 INT1FLAG。 跳出中断程序检查中断标志位的值,若为真值,调用光电计数子程序,将显示暂存变量加1,读取数值各个数位上的值,调用 CODE数码管显示代码,动态显示当前数值,当通过光电门的产品数量达到设计初始值,蜂鸣器响进行报警。 系统初始化子程序设计 系统初始化流程图如图 35 所示 : 图 ( 35) 系统初始化流程图 /****系统初始化 ******/ void systemini(void) 12 { INT0FLAG=0。 INT1FLAG=0。 KEYBOARD=0。 KEY=0。 } /***外部中断初始化 ****/ void int01initial(void)/ { IT0=1。 EX0=1。 IT1=1。 EX1=1。 EA=1。 } 显示子程序设计 定义数码管的段码表、位选码,定义计数器的显示缓存区,在统计过程中,当 一个信号传到单片机中,系统调用延时子程序进行延时,计数器对 个位 、十位、百位、千位 进行计数判断,将数据通过数码管显示出来,显示子程序的电路图如图 36 所 示。 13 图 ( 36) 动态显示电路流程图 计数处理子字程序设计 外部中断 T0、 T1初始化后处于开状态,当有中断请求时进行 计数,若 加计数等于 MAX值时,使 KEYBOARD=1 蜂鸣器报警。 最后将计数值通过数码管显示,其流程图如图 37 所示。 14。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。