智能交通信号灯控制系统 信息毕业论文.doc_第1页
智能交通信号灯控制系统 信息毕业论文.doc_第2页
智能交通信号灯控制系统 信息毕业论文.doc_第3页
智能交通信号灯控制系统 信息毕业论文.doc_第4页
智能交通信号灯控制系统 信息毕业论文.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生毕业论文(设计)题 目: 智能交通信号灯控制系统 专业代码: 070201 作者姓名: 韩超 学 号: 2008200998 单 位:物理科学与信息工程学院 指导教师: 安学立 2012年 5 月 10 日聊城大学本科毕业论文目 录前言11、 智能交通信号灯控制系统研究目的和要求11.1、智能交通信号灯控制系统课题的研究目的和意义11.2、智能交通信号灯控制系统的设计要求22、 智能交通信号灯控制系统的总体结构22.1、智能交通信号灯控制系统简介22.2、智能交通信号灯控制系统硬件设计32.3、智能交通信号灯控制系统软件设计102.3.1、基本功能102.3.2、软件设计102.4、系统调试11结论12参考文献13致谢14附录15摘 要通过对目前国内外智能交通信号灯控制系统方面相关资料的研究,结合目前国内外主流的单片机应用技术,搭建一套完整的智能交通信号灯控制系统软硬件控制平台。系统功能主要有:交通信号灯正常显示、出现特殊情况或紧急情况时,可以让交通信号灯以常“红”显示,转去处理特殊情况或者紧急情况,处理完成以后系统会在接收到提醒时立即恢复交通信号灯的正常显示;系统具有独立的时钟系统。 关键词: 单片机; 交通信号灯; 紧急情况; abstract based on current domestic and foreign intelligent traffic signal lamp control system information related to the research, combined with the current domestic and international mainstream chip application technology, set up a complete set of intelligent traffic signal lamp control system software and hardware control platform. system functions include: traffic signal lamp display, there are special circumstances or emergency, can make the traffic signal lamp is used to red display, turned to dealing with special situations or emergencies, processing completed system will receive a reminder when immediate restoration of traffic signals display; system is independent of the clock system. key words: single chip microcomputer; traffic lights; emergency;31聊城大学本科毕业论文 智能交通信号灯控制系统前言交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。随着智能控制技术的发展,未来的交通信号灯控制系统正朝着智能化,自适应的方向发展。智能交通信号灯控制系统能够根据实际的车流量状况进行实时调控红绿灯的通行时间,减少道路堵塞,优化道路交通状况。基于此,我们可以看出,研究这种新型的智能交通信号灯控制系统即有很强的实用价值和现实意义。目前单片机渗透到我们生活的各个领域,基于单片机实现的底层控制系统几乎无处不在。飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能ic卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制等这些都离不开单片机。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。1、 智能交通信号灯控制系统研究目的和要求1.1、智能交通信号灯控制系统课题的研究目的和意义智能交通信号灯控制系统的研发和设计,目的是利用现代化计算机技术、通讯技术对日益快速发展的城市十字路口交通信号灯实现自动化监控和智能化的科学管理,做到集中管理,智能控制。进一步提高道路照明质量,提高服务质量,从而提高系统的整体社会效益、管理效益、经济效益和环保效益。智能交通信号灯控制系统基于stc89c51系列单片机1,配合高精度sd2403api时钟芯片所开发的一套简单实用的智能交通信号灯模拟控制系统,是对单片机应用的一个升华,具有很强的实用性。能够很方便地使用在城市道路、乡镇道路、甚至高速公路交通信号灯的智能控制方面。1.2、智能交通信号灯控制系统的设计要求 智能交通信号灯控制系统性能的基本要求是稳定性和可靠性,具体功能要求如下:(1)交通信号灯正常运行:红灯、黄灯、绿灯交替亮灭,红灯亮22s,黄灯亮3s、绿灯亮20s,数码管显示当前的时间。(2)报警情况处理:当按下k1或k2,表示第一个地点或第二个地点有特殊情况或紧急情况发生,则立即反馈给底层控制系统,底层系统立即中断交通信号灯的正常运行,使该路段全部以红灯显示,禁止车辆通行,并随时监测该路段特殊情况是否处理完毕。(3)报警情况取消:当特殊情况或者紧急情况处理完毕的时候,立即反馈给底层控制系统,底层控制系统立即开启交通信号灯的正常工作模式,并把当前的时间反馈给系统,系统可以通过数码管显示当前时间。系统主要性能指标:系统的稳定性,包括单片机要保证不死机,串口通信的稳定性等;系统的实用性和创新性等;2、 智能交通信号灯控制系统的总体结构2.1、智能交通信号灯控制系统简介智能交通信号灯控制系统由四个部分组成:单片机最小系统、系统时钟校时查时系统、报警系统(报警和取消报警)、显示系统。其中单片机最小系统包括stc89c52单片机、晶振电路(11.0592mhz)2、复位电路、电源部分(+5v电压由三端稳压集成电路lm7805输出,前后端需要加上滤波电容);系统时钟电路是基于高精度sd2403api时钟芯片与相应的外围电路搭建而成,时钟芯片内部寄存器读取方式采用iic总线读取的方式;显示电路采用两个两位的共阴极数码管显示;模拟报警电路是用按键检测模拟的方式,k1、k2按下时,表示有紧急情况或出现特殊情况,系统转去处理当前特殊情况;k3、k4表示取消报警,当前交通信号灯按照正常情况亮灭。智能交通信号灯控制系统充分运用单片机技术,底层程序利用keil c语言开发系统平台进行开发3,硬件部分运用portel dxp2004电路图设计软件设计4。2.2、智能交通信号灯控制系统硬件设计 智能交通信号灯控制系统包括单片机部分;电源部分;高精度sd2403api实时时钟芯片部分;紧急情况发生及取消相关电路;数码管显示部分;其系统框图如图4所示;智能交通信号灯控制系统的底层电路主要分为四个部分:单片机最小系统电路、系统校时查时系统电路、报警系统电路、数码管显示电路。(1) 单片机最小系统包括单片机、石英晶振电路、+5v稳压电路、复位电路、电源指示灯电路等几个小的功能电路。(2)系统校时查时系统电路是由高精度sd2403api时钟芯片与相应的外围电路搭建而成,单片机通过iic总线的方式对芯片内部进行相应的设置和读取。(3)报警系统电路用了四个按键进行模拟:k1、k2按下时,表示有紧急情况或出现特殊情况,系统转去执行当前特殊情况;k3、k4按下时,表示取消报警,当前交通信号灯按照正常情况亮灭,特别说明,系统在主程序中会对按键进行实时检测。(4)数码管显示电路主要将显示数据的bcd码转换成相对应的编码。选用两个两位的共阴极数码管分别显示时间的时和分。智能交通信号灯控制系统电路图是用protel dxp2004软件设计。时钟校时和查询工具可以通过pc端串口调试助手5向单片机发送相应的命令(21位)来实现。图4、智能交通信号灯控制系统框图系统设计原理图:、如图5.1所示,该部分是stc89c51单片机最小系统,包括5v电源部分,其5v电源是由外接电源12v,经过稳压芯片lm7805输出稳定的5v电压;d1是电源指示灯,r1是限流电阻;晶振电路,系统所用的晶振频率为11.0592mhz,由石英晶体搭建配套电路供给;复位电路,由于51系列单片机复位需要至少持续两个机械周期以上的高脉冲;图5.1、单片机最小系统、报警系统(按键)和时钟系统:如图5.2所示,系统时钟由高精度sd2403api时钟芯片通过搭建外围电路提供,供电电压为5v,报警系统由按键来模拟,k1、k2按下时,表示有紧急情况或特殊情况发生;k3、k4按下时表示上一次的紧急情况或者特殊情况已经处理完毕;图5.2、报警系统(按键)和时钟系统电路、显示部分:如图5.3所示,显示部分包括数码管显示和led指示灯显示部分;数码管是用共阴极的双位数码管,每一个数码管都有两个位选,八个段选;如图所示,led指示灯一共有7个,分别与单片机引脚相连。d1、d2表示红灯、d3、d4表示黄灯、d5、d6表示绿灯;d7是红灯,可以指示是否报警,当有紧急情况或者特殊情况发生时,红灯常亮,但取消报警时,处于熄灭状态;图5.3、数码管与led指示灯电路、通信部分:该系统中单片机需要与pc端进行通信,中间的电平转化借助max232芯片,其中0.1uf电容的主要作用是滤波,去耦。其可以有ttl电平转化为232电平,方便通信,其外围电路如图5.4;图5.4、串口通信部分电路各芯片主要管脚功能如下: 1、stc89c52单片机(图1)167: ale/prog:地址锁存允许/片内eprom编程脉冲 ale功能:用来锁存p0口送出的低8位地址 prog功能:片内有eprom的芯片,在eprom编程期间,此引脚输入编程脉冲。 psen:外rom读选通信号。 rst/vpd:复位/备用电源。 rst(reset)功能:复位信号输入端。 vpd功能:在vcc掉电情况下,接备用电源。 ea/vpp:内外rom选择/片内eprom编程电源。 ea功能:内外rom选择端。 vpp功能:片内有eprom的芯片,在eprom编程期间,施加编程电源vpp。(5)、 i/o线80c51共有4个8位并行i/o端口:p0、p1、p2、p3口,共32个引脚。p3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。图1、51单片机引脚图2、高精度sd2403api时钟芯片8915:sd2400系列是一种具有内置晶振、支持iic串行接口的高精度实时时钟芯片,cpu可使用该接口通过5位地址寻址来读写片内32字节寄存器的数据(包括时间寄存器、报警寄存器、控制寄存器、通用sram寄存器)。 sd2400系列内置晶振,该芯片可保证时钟精度为5ppm(在25下),即年误差小于2.5 分钟;该芯片内置时钟精度调整功能,可以在很宽的范围内校正时钟的偏差(分辨力3ppm),通过外置或内置的数字温度传感器可设定适应温度变化的调整值,实现在宽温范围内高精度的计时功能。 sd2400系列内置的一次性工业级电池或充电电池可保证在外部掉电情况下时钟使用寿命为58年时间;内部具备电源切换电路,当芯片检测到主电源vdd掉到电池电压以下,芯片会自动转为由备电电池供电。 sd2400系列内置单路定时/报警中断输出,报警中断时间最长可设至100年;内置频率中断输出和倒计时中断输出。 sd2400系列采用了多种提高芯片可靠性的技术,可满足对实时时钟芯片的各种需要,是在选用高精度实时时钟时的理想选择。 sd2400系列内部各种封装引脚图如图2.1,一般常用的是dip-8脚封装;内部结构图如图2.2所示;图2.1、sd2403api引脚图 图2.2、sd2403api内部结构图3、两位共阴极数码管9,有2个公共端,8位段选端,点亮二极管的电流一般在15ma左右;图3.1给出了数码管基本引脚图;数码管与单片机的基本连接图如图3.2; 图3.1、数码管引脚图 图3.2、数码管与单片机连接图数码管使用条件:、段与小数点之间加限流电阻;、使用电压:段:根据发光颜色决定 、小数点:根据发光颜色决定、使用电流:静态: 总电流80ma(每段10ma)、动态:平均电流4-5ma,峰峰值电流100ma;2.3、智能交通信号灯控制系统软件设计2.3.1、基本功能(1)交通信号灯正常运行:红灯、黄灯、绿灯交替亮灭,红灯亮22s,黄灯亮3s、绿灯亮20s,数码管显示当前的时间。(2)系统检测到k1或k2按下时,表示第一个地点或第二个地点有特殊情况或紧急情况发生,立即反馈给底层控制系统,单片机立即中断交通信号灯的正常运行,使该路段全部以红灯显示,禁止车辆通行,并随时监测该路段特殊情况是否处理完毕。(3)报警情况取消:系统检测到k3、k4键按下时,表示特殊情况或者紧急情况处理完毕,底层控制系统立即开启交通信号灯的正常工作模式,并把当前的时间反馈给系统,系统可以通过数码管显示当前时间。2.3.2、软件设计7121314智能交通信号灯控制系统软件基于keil c语言开发系统平台,用c语言开发,工程主要包括主程序(main.c)、定时器部分(timer.c)、时钟部分(sd2403api.h)、执行程序(command_process.c)、串口部分(uart.c)、全局变量声明(global.c);主程序流程图:图6、主程序流程图 流程图详解:系统上电以后首先对系统中所用到的相关变量进行初始化,然后对定时器0、串口、看门狗等进行初始化,然后进入while()循环,首先进行喂狗,然后检测串口1是否有命令过来,如果有命令,则转去执行串口1的命令,主要是系统时间的设置与查询;如果串口1中没有命令到来,则正常执行交通信号灯亮灭程序,此时再去判断是否有报警信息,如果有报警命令到来,则转去执行报警程序,如果没有,则转去执行数码管显示部分程序,执行完成以后转会喂狗部分,继续按照以上步骤执行,程序在此循环。串口相关程序流程图:图7、串口相关程序流程图 系统用到串口部分程序的作用主要是对系统时间进行设置和查询,这样整套系统时间就可以任意设置,并且由于sd2403api时钟芯片精度较高,一年中的误差率不会超过几分钟,所以系统在第一次使用时设置好了时间,可以每隔一年左右的时间进行校准,当然可以通过串口命令随时校准,如果嫌比较麻烦,单片机内部已经对时间校准进行了设置,每隔一年校准一次; 通过以上流程图,我们可以看出,此串口程序可以接收一条长21个字节的完整命令,并且带有超时检测功能。即如果一条命令超时长达2s,则这条命令取消,重新接收下一条命令。这样可以保证命令的完整性和可靠性; 由于能够对系统时间进行设置和查询,且精度较高,所以这套配搭时间的系统用在交通道路方面的可靠性也较之一般系统高的多,整套系统交通信号灯亮灭的时间都可以随时记录和查询。方便日后进行的维修和事故处理。 注:整个系统的源程序、系统校时查询时间命令见附录(带注释);2.4、系统调试调试主要步骤如下8910:、根据硬件线路设计将硬件线路连接好;、根据软件流程图编写好源程序、程序在pc端上编译通过,并与pc机硬件连好,进行连接和运行调试;相关调试说明:智能交通信号灯底层控制系统硬件电路方面只需要熟悉protel dxp软件即可,电路调试主要集中在电源部分和数码管显示部分中的位选信号部分,数码管位选信号用npn三极管(9013)进行驱动,其中基极限流电阻的选择是个关键。软件的调试是本系统的难点也是重点。软件部分采用keil c语言开发系统进行编写,调试的重点在于采用iic总线方式对时钟芯片内部寄存器上的数据进行修改和读取,数码管动态显示以及定时器精确定时设置。本系统用stc-isp-v4.80下载软件将keil 软件生成的相应的hex文件下载到at89c52单片机内部,并进行在线调试。结论智能交通信号灯控制系统硬件部分用protel dxp软件进行设计,软件部分采用keil c语言进行开发,充分发挥了c语言简单、实用、可移植性强的特点。总之,采用单片机应用开发技术使得复杂的电子系列设计变得简单容易,大大提高了设计的效率。本设计的特点在于at 89c52单片机应用方面国内已经比较成熟,系统开发周期短,整个系统稳定性高,能够满足道路照明的要求。该系统使用方法较为简单,能够很方便地进行量产普及。总之,整个设计的工作稳定可靠,具有很强的抗干扰能力是本系统的一大特色。本设计还可以从经济适用的角度出发,结合外围的led、按键输入、数码管显示、报警和等电路利用c语言编写主核芯片的控制程序,使该系统能够实现交通信号灯的智能化控制。这样就可更方便的应用于城市道路、乡镇道路甚至高速公路等用到交通信号灯的场所。这也使得该系统更具有实用性。考虑到美观、成本、稳定性等诸多方面的因素、该系统功能上还有许多需要改进的地方。比如最关键的一点该系统只是对某个特定通道上的交通信号灯进行控制,而没有形成一个巨大的城市道路交通信号灯控制系统平台。但是通过此次学习,我深深的感受到,只有系统地充分地学习单片机方面,硬件电路方面的理论知识,才能在在理论学习的基础上进行系统开发时,能够更加地得心应手!只有使得理论充分地与实际相结合,才能顺利的做出较为出色的毕业设计, 加强单片机应用方面的能力,设汁好与工程实际应用接轨的课程题目。参考文献 1 李广弟等 单片机基础 北京航空航天出版社, 2001.7 2 楼然苗等 51系列单片机设计实例 北京航空航天出版社, 2003.3 3 唐俊翟等 单片机原理与应用 冶金工业出版社, 2003.9 4 刘瑞新等 单片机原理及应用教程 机械工业出版社, 2003.7 5 吴国经等 单片机应用技术 中国电力出版社 2004.1 6 李全利、迟荣强 单片机原理及接口技术 高等教育出版社 2004.1 7 侯媛彬等 凌阳单片机原理及其毕业设计精选 科学出版社 2006 8 罗亚非,凌阳十六位单片机应用基础 北京航空航天大学出版社 2003 9 北京北阳电子有限公司,061a凌阳单片机及其附带光盘 2003年 10 张毅刚等 mcs-51单片机应用设计,哈工大出版社 2004年第2版 11 霍孟友等,单片机原理与应用机械工业出版社 2004.1 12 霍孟友等 单片机原理与应用学习概要及题解 机械工业出版社2005.3 13 许泳龙等,单片机原理及应用 机械工业出版社,2005.1 14 马忠梅等,单片机的c语言应用程序设计,北京航空航天大学出版社,2003修订版 15 薛均义 张彦斌 虞鹤松 樊波,凌阳十六位单片机原理及应用,2003年,北京航空航天大学出版社 致谢历时两个月的时间终于将这篇论文写完,在论文的写作过程中老师和同学给了我很大的帮助。首先要强烈感谢我的论文指导老师安学立老师,在我的论文写作过程中给予了诸多的指导,既学到知识又不产生依赖感。在安老师的悉心指导下,我对单片机应用方面知识有了进一步的理解和掌握,通过学习使我更加了解了我们所学的专业,学有所用,从而更加热爱电子专业。感谢我的同学和朋友,在我写论文的过程中给我提了很多的建议,还在论文的撰写和排版等过程中提供了很多的帮助。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和同学批评和指正!附录 系统校时与时间查询命令:系统时间设定(秒、分、时、星期): 2f 43 2f 06 00 00 00 00 00 00 00 00 0a 00 81 # # # # # cc 系统时间设定(日期、月份、年份、#):2f 43 2f 06 00 00 00 00 00 00 00 00 0a 00 82 # # # # # cc系统即时时间查询(秒、分、时、星期): 2f 43 2f 06 00 00 00 00 00 00 00 00 0a 00 88 00 00 00 00 84 cc 系统即时时间查询(日期、月份、年份、#):2f 43 2f 06 00 00 00 00 00 00 00 00 0a 00 89 00 00 00 00 99 cc 注明: 该命令中第19位是从第4到第18位之间包括第4和第18位的所有数据的八位异或校验。 “#”代表任意设定的值或者需要求出的校验值。系统源程序如下(带注释):(1)、主程序如下(main.c):#include#include#include#include#include#include#includemain()unsigned char i;translight(); /相关变量初始化phy_timer0_init(); /定时器1初始化uart1_init(); /串口初始化ea=1; /开总中断watchdog_init(); /看门狗初始化delay(30);while(1)watchdog_kick(); /看门狗从新计数if(uart1_flag) /是否有串口命令过来/有串口命令要执行;uart1_flag=0;uart1_flag_lock=1;/防止串口数据还没有处理完,又来了一条新的命令uart1_command_process(); /最大6层嵌套;uart1_flag_lock=0;tra_light_process(); /正常亮灯check_alarm(); /检测报警信息for(i=0;i10;i+) /循环执行10次,能够增加led的亮度display(); /数码管连续显示10次 (2)、系统执行子程序文件(command_process.c):#include#include#include#include /共阴数码管 0-9 - _ 空 表/=红灯20s、黄3s、绿灯22s按照正常次序依次执行=/void tra_light_process();void check_alarm();void display(void);void unknow_command(void);void process_0a();void process_0a_00();void back_time(unsigned num); /0返回时、分、秒、星期,1返回年、月、日void back_command(void);/=错误命令返回函数函数=/void unknow_command(void)back_buffer0=0x4f;back_buffer1=0x4f;back_buffer2=0x4f;uart1_send_string(back_buffer,21);back_buffer0=0x2f;back_buffer1=0x2f;back_buffer2=0x2f;/=交通信号灯正常执行函数=/void tra_light_process()if(!tra_alarm_flag) /没有紧急情况发生if(green_flag) /需要亮绿灯green_count=0; /开始对绿灯时间进行记时,计时22sred_1 =1; /关掉红灯red_2 =1; /关掉红灯yellow_1=1; /关掉黄灯yellow_2=1; /关掉黄灯green_1 =0; /点亮绿灯green_2 =0; /点亮绿灯alarm =1; /关闭报警灯else if(yellow_flag)yellow_count=0; /开始对黄灯时间进行记时,计时3sred_1 =1; /关掉红灯red_2 =1; /关掉红灯yellow_1=0; /点亮黄灯yellow_2=0; /点亮黄灯green_1 =1; /关掉绿灯green_2 =1; /关掉绿灯alarm =1; /关闭报警灯else if(red_flag) red_count=0; /开始对红灯时间进行记时,计时22sred_1 =0; /点亮红灯red_2 =0; /点亮红灯yellow_1=1; /关掉黄灯yellow_2=1; /关掉黄灯green_1 =1; /关掉绿灯green_2 =1; /关掉绿灯alarm =1; /关闭报警灯elseelse/=报警信息检测=/void check_alarm()if(k1=0&k2=0)/任意有按键按下时都会响应说明有地方有险情red_count=0;red_1 =0; /有险情时亮红灯red_2 =0;/点亮红灯yellow_1=1;/关掉黄灯yellow_2=1;/关掉黄灯green_1 =1;/关掉绿灯green_2 =1;/关掉绿灯alarm =0;/报警指示灯点亮tra_alarm_flag=1;/指示有报警情况/=读取当前的值=/ hour=i2c_single_byte_read(0x64,0x02);hour=(hour&0x3f)4)*10+(hour&0x0f); /读取小时 minute=i2c_single_byte_read(0x64,0x01); minute=(minute&0x7f)4)*10+(minute&0x0f); /读取分钟 second=i2c_single_byte_read(0x64,0x00); second=(second&0x7f)4)*10+(second&0x0f); /读取秒钟else if(k3=0&k4=0) tra_alarm_flag=0; /报警信息已经取消了else/=数码管显示当前的时间=/void display(void)unsigned char m,n,j,k;m=hour/10;n=hour%10;p1=tablem;position1=1; /选通第一个数码管的第一个位置position2=0;delay(4);p1=tablen;position1=0; position2=1; /选通第一个数码管的第二个位置j=minute/10;k=minute%10;p1=tablej;hposition1=1; /选通第二个数码管的第一个位置hposition2=0;delay(4);p1=tablek;hposition1=0; hposition2=1; /选通第二个数码管的第二个位置/=串口命令=/void process_0a()switch(uart1_cuffer13) case 0x00:process_0a_00(); /时间设定与查询break;default:break;/=设置和查询时间=/void process_0a_00() unsigned char hour; unsigned char minute; unsigned char week; unsigned char day; unsigned char month; unsigned char year; unsigned char t_buffer4; switch(uart1_cuffer14) case 0x81:t_buffer0=uart1_cuffer15; t_buffer1=uart1_cuffer16;t_buffer2=uart1_cuffer17;t_buffer3=uart1_cuffer18;uart1_cuffer15=(uart1_cuffer15/10)4|(uart1_cuffer15%10); /这几句是将16进制数转化为bcd码的格式uart1_cuffer16=(uart1_cuffer16/10)4|(uart1_cuffer16%10);uart1_cuffer17=(uart1_cuffer17/10)4|(uart1_cuffer17%10)|0x80;uart1_cuffer18=(uart1_cuffer18/10)4)*10+(hour&0x0f); /读取小时 minute=i2c_single_byte_read(0x64,0x01); minute=(minute&0x7f)4)*10+(minute&0x0f);/读取分钟 week=i2c_single_byte_read(0x64,0x03); /取得当前的星期 week=week&0x07;back_command(); /返回命令break;case 0x82:t_buffer0=uart1_cuffer15; t_buffer1=uart1_cuffer16;t_buffer2=uart1_cuffer17;t_buffer3=uart1_cuffer18;uart1_cuffer15=(uart1_cuffer15/10)4|(uart1_cuffer15%10); /这几句是将16进制数转化为bcd码的格式uart1_cuffer16=(uart1_cuffer16/10)4|(uart1_cuffer16%10);uart1_cuffer17=(uart1_cuffer17/10)4)*10+(day&0x0f); month=i2c_single_byte_read(0x64,0x05); month=(month&0x1f)4)*10+(month&0x0f); year=i2c_single_byte_read(0x64,0x06);year=(year4)*10+(year&0x0f);back_command();/返回命令break;case 0x88:/返回秒、分、时、星期back_time(0);break;case 0x89:back_time(1);/返回日、月、年break;default:break; /*返回时间,参数num为0返回时、分、秒、星期,1返回年、月、日*/void back_time(unsigned num) /0返回时、分、秒、星期,1返回年、月、日 unsigned char sum;unsigned char i;sum=0;back_buffer13=0x00;if(num) back_buffer14=0x89; back_buffer15=i2c_single_byte_read(0x64,0x04);/这几句话读取系统的日期、月份、年份back_buffer15=(back_buffer15&0x3f)4)*10+(back_buffer15&0x0f); back_buffer16=i2c_single_byte_read(0x64,0x05);back_buffer16=(back_buffer16&0x1f)4)*10+(back_buffer16&0x0f);back_buffer17=i2c_single_byte_read(0x64,0x06); back_buffer17=(back_buffer174)*10+(back_buffer17&0x0f); back_buffer18=0x00;else back_buffer14=0x88; back_buffer15=i2c_single_byte_read(0x64,0x00); /这几句话读取系统的秒、分、时、星期 back_buffer15=(back_buffer15&0x7f)4)*10+(back_buffer15&0x0f);back_buffer16=i2c_single_byte_read(0x64,0x01);back_buffer16=(back_buffer16&0x7f)4)*10+(back_buffer16&0x0f); back_buffer17=i2c_single_byte_read(0x64,0x02); back_buffer17=(back_buffer17&0x3f)4)*10+(back_buffer17&0x0f); back_buffer18=i2c_single_byte_read(0x64,0x03); back_buffer18=back_buffer18&0x07;for(i=3;i19;i+)sum=back_bufferi;back_buffer19=sum;u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论