文檔下載:
單片機路燈控制系統設計.doc
(274.32 KB, 下載次數: 156)
2020-4-9 03:02 上傳
點擊文件名下載附件
以下是部分內容預覽:
單片機路燈控制系統是一種新型智能控制系統,可根據季節交替引起的天氣變化和用戶的不同需要,通過按鍵進行調節,能起到明顯的節能效果。 該路燈控制系統設計主要包含硬件系統設計和軟件系統設計。硬件系統主要由時鐘發生電路、電路控制電路、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; }
|