文档下载:
单片机路灯控制系统设计.doc
(274.32 KB, 下载次数: 156)
以下是部分内容预览:
单片机路灯控制系统是一种新型智能控制系统,可根据季节交替引起的天气变化和用户的不同需要,通过按键进行调节,能起到明显的节能效果。 该路灯控制系统设计主要包含硬件系统设计和软件系统设计。硬件系统主要由时钟发生电路、电路控制电路、LCD显示电路、声光报警电路、键盘控制电路和单片机控制电路等部分组成。在时钟发生电路中,采用低功耗实时时钟电路芯片DS1302,它可以对年、月、日、周日、时、分、秒进行计时,计时后,经过单片机的控制处理后从显示屏上将计时的数据显示出来。而路灯控制部分通过对外部环境进行检测,实现不同环境的不同操作,从而实现不同功能。软件部分主要需结合硬件系统,绘制程序流程图,编写相应的程序,使得单片机路灯系统能智能,自动地运作路灯,排查故障。
目录 摘 要......................................................................................................................... III Abstract....................................................................................................................... IV 1 绪论........................................................................................................................... 1 1.1课题的来源..................................................................................................... 1 1.2课题的意义..................................................................................................... 1 1.3单片机应用技术国内外发展现状................................................................. 2 1.3.1国外的研究现状……………………………………………………….2 1.3.2国内的研究现状……………………………………………………….2 1.4课题研究的目的............................................................................................. 3 2硬件电路设计............................................................................................................ 4 2.1系统总体方案设计......................................................................................... 4 2.2 芯片器件介绍………………………..……………………………......4 2.2.1 单片机AT89C52简介...........………………….……………..…….…4 2.2.2 光敏传感器的介绍…………………….………………..…………….6 2.2.3 实时时钟芯片DS1302的介绍…………………………………….…7 2.2.4 1602液晶的介绍………………………………………………..….….8 2.2.5 电压比较器LM358…………………………………………..….……9 2.3各模块介绍................................................................................................... 10 2.3.1时钟电路模块…………………………………………………….…..10 2.3.2感光电路模块……………………………………………………...…11 2.3.3 液晶显示器模块………………………………………………….….11 2.3.4 复位电路模块………………………………………………….....….12 2.3.5 故障报警电路模块…………………………………………………..13 2.3.6 灯光驱动电路模块…………………………………………………..14 3系统软件设计……………………………………………………………………...16 3.1软件系统介绍............................................................................................... 16 3.1.1软件介绍 ……………………………………...…………………….16 3.1.2主程序的介绍………………………………………………………...16 3.1.3主流程图………………………………………………………...……17 3.2各子程序模块............................................................................................... 18 3.2.1 实时时钟子程序……………………………………………………..18 3.2.2 LCD显示子程序……………………………………………………..18 3.2.3自动警报子程序…………………………………………...…………19 3.2.4路灯开关控制子程序……………………………………….……..…20 4总结.......................................................................................................................... 21 4.1工作总结…………………… ……………………………………….………21 4.2心得体会……………………….……………………………………………..22 参考文献..................................................................................................................... 23 致谢............................................................................................................................. 24 附录............................................................................................................................. 25
3.2各子程序模块3.2.1实时时钟子程序单片机对DS1302进行开始条件的设置,先从DS1302中读取1Byte数据,然后往DS1302中写入数据,读取DS1302在某地址的数据,这样就完成了对DS1302的初始化。接着往DS1302中写入时钟数据,时钟数据地址格式为:秒 分 时 日 月 星期 年 控制,然后读取DS1302的时钟数据,将数据写到DS1302寄存器中,并读取其中的数据,最后设置初始时间,读取DS1302当前时间。这就是实时时钟子程序完成的步骤。 以下是实时时钟部分子程序: void v_Get1302(uchar *ucCurtime) { uchar i,temp1,temp2; uchar ucAddr = 0x81; for (i=0;i<7;i++) { *ucCurtime++ = uc_R1302(ucAddr); //格式为: 秒 分 时 日 月 星期 年 ucAddr += 2; temp1=(Time_code&0xF0)>>4; temp2=Time_code&0x0F; Time_code=temp1*10+temp2; } } 3.2.2 LCD显示子程序为简化硬件电路,通常将所有LED动态显示。首先设置显示模式,即显示开、关,显示有无光标。然后设置输入模式,画面可平移。将LCD初始化,输入液晶字符的位置,并显示到液晶屏上。 以下是设置LCD液晶显示的部分子程序: void LCD_Initial() { LcdEn=0; LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵 delay(5); LCD_Write(LCD_COMMAND,0x38); delay(5); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 delay(5); LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏 delay(5); LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动 delay(5); }
3.2.3 自动报警子程序 自动报警子程序是当路灯在发生故障时,电路传给单片机一个信号,而单片机将这个数据写入此程序,程序将数据输出,使得蜂鸣器启动,从而起到报警作用。 以下是部分自动报警子程序: if(status0==1) { GotoXY(13,1); LCD_Write(LCD_DATA,'0');
if(ErroT!=0xFF) { //开报警 Beep=0; i=(ErroT&0xF0)>>4; if(i>9)i=i+0x37; else i=i+0x30; LCD_Write(LCD_DATA,i); i=ErroT&0x0F; if(i>9)i=i+0x37; else i=i+0x30; LCD_Write(LCD_DATA,i); } else //关报警 Beep=1; }
|