酒 泉 职 业 技 术 学 院
课 程 设 计
2014 级 电气自动化 专业
题 目: 智能交通灯的设计 设计时间: 2015.12.14 —12.18 学生姓名: *** 指导教师: 岳志明 杜娟 班 级: 14电气自动化(1)班
2015年12月18日
1
目 录
一 方案的设计 ......................................................... 1 (一)方案的设计与论证 ............................................... 1 (二)电源提供方案 .................................................... 2 (三)显示界面方案 .................................................... 2 (四)功能介绍 ........................................................ 2 二、硬件设计 .......................................................... 4 (一)总体设计 ........................................................ 4 (二)单片机的基本结构 ............................................... 4 (三)单片机的外围电路设计 ........................................... 6 (四)硬件调试 ........................................................ 8 三 交通信号灯控制系统的设计 .......................................... 9 (一)十字路口交通信号灯具体的控制要求 ............................... 9 (二)十字路口交通信号灯示意图 ...................................... 10 四、软件设计 ......................................................... 11 (一)软件设计应用环境 .............................................. 11 (二)软件设计流程 ................................................... 11 五、结论 ............................................................ 12 参考文献 ............................................................ 13 附件一:总体原理图 ................................................... 14 附件二:源程序代码 ................................................... 14
2
智能交通灯的设计
摘要:本系统采用单片机
ATS52来设计交通灯控制器,实现了能根据实
际车流量通过ATS52芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示。本系统实用性强、操作简单、扩展功能强。目前,伴随着机动车辆的不断增加,尤其是十字路口的交通建设
颇为关键,严重的
影响到城市交通安全。社会主义建设以来,有许许多多的设计工作者投身于十字路口交通建设的研究之中,创造和设计出了很多新型的方案,把我国交通建设推向了更高的发展阶段。
关键词: ATS52单片机;交通灯;倒计时;时间显示
一 方案的设计
(一)方案的设计与论证
本设计以单片机为核心,以LED数码管作为倒计时指示,根据设计的要求我们考虑了各功能模块的几种设计方案,以求最佳方案,实现实时显示系统各种状态,系统还增设了根据交通拥挤情况可分别设置主干道和次干道的通行时间,以提高效率,缓减交通拥挤。系统总体设计框图如图所示。
交通灯控制的框图如下图所示,主要有控制电路、按键电路、晶振电路、复位电路、显示电路、电源电路等电路组成。
电源电路 单 片 机 数码管显示电路 时钟电路 复位电路 Led信号灯控制电路 1 按键电路 图1 交通灯控制的框图
(二)电源提供方案
为使模块稳定工作,须有可靠电源。本次设计考虑了两种电源方案: 方案一:采用的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用电源,会使系统复杂,且可能影响电路电平。
方案二:采用单片机控制模块提供电源。该方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,选择第二种方案。
(三)显示界面方案
该系统要求完成倒计时功能。基于上述原因,本次设计考虑了两种方案: 方案一:完全采用点阵式LED显示。这种方案功能强大,可方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。
方案二:完全采用数码管显示。这种方案优点是实现简单,可以完成倒计时功能。缺点是功能较少,只能显示有限的符号和数码字符。根据本设计的要求,方案二已经满足了要求,所以本次设计采用方案二以实现系统的显示功能。
这里同样讨论了两种方案:
方案一:采用8155扩展I/O口、键盘及显示等。该方案的优点是使用灵活可编程,并且有RAM及计数器。若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:直接在I/O口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的端口资源还比较多。
由于该系统是对交通灯及数码管的控制,只需用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
(四) 交通灯运行状态
2
(五) 功能介绍
1. 由单片机、按键、发光二极管、共阳数码管、三极管设计而成。
2. 按键说明:设置键、加键、减键、紧急模式键,单独一个按键为复位按键。 3. .单片机型号:STCC52.
4. 可以设置东西、南北的倒计时时间。
5. 紧急模式:当消防车、救护车等特殊车辆通行时按下;紧急模式键:全部亮红灯,待紧急车辆通过后,再恢复后再退出。
6. 夜间模式:4个方向黄灯闪烁。
7. 可以按键设置交通灯东西、南北的倒计时时间,第一次按设置键是设置东西方向的时间,第二次按设置键是设置南北方向的时间,再按加减键就可以设置对应的时间。
8. 设定的参数具有掉电保存,保存在STC单片机的内部,上电无需重新设置。 9. 东西和南北方向各有两个数码管分别显示时间、东西和南北的时间相差5秒,这5秒为黄灯闪烁的时间。
10. 当有特殊情况时,可以按紧急模式进行调整。
3
11. 第一次按紧急键4个方向全部亮红灯(禁止通行) 12. 第2次东西南北4个方向黄灯闪烁(夜间模式) 13. 第3次南北绿灯亮东西红灯亮(南北优先通行) 14. 第4次南北红灯亮东西绿灯亮(东西优先通行)
15. 再按一次回到正常显示,不同的模式适合不同的交通情况(如夜间模式,有交通事故的时候)
16. 可以实现特种车辆优先通行或交通事故应急处理。
二 系统硬件设计
硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现交通灯基本功能以外,主要还要考虑如下几个因素:①系统稳定度;②器件的通用性或易选购性;③软件编程的易实现性;④系统其它功能及性能指标;因此硬件设计至关重要。现从各功能模块的实现逐个进行分析探讨。
(一)总体设计
本设计以单片机为控制核心,采用模块化设计,共分以下几个功能模块:单片机控制系统、键盘及状态显示、倒计时模块等。
单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机振荡电路、复位电路等组成。
系统采用双数码管倒计时计数功能,最大显示数字99。
友好的人机界面、灵活的控制方式、优化的物理结构是本设计的亮点。
(二) 单片机的基本结构
ATS52单片机是一款低功耗、低电压、高性能CMOS8位单片机,片内含8KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器(EPROM),器件采用CMOS工艺和ATMEL公司的高密度,非易失性存储器(NURAM)技术制造,其输出引脚和指令系统都与MCS-51兼容,片内的FLASH存储器允许在系统内可改
4
编程序或用常规的非易失性存储编程器来编程。因此,ATC52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域[1]。
ATS52具有以下主要性能: 1.8KB可改编程序FLASH存储器; 2.全表态工作 :0~24HZ; 3.256X8字节内部RAM;
4.32个外部双向输入,输出(I、O)口; 引脚说明如图2-2。 VCC:电源电压。
图2 单片机引脚图
图2 单片机引脚图
5
(三)单片机外围电路设计
1复位电路设计
MCS-51的复位输入引脚RST为MCS-51提供了初始化的手段,可以使程序从指定处开始执行,在MCS-51的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作,只要RST保持高电平,则MCS-51循环复位,只有单RET由高电平变成低电平以后,MCS-51才从0000H地址开始执行程序,本系统采用按键复位方式的复位电路。
图3 复位电路图
2时钟电路设计
MCS-51的时钟可以由两种方式产生,一种是内部方式,利用芯片内部的振荡电路;另外一种为外部方式,本论文根据实际需要和简便,采用内部振荡方式,MCS-51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别
6
是此放大器的输入端和输出端,这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成了一个自激振荡器。
MCS-51虽然有内部振荡电路,但要形成时钟,必须外接元件,所以实际构成的振荡时钟电路,外接晶振以及电容C1和C2构成了并联谐振电路接在放大器的反馈回路中,对接电容的值虽然没有严格的要求,但电容的大小会影响振荡频率的高低,振荡器的稳定性,起振的快速性和温度的稳定性。晶振的频率可在1.2MHZ~12MHZ之间任选,电容C1和C2的典型值在20pf~100pf之间选择,由于本系统用到定时器,为了方便计算,采用了12MHZ的晶振,采用电容选择30pf。
图4 时钟电路图
3 显示模块电路设计
该模块由共阳LED数码管组成,利用数码管的动态扫描原理,由三极管进行锁存,当控制数码管的IO口P20和P21为低电平时(及三极管基极为低电平),则三极管导通,VCC通三极管给数码管供电,则数码管被点亮,利用数码管点亮的余辉和人眼的视觉暂留原理,则看起来数码管是同时被点亮的。
7
图5 显示电路图
从设计完成的任务与要求来看,显示通行时间必须用二位数码管,从节省硬件资源的角度考虑,可采用扫描的方式来处理,对于7段数码管,占用7个单片机的I/O口,另外设置2个电子开关对2位显示进行配合,占用2个I/O端口,十字路口共需4组红绿灯,加上转换黄灯,一共是12只灯,须用12个端口进行控制,加上两个方向的紧急通行按钮,占2个I/O端口和一个蜂鸣器端口,因此实际占用的单片机I/O口为24个,为此,我们可以选用51系列单片机中的ATATS52来作为处理器。这款单片机的I/O口作为输出时,具有较大的吸收电流能力,因此我们可以选用共阳型数码管,这样由单片机的I/O口就可以直接驱动,能简化硬件电路的设计。
4 单片机的硬件调试
第一步为目测,单片机应用系统电路全部手工焊接在洞洞板上,因此对每一个焊点都要进行仔细的检查。检查它是否有虚焊、是否有毛剌等。
8
第二步为万用表测试,先用万用表复核目测中认为可疑的连线或接点,查看它们的通断状态是否与设计规定相符,再检查各种电源线与地线之间是否有短路现象。
第三步为加电检查。当系统加电时,首先检查所有插座或器件引脚的电源端是否有符合要求的电压值,接地端电压值是否接近零,接固定电平的引脚端是否电平正确。
第四步是联机检查。
在对硬件电路调试过程中,还遇到了不少问题,第一次把所有的元件都焊上去后,都准备调试了,才发现正负电源的插针离得太近了,不容易接电源,本不该犯的错误,这些都是由于自己的粗心大意造成的,所以说,做任何事情都必需经过“三思而后行”,来不得半点的马虎,否则浪费了时间和精力
三 交通信号灯控制系统的设计
交通信号灯由红灯、绿灯、黄灯组成。红灯表示禁止通行,绿灯表示准许通行,黄灯表示警示。交通信号灯分为机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。交通信号灯用于道路平面交叉路口,通过对车辆、行人发出行进或停止的指令,使各同时到达的人、车交通流尽可能减少相互干扰,从而提高路口的通行能力,保障路口畅通和安全。因此必须合理的设计路口主干道的系统。
(一) 十字路口交通信号灯具体的控制要求
(1) 交通信号灯分布于东南西北,每个路口均有三个。南北方向绿灯和东西方
向的绿灯不能同时亮;如果同时亮,则应自动立即关闭信号灯系统,并立即发出报警信号。系统工作后,首先南北红灯亮并维持30s;与此同时,东西绿灯亮,并维持25s时间,到25s时,东西绿灯熄灭。在东西绿灯熄灭时,东西黄灯亮并维持5s,然后东西黄灯熄灭,东西红灯亮,同时南北红灯熄灭,南北绿灯亮;东西红灯亮并维持30s;与此同时,南北绿灯亮并维持15s;然后,南北绿灯熄灭南北绿灯熄灭
9
时,南北黄灯亮维持5s后熄灭;同时南北红灯亮,东西绿灯亮。至此,结束一个工作循环,如下交通信号灯变化表:
交通信号灯变化表 绿灯亮 东西 25S 红灯亮 南北 30S 15S 5S 5S 绿灯亮 20S 黄灯亮 黄灯亮 红灯亮
(2)在交通信号灯亮和闪烁的同时,路口设有两位七段码的显示器倒数计时,让车辆行人能够清楚地知道再过多久信号灯就会发生变化。以便于司机和行人能够在有限的时间内准确的通行。
(二)十字路口交通信号灯示意图
交通信号灯共有12盏,每个路口各有红,黄,绿三盏,具体分布如下图所示:
10
四 交通信号灯控制系统程序编制
(一) 软件设计流程
软件总体设计主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,发送显示数据,同时对
键盘进行扫描,等待外部中断,以及根据所需要的功能进行相应的操作。 交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间;通过定时也可以向LED数码管中每隔1秒送一个数,显示该状态剩余的时间。其流程图如图所示。
开 始 设置定时,显示初始化 南北绿灯亮,东西红灯亮,延时 南北黄灯闪烁,东西红灯亮,延时 南北红灯亮,东西绿灯亮,延时 南北红灯亮,东西黄灯闪烁,延时
图4-1 主程序框图
(二)交通灯定时器模块
ATS52单片机内部有3个定时器T0,T1和T2,本次设计中使用T0工作在
方式1,即16位定时器,定时50ms,20次中断产生秒信号,从而控制红绿灯的点亮时间。
11
工作方式寄存器TMOD用来设置T0、T1的工作方式。这次实习中设置TMOD=0x01,即T0工作于方式0(16位定时器)。
内部定时器/计数器用作定时器时,是对机器周期计数,每个机器周期的长度是12个振荡周期。定时常数的设置可用一下方式计算:
机器周期=12/12MHz=1us
(65536-定时常数)*1.0us=50ms 所以定时常数是50000。
五 结论
本论文介绍了一种基于ATS52单片机的交通灯的设计方法,本论文完成了系统的硬件设计与制作,详细介绍了系统硬件设计的过程,并结合软件系统完成了整个系统的软、硬件联调,系统工作良好,实现了基本功能。
通过本次设计,巩固了我学习过的专业知识,也使我把理论与实践从真正意义上相结合了起来,锻炼了借助互联网络搜集、查阅相关文献资料和组织材料的综合能力,从中我也认识到自己的不足之处,我会在日后的学习中加以改进与提高。
经过这次课程设计,我在各方面都有很大的提高。学到了很多不曾学过的东西,也使我学会了更好地利用一些资源和工具如图书馆及一些软件查阅资料。在设计过程中也遇到很多的困难,遇到一些原理性不懂的时候就要去有针对性地查找资料或者请教知道老师和其他同学,然后加以吸收利用,提高了自己的应用能力,扩充了自己的知识储备,同时提高了动手能力。
12
参考文献
[1] 刘勇.数字电路[M].电子工业出版社.2004
[2] 杨子文.单片机原理及应用[M].西安电子科技大学出版社.2006 [3] 刘华东.单片机原理与应用(第2版)[M].电子工业出版社.2006.8 [4] 胡汉才.单片机原理及其接口技术[M].清华大学出版社,2006.
[5] 沈精虎.电路设计与制版Protel99入门与提高[M].人民邮电出版社,2004. [6] 范风强,兰婵丽.单片机语言C51应用实战集锦[M].电子工业出版社.,2001. [7] 顾曙敏.单片机与串行时钟DS1307的接口设计[J].现代电子技术,2003,26(14)85-87.
[8] 孙晓燕.基于8051单片机的交通灯控制系统设计与模拟[J].南宁职业技术学院学报,2007年03期.
[9] 陈毅,许飞,王学飞.基于单片机的交通灯智能控制系统[J].中国高新技术企业,2009年第15期.
13
附件一:总体原理图
附件二:源程序代码
#include #define uchar unsigned char //宏定义\"uchar\"代替\"unsigned char\"。 #define uint unsigned int //宏定义\"uint\"用来定义无符号整型数。 #include \"eeprom52.h\" //数码管段选定义 0 1 2 3 4 5 // uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; uchar smg_i = 4; //显示数码管的个位数 //数码管位选定义 sbit smg_we1 = P2^0; //数码管位选定义 14 6 7 8 9 不显示 //断码 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, A B C D E F 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; sbit smg_we2 = P2^1; sbit smg_we3 = P3^6; sbit smg_we4 = P3^7; char dx_s = 0; //东西 南北 倒计时变量 sbit dx_red = P2^4; //东西红灯 sbit dx_green = P2^3; sbit dx_yellow = P2^2; sbit nb_red = P2^7; sbit nb_green = P2^6; sbit nb_yellow = P2^5; uchar flag_jtd_mode; //交通灯的模式 根据时间 bit flag_1s = 0; bit flag_500ms; bit flag_dx_nb; uchar i; uchar flag_alarm; //模式 uchar dx_time = 30,nb_time = 20; //东西、南北的时间 uchar flag_jdgz ; //交通管制 /***********************数码位选函数*****************************/ void smg_we_switch(uchar i) { } /******************把数据保存到单片机内部eeprom中******************/ void write_eeprom() { //东西绿灯 //东西黄灯 //南北红灯 //南北绿灯 //南北黄灯 //东西南北模式 uchar flag_5m_value; switch(i) { } case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break; case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break; case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break; case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break; SectorErase(0x2000); byte_write(0x2000, dx_time); byte_write(0x2001, nb_time); 15 } /******************把数据从单片机内部eeprom中读出来*****************/ void read_eeprom() { } /**************开机自检eeprom初始化*****************/ void init_eeprom() ///开机自检eeprom初始化 { } /******************************************************************** * 名称 : delay_1ms() * 功能 : 延时1ms函数 * 输入 : q * 输出 : 无 ***********************************************************************/ void delay_1ms(uint q) { } /******************************************************************** * 名称 : display() 16 byte_write(0x2058, a_a); dx_time = byte_read(0x2000); nb_time = byte_read(0x2001); a_a = byte_read(0x2058); read_eeprom(); if(a_a != 1) { } a_a = 1; dx_time = 30; //先读 //新的单片机初始单片机内问eeprom nb_time = 20; //东西、南北的时间 write_eeprom(); //保存数据 uint i,j; for(i=0;i * 功能 : 数码管显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void display() { } /*********************定时器0、定时器1初始化******************/ void time0_init() { // // } /*********************交通灯处理函数*********************************/ void jiaotongdeng_dis() { uchar i; for(i=0;i P0 = 0xff; smg_we_switch(i); //位选 P0 = dis_smg[i]; //段选 delay_1ms(3); EA = 1; ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 1; //开总中断 //定时器0、定时器1工作方式1 //开定时器0中断 //允许定时器0定时 //开定时器1中断 //允许定时器1定时 TMOD = 0X11; if(flag_1s == 1) { } 17 flag_1s = 0; if(dx_s == 0) { } dx_s --; if(flag_dx_nb == 1) dx_s = nb_time; dx_s = dx_time; //南北时间 //东西时间 else flag_dx_nb = ~flag_dx_nb; dis_smg[0] = smg_du[dx_s % 10] ; dis_smg[1] = smg_du[dx_s / 10] ; dis_smg[2] = smg_du[dx_s % 10] ; dis_smg[3] = smg_du[dx_s / 10] ; /***********************南北时间*********************************/ if(flag_dx_nb == 0) { } if(flag_dx_nb == 1) { if(dx_s > 5) { dx_red = 0; //亮 dx_green = 1; //灭 dx_yellow = 1; //灭 18 if(dx_s > 5) { { } dx_red = 1; //灭 dx_green = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; { } else { } dx_yellow = 1;//灭 dx_yellow = 0;//亮 //灭 if(flag_500ms == 0) dx_red = 1; //灭 dx_green = 0; //亮 dx_yellow = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; //灭 //当小于5秒时 黄灯要闪了 flag_5m_value = 0; }else if(dx_s <= 5) /***********************东西时间*********************************/ nb_red = 1; //灭 } } { } nb_green = 0; //亮 nb_yellow = 1; //灭 //当小于5秒时 黄灯要闪了 flag_5m_value = 0; }else if(dx_s <= 5) dx_red = 0; //灭 dx_green = 1; //灭 dx_yellow = 1; //灭 nb_red = 1; //灭 nb_green = 1; //灭 if(flag_500ms == 0) { } else { } nb_yellow = 1; //灭 nb_yellow = 0; //亮 //黄灯闪烁 /********************按键程序*****************/ uchar key_can; void key() { //按键值 //按键程序 static uchar key_new; key_can = 20; //按键值还原 P1 |= 0x1f; if((P1 & 0x1f) != 0x1f) { delay_1ms(1); { //按键消抖动 //确认是按键按下 if(((P1 & 0x1f) != 0x1f) && (key_new == 1)) key_new = 0; switch(P1 & 0x1f) { } 19 //按键按下 case 0x1e: key_can = 1; break; case 0x1d: key_can = 2; break; case 0x1b: key_can = 3; break; case 0x17: key_can = 4; break; //得到按键值 //得到按键值 //得到按键值 //得到按键值 } } } else key_new = 1; uchar menu_1,flag_s; /********************设置函数*****************/ void key_with() { if(key_can == 4) //交通管制按键 { flag_jdgz ++; if(flag_jdgz > 5) { } if(flag_jdgz == 2) // 东西红灯 南北绿灯 { } if(flag_jdgz == 3) // 南北红灯 东西绿灯 { dx_red = 1; //灭 dx_green = 0; //亮 dx_yellow = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; //灭 20 flag_jdgz = 0; if(flag_jdgz == 1) // 全部亮红灯 dx_red = 0; //亮 dx_green = 1; //灭 dx_yellow = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; //灭 dx_red = 0; //亮 dx_green = 1; //灭 dx_yellow = 1; //灭 nb_red = 1; //灭 nb_green = 0; //亮 nb_yellow = 1; //灭 } } if(flag_jdgz == 4) // 南北绿灯 东西绿灯 { } if(flag_jdgz == 5) // 南北黄灯 东西黄灯 { } dx_red = 1; //灭 dx_green = 1; //灭 dx_yellow = 0; //亮 nb_red = 1; //灭 nb_green = 1; //灭 nb_yellow = 0; //亮 dx_red = 1; //灭 dx_green = 0; //亮 dx_yellow = 1; //灭 nb_red = 1; //灭 nb_green = 0; //亮 nb_yellow = 1; //灭 if(key_can == 1) //设置键 { } if(menu_1 == 1) { if(key_can == 2) { } if(key_can == 3) { } 21 menu_1 ++; if(menu_1 >= 3) { } menu_1 = 0; //设置东西的时间 dx_time ++ ; if(dx_time > 99) dx_time = 99; //加1 dx_time -- ; if(dx_time <= 10) dx_time = 10; //减1 } } { } dis_smg[0] = smg_du[10] ; //显示为A dis_smg[1] = smg_du[10] ; //显示为A dis_smg[2] = smg_du[dx_time % 10] ; dis_smg[3] = smg_du[dx_time / 10] ; write_eeprom(); //保存数据 //设置南北的时间 //显示东西设置的时候 if(menu_1 == 2) if(key_can == 2) { } if(key_can == 3) { } dis_smg[0] = smg_du[11] ; //显示为B dis_smg[1] = smg_du[11] ; //显示为B dis_smg[2] = smg_du[nb_time % 10] ; dis_smg[3] = smg_du[nb_time / 10] ; write_eeprom(); //保存数据 //显示东西设置的时候 nb_time -- ; if(nb_time <= 10) nb_time = 10; //减1 nb_time ++ ; if(nb_time > 99) nb_time = 99; //加1 /******************************************************************** * 名称 : main() * 功能 : 实现灯的闪烁 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main() { P0 = P1 = P2 = P3 = 0XFF; //IO口全部输出为1 time0_init(); init_eeprom(); ///开机自检eeprom初始化 dx_s = nb_time; while(1) { 22 //东西时间 // } } key(); if(key_can < 20) key_with(); menu_dis(); if((menu_1 == 0) && (flag_jdgz == 0)) jiaotongdeng_dis(); display(); /*********************定时器0中断服务程序************************/ void time0_int() interrupt 1 { } //定时10ms中断一次 static uchar value; TH0 = 0x3c; TL0 = 0xb0; //50ms value ++; flag_5m_value++; if(flag_5m_value % 10 == 0) { } value = 0; flag_1s = 1; flag_500ms = ~flag_500ms; if(value >= 20) 23 因篇幅问题不能全部显示,请点此查看更多更全内容for(j=0;j<110;j++);
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务