您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 创新设计(路灯控制系统)
1创新设计(学校路灯控制系统)专业班级:08电子(1)班姓名:吴剑学号:200810330126设计简介:本设计是一个通过51单片机来控制路灯亮/灭。例如:晚上19:30路灯亮,到早上6:00熄灭,当时钟走到19:30时路灯点亮,同理在6:00时熄灭,实现自动控制。为了防止偶尔断电或停机后再开机致使设定值丢失,这里使用了AT24C02来记忆设定的定时值。P1口作为控制输出口控制继电器从而达到控制路灯的作用。亮、灭时间可随时调整,提高了控制的灵活性和准确性。为了进行校时及定时值设定,规定了六种工作状态。状态0(status=0):正常走时;状态1(status=1):输入定时1的“分”状态;状态2(status=2):输入定时1的“时”状态;状态3(status=3):输入定时2的“分”状态;状态4(status=4):输入定时2的“时”状态;状态5(status=5):校正走时态。状态0:从左往右六只数码管依次显示走时的时、分、秒。状态1:从左往右的显示依次为:状态1显示(1位);无显示;定时1的“分”显示。后两位无显示。按下S6/S5进行加减。状态2:从左往右的显示依次为:状态2显示(1位);无显示;定时1的“时”显示。后两位无显示。按下S6/S5进行加减状态3:从左往右的显示依次为:状态3显示(1位);无显示;定时2的“分”显示。后两位无显示。按下S6/S5进行加减。状态4:从左往右的显示依次为:状态4显示(1位);无显示;定时2的“时”显示。后两位无显示。按下S6/S5进行加减。状态5:从左往右的显示依次为:状态5显示(1位);无显示;时钟的“分”显示。后两位无显示。按下S6/S5进行加减。对AT24C02内部储存单元规划:80、81单元存放定时1的分、时值;90、91单元存放定时2的分、时值;100号单元存放首次写入的标志,若写入过,则100号单元置数100.框图如下:AT89S51控制中心及其外围电路路灯系统AT24C022电路图如下:P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16XTAL217XTAL118P3.7/RD19VSS20VCC21P0.022P0.123P0.224P0.325P0.426P0.527P0.628P0.729EA/VPP30ALE/PROG31PSEN32P2.733P2.634P2.535P2.436P2.337P2.238P2.139P2.040R1R2]R3R4R5R6R7R812Y1XTALGND20pFC120pFC2LEDaLEDbLEDcLEDdLEDeLEDfLEDgLEDdpS1S2S3S4S5S6GND10pFCrestVCC10KLED1LED2LED3LED4LED5LED6A0A1A2SCLWCGNDVCCSDAU2AT24C02GNDVCC10K10KSDASCLSCLSDAabcdefgVCCled1led2led3led4led5led6LEDaLEDbLEDcLEDdLEDeLEDfLEDgOUTPUT3源程序如下:#includeREG51.H#defineucharunsignedchar#defineuintunsignedintucharcodeSEG7[10]={0xa0,0xbe,0x62,0x2a,0x3c,0x29,0x21,0xba,0x20,0x28};/*共阳*/ucharcodeACT[4]={0xbf,0xdf,0xef,0x7f,0xfd,0xfe};sbitoutput=P1^0;#defineINC_KEY0xfb//S6按下#defineDEC_KEY0xf7//S5按下#defineOK_KEY0xef//S4按下#defineSTATUS_KEY0xdf//S3按下ucharstatus;uchardeda,sec,min,hour;ucharset1_dat[2],set2_dat[2];bitset1_flag,set2_flag;sbitSDA=P2^0;sbitSCL=P2^1;staticuchartime_cnt;staticbitbit_flag;voiddelay_icc(intn){inti;for(i=1;in;i++);}voiddelay(){;;}voiddelay1ms(uintz){uinti,j;for(i=0;iz;i++)for(j=0;j110;j++);}voidstart()//开始函数{SDA=1;delay();SCL=1;delay();SDA=0;delay();}voidstop()//停止函数4{SDA=0;delay();SCL=1;delay();SDA=1;delay();}voidrespons()//应答函数{uchari;SCL=1;delay();while((SDA==1)&&(i250))i++;SCL=0;delay();}voidwrite_byte(uchardate)//写一字节{uchari,temp;temp=date;for(i=0;i8;i++){temp=temp1;SCL=0;delay();SDA=CY;delay();SCL=1;delay();}SCL=0;delay();SDA=1;delay();}ucharread_byte(){uchari,k;SCL=0;delay();SDA=1;delay();for(i=0;i8;i++){SCL=1;delay();k=(k1)|SDA;SCL=0;delay();5}returnk;}voidwrite_add(ucharaddress,uchardate){start();write_byte(0xa0);respons();write_byte(address);respons();write_byte(date);respons();stop();}ucharread_add(ucharaddress){uchardate;start();write_byte(0xa0);//芯片寻址(10100000)写respons();write_byte(address);respons();start();write_byte(0xa1);//芯片寻址(1010001)读respons();date=read_byte();stop();returndate;}voidinitial(){ucharrd_value;rd_value=read_add(100);delay_icc(250);if(rd_value==88){set1_dat[0]=read_add(80);delay_icc(250);set1_dat[1]=read_add(81);delay_icc(250);set2_dat[0]=read_add(90);delay_icc(250);set2_dat[1]=read_add(91);delay_icc(250);}TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;TR0=1;ET0=1;6ET1=1;TR1=1;EA=1;}/********************************************************/voidtime0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;deda++;if(deda=20){deda=0;sec++;}if(sec9){sec=0;min++;}if(min9){min=0;hour++;}if(hour23){hour=0;}}/*********************************************************/voidtime1()interrupt3{TH1=(65536-1000)/256;TL1=(65536-1000)%256;time_cnt++;bit_flag=~bit_flag;if(status==0){if(time_cnt3)time_cnt=0;}else{if(time_cnt9)time_cnt=0;}}ucharkey(){uchartemp;P3=0xff;temp=P3;if(temp!=0xff){delay_icc(30);P3=0xff;temp=P3;}return(temp);}voidpout()//输出判断子函数{if((min==set1_dat[0])&&(hour==set1_dat[1]))P1=0x00;if((min==set2_dat[0])&&(hour==set2_dat[1]))P1=0xff;7}/*********************/voidmain(){ucharkey_value;initial();for(;;){key_value=key();pout();if(key_value==STATUS_KEY)//如果S4键按下{status++;if(status==6){status=0;EA=0;pout();write_add(100,88);delay_icc(250);write_add(80,set1_dat[0]);delay_icc(250);write_add(81,set1_dat[1]);delay_icc(250);write_add(90,set2_dat[0]);delay_icc(250);write_add(91,set2_dat[1]);delay_icc(250);write_add(70,(uchar)set1_flag);delay_icc(250);write_add(71,(uchar)set2_flag);delay_icc(250);EA=1;}delay1ms(300);}if(key_value==INC_KEY)//如果S1键按下{pout();switch(status){case1:if(set1_dat[0]60)set1_dat[0]++;delay1ms(300);break;case2:if(set1_dat[1]23)set1_dat[1]++;delay1ms(300);break;case3:if(set2_dat[0]60)set2_dat[0]++;delay1ms(300);break;case4:if(set2_dat[1]23)set2_dat[1]++;delay1ms(300);break;case5:if(min60)min++;delay1ms(300);breakdefault:break;}}if(key_value==DEC_KEY){pout();switch(status)8{pout();case1:if(set1_dat[0]0)set1_dat[0]--;delay1ms(300);break;case2:if(set1_dat[1]0)set1_dat[1]--;delay1ms(300);break;case3:if(set2_dat[0]0)set2_dat[0]--;delay1ms(300);break;case4:if(set2_dat[1]0)set2_dat[1]--;delay1ms(300);break;case5:if(min0)min--;delay1ms(300);break;default:break;}}if(key_value==OK_KEY){if((stat
本文标题:创新设计(路灯控制系统)
链接地址:https://www.777doc.com/doc-465809 .html