路灯设计报告(C语言) .doc_第1页
路灯设计报告(C语言) .doc_第2页
路灯设计报告(C语言) .doc_第3页
路灯设计报告(C语言) .doc_第4页
路灯设计报告(C语言) .doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1. 方案比较与论证1.1基本系统方案根据题目要求,系统可以划分为支路控制部分和单元控制部分。其中支路控制部分包括:检测光源自动调节、变换点判断模块、故障报警显示、时钟显示。单元控制部分包括:路灯状态模型和单元控制器模块。共个六个基本模块,模块框图如图1.1.1所示。为实现各模块的功能,分别作了几种不同的设计方案并进行了论证。图1.1.1 路灯的基本模块方框图1.2各模块方案选择和论证1.2.1控制支路模块根据题目要求,控制支路主要用于各个模块的信号接收和辨认处理、控制路灯的开关、故障声光报警以及显示地址等。对于控制支路的选择有以下两种方案。方案一:采用fpga(现场可编程门列阵)作为系统的控制支路核心。fpga可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减小了体积,提高了稳定性,并且可应用eda软件仿真,调试,易于进行功能扩展。fpga采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。由模块输出的信号并行输入fpga,fpga通过程序设计控制路灯状态,但由于本设计对数据处理的速度要求不高,fpga的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。方案二:采用宏晶科技公司(stc)的stc89c52rc作为系统控制器的方案。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。基于以上分析拟定方案二,模拟路灯单片机控制的方框图如图1.1.1所示。在本设计中,我们采用了单片机分别对7个单元模块进行监测和控制,提高了系统的工作效率,同时cpu分阶段地对路灯状态控制,减少了外围设备。由stc89c52rc控制路灯的自动开关、检测光源明暗和路况检测模块等功能,同时监测路灯的故障,实现故障声光报警并显示等功能。1.2.2检测光源模块检测光源模块是用来判断光线明暗变化。为了确保路灯在工作过程中光线明暗变化,自动开灯和关灯,系统需要利用感光元件来检测出光线明暗,充分节能。对于感光元件的选择有以下几种方案。方案一:采用线性光敏传感器。其对光线的强弱呈线性变化、灵敏度高、高可靠性、高稳定性,其价格相对较贵。方案二:采用光敏电阻。灵敏度较低,价格低。在本设计中,选用方案二,通过相应电路设计计算,能够完成环境明暗变化判断要求。1.2.3变换点判断模块方案一:利用光电传感器,路边装上光电传感器,有物体经过时,光线反射接收,此方案普通传感器感应距离有限。若采用工业光电传感器,成本又太高。方案二:利用红外线对射管,在边装上红外线传感器,有物体从中间经过时,就有信号产生,见图1.1.2所示。其感应强度高、信号强,感应范围大,容易处理,成本低。图1.1.2红外对射管1.2.4故障报警显示模块故障报警显示模块实现路灯的故障检测,路灯工作中有故障可以马上解决。当某灯有故障时,蜂鸣器鸣响,发光二极管闪烁,信号输入单片机处理并显示出故障地址。见图1.1.3。图1.1.3声光报警电路图中使用rco引脚控制输出声光报警信号。ls1是蜂鸣器、d1是发光管、q1是pnp的三极管、u5是电压比较器。当2脚输出低电平时,7脚输出低电平,q1导通,发出声光报警信号;当2输出高电平时,u5输出高电平,但是比较器输出高电平时驱动能力不够(需要接上拉电阻r4 ),q1截止,不发出声光报警信号。1.2.5显示模块在路灯工作过程中,系统需要对开关灯的时间和故障地址作必要的显示。我们考虑有以下两种显示方案。方案一:使用传统的数码管显示。数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称量快,精确可靠,操作简单。数码管是采用bcd编码显示数字,程序编译容易,资源占用较少。方案二:使用液晶显示屏开显示关灯的时间和故障地址。液晶显示屏(lcd)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。根据以上的叙述,考虑到路灯较多时起地址编号较大,故采用方案二的液晶显示。1.2.6路灯状态模型本题要求在路灯工作时物体m到s点时灯1点亮,m到b点时灯1灭,灯2亮,见图1.1.4。本设计采用木板做模拟路面,塑料水管做灯杆。图1.1.4路灯模型1.2.7单元电路控制器本题要求中,自制恒流源驱动,20%100%范围内设定并调节。方案如下:方案一:程控恒流源电路是由单片机片内定时器输出的脉宽调制信号来控制,并用该电压控制恒流源产生可控电流.通过单片机的键盘接口对输出电流进行设定,实现输出电流的连续调节及电流的动态测量.普通单片机控制困难、外围电路复杂、成本高。方案二:利用两个三极管相对稳定的be电压作为基准,电流数值为:i = vbe/r,电流的数值可以自由控制。为了能够精确输出电流,通常使用一个运放作为反馈电流计算公式为:i = vin/r。vin的数值可由单片机da自由控制,没有使用特殊的元件,有利于降低产品的成本。1.3 系统各模块的最终方案经过仔细分析和论证,决定了系统各模块的最终方案如下:1、支路控制部分的单元电路设计(1) 检测光源:采用光敏电阻(2) 变换点判断模块:采用红外线对射传感器(3) 显示模块:采用液晶显示2、单元控制部分的单元电路设计(1)控制电路设计:采用stc89c52rc单片机控制(2)路灯状态模型:自己用木板塑料管做模型(3)a/d转换模块:采用dac0832芯片(3)单元电路控制器:采用三极管取样可调节恒流源2. 系统的硬件设计与实现2.1 系统硬件的基本组成部分本题是一个自动控制、情景模拟、电源制作为一体的综合设计,在设计中运用了检测技术、自动控制技术和电子技术。系统可分为传感器检测部分和自动控制部分。 传感器检测部分:系统利用光敏电阻和红外对射传感器将检测到的一系列的外部信息转化为可被控制器件辨认的电信号。自动控制部分:系统中控制器件根据由传感器变换输出的电信号进行逻辑判断,控制路灯状态、液晶显示、蜂鸣器以及发光二极管,完成了路灯情景模拟,充分节能。控制部分包括三个主要单元电路:单片机控制电路、单元控制电路、液晶显示电路。2.2 主要单元电路的设计2.2.1传感器检测部分的单元电路设计(1)检测光源电路的设计题目要求路灯能根据光线度制动开关,必须要对光线度采集处理,控制器才对路灯实施开关。光线度采集电路图2.2.1,rg为光敏电阻,比较器取样输入单片机。图2.2.1光线度采集电路(2)红外线检测电路的设计在物体到灯的照明范围,此路灯亮灯。为了检测物体并确定物体到灯的距离,路灯与路灯之间安装上红外线对射传感器,如图2.2.2所示,该传感器发射管不断发出红外线,没有物体时。接收管能接到红外线,有物体穿过时,接收管接收不到信号,单片机处理,灯亮。图2.2.2 红外线检测电路(3)液晶显示路的设计在本系统中采用液晶1602用来显示时间、故障地址等信息。图2.2.3显示电路图2.2.3中采用液晶显示,由于stc89c52rc单片机每个i/o口的上拉电流只有12 ma,但在灌电流驱动状态下能达到20ma左右,因而p0口要全接上拉电阻,上拉电阻一般取1k。(4)传感器采样比较器电路设计由于传感器感知电压变化小,通过比较器可应得到稳定的较大电压。比较电路见图2.2.4图2.2.4比较电路图基准信号通过r3和r19作用在运放lm311的反相端,输入信号输入正向端,r3和r19经验取值。lm311是单片集成专用电压比较器2.2.2 自动控制部分的单元电路设计(1) 控制支路电路的设计单片机接收从传感器检测电路输入的信号,并将输入的信号进行处理运算,以控制电流或控制电压的形式输出给被控制的单元电路,完成各项任务要求。单片机stc89c52rc外接显示电路,检测光源测量电路、红外线检测电路、单元电路控制器和声光报警电路,其中测量电路和单元电路控制器是信号输入,显示电路和声光报警电路是输出。为了方便单片机引脚的使用,我们将单片机的所有引脚用接口引出。具体电路可看附录电路图所示。通过对光源检测、物体检测产生的传感信号进行检测,单片机stc89c52rc完成对控制路灯功能。(2) 单元电路控制器单元电路控制器采用独创恒流源驱动如图2.2.5所示,用两只同型三极管,利用三极管相对稳定的be电压作为基准,电流数值为: i = vbe/r1。使用一个运放作为反馈。电流计算公式为: i = vin/r13这个电路可以认为是我们所独创的恒流源,除了足够的精度和可调性之外,使用的元件也都是很普遍的,易于搭建和调试。只不过其中的vin还需要用户额外提供。电路的三极管q2对进行取样,rv2电流进行调节,优点在于可以满足不同的恒流要求,不足在于取样不在主回路当主回路负载变化时,取样有一定误差,为了解决温度对负载的影响,我们给电路加上q3三极管或者热敏电阻,对温度进行补偿。图2.2.5恒流源驱动电路(3) 电源模块整流电路采用全波整流,由于考虑到电桥的耐压问题,所以采用四个整流二极管(1n4007)组成整流桥工作。整流变压器的次级绕组为带有中心抽头的双绕组。单片机用稳压电源的输出电压为5v,使得单片机能更好的工作,因此希望稳压电源的输出纹波电压、尖峰电压越低越好。电源电压波动20%,整流输出电压最低值应该是电网电压最低(176v)时对应的电压值,而在电网电压最高时需要在这个数值的基础上乘以(1+20%)2即1.44倍。一般情况下,与电容输入式滤波对应的整流器输出有效值电流是输出电流平均值的1.5倍左右。在全波整流电路中,变压器次级电流为整流器输出电流有效值的0.707倍,约等于整流输出电流平均值。电路中采用2200uf/25v的电容将整流后的电压进行滤波,可以得到不稳定的直流电。考虑到纹波电压的影响,为了降低纹波电压的影响,选择220uf/25v的电容。在稳压直流电源的输出端接旁路电容是为了滤除高频负载电流,然而对于50hz的低频负载电流,三端稳压器自身可以有能力抑制,所以无须电解电容器作帮助,致使电路更简洁。电路图见图2.2.6。图2.2.6电源电路3. 系统的软件设计系统的软件设计采用c语言,对单片机进行编程实现各项功能。程序是在windows98环境下采用keiluvision2软件编写的,可以实现检测光源自动调节、变换点判断模块、故障报警显示、时钟显示等功能。主程序主要起到一个导向和决策功能,决定什么时候路灯状态。系统主程序流程图如图3.1.1所示。其他子程序也在里面,程序清单见附录6。图3.1.1 系统主程序流程图4. 系统测试为了确定系统与题目要求的符合程度,我们对系统中的关键部分进行了实际的测试。测试使用的仪器设备见附录。4.1软件调试 仿真软件中进行软件调试,首先观察液晶是否显示;再是按其中的一个按键,观察led二极管是否正确点亮,并对其计数的值经程序中公式处理后在液晶上显示是否正确;再是对单片机计数的值送到da转换器,经da转换后从ua741输出的电压是否正确。 通过在仿真软件中调试得到正确程序后,再将程序导入已经完成的硬件控制电路模块,通过检查液晶显示、按键、da转换,观察是否达到要求,通过此方面不仅检查硬件控制模块是否工作,并调试出程序是否实现所需的功能。最后同意联调。4.2 指标测试4.2.1 检测电路板焊接方面测试前目测电路:电路板上的焊接残渣和不洁物;对照相应的标准板检查,是否错焊、漏焊的元件;有方向的元器件方向是否正确;焊点质量检查;焊盘间无短路现象;焊点焊料应均匀、光亮是否平滑;焊点没有裂纹;焊点不应凹凸不平;焊点无虚焊、拉尖、棱角、空洞、浮焊、堆焊等现象;焊点周围有无残留的焊剂;焊盘有无脱落。根据原理图检测电路板上元器件是否焊接错误。4.2.2红外线检测部分测试红外发射管经过测试可以感知物体,路灯做出现相应变化。4.2.3 感光电路测试表4.1.1光线度变化情况强较强灯不亮较弱灯闪烁弱灯亮4.2.4路灯功率测试路灯亮时测试功率表4.2.1 测试功率测试点测试量第一次第二次第三次第四次第五次电流i297ma293ma291ma-电压3.30v3.28v3.27v-功率0.98w0.96w0.95w-从表4.2.1可以看出,实际的功率和理论计算有出入,4.2.5声光报警测试当某灯有故障时,蜂鸣器鸣响,发光二极管闪烁,信号输入单片机处理并显示出故障地址。4.2.6系统实现的功能 按时间开关灯 光线明暗开关灯 变换点感应开关灯 每只灯独立开关 故障时声光报警 可以自动调节功率4.3 结论 经过对系统的光线度的检测、变换点检测变化、声光报警、电源电路等的测试,本设计基本达到设计制作要求。5 总结本系统以单片机stc89c52rc为核心部件,利用光线度检测技术、红外线发射接收技术并配合一套独特的软件算法实现了路灯定时开关、自动感应节能、时间显示、故障声光报警等功能,最终使模拟路灯完成竞赛题目中要求的各项任务,并联系实际路灯状况。在系统设计过程中,力求硬件线路简单,元件价格经济,充分发挥软件编程方便灵活的特点,来满足系统设计要求。因为时间有限,该系统还有许多值得改进的地方:在车辆人群较多的停放变化的情况下,不能满足所有车辆人群(有人在灯下,又有人走动)。因此,可以在传感器和程序上改进。在本次设计的过程中,遇到了许多突发事件和各种困难,设计制作曾一度中断,但通过仔细分析和自我状态调整后解决了问题。在这个过程中我们深刻得体会到共同协作和团队精神的重要性,提高了自己解决问题的能力。参考文献1. 郭天祥. 51单片机c语言教程.北京:电子工业出版社.2009.3第一版.2. 全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛培训系列教程. 北京: 电子工业出版社.2009.5第一版.3. 付植桐. 电子技术. 北京:高等教育出版社,2000.8第1版4. john f. wakerly. digital design principles and practices, 2001附 录:附录1:电路图 最小化系统电路图最小化系统pcb板附录2:主要元器件清单元件数量stc89c52rc单片机1片蜂鸣器1个红外线对射管1对1602lcd1片光敏电阻1个ua741cn4片发光二极管2个弹性按钮7个9针串口1个usb接口1个12mhz晶振1个排阻5101个排阻1031个da08322个排线1条木板1块塑料管1段杜邦线若干排针若干电阻若干电容若干导线若干附录3:测试仪器表4.1.1 测试使用的仪器设备序号名称、型号、规格数量备注1vc830l数字万用表1胜利公司2jw-2b型直流稳压电源1石家庄市无线电十厂3直尺最大测量距离100.0cm,最小量程0.1cm14卡尺1附录4:系统使用说明功能键1功能选择键功能键2光线明暗自动调节选择键功能键3变换点检测开关键功能键4独立控制按键功能键5功率功能选择键附录6:程序清单16#include #include #include #define uchar unsigned char#define uint unsigned intsbit sda=p24;/*时钟芯片数据传输*/sbit scl=p23;/*时钟芯片脉冲*/sbit led1=p26; /*定时开关指示灯*/sbit led3=p25; /*定时开关指示灯*/sbit lcdrs=p20;/*i2c数据/指令传输选择*/sbit lcdrw=p21;/*i2c读写选择*/sbit lcden=p22;/*液晶片选*/sbit hong1=p10;/*红外接收输入1*/sbit hong2=p11;/*红外接收输入2*/sbit hong3=p12;/*红外接收输入3*/sbit gu1=p13;/*第一个故障输入*/sbit gu2=p14;/*第二个故障输入*/sbit mingan=p15;/*明暗信号输入*/sbit led2=p16;/*声光报警中的灯的控制*/sbit sheng=p17;/*声光报警中的声的控制*/sbit suo1=p30;/*锁存器1的锁存控制*/sbit suo2=p31;/*锁存器2的锁存控制*/sbit suo3=p32; /*锁存器3的锁存控制*/sbit k0=p33;/*功能选择*/sbit k1=p34;/*选择液晶模块显示*/sbit k2=p35;/*选择调节位*/sbit k3=p36;/*加*/sbit k4=p37;/*减*/uchar s1=0,s2=0,s3=0;uchar a=0,e=0,f=0,h=0,l=0,control=1,p=0,q=0;/uchar j=0;uchar g8563_store4=0x00,0x00,0x00,0x01; /*时间交换区,全局变量声明*/uchar display1_2_table= ;/*功率相关*/uchar code table=time: ;/uchar table1=e13=time:00-00-00;/uchar display1_table116= ;uchar code display2_table=opentime: ;uchar display1_table=time:00-00-00 ;uchar display2_table18=00-00-00;/*显示开始*/uchar code display3_table=closetime: ;uchar display3_table18=00-00-00;/*显示关闭时间*/uchar g8563_store3=0x00,0x00,0x00; /*时间交换区,全局变量声明*/uchar tiaoshu0=0x00,0x00,0x00;/*整体开始时间*/uchar tiaoshu1=0x00,0x00,0x00;/*整体关闭时间*/uchar tiaoshu2=0x00,0x00,0x00;/*1开始时间*/uchar tiaoshu3=0x00,0x00,0x00;/*1关闭时间*/uchar tiaoshu4=0x00,0x00,0x00;/*2开始时间*/uchar tiaoshu5=0x00,0x00,0x00;/*3关闭时间*/uchar tiaoshu6=0x00,0x00,0x00,0x14;/*功率调节时间及参数*/*内部函数,延时1*/void delay() / p10=1;_nop_();p10=0; _nop_(); _nop_(); /*根据晶振频率制定延时时间*/delay1(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*液晶显示*/uchar busy()uchar state;lcdrs=0;lcdrw=1;lcden=1;delay1(1);state=p0;lcden=0;return state;void write_cmd(uchar cmd)while(busy()&0x80)=0x80);lcdrs=0;lcdrw=0;lcden=0;p0=cmd;delay1(1);lcden=1;delay1(1);lcden=0;void write_date(uchar dat)while(busy()&0x80)=0x80);lcdrs=1;lcdrw=0;lcden=0;p0=dat;delay1(1);lcden=1;delay1(1);lcden=0;void init1()suo1=1;write_cmd(0x38);write_cmd(0x0c);write_cmd(0x06);write_cmd(0x01);suo1=0;void display1_1()uchar i;suo1=1;write_cmd(0x80);for(i=0;i13;i+)write_date(display1_tablei);write_cmd(0x80+0x40);for(i=0;i16;i+)write_date( );suo1=0;void display_c(uchar control)suo1=1;write_cmd(0x80+15);write_date(a+control);suo1=0;void display1_3()uchar i;suo1=1;write_cmd(0x80);for(i=0;i13;i+)write_date(display1_tablei);write_cmd(0x80+0x40);for(i=0;i16;i+)write_date(display1_2_tablei);suo1=0;void display1_2()uchar i;suo1=1;write_cmd(0x80+0x40);for(i=0;i16;i+)write_date(display1_2_tablei);suo1=0;void display2()uchar i;suo1=1;write_cmd(0x80);for(i=0;i15;i+)write_date(display2_tablei);write_cmd(0x80+0x40+0x05);/*for(i=0;i4;i+)write_date( );*/for(i=0;i8;i+)write_date(display2_table1i);/*for(i=0;i4;i+)write_date( );*/suo1=0;void display_led(uchar ll)suo1=1;write_cmd(0x80+11);write_date(ll+0);suo1=0;void display3()uchar i;suo1=1;write_cmd(0x0c);write_cmd(0x80);for(i=0;i15;i+)write_date(display3_tablei);write_cmd(0x80+0x40+0x05);/*for(i=0;i4;i+)write_date( );*/for(i=0;i8;i+)write_date(display3_table1i); /*for(i=0;i4;i+)write_date( );*/suo1=0;/*内部函数,i2c开始*/void start() ea=0; sda=1; scl=1; delay(); sda=0; delay(); scl=0;/*内部函数,i2c结束*/void stop() sda=0; scl=0; delay(); scl=1; delay(); sda=1; delay(); ea=1;/*内部函数,输出ack ,每个字节传输完成,输出ack=0,结束读书据,ack=1;*/void writeack(uchar ack) sda=ack; delay(); scl=1; delay(); scl=0;/*内部函数,等待ack*/void waitack() uchar errtime=20; sda=1; delay(); /*读ack*/ scl=1; delay(); while(sda) errtime-; if(!errtime) stop(); scl=0; delay();/*内部函数.输出数据字节入口:b=数据*/void writebyte(uchar wdata) uchar i; for(i=0;i8;i+) if(wdata&0x80) sda=1; else sda=0; wdata=1; scl=1; delay(); scl=0; waitack(); /i2c器件或通讯出错,将会退出i2c通讯/*内部函数.输入数据出口:b*/uchar readbyte() uchar i,bytedata; sda=1; for(i=0;i8;i+) scl=1; bytedatapcf8563*/void writedata(uchar address,uchar mdata) start(); writebyte(0xa2); /*写命令*/ writebyte(address); /*写地址*/ writebyte(mdata); /*写数据*/ stop();/*/uchar readdata(uchar address) /*单字节*/ uchar rdata;/ start();/ writebyte(0xa2); /*写命令*/ writebyte(address); /*写地址*/ start();/ writebyte(0xa3); /*读命令*/ rdata=readbyte();/ writeack(1);/ stop();/ return(rdata);/void readdata1(uchar address,uchar count,uchar buff) /*多字节*/ uchar i; start(); writebyte(0xa2); /*写命令*/ writebyte(address); /*写地址*/ start(); writebyte(0xa3); /*读命令*/ for(i=0;icount;i+) buffi=readbyte(); if(icount-1) writeack(0); writeack(1); stop();/*内部函数,读入时间到内部缓冲区*/void p8563_read() uchar time7; readdata1(0x02,0x07,time); g8563_store0=time0&0x7f; /*秒*/ g8563_store1=time1&0x7f; /*分*/ g8563_store2=time2&0x3f; /*小时*/ g8563_store3=time4&0x07; /*星期*/*读入时间到内部缓冲区-外部调用 */*void p8563_gettime() p8563_read(); if(g8563_store0=0) p8563_read(); /*如果为秒=0,为防止时间变化,再读一次*/*写时间修改值*/void p8563_settime() uchar i; for(i=2;i=4;i+) writedata(i,g8563_storei-2); /writedata(6,g8563_store3);void t0() interrupt 1th0=(65536-50000)/256;tl0=(65536-50000)%256;a+; if(a=20)a=0;p8563_read();display1_table11=g8563_store0/16+0x30;display1_table12=g8563_store0%16+0x30;display1_table10=-;display1_table8=g8563_store1/16+0x30;display1_table9=g8563_store1%16+0x30;display1_table7=-;display1_table5=g8563_store2/16+0x30;display1_table6=g8563_store2%16+0x30;/*p8563的初始化-外部调用*/void p8563_init()/ uchar i;/ if(readdata(0xa)&0x3f)!=0x8) /*检查是否第一次启动,是则初始化时间*/ / for(i=0;i=3;i+) g8563_storei=c8563_storei; /*初始化时间*/ p8563_settime(); / writedata(0x0,0x00); / writedata(0xa,0x8); /*8:00报警*/ / writedata(0x1,0x12); /*报警有效*/ / writedata(0xd,0xf0); / void cover0()uchar i; for(i=4;i16;i+) display1_2_tablei= ; void cover1(uchar tiaoshu)display1_2_table4=tiaoshu0/10+0;display1_2_table5=tiaoshu0%10+0;display1_2_table6=:;display1_2_table7=tiaoshu1/10+0;display1_2_table8=tiaoshu1%10+0;display1_2_table9=:;display1_2_table10=tiaoshu2/10+0;display1_2_table11=tiaoshu2%10+0;display1_2_table12= ;display1_2_table13=tiaoshu3/10+0;display1_2_table14=tiaoshu3%10+0;display1_2_table15=%; void cover2(uchar tiaoshu)display2_table10=tiaoshu0/10+0;display2_table11=tiaoshu0%10+0;display2_table13=tiaoshu1/10+0;display2_table14=tiaoshu1%10+0;display2_table16=tiaoshu2/10+0;display2_table17=tiaoshu2%10+0; void cover3(uchar tiaoshu)display3_table10=tiaoshu0/10+0;display3_table11=tiaoshu0%10+0;display3_table13=tiaoshu1/10+0;display3_table14=tiaoshu1%10+0;display3_table16=tiaoshu2/10+0;display3_table17=tiaoshu2%10+0; uchar timeopen(uchar tiaoshu)uchar i,j; cover2(tiaoshu);for(i=0,j=5;i=display2_table1i)return 0; return 1;uchar timeclose(uchar tiaoshu)uchar i,j; cover3(tiaoshu);for(i=0,j=5;i=display3_table1i)return 0; return 1;void kongzhi_1() /时间控制if(timeopen(tiaoshu0)led1=0;p0=255;suo2=1;suo3=1;delay();suo2=0;suo3=0;if(timeclose(tiaoshu1)led1=1;p0=0;suo2=1;suo3=1;delay();suo2=0;suo3=0;void kongzhi_2() /明暗控制if(mingan=0)/暗 灯亮 p0=255;suo2=1;suo3=1;delay();suo2=0;suo3=0;else /灯灭p0=0;suo2=1;suo3=1;delay();suo2=0;suo3=0;void kongzhi_3() /有物体控制if(hong1=1) s1=1;if(hong2=1) s2=1;if(hong3=1) s3=1; if(s1=1&s2=0&s3=0)p0=255;s

温馨提示

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

评论

0/150

提交评论