版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、公共场所人流量统计系统摘要:随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研 制和开发中首选的控制器。为了更好地推广单片机在日常生活中的应用,本文介 绍一种应用AT89S51单片机设计的人流量统计系统。人流量统计系统由于其自身 的优势,越来越受到人们的青睐,主要应用于大型商场等公共场所人流的统计。 本系统由单片机系统AT89S51、DS1302、液晶1602显示和红外对管。系统能完成 统计、计时、显示数字的基本人流量统计的功能。经实际制作表明该密码锁具有 结构简单、成本低廉、计数准确等特点,符合人流量统计的要求,不仅适用于超市, 还适用于其他需要进行人数统计的场合。关键词:AT8
2、9S51;人流量;统计;显示AbstractAs electronic products to intelligence and the continuous development of miniaturization, SCM has become the research and development of electronic product first controller. In order to promote the application of SCM in daily life, this paper introduces a kind of applied statis
3、tics AT89S51 design of visitors. Sho ing statistical system because of its advantages, more and more get the favour of people, mainly applied in public places such as shopping malls stream of statistics. This system consists DS1302 AT89S51 single-chip microcomputer system, LCD display, and infrared
4、on 1602. System can accomplish statistics, timing, and shows the number of visitors basic function of statistics. The fact that this trick lock has simple structure, low cost, counting accurate statistics etc, accord with the requirement that visitors not only applicable to supermarkets, also applie
5、s to the number of other occasions.Key words: AT89S51; Human BeingsFlow Statistic ; Display1绪论1. 1选题的背景 公共场所人流量统计系统51随着社会物质财富的日益增长和人民生活水平的提高,各种大型场所的兴建,人流量对于依赖于客流量的产业来说意义重大。顾客是货币的携带者,又是 商品的潜在购买者,研究流量规律,可以增加销售机会,将观看者转变为购物者, 最大限度地挖掘商场的销售潜力,增加利润。人流量是重要的衡量工具,通过这一准确的量化的数据,不但可以获得商场、 购物中心、博物馆或者飞机场等公共场所完整的正在
6、运行的状况,而且还可以利 用这些高精度的数据,进行有效的组织运营工作!2人流量统计的重要性人流量统计的重要性主要可以表现在以下这些方面:通过统计出入口的人流量,可以了解出入口设置的合理程度;通过统计出入口的人流量进出的方向,可以了解出入通道设置的合理程度;通过统计主要楼层人流量状态,从而进行店面的合理分布;统计各个区域的吸收率和繁忙度;有效评估所举行的营销和促销投资的回报;根据人流量的变化,更有效分配物业管理、维护人员;通过人流量人群转化率,提高商场服务质量;通过人流量人群购买率,提高营销和促销的效率;计算人流量人群的平均消费能力;客观决定租金价位水平;评估和优化宣传广告和促销预算;根据来访人
7、流量的多少来决定回馈顾客资金的使用;可以知道什么时间是开关店的最佳时间;显示当前人流量状态和变化趋势,管理人员可以对流量比较大的区域采取预防突发事件的措施,并可实施观察商场当前的实际人数等等;1. 3设计实现的目标用电子器件设计制作一个人流量系统,使之可以统计和显示在某一时间内进 出的人流量。每当有一个人从门进入时,IN门显示加一;有一个人从门出去时,OUT门显 示加一。公共场所人流量统计系统52可显示时间从早上8:00晚上8:00,从而计算在这段时间的人流量。2人流量统计系统的方案论证与总体设计1设计方案论证与比较1. 12. 1. 1方案一通过红外对管使比较电路电压发生变化,产生脉冲并且送
8、到CD40110的9 管脚进行加法计数,通过数码管显示出来。还可以进行位扩展,把CD40110的 10管脚输出的进位脉冲送到下一个CD40110,再通过数码管显示出来。2. 1. 2方案二一种红外线计数器,包括红外线发射电路和红外线接收电路,红外接收电路与计数电路连接,计数电路的输出端与显示电路连接,其特征在于,计数电路采 用单片机,红外线接收电路与单片机输入端相连接,单片机的输出端有显示电路, 通过红外线遮光的方式来测量并显示公共场所所通过的人数。相对方案一我们采用方案二,因为方案二具有比较智能化,而且能够实现本设计的全部功能要求的优点。3人流量统计系统的硬件设计人流量统计系统的总体框图人流
9、量统计系统是由以下几个部分组成的,其核心部分是由AT89S51单片机 作为整个系统的控制中心。包括DS1302时钟电路模块,显示电路模块和红外对 红外对管 比较 电 路CD401100数码显示红外对管单片机显示DS1302时钟电路AT89S51红外对管显示公共场所人流量统计系统53管模块。如图3所示是一种用AT89S51控制的人流量统计系统的原理图。其主要功能为:每当有一个人从门进入时,IN加一并显示,表示进入一个人;有一个人 从门出去时,OUT加一并显示,表示出去一个人。P3.0为IN门计数接入管脚, P3.1为OUT门计数接入管脚,P1.5、P1.6、P1.7接入DS1302芯片,P0 口
10、接入 LCD1602。1人流量统计系统的控制芯片选择CPU是整个控制部分的核心。在考虑经济性和满足需求的前提下,本系统 选用Atmel公司生产的8位AT89S51单片机作为整个系统的控制中心。AT89S51是美国Atmel公司生产的低功耗,高性能CMOS8位单片机,片内 含4k bytes的可系统编程的Flash只读程序存储器,器件采用Atmel公司的高 密度、非易失性存储技术生产,兼容标准8051指令系统及引脚,它集Flash存 储器既可在线编辑(ISP)也可用传统方法进行编辑及通用8位微处理器于单片 芯片中,功能强大AT89S51单片机可为您提供许多高性价比的应用场合。在本系统中,AT89
11、S51单片机内部的功能单元已经能够满足系统设计需要, 不需要系统扩展。3. 1. 1芯片介绍AT89S51具有以下的特点:8031 CPU 与 MCS-51 兼容寿命:1000写/擦循环4K字节可编程FLASH存储器全静态工作:0Hz-24KHz三级程序存储器保密锁定128*8位内部RAM32条可编程I/O线两个16位定时器/计数器6个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路3. 1. 2芯片管脚说明图2-2 AT89S51芯片管脚公共场所人流量统计系统54VCC:供电电压。GND:接地。P0 : P0 口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL门电 流。当P
12、1 口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须 被拉高。P1 : P1 口是一个内部提供上拉电阻的8位双向I/O 口,P1 口缓冲器 能接收输出4TTL门电流。P1 口管脚写入1后,被内部上拉为高,可用作输 入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 在FLASH编程和校验时,P1 口作为第八位地址接收。P2 : P2 口为一个内部上拉电阻的8位双向I/O 口,P2 口缓冲器可接 收,输出4个TTL门电流
13、,当P2 口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出 电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或16位地址 外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时, 它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输 出其特殊功能寄存器的内容。P2 口在FLASH编程和校验时接收高八位地址 信号和控制信号。P3 : P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4 个TTL门电流。当P3 口写入“1”后,它们被内部上拉为高电平,并用作 输入。作为输入,由于外部下拉为
14、低电平,P3 口将输出电流(ILL)这是由 于上拉的缘故。P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2 /INT0 (外部中断0)P3.3 /INT1 (外部中断1)P3.4 T0 (记时器0外部输入)P3.5 T1 (记时器1外部输入) 公共场所人流量统计系统55P3.6 /WR (外部数据存储器写选通)P3.7 /RD (外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。I/O 口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端 口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线 经过某种运算或变换后再写回到端口锁存器
15、只有读端口时才真正地把外部 的数据。读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU 将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是 由硬件自动完成的不需要我们操心“1”然后再实行读引脚操作,否则就可 能读入出错为什么看上面的图。如果不对端口置T端口锁存器原来的状 态有可能为0Q端为0。人为“1”加到场效应管栅极的信号为“1”该场效应 管就导通对地呈现低阻抗,此时即使引脚上输入的信号为“1”,也会因端 口的低阻抗而使信号变低使得外加的“1”信号读入后不一定是“1”。若 先执行置“1“操作,则可以使场效应管截止引脚信号直接加到三态缓冲器 中实现正确的读入。由于在输入
16、操作时还必须附加一个准备动作,所以这 类I/O 口被称为准双向口 89C51的P0/P1/P2/P3 口作为输入时都是准双向 口。接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差 别除了 P1 口外P0P2P3 口都还有其他的功能RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的 高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存 地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时, ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因 此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用
17、 作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在 SFR8EH地址上置0。此时,ALE只有在执行 MOVX,MOVC指令是 ALE才起作 用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止, 置位无效。公共场所人流量统计系统56/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间, 每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的 /PSEN 信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA
18、端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3. 2 DS1302时钟电路部分2. 1 DS13023. 2. 1 DS1302时钟芯片简介DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/ 日历和31字节静态RAM,可以通过串行接口与单片机进行通信。实时时钟/ 日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰 年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小 时时间格式。DS1302与
19、单片机之间能简单地采用同步串行的方式进行通信, 仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。时钟/RAM 的读/写数据以一字节或多达31字节的字符组方式通信。DS1302工作时功 耗很低,保持数据和时钟信息时,功耗小于1mW。3. 2. 2 DS1302的内部结构DS1302的外部引脚功能说明如图4所示:X1, X232.768kHz 晶振引脚GND地RST复位I/O数据输入/输出SCLK串行时钟VCC1电池引脚图4 DS1302封装图VCC2主电源引脚公共场所人流量统计系统57DS1302的内部结构如图5所示,主要组成部分为:移位寄存器、控制 逻辑、振荡器、实时时钟
20、以及RAM。虽然数据分成两种,但是对单片机的程 序而言,其实是一样的,就是对特定的地址进行读写操作。图5 DS1302的内部结构图DS1302含充电电路,可以对作为后备电源的可充电电池充电,并 可选择充电使能和串入的二极管数目,以调节电池充电电压。3. 2. 3 DS1302的工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK) 的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在 之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个 数在单字节方式下为8+8(8位地址+8位
21、数据),在多字节方式下为8加最 多可达248的数据。3. 2. 4 DS1302的寄存器和控制命令对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存 器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此 外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器 及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存 器以外的寄存器。日历、时间寄存器及控制字如表1所示:76543210寄存器名称1 RAM/CKA4A3A2A1A0RD/W秒寄存器1000000公共场所人流量统计系统58分寄存器1000001小时寄存器100001
22、0日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110写保护寄存器100011慢充电寄存器1001000时钟突发寄存器1011111表1:日历、时钟寄存器与控制字对照表最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。DS1302内部寄存器列表如表2所示:命令字各位内容寄存器名称写读取值范围76543 2 1 0秒寄存器80H 81H00-59CH10SECSEC分寄存器82H 83H00-59010MINMIN小时寄存器84H 85H01-12 或00-2312/240AHRHR日期寄存器86H 87H01-28,29,30,310010D
23、ATEDATE月份寄存器88H 89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年份寄存器8CH 8DH00-9910YEARYEAR表2: DS14302内部主要寄存器分布表DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单 元为一个8位的字节,其命令控制字为CGH-FDH,其中奇数为读操作,偶数 为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM 的31个字节,命令控制字为FEH (写)、FFH (读)。已经知道了控制寄存器和RAM的逻辑地址,接着就要通过外部接口来 访问这些资源。单片机是通过简单的同步串行通讯与
24、DS1302通讯的,每次 通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302 写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决 定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在 DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。物理上,DS1302的通讯接口由3个口线组成,即RST,SCLK,I/O。其中 公共场所人流量统计系统59RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数 据线。具体的读写时序参考图6,但是请注意,无论是哪种同步通讯类型的 串行接口,都是对时钟信号敏感
25、的,而且一般数据写入有效是在上升沿, 读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说 明),如果不是特别确定,则把程序设计成这样:平时SCLK保持低电平, 在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK 保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。图6 DS1302的命令字结构3. 3 LCD1602 显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD 可以显示2行16个字符,有8位数据总线D0-D7和RS,R/W,EN三个控制端
26、口, 工作电压为5V,并且具有字符对比度调节和背光功能。3. 3. 1接口信号说明1602型LCD的接口信号说明如表2-1所示编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3V0液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读写选择端(H/L)13D6Data I/O表2-1信号表公共场所人流量统计系统606E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极3. 3. 2主要计数参数1602型LCD的主要技术
27、参数如下表2-2所示3. 3. 3基本操作时序读状态:输入:RS=L,RW=L, E=H输出:D0-D7=状态字读数据:输入:RS=H,RW=H, E=H输出:无写指令:输入:RS=L,RW=L,D0-D7=指令码,E=高脉冲 输出:D0-D7=数据写数据:输入:RE=H,RW=L,D0-D7瑚据,E=高脉冲 输出:无3. 3. 4液晶1602的工作时序(1)读操作时序(2)写操作时序显示容量16*2个字符芯片工作电压4.5-5.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.94*4.35(WXH)mm表2-2主要技术参数图7读操作时序图表 公共场所人流量统计系统61时
28、序参数表3-3时序参数表4人流量统计系统的软件设计4. 1程序流程图主程序流程图图8写操作时序图表开始公共场所人流量统计系统62图9主程序流程图DS1302时钟电路流程图初始化DS1302头文件DS1302初始化显示时间、进出门的人数和总的人数有人进来吗?有人出去吗?IN加一OUT 加一求出进出门的总人数公共场所人流量统计系统63LCD1602显示流程图4. 2系统硬件各部分电路4. 2. 14. 2. 1时钟模块本次设计中,选用Ateml公司的51系列单片机AT89S51芯片作为人流量统 计系统的时钟控制芯片。只有单片机芯片无法完成相应功能,必须有附加的电路, 使单片机芯片组成一个可运行的系
29、统才能实现其功能。本次设计中,由AT89S51芯片连同附加电路构成的单片机最小系统作为时钟模块,其电路连接图10如下。读取DS1302时间显示时、分、秒LCD1602 头文件1602初始化写地址写数据公共场所人流量统计系统64图 104. 2. 2显示模块在此电子密码锁系统中,采用的是LCD1602显示。通过单片机编程将要显示的字符的ASCII码写入液晶1602中,然后达到显示数据的效果,其电路连接图 11如下。公共场所人流量统计系统65图11 如上图所示,LCD1602管脚D0-D7与单片机P0 口相接。P0 口为一个8位漏 级开路双向I/O 口,每脚可吸收8TTL门电流。当P1 口的管脚第
30、一次写1 时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0输出原码,此时P0外部必须被拉高。4. 2. 3红外接收模块公共场所人流量统计系统66图12用发光二极管和三极管代替红外发送接收装置,有人进门,计入一个脉冲, P3.0加一;有人出门,同样计入一个脉冲,P3.1加一。4. 2. 4系统性能的仿真分析公共场所人流量统计系统67图13如上图所示,当按P3.0键时,IN加一;按P3.1键时,OUT加一。第二行前 面数值为IN和OUT之和,后面显示当前时间。图144. 2. 5仿真分
31、析如图13所示,作品刚开始工作时,按下键后LCD1602显示是乱码,经过仔 细检查后发现是程序上的错误,将char str1=; char、打2=;改为char str14=; char str24=”;就能正常显示。第一行显示计数值,第二行显 示总数和时间,如图14 公共场所人流量统计系统685结束语5. 1总结在做本系统中,分硬件和软件两个部分来设计。硬件是以单片机AT89S51作 为控制芯片、LCD1602作为显示模块,还有DS1302时钟模块和其他辅助电路, 构成整个的硬件系统。用户可以观察显示的数字得知当前的人流量。而软件部分 是整个控制器的重要组成部分,设计的好坏关系到系统的性能。
32、在控制器的软件 中,采用C语言设计程序,编程、调试方便,方便阅读。5. 2展望本设计还可做以下改进:可以进一步设计成根据统计的人数自动计算出此时的人流量,更加智能 化,直观化。只用一个门,统计这个门的进出人流量,需要利用超声波传感器。6参考文献1宋文阁,李明颖,王学俊.单片机控制IC卡电子锁J,轻工业学院学报,5:1999何立民.单片机高级教程M.北京航空航天大学出版社,2003年.3李华.MCS-51系列单片机使用接口技术M,北京航空航天大学出版社, 19934王千.实用电子电路大全M,电子工业出版社,20015蔡康松,段杏林.于单片机字符型液晶显示模块控制设计J,黄山学院学 报;3:200
33、5附录一 人流量统计系统完整电路图 公共场所人流量统计系统69附录二程序代码DS1302.h公共场所人流量统计系统70#ifndef _REAL_TIMER_DS1302_2003_7_21.#define _REAL_TIMER_DS1302_2003_7_21sbitsbitsbit实时时钟时钟线引脚实时时钟数据线引脚实时时钟复位线引脚DS1302_CLK = P1A6;DS1302_IO = P1A7;DS1302_RST = P1A5;sbit ACC0 = ACCA0;sbit ACC7 = ACCA7;typedef struct _SYSTEMTIME_ unsigned cha
34、r Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString9;unsigned char TimeString9;SYSTEMTIME; /定义的时间类型#define AM(X) X#define PM(X) (X+12)/转成24小时制#define DS1302_SECOND0 x80#define DS1302_MINUTE0 x82#define
35、DS1302_HOUR0 x84#define DS1302_WEEK0 x8A#define DS1302_DAY 0 x86#define DS1302_MONTH 0 x88#define DS1302_YEAR0 x8C#define DS1302_RAM(X)(0 xC0+(X)*2)/用于计算 DS1302_RAM 地址的宏void DS1302InputByte(unsigned char d) 实时时钟写入一字节(内部函数) unsigned char i;ACC = d;for(i=8; i0; i-)DS1302_IO = ACC0;相当于汇编中的RRCDS1302_CLK
36、 = 1;公共场所人流量统计系统71DS1302_CLK = 0;ACC = ACC 1;unsigned char DS1302OutputByte(void) 实时时钟读取一字节(内部函数) unsigned char i;for(i=8; i0; i-)ACC = ACC 1;/相当于汇编中的RRCACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0;return(ACC);void Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr:DS1302地址,ucData:要写的数据DS1
37、302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr);/地址,命令DS1302InputByte(ucDa); / 写 1Byte 数据DS1302_CLK = 1;DS1302_RST = 0;unsigned char Read1302(unsigned char ucAddr) /读取 DS1302 某地址的数据unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0 x01);/ 地址,
38、命令ucData = DS1302OutputByte();/ 读 1Byte 数据DS1302_CLK = 1;DS1302_RST = 0;return(ucData);公共场所人流量统计系统72void DS1302_SetProtect(bit flag) 是否写保护 if(flag)Write1302(0 x8E,0 x10);elseWrite1302(0 x8E,0 x00);void DS1302_SetTime(unsigned char Address, unsigned char Value)/设置时间函数DS1302_SetProtect(0);Write1302(Ad
39、dress, (Value/10)Second = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_MINUTE);Time-Minute = (ReadVilue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_HOUR);Time-Hour = (ReadVilue&0 x70)4)*10 + (ReadVilue&0 x0F);ReadValue = Read1302(DS1302_DAY);Time-Day = (Read
40、Vilue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_WEEK);Time-Week = (ReadValue&0 x70)4)*10 + (ReadVlue&0 x0F);ReadValue = Read1302(DS1302_MONTH);Time-Month = (ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = Read1302(DS1302_YEAR);Time-Year = (ReadValue&0 x70)4)*10 + (ReadVlue&0
41、x0F);void DateToStr(SYSTEMTIME *Time)Time-DateString0 = Time-Year/10 + 0;Time-DateString1 = Time-Year%10 + 0;Time-DateString2=-;Time-DateString3 = Time-Month/10 + 0;Time-DateString4 = Time-Month%10 + 0;Time-DateString5=-;公共场所人流量统计系统73Time-DateString6 = Time-Day/10 + 0;Time-DateString7 = Time-Day%10
42、+ 0;Time-DateString8 = 0;void TimeToStr(SYSTEMTIME *Time)Time-TimeString0 = Time-Hour/10 + 0;Time-TimeString1 = Time-Hour%10 + 0;Time-TimeString2=:;Time-TimeString3 = Time-Minute/10 + 0;Time-TimeString4 = Time-Minute%10 + 0;Time-TimeString5=:;Time-TimeString6 = Time-Second/10 + 0;Time-TimeString7 =
43、Time-Second%10 + 0;Time-DateString8 = 0;void Initial_DS1302(void)unsigned char Second=Read1302(DS1302_SECOND);if(Second&0 x80)DS1302_SetTime(DS1302_SECOND,0);3 “/*“ 个个个个个个个个个个个个void BurstWrite1302(unsigned char *pWClock) /主 DS1302 写入时钟数据 (多字节方式)unsigned char i;Write1302(0 x8e,0 x00);/ 控制命令,WP=0,写操作?
44、DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(0 xbe);/ 0 xbe :时钟多字节写命令for (i = 8; i0; i-)/8Byte = 7Byte 时钟数据 + 1Byte 控制DS1302InputByte(*pWClock);/写1Byte数据pWClock+;DS1302_CLK = 1;公共场所人流量统计系统74DS1302_RST = 0; void BurstRead1302(unsigned char *pRClock)读取DS1302时钟数据(时钟多字节方式)unsigned char i
45、;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(0 xbf);/ 0 xbf:时钟多字节读命令for (i=8; i0; i-)*pRClock = DS1302OutputByte(); / 读 1Byte 数据 pRClock+;DS1302_CLK = 1;DS1302_RST = 0;void DS1302_TimeStop(bit flag)/ 是否将时钟停止unsigned char Data;Data=Read1302(DS1302_SECOND);DS1302_SetProtect(0);if(flag
46、)Write1302(DS1302_SECOND, Data|0 x80);elseWrite1302(DS1302_SECOND, Data&0 x7F);“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个“/*/ #endifLCD1602.h#ifndef LCD_CHAR_1602_2005_4_9#define LCD_CHAR_1602_2005_4_9#include /Port 、 /* * J *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1
47、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*Definitions* sbit LcdRs=P2A0;sbit LcdRw=P2A1;sbit LcdEn = P2A2;sfr DBPort = 0 x80;/P0=0 x80,P1=0 x90,P2=0 xA0,P3=0
48、xB0.数据端公共场所人流量统计系统75口/内部等待函数“*“ “ “ “ “*unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();/while(DBPort&0 x80);/在用Proteus仿真时,注意用屏蔽此语句,在调 用GotoXY()时,会进入死循环,可能在写该控制字时,该模块没有返回写入完备命令,即 DBPort&0 x80=0 x80实际硬件时打开此语句LcdEn=0;return DBPort;/向LCD写入命令或数据“*#define LCD_COMMAND0/ Command#defin
49、e LCD_DATA1/ Data#define LCD_CLEAR_SCREEN 0 x01/ 清屏#define LCD_HOMING0 x02/光标返回原点void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input; _nop_();/注 意顺序LcdEn=1;_nop_();/注 意顺序LcdEn=0;_nop_();LCD_Wait();/设置显示模式“*#define LCD_SHOW0 x04显示开#define LCD_HIDE0 x00显示关#de
50、fine LCD_CURSOR0 x02 显示光标#define LCD_NO_CURSOR0 x00/无光标公共场所人流量统计系统76#define LCD_FLASH0 x01/光标闪动#define LCD_NO_FLASH0 x00/光标不闪动void LCD_SetDisplay(unsigned char DisplayMode) LCD_Write(LCD_COMMAND, 0 x08|DisplayMode);/设置输入模式“ *#define LCD_AC_UP0 x02#define LCD_AC_DOWN0 x00/ default#define LCD_MOVE0 x0
51、1/画面可平移#define LCD_NO_MOVE0 x00/defaultvoid LCD_SetInput(unsigned char InputMode) LCD_Write(LCD_COMMAND, 0 x04|InputMode);/移动光标或屏幕“*/*#define LCD_CURSOR0 x02#define LCD_SCREEN0 x08#define LCD_LEFT0 x00#define LCD_RIGHT0 x04void LCD_Move(unsigned char object, unsigned char direction)if(object=LCD_CURSOR)LCD_Write(LCD_COMMAND,0 x10|direction);if(object=LCD_SCREEN)LCD_Write(LCD_COMMAND,0 x18|direction);*/初始化LCD*void LCD_Initial()/8位数据端口,2行显示,5*7LcdEn=0;LCD_Write(LCD_COMMAND,0 x3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国焦炭全自动采制样系统行业投资前景及策略咨询研究报告
- 2025年全装修住宅交易合同标准格式
- 2025年中国货运合同模板大全
- 2025年建筑行业塔吊司机用工合同规范
- 2025年度农业产业化贷款合同规范范本
- 2025年度智能广告创意设计与制作服务合同
- 2025年度现代农业股权担保合同范本
- 2025年度城市综合体项目代建合同模板
- 2025年度国际贸易代理服务合同范本
- 2025年度婚礼现场舞台设计与搭建合同
- 2025年人教五四新版八年级物理上册阶段测试试卷含答案
- 2025新人教版英语七年级下单词表(小学部分)
- 2025年春季1530安全教育记录主题
- 矿山2025年安全工作计划
- 基本药物制度政策培训课件
- 2025年包装印刷项目可行性研究报告
- 2025年九年级物理中考复习计划
- 企业融资报告特斯拉成功案例分享
- 给客户的福利合同(2篇)
- 《银行融资知识》课件
- SWITCH 勇者斗恶龙11S 金手指 版本:v1.0.3 最大金币 最大迷你奖章 32倍经验 最大攻击 所有材料
评论
0/150
提交评论