基于单片机C语言交通灯数码管显示的设计完整版
单片机课程设计交通灯(完整版)

门控串行数据输入
异步中央复位
符合 JEDEC 标准 no.7A
静电放电 (ESD) 保护:
·HBM EIA/JESD22-A114-B 超过 2000 V
·MM EIA/JESD22-A115-A 超过 200 V 。
多种封装形式
额定从-40 °C至 +85 °C和-40 °C至 +125 °C。
设计思想基于完成以上任务分析结合所学有关知识尤其是本学期所学关于单片机的中断系统和定时计数器的相关知识及应用我们知道对于15红绿黄四组各三盏灯的控制可以通过把这十二盏灯分别接到单片机的六个输出引脚若用p1口进行输出则分配如下at89c51l1l2l3l4l5l6东西红东西黄东西绿南北红南北黄南北绿led显示分布1642
亮灯规律:东西绿灯亮25s,南北红灯亮25s
东西绿灯闪5s,南北红灯亮5s
东西黄灯亮2s,南北红灯亮2s
东西红灯亮25s,南北绿灯亮25s
东西红灯亮5s,南北绿灯闪5s
东西红灯亮2s,南北黄灯亮2s
2.2.
(1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
3.2.LED
3.2.1.七段数码显示器:
七段发光线段分别用a、b、c、d、e、f、g七个小写字母表示。
3.2.2.LED数码管:
半导体数码管又称LED数码管,是一种广泛使用的显示器件。LED有两种:共阳极型和共阴极型。
LED优点:亮度高、字形清晰,工作电压低(1.5~3V)、体积小、可靠性高、寿命长,响应速度极快。
1.引言
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
基于c语言单片机十字交通灯课程设计

课程设计报告课程名称:单片机课程设计报告题目:十字路口交通灯控制学生姓名:所在学院:专业班级:学生学号:指导教师:2013年12月25 日课程设计任务书交通灯控制系统的原理框图。
它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。
秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。
本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。
系统除基本的交通灯功能外,还具有倒计时等功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用C51编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。
经过整机调试,实现了对十字路口交通灯的模拟。
关键词:单片机AT89C51;运算器;控制器;译码器一、概述 (1)二、设计要求与原理器件介绍 (1)2.1、设计要求 (1)2.2、工作原理 (1)2.3、电路分析 (2)三、器件选择 (2)3.1、单片机选择 (2)3.2、编码器选择 (3)四、程序设计及总原理图 (4)4.1、程序设计 (4)4.2、总原理图 (6)五、结论与心得 (6)六、参考文献 (7)一、概述随着科学技术的发展,特别是计算机控制和电子技术以及大规模集成电路的迅速发展,使得现代电子设备得到广泛的应用。
其中,单片机作为微型计算机的一个重要的分支,受到人们的重视和关注,发展快速。
由于单片机具有抗干扰能力强,可靠性高,灵活性好,环境要求不高,价格低廉,开发容易等特点,它已经广泛地应用在工业自动化控制、自动检测、家用电器、电力电子等各个方面。
当然,在十字路口交通灯的控制系统中,也应用的非常的广泛。
基于单片机C语言交通灯数码管显示的设计完整版

基于单片机C语言交通灯数码管显示的设计完整版/* P2口位控口,P0口段控口, P1口按键,P3口发光二极管*/#include<reg52.h>#define uchar unsigned char#define uint unsigned int/*共阳数码管字型码数组*//*0,1,2,3,4,5,6,7,8,9,P.,灭*/char code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0x21,0xff};/*共阳数码管位控码数组〔从右往左点亮,反向驱动〕*/char code weikong_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};char find_code[8];sbit S2=P1^0; //S1键启动交通灯控制器sbit S3=P1^1; //S2键回归“P.”状态sbit S4=P1^2; //S3键处理紧急状况uchar time;void DelayX1ms(uint count) //1ms延时函数{uint j;while(count--!=0){for(j=0;j<80;j++);}}/*********************显示函数*****************************/void disp(){char i;char k;for(i=0;i<8;i++){P2=weikong_code[i];k=find_code[i];P0=dis_code[k];DelayX1ms(1);}}/********************1s延时********************************/void delay1s(){TMOD=0X01;EA=1;ET0=1;TH0=0x3C; //定时器定时50MsTL0=0XB0;TR0=1;PT0=1;do{disp();} while(time!=20&&S3&&S4); //有条件转移TR0=0;time=0;}void time_() interrupt 1 //中断程序{time++;TH0=0x3C;TL0=0XB0;}/********************500ms函数********************************/ void delay500ms(){ TMOD=0X01;EA=1;ET0=1;TH0=0x3C;TL0=0XB0;TR0=1;PT0=1;do{disp();} while(time!=10); //有条件转移TR0=0;time=0;}/**************************紧急函数**************************/ void jinji(){uchar f;for(f=10;f>0;f--){P3=0x6F;find_code[1]=f/10;find_code[0]=f%10;delay500ms();delay500ms();disp();}}/**********************主函数******************************/ void main(){while(1){ char m,a; //上电显示“班级、学号”状态find_code[0]=9;find_code[1]=0;find_code[2]=10;find_code[3]=4;find_code[4]=0;find_code[5]=0;find_code[6]=1;find_code[7]=11;disp();while(!S2){while(S3){P3=0XAF;for(m=60;m>0&&(S3);m--){if(!S4)jinji();find_code[1]=m/10;find_code[0]=m%10;delay1s();disp();}for(a=3;a>0&&S3;a--){ if(!S4)jinji();find_code[1]=a/10;find_code[0]=a%10;P3=0xeF;delay500ms();P3=0xcF;delay500ms();disp();}P3=0X77;for(m=30;m>0&&(S3);m--){if(!S4)jinji();find_code[1]=m/10;find_code[0]=m%10;disp();delay1s();}for(a=3;a>0&&S3;a--)学习文档仅供参考{ if(!S4)jinji();find_code[1]=a/10;find_code[0]=a%10;P3=0X7F;delay500ms();P3=0X7B;delay500ms();disp();}}P3=0xFF;}}}。
单片机C语言交通灯设计

单片机C语言交通灯设计#include<reg52.h>/****************初始变量设定*****************/sbit p1_0=P1^0; //定义P0口的8位sbit p1_1=P1^1;sbit p1_2=P1^2;sbit p1_3=P1^3;sbit p1_4=P1^4;sbit p1_5=P1^5;sbit p0_0=P1^6;bit flag=0; //定义显示状态操纵位int ns_time; //定义东西,南北红黄绿各自的时刻初值分别为20,15,5秒int ew_time;int ns_time_red=20;int ns_time_green=15;int ns_time_yellow=5;int ew_time_red=20;int ew_time_green=15;int ew_time_yellow=5;char point=20; //定时的操纵次数初值设定int a=0; //南北,东西两方向切换状态标志初值设定/**************延时子函数**************/delay(int t) //延时子函数{while(t--);}/*************显示子函数***************/display(int ew_time,int ns_time) //显示子函数{char table[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //共阳极数码显示0-9对应的字型码char i,a[4];a[2]=ns_time%10; //南北时刻个位数赋值给a[2]a[3]=ns_time/10; //南北时刻十位数赋值给a[3]a[0]=ew_time%10; //东西时刻个位数赋值给a[0]a[1]=ew_time/10; //东西时刻个位数赋值给a[1]SM1=0;SM0=0; //串行口工作方式0设定for(i=3;i>=0;i--) //分别将4位数送到SBUF区域{SBUF=table[a[i]];while(!TI) ; //判定是否发送完一个数据TI=0; //假设发送完,0赋给TI}/*************主函数*************/void main(void){TMOD=0x01; //设置定时方式1TH0=0x3c; //定时初值50MSTL0=0xb0;TR0=1; //T0溢出中断要求开启EA=1; //总中断开启ET0=1; //T0中断开启EX0=1; //外部中断INT0开启IT0=1; //设置开关下降沿有效EX1=1; //外部中断INT0开启IT1=1; //设置开关下降沿有效ns_time=ns_time_green; //东西南北红黄绿灯时刻赋值ew_time=ew_time_red;ew_time_red=ns_time_green+ns_time_yellow;if(!a) //a=0,东西显示19开始倒计时,南北14开始倒计时{ns_time=ew_time_red;ew_time=ns_time_green+ns_time_yellow;}while(!a) //a=0,进入循环{if(ew_time-5>0){while(!flag);display(ew_time,ew_time-5); //flag=1,显示东西19,南北14P1=0xdd; //南北绿灯,东西红灯flag=0;}if(ew_time<=5) //东西时刻<=5时,南北黄灯闪耀,东西红灯{while(!flag);flag=0;display(ns_time,ns_time); //东西,南北均从5开始倒计时显示P1=0xdf; //东西红灯,南北黄灯一亮一灭显示/*p1_4=0;*/delay(5000);p1_0=~p1_0; //南北黄灯所在位,对应取反,实现亮灭delay(5000);}if(ew_time==0) //假如东西时刻为0,赋值a为1,以实现方向转变a=1;}if(a) //a=1,南北显示19开始倒计时,东西14开始倒计时{ns_time=ew_time_red;ew_time=ns_time_green+ns_time_yellow;}while(a) //a=1,进入循环{if(ns_time-5>0) //南北红灯,东西绿灯{while(!flag);display(ns_time-5,ns_time); //flag=0,显示南北19,东西14delay(5000); //延时子函数调用P1=0xeb; //南北红扥个,东西绿灯显示}if(ns_time-5<=0) //南北时刻<=5时南北红灯,东西黄灯闪耀{while(!flag); //flag=0南北显示19开始倒计时,东西14开始倒计时flag=0;display(ns_time,ns_time); //东西,南北均从5开始倒计时显示P1=0xfb; //南北红灯,东西黄灯一亮一灭显示p1_3=~p1_3; //东西黄灯P1.3位取反,以实现黄灯亮灭变化显示delay(5000); //延时函数调用}if(ns_time==0) //假如南北时刻为0赋值a为0a=0;}}/**************t0中确信时子函数*****************/int t0int()interrupt 1 //t0中断〔定时器0中断〕子函数{TH0=0x3c; //定时50ms初值设定TL0=0xb0;point--; //20次T0定时次数操纵if(point==0) //假如20次到了,改变显示的东西南北方向的时刻{flag=1;point=20;if(ns_time!=0)ns_time--;if(ew_time!=0)ew_time--;}}/***************int0中断紧急情形处理子函数***************/void int0(void) interrupt 0 //int0中断子函数,当紧急情形〔抢救车等〕发生时,对应INT0按键调用此函数{ int i,j;display(00,00); //显示器显示0000,不再进行倒计时delay(5000);for(i=0;i<10;i++) //利用flag实现东西南北方向红灯均显示亮,对应东西南北方向车流均停止,处理紧急情形{for(j=0;j<10;j++){delay(50000);while(!flag){ P1=0xdb;}}}flag=0;}/***************int1中断流量处理子函数***************/void int1(void) interrupt 2 //int1中断子函数,当紧急情形〔抢救车等〕发生时,对应INT1按键调用此函数{ int i,j;display(00,00); //显示器显示0000,不再进行倒计时for(i=0;i<10;i++){for(j=0;j<10;j++) //利用flag实现主干道东西方向绿灯南北方向红灯{while(!flag){ P1=0xeb;}}}flag=0;}系统总硬件电路仿真图系统硬件电路总图包括复位电路,时钟电路,按键紧急处理电路,LED显示电路,数码管显示电路模块,对应各自电路功能如前面硬件电路设计部分进行说明。
基于80C51单片机的交通灯C语言源程序

#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit SH_CP=P2^0;sbit DS=P2^1;sbit ST_CP=P2^2;uchar temp;uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void NB_tong();void DX_tong();void NBY_show();void DXY_show();sbit RED_A=P1^0;//A代表NB南北sbit YELLOW_A=P1^1;sbit GREEN_A=P1^2;sbit RED_B=P1^3;//B代表DX东西sbit YELLOW_B=P1^4;sbit GREEN_B=P1^5;sbit K1=P3^0;sbit K2=P3^1;sbit K3=P3^3;sbit SPK=P3^7;//蜂鸣器uchar time=0,Count=0;//--------------------------------//延时//--------------------------------void DelayMS(uint x){uchar t;while(x--) for(t=0;t<120;t++);}//---------------------------------------//74HC595的驱动//---------------------------------------void In_595(){uchar i;for(i=0;i<8;i++){temp<<=1;DS=CY;SH_CP=1;_nop_();_nop_();SH_CP=0;}void Out_595(){ST_CP=0;_nop_();ST_CP=1;_nop_();ST_CP=0;}//---------------------------------------//T0定时器定时及各种情况下灯亮的调用//---------------------------------------void Timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;Count++;time=time%60;if(Count==20){time++;Count=0;}if(time<=30) NB_tong();if((time>30)&&(time<=35)) NBY_show();if((time>35)&&(time<=55)) DX_tong();if((time>55)&&(time<=60)) DXY_show();}//------------------------------------//按键处理//------------------------------------void EX_INT0() interrupt 0{if(K1==0) //K1按下强制NB南北通行,倒计时黑屏暂停;断开继续以前动作。
(完整版)基于单片机的交通灯控制电路设计毕业设计

毕业论文(设计)论文题目:基于单片机的交通灯控制电路设计学生:董仁龙学号:所在院系:电气信息工程学院专业名称:自动化届次:2011 届指导教师:井田目录摘要: (1)1.设计任务要求及目的 (2)1.1设计任务 (2)1.2基本要求 (2)1.3设计目的 (2)2.设计思路 (3)2.1设计原理: (3)2.2设计方案及其总体设计框图 (3)3.交通灯控制系统的硬件设计 (4)3.1系统硬件电路构成及外部硬件件的选取 (4)3.2系统工作原理 (5)3.3单片机小系统的基本组成及硬件图 (8)3.4外围电路工作原理及系统硬件图 (8)4.系统软件程序的设计 (14)5.课程设计心得体会 (15)6.参考文献 (13)7.附录: (14)8.致谢 (19)基于单片机的交通灯控制电路设计学生:董仁龙(指导老师:井田)(淮南师范学院电气信息工程学院)摘要:实现这井然秩序靠的是交通信号灯的自动指挥系统的交通信号灯控制方式很多。
本系统采用MSC-51系列单片机ATSC51和可编程并行IO接口芯片80C51为中心器件来设计交通灯控制器,完成对A 、B道上均有车辆要求通过时各自顺时放行;在一道有车而另一道无车和有紧急车辆要求通过时,系统做出正确应急控制。
本系统实用性强、操作简单、扩展功能强。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,本系统还应根据具体硬件结构软硬件结合加以完善。
关键词: MSC-51系列单片机ATSC51;交通灯控制器;IO接口芯片1.设计任务要求及目的1.1设计任务(1)单片机最小系统的焊制并以其为核心,设计并制作一个交通灯控制系统。
(2)按设计要求学习并使用Proteus软件绘制电路图。
(3)编写相应程序,按要求实现相应的控制。
(4)已编写的程序用Proteus仿真,对程序进行反复测试。
(5)按要求撰写毕业设计报告。
1.2基本要求(1)A 通道和B通道上均有车辆要求通过时,A、B通道轮流放行。
基于单片机控制的交通灯设计(含完整C程序 原理图)

电子与信息工程学院课程设计报告(2010—2011学年第2 学期)课程名称:单片机课程设计班级:学号:姓名:指导教师:2011年03月3.过程(如实际程序开发、电子制作,详细说明有关原理、开发过程、调试过程、结果)一.交通灯芯片介绍SST89E58RD:是8位FLASH FLEX51系列单片机。
FLASH FLEX51是在高级FLASH CMOS半导体工艺下设计和生产出来的单片机产品之一。
单片机有40K片内FLASH EEPROM程序存储器,它利用SST的超级FLASH专利技术,这些都是SST的领先技术。
超级FLASH存储器被分为两个独立的程序存储器块,基本FLASH Block0占用32K字节片内程序存储空间,二级FLASH Block1占用8K字节的片内程序存储器空间;8K字节的二级FLASH块能被映射到32K字节低地址空间它也能从程序计数器中被隐藏掉而用做一个独立的类似EEPROM的数据存储器。
其具有以下特点:兼容80C51系列,内置超级FLASH存储器的单片机;工作电压Vdd=4.5~5.5;1K*8的内部RAM(256Bytes+768Bytes,可以放心使用C语言编程)等。
8155:Intel8155是可编程RAM/IO芯片,为40脚双列直插式封装。
有256*8位静态RAM,2个8位和1个6位可编程并行I/O接口,以及1个14位可编程定时器/计数器。
可直与MCS-51单片机相接,是MCS-51单片机应用系统中应用最多的芯片之一其内部结构图和引脚图如图1所示图1在交通灯系统中,四位数码管是用来显示交通灯倒计时时间的,一路显示放行线时间,一路显示禁止线时间四位数码管的电路如图2:图2四位八段数码管,属共阴逆序,高电平有效,所以不带小数点的0-f的段码如下:{0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH};PROTEUS 仿真图如图3:图3四位数码管的显示使用了并行扩展芯片8155,8155与单片机SST89E58RD的接口如图4图48155的高8位数据地址线与单片机的P0口相连,CE与AD15相连,IO/M与AD8相连数码管的八位段选与PB口相连,四位位选与PA口相连。
单片机控制的交通灯C语言编程

单片机控制的交通灯红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换。
四个方向各有一个红、黄、绿显示和两个数码管。
东西道为人行道(20秒),南北道为车行道(60秒),黄灯延时最后三秒时,闪烁并切换。
三、硬件电路设计此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。
硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。
因此,可加输出锁存器。
在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。
四、软件程序(C语言)以下是整个设计的软件程序,直接可以编译成*。
Hex代码。
通过以上电路,下载到单片机,可直接运行。
//*****************************////程序名:十字路口交通灯控制//编写人:黄庭剑//初写时间:2009年1月2日//程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2秒钟再实现切换.//CPU说明:AT89C51型单片机; 24MHZ晶体振荡器//完成时间:2009年1月6日//*****************************//#include<stdio.h>#include<reg51.h>#include<intrins.h>sfr p0 = 0x80;sfr p1 = 0x90;sfr p2 = 0xA0;sfr p3 = 0xb0; //这部分内容其实在“#include<reg51.h>”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机C语言交通灯数码管显示的设计完整版
基于单片机C语言交通灯数码管显示的设计完整版/* P2口位控口,P0口段控口, P1口按键,P3口发光二极管*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/*共阳数码管字型码数组*/
/*0,1,2,3,4,5,6,7,8,9,P.,灭*/
char code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8 ,0x80,0x90,0xbf,0x21,0xff};
/*共阳数码管位控码数组(从右往左点亮,反向驱动)*/
char code weikong_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf, 0x7f};
char find_code[8];
sbit S2=P1^0; //S1键启动交通灯控制器
sbit S3=P1^1; //S2键回归“P.”状态
sbit S4=P1^2; //S3键处理紧急状况
uchar time;
void DelayX1ms(uint count) //1ms延时函数{
uint j;
while(count--!=0)
{
for(j=0;j<80;j++);
}
}
/*********************显示函数*****************************/
void disp()
{
char i;
char k;
for(i=0;i<8;i++)
{
P2=weikong_code[i];
k=find_code[i];
P0=dis_code[k];
DelayX1ms(1);
}
/********************1s延时********************************/
void delay1s()
{
TMOD=0X01;
EA=1;
ET0=1;
TH0=0x3C; //定时器定时50Ms
TL0=0XB0;
TR0=1;
PT0=1;
do{disp();} while(time!=20&&S3&&S4); //有条件转移
TR0=0;
time=0;
}
void time_() interrupt 1 //中断程序
{
time++;
T H0=0x3C;
T L0=0XB0;
/********************500ms函数********************************/
void delay500ms()
{ TMOD=0X01;
EA=1;
ET0=1;
TH0=0x3C;
TL0=0XB0;
TR0=1;
PT0=1;
do{disp();} while(time!=10); //有条件转移
TR0=0;
time=0;
}
/**************************紧急函数**************************/
void jinji()
{
uchar f;
for(f=10;f>0;f--)
{
P3=0x6F;
find_code[1]=f/10;
find_code[0]=f%10;
delay500ms();
delay500ms();
disp();
}
}
/**********************主函数******************************/
void main()
{
while(1)
{ char m,a; //上电显示“班级、学号”状态
find_code[0]=9;
find_code[1]=0;
find_code[2]=10;
find_code[3]=4;
find_code[4]=0;
find_code[5]=0;
find_code[7]=11;
disp();
while(!S2)
{
while(S3)
{
P3=0XAF;
for(m=60;m>0&&(S3);m--) {
if(!S4)
jinji();
find_code[1]=m/10;
find_code[0]=m%10;
delay1s();
disp();
}
for(a=3;a>0&&S3;a--)
{ if(!S4)
jinji();
find_code[1]=a/10;
find_code[0]=a%10;
delay500ms();
P3=0xcF;
delay500ms();
disp();
}
P3=0X77;
for(m=30;m>0&&(S3);m--)
{
if(!S4)
jinji();
find_code[1]=m/10;
find_code[0]=m%10;
disp();
delay1s();
}
for(a=3;a>0&&S3;a--)
{ if(!S4)
jinji();
find_code[1]=a/10;
find_code[0]=a%10;
P3=0X7F;
delay500ms();
P3=0X7B;
delay500ms();
disp();
}
}
P3=0xFF;
}
}
}。