红外线自动计数器
- 格式:doc
- 大小:477.50 KB
- 文档页数:14
红外线计数器工作原理
红外线计数器是一种常用的计数器件,它通过红外线传感器来实现对物体的计数。
其工作原理主要包括红外线传感器、信号处理模块和计数显示模块三个部分。
首先,红外线传感器是红外线计数器的核心部件,它能够发射和接收红外线信号。
当有物体经过红外线传感器时,物体会阻挡红外线的传播,导致传感器接收到的红外线信号发生变化。
这种变化会被传感器转化为电信号,并传送到信号处理模块中进行处理。
其次,信号处理模块是红外线计数器的重要组成部分,它能够对传感器接收到的信号进行放大、滤波和数字化处理。
在信号处理模块中,经过处理后的信号会被转化为数字信号,并送入计数显示模块进行显示和计数。
最后,计数显示模块是红外线计数器的输出部分,它能够将处理后的数字信号转化为可视化的计数结果。
通常,计数显示模块会采用LED数码管或液晶显示屏来显示计数结果,用户可以直观地看到经过红外线计数器的物体数量。
总的来说,红外线计数器通过红外线传感器对物体的红外线信号进行检测和处理,最终将计数结果显示给用户。
它具有计数精度高、反应速度快、使用方便等优点,广泛应用于超市、图书馆、车站等场所,为人们的计数工作提供了便利。
在实际应用中,红外线计数器还可以根据需要进行定制,例如可以设置计数范围、调整计数灵敏度、实现数据上传等功能。
通过不断的技术创新和改进,红外线计数器将会在更多领域发挥作用,为人们的生活和工作带来更多便利和效率提升。
毕业设计论文题目:红外线检测计数显示装置学院:物理科学与工程技术学院专业:电子信息科学与技术年级:09级姓名:张文平指导教师:邓满兰职称:讲师(2013 年 6 月)宜春学院教务处制目录1.毕业设计任务书2.毕业设计开题报告3.毕业设计答辩资格审查表4.论文原创性申明5.论文版权使用授权书6.毕业设计正文7.外文资料译文8.外文资料原文宜春学院毕业设计任务书题目:红外线检测计数显示装置学院:物理科学与工程技术学院教研室:电子信息工程专业:电子信息科学与技术班级:09电子技术学号:0934302142姓名:张文平起止日期:2012.11.17—2015.5.18指导教师:邓满兰职称:讲师教研室主任:李小平审核日期:2012.11.18说明1.毕业设计(论文)任务书由指导教师填写,并经教研室审定,下达到学生。
2.进度表分前、中、后三期由学生填写,每期填写后交指导教师签署审查意见,并作为毕业论文工作检查的主要依据。
3.学生根据指导教师下达的任务书独立完成开题报告,3周内提交给指导教师批阅。
4.本任务书在毕业设计(论文)完成后,与设计(论文)一起交指导教师,作为设计(论文)评阅和毕业设计(论文)答辩的主要档案资料,是学士学位论文成册的主要内容之一。
宜春学院毕业设计开题报告题目:红外线检测计数显示装置学院:物理科学与工程技术学院系电子与信息工程专业:电子信息科学与技术班级:09电子技术学号:0934302142姓名:张文平指导教师:邓满兰填表日期:2012 年11 月26 日一、选题的依据及意义依据:随着经济的高速发展,人们的生活水平也在不断的提高,随着而来的是,人们对事物的追求从功能化上升到人性化,计算器是生活中必需的生活用品。
在没有电子计数器之前,人们通常采用人工计数的计数方式,这种计数方式准确率低、花费大、工作效率低,特别是面对大量的计数任务时,人工计数存在非常大的不适用性。
这种传统形式的“机械计数器”已经越来越不能满足现代人们注重“节能”“方便”概念的需求。
红外计数器设计报告一:任务分析。
二:设计方案。
三:电路设计。
四:焊接与调试。
五:实验结果和分析。
六:实验感想。
参考文献元件件清单一:任务分析本电路的实验指导思想是利用红外发光管发射红外线,红外接收管接受此红外线并将其放大,整流形成高电平信号。
当有人或物体挡住红外光时,接收管没有接收到红外信号,运算放大器将输出低电平;当移开物体时,运算放大器输出高电平,同时计数器计数这个上升沿脉冲,并经译码器驱动电路是数码管显示数值。
这样就可以统计红外对管物体触发的次数。
范围在0~99之间计数。
二:设计方案1.设计原理该计数器系统总体设计方案是用光电感应器实现对触发感应红外信号数量的采集,将信号传送到防干扰的迟滞比较器,共经过两级比较器,传输信号脉冲,通过74LS190计数器进行计数,计数范围是0~99,通过 74LS248七段译码器进行译码,输出信号给LED数码管进行显示。
其中,个位计数器的进位标志位接到十位计数器的计数控制端CLK控制十位计数器工作计数,因为74LS190是十进制计数器,计数的结果是BCD码0000~1001,经过译码器数码管后显示的十进制00~99。
实验原理是,每当光电传感器接收到信号,信号在通过两级比较器后,就会有一个上升沿信号作为时钟信号,控制计数器工作,同时计数开始,每触发一次到移开形成一个上升沿脉冲,并且只能计数一次。
2.红外对管计数器系统简介(1)红外计数器系统的组成1.74LS190(1)个位计数器时钟脉冲给的是比较器的输出信号,计数器自上电起一直处于初始00状态,每当有物体经过光电对管之间时,计数器的CP 端就接收到上升沿信号,开始计数。
进位输出端接到十位计数器的时钟脉冲端,四个输出引脚的信号作为七段译码器的输入信号。
(2)十位计数器时钟脉冲给的是比较器的输出信号,计数器的CP端就接收到上升沿信号时,还不能进行计数,只有当个位的计数溢出时时钟脉冲CLK端有上升沿触发才有效,进行计数。
红外计数传感器原理引言:随着科技的发展,计数技术也得到了极大的改进和创新。
红外计数传感器作为一种常见的计数设备,广泛应用于各个领域,如工业生产、交通管理等。
本文将详细介绍红外计数传感器的原理及其工作方式。
一、红外计数传感器的原理红外计数传感器是一种基于红外线原理的计数设备。
它利用红外线的特性来实现对物体的计数。
红外线是一种波长较长的电磁辐射,它在光谱中位于可见光之外。
红外线具有不可见性、穿透性和反射性等特点,这些特点使得红外计数传感器能够在物体通过时进行计数。
二、红外计数传感器的工作方式红外计数传感器通常由发射器和接收器两部分组成。
发射器发射红外线,而接收器则接收被物体反射的红外线。
当有物体通过时,物体会阻挡红外线的传播路径,导致接收器接收到的红外线信号弱化或消失。
红外计数传感器通过检测接收器收到的红外线信号的变化来实现计数。
红外计数传感器还具备一定的灵敏度调节功能。
通过调节传感器的灵敏度,可以使其适应不同场景下的计数需求。
例如,在人流密集的地方,可以调高传感器的灵敏度,以确保准确计数;而在人流稀少的地方,则可以适当降低灵敏度,以减少误计数。
三、红外计数传感器的应用领域红外计数传感器广泛应用于各个领域。
在工业生产中,红外计数传感器可以用于计数流水线上通过的产品数量,以实现自动化生产。
在交通管理中,红外计数传感器可以用于道路上的车辆计数,以监控交通流量和拥堵情况,为交通规划提供数据支持。
此外,红外计数传感器还可以应用于商场、图书馆等公共场所的人流统计,以提供决策依据。
四、红外计数传感器的优势和局限性红外计数传感器具有以下几个优势:1. 非接触式计数:红外计数传感器可以实现对物体的非接触式计数,避免了对物体的损坏或干扰。
2. 高精度计数:红外计数传感器可以实现高精度的计数,减少计数误差。
3. 灵活性:红外计数传感器的灵敏度可调节,适应不同场景的计数需求。
然而,红外计数传感器也存在一些局限性:1. 受环境影响:红外计数传感器对环境光线和温度的变化较为敏感,可能会影响计数的准确性。
数字电子技术课程设计报告一、课题名称:红外线反射式通道计数器二、内容摘要:设计、制作一个反射型计数器,对从检测头前方经过的人手进行检测,当人手正向通过时,计数器计数值自动加一,当人手反向向通过时,计数器计数值自动减一,并通过数码管显示出来,反射感应距离大于20CM,系统供电电压不大于5V。
三、设计指标(要求):(1)能够对通道内进出的人数进行统计;(2)当有人进入时自动加一,反之自动减一;(3)有效作用距离〉20cm;(4)至少一位数码管显示。
四、方案选择与系统框图:方案一:放大整形部分采用CD4069三个与非门构成负反馈放大电路放大,采用反相器构成的施密特触发器方案二:放大整形部分采用LM324同相放大,采用LM324构成的比较器整形本次设计采用方案二,方案二的系统框图如下:五、各单元电路设计、参数计算和元器件选择:(1)红外检测电路:采用脉冲式主动红外线检测电路,由红外发射二极管VD1和红外接收二极管VD2等组成。
由于在结构上红外发射管LED与红外接收管PHOTO平行安装,指向相同,因此接收管PHOTO并不能直接接收到发射管LED发出的红外线脉冲。
只有当手阻挡时,将LED发出的红外线脉冲反射回去,PHOTO 才能接收到。
R1、R3分别是红外发射管LED的限流电阻,R2、R4分别是红外接收管PHOTO的负载电阻。
发射电路:相对于直流发射电路来说,交流发射电路复杂庞大,本着简单明了,节约器材的宗旨,选择直流电路。
用直流5V电源供电,在发射电路的限流电阻R为470欧姆。
接通发射电路,测量出发射管两端的电压为V,得到限流电阻两端的电压为5V-V=V,染得限流电阻R的阻值为V/A=470欧姆。
接收电路:用直流5V电源直接供电。
红外接收管PHOTO的负载电阻取220K。
把负载电阻R2、R4的对地电压接入LM324的比较器正向端,当手未挡时,R2、R4的对地电压为2.4V;当手阻挡时,将LED发出的红外线脉冲反射回去,PHOTO接收到红外线信号,PHOTO 的电阻减小,R2、R4的对地电压为4.23V.(2)LM324构成的比较整形电路:LM324采用5V单电源供电,输出信号送入CD4069反相器中反向,给输入反向端通过滑动变阻器提供约3.1V基准电压(此基准电压为接入LM324正向端的电压最大值4.23V与最小值2.4V的三分之二,约为2.4+0.7=3.1V),进行电压比较,当输入正向端电压大于3.1V时,输出低电平,反之,输出高电平。
红外线自动计数器设计一.设计方案的选择1. 单片机的论证与选择方案一:选择普通8051内核的ST89C51单片机,此单片机价格便宜,满足本设计要求,但已经停产故不宜选择。
方案二:选择加强型8051内核的STC89C2单片机,此单片机价格便宜,功能强大,完全满足本设计要求。
方案三:采用飞思卡尔公司生产的MC9S12XS128单片机,此单片机具有8路PWM,16路AD采集通道,2个UART,2个硬件SPI,具有背景调试功能,方便实时查看程序中全局变量的值,具有80个引脚,硬件资源相当丰富。
但其价格相对较高。
综合以上三种方案,为了方便控制,节约成本,故我们选择方案二。
2. 显示器件的选择方案一:两位一体共阳数码管显示,数码管功耗低,价格便宜,显示清晰,完全符合本设计要求。
方案二:采用液晶屏1602显示,1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
不过占用IO多,体积大,价格贵。
综合以上二种方案,为了减少硬件资源,节约成本,故我们选择方案一。
二.硬件设计1.硬件总方案确定依据检测原理和设计思想经过细致比较研究得到如下总体设计方案:2. LED 指示灯它是半导体二极管的一种,可以把电能转化成光能;常简写为LED 。
发光二极管与普通二极管一样是由一个PN 结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P 区注入到N 区的空穴和由N 区注入到P 区的电子,在PN 结附近数微米内分别与N 区的电子和P 区的空穴复合,产生自发辐射的荧光。
不同的半导体材料中电子和空穴所处的能量状态不同。
当电子和空穴复合时释放出的能量多少不同,释放出的CPU stc89c52数码管显示 位驱动 程序下载口 复位 红外光电开关A 直流输入 7805 5v 直流电源红外光电开关B蜂鸣器电路能量越多,则发出的光的波长越短。
红外线自动计数器设计一.设计方案的选择1、单片机的论证与选择方案一:选择普通8051内核的ST89C51单片机,此单片机价格便宜,满足本设计要求,但已经停产故不宜选择。
方案二:选择加强型8051内核的STC89C2单片机,此单片机价格便宜,功能强大,完全满足本设计要求。
方案三:采用飞思卡尔公司生产的MC9S12XS128单片机,此单片机具有8路PWM,16路AD采集通道,2个UART,2个硬件SPI,具有背景调试功能,方便实时查瞧程序中全局变量的值,具有80个引脚,硬件资源相当丰富。
但其价格相对较高。
综合以上三种方案,为了方便控制,节约成本,故我们选择方案二。
2、显示器件的选择方案一:两位一体共阳数码管显示,数码管功耗低,价格便宜,显示清晰,完全符合本设计要求。
方案二:采用液晶屏1602显示,1602液晶也叫1602字符型液晶它就是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
不过占用IO多,体积大,价格贵。
综合以上二种方案,为了减少硬件资源,节约成本,故我们选择方案一。
二.硬件设计1、硬件总方案确定依据检测原理与设计思想经过细致比较研究得到如下总体设计方案:2、 LED指示灯它就是半导体二极管的一种,可以把电能转化成光能;常简写为LED。
发光二极管与普通二极管一样就是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴与由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子与P区的空穴复合,产生自发辐射的荧光。
不同的半导体材料中电子与空穴所处的能量状态不同。
当电子与空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。
常用的就是发红光、绿光或黄光的二极管。
发光二极管的反向击穿电压约5伏。
它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。
3、三极管半导体三极管又称“晶体三极管”或“晶体管”。
在半导体锗或硅的单晶上制备两个能相互影响的PN结,组成一个PNP(或NPN)结构。
中间的N区(或P区)叫基区,两边的区域叫发射区与集电区,这三部分各有一条电极引线,分别叫基极B、发射极E与集电极C,就是能起放大、振荡或开关等作用的半导体电子器件。
在本设计中选择了PNP 三极管用来驱动蜂鸣器个双位数码管。
4、双位数码管显示的种类很多,从液晶显示、发光二极管显示到CRT显示器等,都可以与微机连接。
其中单片机应用系统最常用的显示就是发光二极管数码显示器(简称LED显示器)。
液晶显示器简LCD。
LED显示器价廉,配置灵活,与单片接口方便,LCD可显示图形,但接口较复杂成本也较高。
该电路使用双位7段LED构成字型“8”,另外还有一个发光二极管显示符号及小数点。
这种显示器分共阳极与共阴极两种。
这里采用共阳极LED 显示块的发光二极管阳极共接,如下图左所示,当某个发光二极管的阴极为低电平时,该发光二极管亮。
它的管脚配置如下图右所示。
实际上要显示各种数字与字符,只需在各段二极管的阴极上加不同的电平,就可以得到不同的代码。
这些用来控制LED 显示的不同电平代码称为字段码(也称段选码)。
如下表为七段LED 的段选码。
下表为七段LED 的段选码显示字符 共阳极段选码 dp gfedcba显示字符 共阳极段选码dp gfedcba 0 C0H A 88H 1 F9H B 83H 2 A4H C C6H 3 B0H D A1H 4 99H E 86H 5 92H F 8EH 6 82H P 8CH 7 F8H y 91H 8 80H 8 00H 990H“灭”FFH本系统显示电路采用简单实用两位一体共阳数码管,位码用三极管驱动。
5、 STC89C52系统单片机图左 图右VCCSTC89C52 单片机就是深圳宏晶科技有限公司生产的一种单片机,STC89C52就是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 与在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52就是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 与在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,瞧门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
6、蜂鸣器播报蜂鸣器采用三极管放大,单片机IO口控制,通过高低电平触发使其工作。
每当检测有人进出时,播放一段优美的音乐,人性化的旋律。
7、单片机复位电路单片机复位后的状态:单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。
单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。
值得指出的就是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分就是十分必要的。
说明:表中符号*为随机状态;A=00H,表明累加器已被清零;PSW=00H,表明选寄存器0组为工作寄存器组;SP=07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;IP=×××00000B,表明各个中断源处于低优先级;IE=0××00000B,表明各个中断均被关断;51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,(在特殊寄存器介绍时再做详细说明)至于内部RAM内部的数据则不变。
系统复位就是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。
51单片机的复位就是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚就是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。
9、数码管显示电路采用两组双位共阳数码管,实现人体计数,段选分别接P0口与P1口,位选通过PNP三极管放大,然后接单片机I/O口。
数码管动态显示1.动态显示概念用数码管显示信息时,由于每个数码管至少需要8 个I/O 口,如果需要多个数码管,则需要太多I/O 口,而单片机的I/O 口就是有限的。
在实际应用中,一般采用动态显示的方式解决此问题。
在编程时,需要输出段选与位选信号,位选信号选中其中一个数码管,然后输出段码,使该数码管显示所需要的内容,延时一段时间后,再选中另一个数码管,再输出对应的段码,高速交替。
例如需要显示数字“12”时,先输出位选信号,选中第一个数码管,输出1 的段码,延时一段时间后选中第二个数码管,输出2 的段码。
把上面的流程以一定的速度循环执行就可以显示出“12”,由于交替的速度非常快,人眼瞧到的就就是连续的“12”。
在动态显示程序中,各个位的延时时间长短就是非常重要的,如果延时时间长,则会出现闪烁现象;如果延时时间太短,则会出现显示暗且有重影。
三.软件设计红外自动计数器主要由光电传感检测电路、进出门处理与识别电路、中央处理显示电路、数码管显示电路,蜂鸣器播报音乐电路组成。
鉴于单片机技术比较成熟,且开发过程中可以利用的资源与工具丰富、价格便宜、成本低。
故设计用C语言对其编程并烧录到芯片内部,C语言表达与运算能力比较强,且具有很好的可移植性与硬件控制能力。
采用KEIL51的C52编译器。
KEIL Uvision3就是众多单片机应用开发软件中的优秀软件之一,它支持众多不同公司的构架的芯片,集编辑、编译、仿真等于一体,同时还支持PLM,汇编与C语言的程序设计,它的界面与常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强的功能。
硬件设计与软件设计就是电子设计中必不可少的内容,为了满足设计的功能与指标的要求,我们必须在开始设计的时候就要考虑到硬件与软件的协调;不然不就是造成硬件资源的浪费就就是增加软件实现时困难与复杂程度,甚至造成信号的断层,即使硬件与软件能单独使用,却不能使它们组成的系统工作。
故在设计的过程中必须考虑软硬件的处理能力以及它们的接口就是否兼容,实现软硬件的信号过渡。
其次设计时硬件之间应尽可能减小联系,只要把必要的信号线相连则可。
这样做的优点就是:首先,调试时可以减少很多不必要的麻烦,因为电路就是相对独立的,故在调整电路参数值时其影响与干扰就小,在满足发射与接收模块的要求后可单独对控制模块进行调整;再者,当出现问题时检查电路就容易缩小问题的范围,使得排错效率高。
由于硬件的分离,在软件的调试时就可以单独针对控制模块。
1、进出方向控制程序方向的判断,就是通过红外光电开关检测到物体的前后顺序不同来判断的,当第一个光电开关先检测到人通过,接着第二个光电开关检测到有人通过,说明有人进门,相反,则有人出门。
具体控制程序如下:void direction(void){if(dirvalue==0x18){if(hongwai1==1)dirvalue>>=1;if(hongwai2==1)dirvalue<<=1;while(hongwai1||hongwai2);}else if(dirvalue==0x0c){if(hongwai2==1){num1++;yuyin=1;while(hongwai2);dirvalue=0x18;if(num1==99)num1=99;yuyin=0;}}else if(dirvalue==0x30) {if(hongwai1==1){num2++;yuyin=1;while(hongwai1);dirvalue=0x18;if(num2==99)num2=99;yuyin=0;}}}流程图两个函数,长,: void display1(uchar numdis){ uchar shi,ge;shi=numdis/10;ge=numdis%10;P0=Tab[shi];a=0;delayms(5);a=1;P0=Tab[ge];b=0;delayms(5);b=1;}void display2(uchar numdis) { uchar shi,ge;shi=numdis/10;ge=numdis%10;P2=Tab[shi];c=0;delayms(5);c=1;P2=Tab[ge];d=0;delayms(5);d=1;}2、软件流程框图3、程序#include"reg52、h"#define uchar unsigned char#define uint unsigned int#include<intrins、h>sbit hongwai1=P3^6; //位定义模拟红外光电开关1接口sbit hongwai2=P3^7; //位定义模拟红外光电开关2接口sbit a=P1^0; //第一个数码管十位sbit b=P1^1; //第一个数码管各位sbit c=P1^2; //第二个数码管十位sbit d=P1^3; //第二个数码管各位sbit jin=P3^5; //进门指示灯端口sbit chu=P3^4; //出门指示灯端口uchar dirvalue=0x18; //方向开始赋初值void delayms(uint); //Tab为数码管显示值,存入一个数组内void direction(void); //声明按键扫描函数uchar code Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char num1=0,num2=0; //num为被显示的数字void display1(uchar numdis) //显示函数1{ uchar shi,ge;shi=numdis/10; //将数扯开到十位ge=numdis%10; //将数扯开到各位P0=Tab[shi]; //送十位数a=0; //打开位选delayms(5); //延时a=1; //关闭位选P0=Tab[ge]; //送个位数b=0; //打开位选delayms(5); //延时b=1; //关闭位选}void display2(uchar numdis) //显示函数2{ uchar shi,ge; //同上shi=numdis/10;ge=numdis%10;P2=Tab[shi];c=0;delayms(5);c=1;P2=Tab[ge];d=0;d=1;}void delayms(uint x) //延时函数{uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void direction(void) //方向控制函数检测人的进出并做出相应的操作{if(dirvalue==0x18) //开始初值如果检测K1先按下右移一位,如果检测到K2先按下左移一位{if(hongwai1==0)dirvalue>>=1;if(hongwai2==0)dirvalue<<=1;while(!hongwai1||!hongwai2);}else if(dirvalue==0x0c) //右移后的值{if(hongwai2==0) //检测K2的状态{num1++;jin=0;while(!hongwai2);dirvalue=0x18;if(num1==99)num1=99;delayms(200);jin=1;}}else if(dirvalue==0x30) //左移后的值{if(hongwai1==0) //检测K1的状态{num2++;chu=0;while(!hongwai1);dirvalue=0x18;if(num2==99)num2=99;delayms(200);chu=1;}}void main() //主函数{P3=0xff; //P3口全赋高电平while(1){direction(); //方向控制函数display1(num1); //第一个数码管显示display2(num2); //第二个数码管显示}}。