版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
附录附录A元件清单表2元件清单元件名称元件参数数量电解质电容25v470μF2电容0.1μF1电容33PF4开关六角开关2变压器12V输出20w/DB-20W1稳压芯片LM7805TO-2201整流桥2W102A/1000V1LED发光二极管BT1015排阻10K4晶振12MHz1晶振32.768KHz1按键6*6*5mm立式4脚轻触开关9单片机AT89S521液晶LCD16021时钟芯片DS13021电阻200Ω1电阻1K3电阻470Ω7可充电纽扣电池3.6V60mANI-MH1电阻20K3电阻510Ω3电阻200K3 电压比较器LM3246三极管S90122光敏电阻GL35473电阻4.7K74光电传感器ST1783有源蜂鸣器HYT-12051附录B程序清单/****************************************************************课题名称:模拟路灯控制系统作者:周海湖指导老师:王诚梅完成时间:2016年5月功能:系统上电或按键复位后能自动提示界面,进入准备工作状态。系统根据环境明暗自动亮灭路灯,当路灯出现故障,能发出声光报警,能根据交通环境自动亮灭路灯,能设定路灯亮灭的时间,可以独立控制每个路灯。硬件说明:单片机AT89S52,晶振12MHZ,输入设备-接在P1口的8位独立式键盘,输出设备-LCD12864液晶屏,P2口接LCD12864D0至D7,RS、RW、EN分别接到单片机的P3.0、P3.1、P3.2。时钟模块-DS1302模块的CLK、IO、RST分别接到单片机的P3.4、P3.3、P3.5。****************************************************************/#include<reg52.h>#include"intrins.h"#defineLCD_DataP2sbitP00=P0^0;sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;sbitP05=P0^5;sbitP07=P0^7;sbitP36=P3^6;sbitP37=P3^7;sbitDS1302_CLK=P3^4;sbitDS1302_IO=P3^3;sbitDS1302_RST=P3^5;sbitLCD_RS=P3^0;sbitLCD_RW=P3^1;sbitLCD_E=P3^2;ucharsec,min,hour,day,month,year;uchartemp0 ;ucharcount,count1,Hour1,Minite1,v,SB,SC,m,n;charLed1onH,Led1onM,Led2onH,Led2onM,Led1offH,Led1offM,Led2offH,Led2offM;/**************延时*********************/voiddelay(unsignedinta)//延时1MS/次{unsignedchari;while(--a){for(i=0;i<125;i++);}}/*************************************/voiddelays(){;;}/***************1302时钟程序****************/voidWriteDs1302Byte(unsignedchartemp){unsignedchari;for(i=8;i>0;i--) {DS1302_CLK=0;DS1302_IO=temp&0x01;delays();DS1302_CLK=1;temp>>=1;delays();}}/***********************************/voidWriteDs1302(unsignedcharaddress,unsignedchardat){DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;delay(1);WriteDs1302Byte(address);WriteDs1302Byte(dat);DS1302_CLK=1;DS1302_RST=0;}/***********************************/unsignedcharread_byte(){unsignedchari;for(i=8;i>0;i--){if(DS1302_IO)temp0=temp0|0x80;DS1302_CLK=1;delays();DS1302_CLK=0;temp0=temp0>>1;delays();}returntemp0;}/**************************************************/unsignedcharReadDs1302(unsignedcharaddress){unsignedchartemp;DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;WriteDs1302Byte(address);temp=read_byte();DS1302_RST=0;DS1302_CLK=1;returntemp;}/*********************1302初始化***********************/voidInitDS1302(){{WriteDs1302(0x8e,0x00);delay(5);WriteDs1302(0x8c,0x16);//写入年份16年delay(5);WriteDs1302(0x8a,0x04);//写入星期4delay(5);WriteDs1302(0x88,0x05);//定入月分5月delay(5);WriteDs1302(0x86,0x12);//写入日期12日delay(5);WriteDs1302(0x84,0x02);//写入小时2点delay(5);WriteDs1302(0x82,0x00);//写入秒00分delay(5);WriteDs1302(0x80,0x00);delay(5);WriteDs1302(0x8e,0x80);//控制命令,WP为1,禁止写操作}}/***************检查忙否*****************/voidCheckstates(){unsignedchardat;LCD_RS=0;LCD_RW=1;DO{LCD_E=1;//下降沿_nop_();//保持一定间隔 _nop_();dat=LCD_Data;_nop_(); _nop_();LCD_E=0;}while((dat&0x80)==1);}/**********LCD写数据*******************************/voidWriteDataLCD(unsignedchardat){Checkstates();LCD_RS=1;LCD_RW=0;LCD_Data=dat;LCD_E=1;delay(2);LCD_E=0;}/**********LCD写地址*******************************/voidWriteCommandLCD(unsignedcharudat){Checkstates();LCD_RS=0;LCD_RW=0;LCD_Data=udat;LCD_E=1;delay(2);LCD_E=0;}/*************LCD初始化******************************/voidLCDInit(void){WriteCommandLCD(0x38);delay(2);WriteCommandLCD(0x38);delay(2);WriteCommandLCD(0x01);delay(2); WriteCommandLCD(0x06);delay(2); WriteCommandLCD(0x0C);delay(2);}/*************LCD清屏指令**********************/voidLCDClear(void){WriteCommandLCD(0x01);delay(2);}/**********发送内容*********************************/voidLCDSendWord(unsignedchar*p){while(*p>0){WriteDataLCD(*p);p++;}}/*********发送地址*********************************/voidLCDTestWord(biti,unsignedcharword){if(i==0){WriteCommandLCD(word);}else{WriteDataLCD(word);}}/***************LCD显示年************/voidDisplayYear(void){year=ReadDs1302(0x8d);LCDTestWord(0,0x80);LCDSendWord("20");LCDTestWord(1,(year/16)+0x30);LCDTestWord(1,year%16+0x30);LCDTestWord(1,'/');}/***************LCD显示月*************************/voidDisplayMonth(void){month=ReadDs1302(0x89);LCDTestWord(1,(month/16)+0x30);LCDTestWord(1,month%16+0x30);LCDTestWord(1,'/');}/****************LCD显示日**************************/voidDisplayDay(void){day=ReadDs1302(0x87);LCDTestWord(1,(day/16)+0x30);LCDTestWord(1,day%16+0x30);}/**********LCD显示时*********************************/voidDisplayHour(void){hour=ReadDs1302(0x85);LCDTestWord(0,0xc0);LCDTestWord(1,(hour/16)+0x30);LCDTestWord(1,hour%16+0x30);LCDTestWord(1,':');}/**********LCD显示分**********************************/voidDisplayMin(void){min=ReadDs1302(0x83);LCDTestWord(1,(min/16)+0x30);LCDTestWord(1,min%16+0x30);LCDTestWord(1,':');}/**********LCD显示秒**********************************/voidDisplaySec(void){sec=ReadDs1302(0x81);LCDTestWord(1,(sec/16)+0x30);LCDTestWord(1,sec%16+0x30);}/************************************************************/voidUpDate1(void){DisplayHour();DisplayMin();DisplaySec();}/************************************************************/voidUpDate2(void){DisplayYear();DisplayMonth();DisplayDay();}/*************键扫描程序**************/ucharkeys(void){uchartmp; if((P1&0xff)!=0xff){delay(10);if((P1&0xff)!=0xff){ tmp=(P1&0xff); do{}while((P1&0xff)!=0xff); tmp=~tmp; return(tmp); }} return(0);}voidbaojing(void){if(P01==0){ LCDTestWord(0,0x80); LCDSendWord("LED1Broken"); P07=0; } else { LCDTestWord(0,0x80); LCDSendWord("LED1OK");}if(P02==0){ LCDTestWord(0,0xc0); LCDSendWord("LED2Broken"); P07=0; } else { LCDTestWord(0,0xc0); LCDSendWord("LED2OK"); } if(P01==1&&P02==1) P07=1;} voidhuanjing(void){ while(v!=4) { if(P00==1) { P36=1; P37=1; } if(P00==0) { P36=0; P37=0; } baojing(); v=keys(); }} voidjiaotong(void){while(v!=4){SC=0;SB=0; if(P03==0){P36=0;P37=1;while(1){if(P04==0){ P36=1; P37=0;while(1){ if(P05==0) { P36=1; P37=1;SC=1; SB=1;while(P05==0); }if(SC==1)break;}}if(SB==1)break;}}if(P05==0){P36=1;P37=0;while(1){if(P04==0){P36=0; P37=1;while(1){if(P03==0){ P36=1; P37=1;SC=1; SB=1; while(P03==0); }if(SC==1)break;} }if(SB==1)break;}}v=keys();} }voidDisplayrealtime(void){while(v!=4){ UpDate2();UpDate1(); v=keys(); }}voidDisplay1(void){LCDTestWord(0,0x80);LCDSendWord("LED1ON");LCDTestWord(1,(Led1onH/10)+0x30);LCDTestWord(1,(Led1onH%10)+0x30);LCDTestWord(1,':');LCDTestWord(1,(Led1onM/10)+0x30);LCDTestWord(1,(Led1onM%10)+0x30);LCDTestWord(0,0xc0);LCDSendWord("LED1OFF");LCDTestWord(1,(Led1offH/10)+0x30);LCDTestWord(1,(Led1offH%10)+0x30);LCDTestWord(1,':');LCDTestWord(1,(Led1offM/10)+0x30);LCDTestWord(1,(Led1offM%10)+0x30);}voidDisplay2(void){LCDTestWord(0,0x80);LCDSendWord("LED2ON");LCDTestWord(1,(Led2onH/10)+0x30);LCDTestWord(1,(Led2onH%10)+0x30);LCDTestWord(1,':');LCDTestWord(1,(Led2onM/10)+0x30);LCDTestWord(1,(Led2onM%10)+0x30);LCDTestWord(0,0xc0);LCDSendWord("LED2OFF");LCDTestWord(1,(Led2offH/10)+0x30);LCDTestWord(1,(Led2offH%10)+0x30);LCDTestWord(1,':');LCDTestWord(1,(Led2offM/10)+0x30);LCDTestWord(1,(Led2offM%10)+0x30);}voidsettime(void){LCDClear();LCDTestWord(0,0x80);LCDSendWord("PleaseSetTime");delay(2000);LCDClear();v=keys();while(v!=4){ switch(v) { case0:UpDate2(); UpDate1(); v=keys(); break; case2: LCDClear(); LCDTestWord(0,0x80); LCDSendWord("SetSucces"); delay(1000); LCDClear(); while(v==0|v==2) {UpDate2(); UpDate1(); Hour1=hour/16*10+hour%16;Minite1=min/16*10+min%16; if(Hour1==Led1onH&&Minite1==Led1onM) P36=0; if(Hour1==Led2onH&&Minite1==Led2onM) P37=0; if(Hour1==Led1offH&&Minite1==Led1offM) P36=1; if(Hour1==Led2offH&&Minite1==Led2offM) P37=1; v=keys(); } break; case8:LCDClear(); while(v==0|v==8|v==32|v==64|v==128) { Display1(); v=keys(); switch(v) { case32:count1++; if(count1==5) count1=1; break; case64:if(count1>0&&count1<5) { if(count1==1) { Led1onH++; if(Led1onH==24) Led1onH=0; } if(count1==2) { Led1onM++; if(Led1onM==60) Led1onM=0; } if(count1==3) { Led1offH++; if(Led1offH==24) Led1offH=0; } if(count1==4) { Led1offM++; if(Led1offM==60) Led1offM=0; } } break;case128: if(count1>0&&count1<5) { if(count1==1) { Led1onH--; if(Led1onH<0) Led1onH=23; } if(count1==2) { Led1onM--; if(Led1onM<0) Led1onM=59; } if(count1==3) { Led1offH--; if(Led1offH<0)Led1offH=23;}if(count1==4) { Led1offM--; if(Led1offM<0) Led1offM=59; } } break; } } break;case16:LCDClear(); while(v==0|v==16|v==32|v==64|v==128) { Display2(); v=keys(); switch(v) { case32:count1++; if(count1==5) count1=1; break; case64:if(count1>0&&count1<5) { if(count1==1) { Led2onH++; if(Led2onH==24) Led2onH=0; } if(count1==2) { Led2onM++; if(Led2onM==60) Led2onM=0; } if(count1==3) { Led2offH++; if(Led2offH==24) Led2offH=0; } if(count1==4) { Led2offM++; if(Led2offM==60) Led2offM=0; } } break;case128:if(count1>0&&count1<5) { if(count1==1) { Led2onH--; if(Led2onH<0) ed2onH=23; } if(count1==2) { Led2onM--; if(Led2onM<0) Led2onM=59; } if(count1==3) { Led2offH--; if(Led2offH<0) Led2offH=23; } if(count1==4) { Led2offM--; if(Led2offM<0) Led2offM=59; } } break; } }break; }/*****************主函数程序*************************/voidmain(void){LCDInit();LCDClear();InitDS1302();LCDTestWord(0,0x80);LCDSendWord("Enteringsystem");LCDTestWord(0,0xc0);LCDSendWord("PleaseWaiting");delay(2000);LCDClear();LCDTestWord(0,0x80);LCDSendWord("SelectMenu");while(1) { v=keys(); switch(v) { case1:count++; if(count==5) count=1; LCDTestWord(0,0x80); if(count==1) {LCDClear(); LCDSendWord("Realtime"); } if(count==2){ LCDClear(); LCDSendWord("Environment"); } if(count==3) {LCDClear(); LCDSendWord("Traffic"); } if(count==4) {LCDClear(); LCDSendWord("SetTime"); } break
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业安全隐患排查治理管理制度模版(3篇)
- 初中跑操比赛规程与评样本(3篇)
- 2024年一岗双责工作制度范文(2篇)
- 学校校园文化建设实施方案模版(2篇)
- 2024年节约用水演讲稿(3篇)
- 物资供应管理制度范文(2篇)
- 2024年教师节献词演讲稿模版(2篇)
- 对村级工作实施观摩点评的实施方案模版(二篇)
- 2024年办公室秘书某年个人工作总结(3篇)
- 办公区卫生管理规定模版(3篇)
- 《玉米合理密植技术》课件
- 《不稳定型心绞痛》课件
- 2024年世界职业院校技能大赛高职组“新型电力系统技术与应用组”参考试题库(含答案)
- 江苏省扬州市邗江中学2025届物理高一第一学期期末学业质量监测试题含解析
- 自媒体宣传采购项目竞争性磋商招投标书范本
- 新保密法知识测试题及答案
- 2023年民航东北空管局人员招聘考试真题
- 外研版小学英语(三起点)六年级上册期末测试题及答案(共3套)
- 统编版(2024新版)七年级上册历史第二单元 夏商周时期:奴隶制王朝的更替和向封建社会的过渡 单元复习课件
- 半自理全护理老人护理管理服务投标方案
- §5-5-6圆孔的夫琅和费衍射.ppt
评论
0/150
提交评论