版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第十二屆智能控制設(shè)計(jì)大賽初級(jí)組之基于51單片機(jī)的“掃地機(jī)器人”設(shè)計(jì)報(bào)告目錄一、設(shè)計(jì)要求31.基本要求:32.拓展要求:3二、設(shè)計(jì)思路3三、方案比較31、洞洞板的選擇32、芯片的選擇33、單片機(jī)鍵盤的選擇34、lcd的選擇45、電源的選擇46、儲(chǔ)存模塊的選擇47、時(shí)鐘模塊的選擇48、最終選用方案4四、一些模塊的選擇及底盤制作41、電機(jī)驅(qū)動(dòng)模塊42、紅外傳感器模塊53、循跡模塊54、底盤的制作:5五、設(shè)計(jì)與論證6程序流程圖6六、理論分析與計(jì)算61、基礎(chǔ)設(shè)想分析62、整體框架分析73、獨(dú)立鍵盤檢測(cè)分析74、lcd12864顯示理論分析75、算法計(jì)算分析7七、電路原理圖81、電路圖82、相關(guān)設(shè)計(jì)文件8
2、八、測(cè)試方法和儀器91、測(cè)試方法92、測(cè)試儀器9九、測(cè)試數(shù)據(jù)及結(jié)果分析101、測(cè)試數(shù)據(jù)102、結(jié)果分析,與比賽要求的符合程度12附錄13一、設(shè)計(jì)要求 1. 基本要求 (1) 設(shè)計(jì)掃地機(jī)器人,自主完成前進(jìn)、后退、轉(zhuǎn)向等控制; (2) 實(shí)現(xiàn)避障功能,能自主走完一個(gè)用圍墻圍起 來2m*2m的區(qū)域; (3) 設(shè)計(jì)簡(jiǎn)易掃地裝置,能夠清掃小紙團(tuán); 2. 拓展要求 (1) 設(shè)計(jì)良好的人機(jī)界面,用于設(shè)置開啟時(shí)間,顯示電量等;(2) 能夠清掃更小的垃圾,如紙屑;(3) 清掃之后能夠回到用黑膠布圍成的30cm*30cm的起點(diǎn)區(qū)域;(4) 其他拓展功能。二、設(shè)計(jì)思路基于51單片機(jī)實(shí)現(xiàn)通過對(duì)按鍵的操作改變led人機(jī)交
3、互界面上顯示的時(shí)間參數(shù)實(shí)現(xiàn)對(duì)“掃地機(jī)器人”的操作。三、方案比較 1.洞洞板的選擇(1)錫板(綠色):錫板質(zhì)量好,焊接過程容錯(cuò)率高,不易變形,加個(gè)較高。(2)銅板(黃色):銅板質(zhì)量相對(duì)較差,不容易上錫,在高溫下銅圈容易掉落,易變形,加個(gè)相對(duì)便宜。2.芯片的選擇stc89c52rc芯片優(yōu)點(diǎn):相對(duì)于51版本單片機(jī),52單片機(jī)多出了一個(gè)定時(shí)器及128字節(jié)ram,flash儲(chǔ)存多出4k。操作簡(jiǎn)單試用于初學(xué)者可查找資料多,與51單片機(jī)完全兼容價(jià)格相對(duì)比較便宜并且購買渠道多支持isp下載,比較方便具有eeprom功能stc12c5a60s2芯片優(yōu)點(diǎn):擁有c52的全部功能帶有ad,pwm功能,多了兩個(gè)定時(shí)器f
4、lash存儲(chǔ)空間達(dá)60k在相同晶振下,運(yùn)行速度是51的8到12倍中斷可自定義優(yōu)先級(jí)3.單片機(jī)鍵盤選擇(1)矩陣鍵盤:在需要較多的按鍵時(shí),矩陣鍵盤需要的io口相對(duì)少(2)獨(dú)立鍵盤:在需要較少按鍵時(shí),獨(dú)立鍵盤優(yōu)勢(shì)大,若在需要較多的按鍵時(shí),獨(dú)立鍵盤消耗的io口多4.lcd的選擇面向初學(xué)者來說lcd主要分為兩種,1602和12864(1)1602:能夠顯示簡(jiǎn)單的字符,操作簡(jiǎn)單,屏幕相對(duì)較小,能夠顯示的信息數(shù)量有限(2)12864:能夠顯示簡(jiǎn)單字符也可以顯示自定義的圖片,操作相對(duì)困難,屏幕相對(duì)較大 能夠顯示較多的信息。5. 電源的選擇18650鋰電池:輸出電壓高,約為3.7v,負(fù)載能力強(qiáng),能夠驅(qū)動(dòng)電機(jī)驅(qū)
5、動(dòng)模塊和單片機(jī)和各模塊。只需要兩塊電池??沙潆姡容^環(huán)保。價(jià)格相對(duì)較高。普通干電池:輸出電壓較低,負(fù)載能力較低,要驅(qū)動(dòng)電機(jī)驅(qū)動(dòng)模塊需要5塊1.5v干電池,一般不能充電,調(diào)試過程易造成浪費(fèi)。價(jià)格相對(duì)較便宜。升壓模塊:能將3-5伏的電壓升到12伏或更高,但是性能越好的價(jià)格越高,性能較低的承受電流不能過大。6.儲(chǔ)存模塊的選擇(1)單片機(jī)自帶eeprom:使用方便,可以節(jié)省io口,操作簡(jiǎn)單 (2)at24c02:擦除寫入速度快,可擦寫次數(shù)達(dá)100萬次,數(shù)據(jù)可保存達(dá)100年,功耗低7.時(shí)鐘模塊的選擇(1)ds1302:操作簡(jiǎn)單,io口占用少,基礎(chǔ)電路簡(jiǎn)單,可自行焊接(2)ds12c887:芯片集成度高,
6、不需要外部基礎(chǔ)電路,焊接方便,但io占用多8.最終選擇方案基于設(shè)計(jì)思路,由小組成員討論決定選擇同時(shí)選用錫板和銅板(降低開支的同時(shí),保證焊接穩(wěn)定),鑒于使用模塊較多io口不足的問題同時(shí)選用stc89c52rc芯片和stc12c5a60s2芯片,獨(dú)立鍵盤(只需要4個(gè)功能按鍵,io口占用與矩陣鍵盤相同,且矩陣鍵盤的焊接難度大),12864(根據(jù)需要顯示的功能選擇),單片機(jī)自帶eeprom(節(jié)省io口,同時(shí)降低操作難度),選用電源為18650鋰電池(輸出電壓較為穩(wěn)定,且可以充電,環(huán)保實(shí)用),選用ds1302(降低操作難度,節(jié)省io口)。四、一些模塊的選擇及底盤的制作1.電機(jī)驅(qū)動(dòng)模塊采用專用芯片l298
7、n作為電機(jī)驅(qū)動(dòng)芯片。l298n是一個(gè)具有高電壓大電流的全橋驅(qū)動(dòng)芯片,它相應(yīng)頻率高,一片l298n可以分別控制兩個(gè)直流電機(jī),而且還帶有控制使能端。用該芯片作為電機(jī)驅(qū)動(dòng),操作方便,穩(wěn)定性好,性能優(yōu)良。我們采用現(xiàn)成的封裝好的電機(jī)驅(qū)動(dòng)模塊,能將6-12伏的電壓轉(zhuǎn)化為5伏電壓輸出,給單片機(jī)和其他模塊供電,操作簡(jiǎn)單功能強(qiáng)大。2.紅外傳感器模塊 該傳感器模塊對(duì)環(huán)境光線適應(yīng)能力強(qiáng),其具有一對(duì)紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當(dāng)檢測(cè)方向遇到障礙物時(shí),紅外線反射回來被接收管接收,經(jīng)過比較器電路處理之后,指示燈會(huì)亮起,同時(shí)信號(hào)輸出接口輸出一個(gè)低電平信號(hào),可通過電位器旋鈕調(diào)節(jié)檢測(cè)距離,有效距離范圍 2
8、30cm,工作電壓為3.3v-5v。該傳感器的探測(cè)距離可以通過電位器調(diào)節(jié)、具有干擾小、便于裝配、使用方便等特點(diǎn)。3.尋跡模塊:tcrt5000傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當(dāng)發(fā)射出的紅外線沒有被反射回來或被反射回來但強(qiáng)度不夠大時(shí),光敏三極管一直處于關(guān)斷狀態(tài),此時(shí)模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);被檢測(cè)物體出現(xiàn)在檢測(cè)范圍內(nèi)時(shí),紅外線被反射回來且強(qiáng)度足夠大,光敏三極管飽和,此時(shí)模塊的輸出端為高電平,指示二極管被點(diǎn)亮4.底盤的制作: 利用廢棄的硬紙盒,通過鉆孔來固定各個(gè)模塊和輪子,同時(shí)也能將各種杜邦線和電路板包含在盒子里面,達(dá)到外形美觀和節(jié)約材料變廢為寶的目的。 五、設(shè)計(jì)與論
9、證程序流程圖六、理論分析與計(jì)算1.基礎(chǔ)設(shè)想分析(1)單片機(jī)間的控制由于是基于人機(jī)交互界面控制的掃地機(jī)器人,故可由兩個(gè)單片機(jī)控制不同的模塊(stc12c5a60s2控制顯示模塊,stc89c52rc控制小車模塊)。stc12io口與stc89io口相連,由顯示模塊(stc12)輸出信號(hào),小車模塊(stc89)接受信號(hào),從而實(shí)現(xiàn)單片機(jī)間的控制。(2)背光燈及小車車輪控制由stc12io口輸出一定的pwm信號(hào),可調(diào)節(jié)背光燈的亮度。由stc89控制電機(jī)驅(qū)動(dòng)輸出pwm信號(hào)小車電機(jī)轉(zhuǎn)速,同時(shí)可通過對(duì)車輪輸出不同的pwm信號(hào)實(shí)現(xiàn)車輪轉(zhuǎn)速不同而實(shí)現(xiàn)小車的轉(zhuǎn)向,可對(duì)電機(jī)驅(qū)動(dòng)輸入不同的使能信號(hào)使其電機(jī)實(shí)現(xiàn)正反轉(zhuǎn)動(dòng)
10、,從而實(shí)現(xiàn)小車的前進(jìn)后退。(3)小車的避障功能通過紅外傳感器測(cè)距,當(dāng)紅外傳感器與障礙物距離縮短到一定距離時(shí),紅外傳感器會(huì)給單片機(jī)傳輸一個(gè)電信號(hào),單片機(jī)識(shí)別電信號(hào)后可控制小車轉(zhuǎn)向,從而避開障礙物。(4)掃地裝置通過電機(jī)驅(qū)動(dòng)控制兩個(gè)帶毛刷電機(jī)以一定速度反向轉(zhuǎn)動(dòng),將毛刷經(jīng)過的區(qū)域的垃圾掃進(jìn)小車底部設(shè)計(jì)的簡(jiǎn)易垃圾收集裝置(5)電量檢測(cè)與顯示設(shè)計(jì)一簡(jiǎn)單的外圍電路,通過stc12自帶的ad功能,可實(shí)現(xiàn)對(duì)電池電壓的檢測(cè)。再通過電池電壓與容量的簡(jiǎn)易關(guān)系,設(shè)計(jì)簡(jiǎn)易程序?qū)崿F(xiàn)在12864固定區(qū)域顯示。(6)時(shí)間顯示單片機(jī)對(duì)外部時(shí)鐘芯片的數(shù)據(jù)進(jìn)行讀取,同時(shí)設(shè)置開啟時(shí)間(on)停止時(shí)間(off),通過單片自帶eepro
11、m儲(chǔ)存on、off時(shí)間數(shù)據(jù),再通過lcd12864顯示。(7)返回出發(fā)點(diǎn)通過循跡模塊對(duì)地面進(jìn)行識(shí)別,若識(shí)別到黑線即會(huì)輸出電信號(hào),單片機(jī)識(shí)別電信號(hào)后行走一小段時(shí)間后便停止行動(dòng)2.整體框架分析(1)主程序main函數(shù)開始執(zhí)行初始化,初始化lcd等外部硬件,在lcd上顯示固定數(shù)據(jù)(2)進(jìn)入while循環(huán)重復(fù)掃描按鍵,時(shí)間比較,顯示電量,背光選擇。3.獨(dú)立鍵盤檢測(cè)分析按鍵與gnd相連,一旦按鍵被按下單片機(jī)便會(huì)接受到一個(gè)低電平信號(hào)。由于單片機(jī)執(zhí)行速度快,故按下按鍵的同時(shí),單片機(jī)幾乎同時(shí)執(zhí)行按鍵掃描函數(shù),對(duì)來自io口的電平信號(hào)進(jìn)行分析。4.lcd12864顯示理論分析初始化函數(shù)顯示液晶屏固定顯示部分,使用
12、lcd自帶字庫,使現(xiàn)實(shí)速率提高,再通過對(duì)外部時(shí)鐘數(shù)據(jù)進(jìn)行讀取,按鍵掃描程序數(shù)據(jù)更改的讀取,局部改變液晶屏上數(shù)據(jù)的顯示。因lcd的執(zhí)行速度很快,人眼存在視覺停留效果,故改變數(shù)據(jù)時(shí),人不易察覺到這一過程。5.算法計(jì)算分析(1)更改時(shí)間:ds1302對(duì)時(shí)間數(shù)據(jù)的存儲(chǔ)是16進(jìn)制,故讀取時(shí)鐘數(shù)據(jù)時(shí)需將其轉(zhuǎn)化為10進(jìn)制再分別取時(shí)分秒的十位數(shù)和個(gè)位數(shù),分別顯示在lcd上。因此,在對(duì)ds1302時(shí)鐘數(shù)據(jù)的更改時(shí)需將更改的時(shí)鐘數(shù)據(jù)改變?yōu)?6進(jìn)制再進(jìn)行儲(chǔ)存。(2)電量顯示:通過stc12的ad串口對(duì)電壓進(jìn)行讀取(此時(shí)讀取的電壓值為電源電壓的一半),再將讀取的數(shù)據(jù)乘以2即得電源的電壓值。再通過對(duì)電壓與電源電路的簡(jiǎn)易
13、關(guān)系,判斷電壓屬于哪個(gè)范圍即顯示相應(yīng)的剩余電量。七、電路原理圖stc12c5a60s2 八、測(cè)試方法和測(cè)試儀器1、測(cè)試方法(1) 通過調(diào)節(jié)紅外傳感器模塊上的可調(diào)電阻,調(diào)節(jié)模塊的靈敏度,使其在一定距離下輸出低電平。表現(xiàn)為紅外傳感器指示燈亮起(2) 通過lcd顯示ad串口檢測(cè)到的電壓,同時(shí)用萬用表檢測(cè)電源兩端的輸出電壓,觀察讀取數(shù)據(jù)是否準(zhǔn)確。(3)通過調(diào)節(jié)pwm,調(diào)節(jié)旋轉(zhuǎn)電機(jī)(掃地用)轉(zhuǎn)速,使其能夠較好的清掃垃圾, 觀察其是否能達(dá)到預(yù)估效果(4)通過調(diào)節(jié)pwm。調(diào)節(jié)行走電機(jī)的轉(zhuǎn)速,使其實(shí)現(xiàn)轉(zhuǎn)向,觀察其是否能達(dá)到預(yù)估效果(5)通過給電機(jī)驅(qū)動(dòng)模塊輸入使能信號(hào),控制行走電機(jī)轉(zhuǎn)向,使其實(shí)現(xiàn)前行和后退, 觀
14、察其是否能達(dá)到預(yù)估效果(6)根據(jù)需要的功能設(shè)計(jì)程序,觀察其在lcd上是否能夠按預(yù)想狀況進(jìn)行2、測(cè)試儀器:萬用表九、測(cè)試數(shù)據(jù)與結(jié)果分析1、測(cè)試數(shù)據(jù)要求測(cè)試內(nèi)容測(cè)試前測(cè)試后備注基本要求1: 設(shè)計(jì)掃地機(jī)器人,自主完成前進(jìn)、后退、轉(zhuǎn)向等控制前進(jìn)通過觀測(cè)可知(能夠前進(jìn))后退通過觀測(cè)可知(能夠后退)轉(zhuǎn)向通過觀測(cè)可知(能夠轉(zhuǎn)向)基本要求2:實(shí)現(xiàn)避障功能,能自主走完一個(gè)用圍墻圍起 來2m*2m的區(qū)域避障通過觀測(cè)可知(能夠避障)自主走完一個(gè)用圍墻圍起來2m*2m的區(qū)域通過觀測(cè)可知(能夠走完待清掃區(qū)域)基本要求3:設(shè)計(jì)簡(jiǎn)易掃地裝置,能夠清掃小紙團(tuán)清掃小紙團(tuán)通過觀測(cè)可知(能夠清掃小紙條,部分有較小幾率彈出垃圾收集裝
15、置拓展功能1:設(shè)計(jì)良好的人機(jī)界面,用于設(shè)置開啟時(shí)間,顯示電量等設(shè)置時(shí)間為設(shè)置時(shí)間標(biāo)志,ho,mi,se分別為時(shí)分秒設(shè)置標(biāo)記設(shè)置開啟時(shí)間為設(shè)置時(shí)間標(biāo)志,ho,mi,se分別為時(shí)分秒設(shè)置標(biāo)記設(shè)置關(guān)閉時(shí)間為設(shè)置時(shí)間標(biāo)志,ho,mi,se分別為時(shí)分秒設(shè)置標(biāo)記顯示電量拓展功能2:能夠清掃更小的垃圾,如紙屑清掃更小的垃圾通過觀測(cè)可知(能夠清掃較小紙屑)拓展功能3:清掃之后能夠回到用黑膠布圍成的30cm*30cm的起點(diǎn)區(qū)域回到起點(diǎn)通過觀測(cè)可知(能夠回到起點(diǎn))其他拓展功能:設(shè)置lcd背光亮度設(shè)置lcd背光亮度測(cè)試前為直接接上電源后lcd背光燈亮度(亮度太大,耗能高,刺眼)2、結(jié)果分析基本要求完成情況1設(shè)計(jì)掃地
16、機(jī)器人,自主完成前進(jìn)、后退、轉(zhuǎn)向等控制完成2實(shí)現(xiàn)避障功能,能自主走完一個(gè)用圍墻圍起 來2m*2m的區(qū)域完成,小車在檢測(cè)到前方障礙物時(shí)會(huì)自行轉(zhuǎn)向3設(shè)計(jì)簡(jiǎn)易掃地裝置,能夠清掃小紙團(tuán)完成,通過兩個(gè)反向旋轉(zhuǎn)毛刷可以將小紙團(tuán)收集進(jìn)自制簡(jiǎn)易垃圾收集裝置拓展功能1設(shè)計(jì)良好的人機(jī)界面,用于設(shè)置開啟時(shí)間,顯示電量等完成,可以顯示實(shí)時(shí)時(shí)間,開啟時(shí)間,關(guān)閉時(shí)間,電量。并可通過按鍵調(diào)節(jié)時(shí)間數(shù)據(jù)2能夠清掃更小的垃圾,如紙屑完成,通過調(diào)試旋轉(zhuǎn)毛刷的轉(zhuǎn)速可以實(shí)現(xiàn)更小垃圾的清掃3清掃之后能夠回到用黑膠布圍成的30cm*30cm的起點(diǎn)區(qū)域完成,當(dāng)達(dá)到關(guān)閉時(shí)間后,小車弱檢測(cè)到黑色膠布傳送的深色信號(hào)時(shí)將自動(dòng)前進(jìn)一小段距離便停止4設(shè)
17、置lcd背光亮度、開關(guān)機(jī)動(dòng)畫完成附錄#include#include#define uchar unsigned char#define uint unsigned int#define rdcommand 0x01 /定義isp的操作命令#define prgcommand 0x02#define erasecommand 0x03#define error 1#define ok 0#define waittime 0x01 /定義cpu的等待時(shí)間#define adc_power 0x80 /adc power control bit#define adc_flag 0x10 /adc
18、complete flag#define adc_start 0x08 /adc start control bit#define adc_speedll 0x00 /420 clocks#define fosc 11059200l#define baud 9600sbit lcd_psb=p30;sbit lcd_en=p31;sbit lcd_wr=p32;sbit lcd_rs=p33;sbit sclk=p34;sbit sda=p35;sbit rst=p36;sbit key=p20;sbit s1=p24;sbit s2=p25;sbit s3=p26;sbit s4=p27;s
19、fr isp_data=0xc2;sfr isp_addrh=0xc3;sfr isp_addrl=0xc4;sfr isp_cmd=0xc5;sfr isp_trig=0xc6;sfr isp_contr=0xc7;sfr adc_contr = 0xbc; sfr adc_res = 0xbd; sfr adc_low2 = 0xbe; sfr p1asf = 0x9d; sfr ccon = 0xd8; sbit ccf0 = ccon0; sbit ccf1 = ccon1; sbit cr = ccon6; sbit cf = ccon7; sfr cmod = 0xd9; sfr
20、cl = 0xe9; sfr ch = 0xf9; sfr ccapm0 = 0xda; sfr ccap0l = 0xea; sfr ccap0h = 0xfa; sfr ccapm1 = 0xdb; sfr ccap1l = 0xeb; sfr ccap1h = 0xfb; sfr pcapwm0 = 0xf2;sfr pcapwm1 = 0xf3;uchar count;char miao,shi,fen;char nshi,nfen,nmiao,fshi,ffen,fmiao;uchar s1num,s2num;uchar code table= on: 00:00:00;uchar
21、code table1=掃地機(jī)器人 ;uchar code table2= off: 00:00:00;uchar code table3= time: 00:00:00;void inituart();void initadc();void senddata(uchar dat);int getadcresult(uchar ch);void delay(uint n);void showresult(uchar ch);float ad_av(uchar channel);/計(jì)算ad轉(zhuǎn)換電壓值void delayus(uint z);void delayms(uint z); void q
22、0(void);void cc(uint addr);void xcx(uint addr,uchar dat);uchar dcx(uint addr);void write_com(uchar command);void write_date(uchar date);void ds1302writebyte(uchar dat);uchar ds1302readbyte();uchar ds1302read(uchar cmd);void ds1302write(uchar cmd, uchar dat) ;/初次初始化ds1302使用/void init_ds1302(void); vo
23、id init();void keyscan();/設(shè)置時(shí)鐘,開啟時(shí)間,結(jié)束時(shí)間/void di(); /蜂鳴器報(bào)警void clock();void compare();void powershow();void show(int x,int y);void show1(int x);void pwm(uchar x);void beiguang();void main()init();while(1)keyscan();clock();compare();powershow();beiguang();void beiguang()if(s1num=0)if(s2=0)pwm(255);if
24、(s3=0)pwm(128);if(s4=0)pwm(256);void pwm(uchar x)ccon = 0; cl = 0; ch = 0; cmod = 0x02; ccap0h = ccap0l = x; ccapm0 = 0x42; cr = 1; float ad_av(uchar channel)/計(jì)算ad轉(zhuǎn)換電壓值float val_av=0;uchar num;for(num=100;num0;num-)val_av+=getadcresult(channel);val_av/=100.0;val_av*=2.0;val_av=val_av*5.0/1024;return
25、 val_av;void powershow() /顯示電量float dianya;dianya=ad_av(1);if(dianya=7.16)show1(0);else if(dianya=7.18)show1(1);else if(dianya=7.22)show1(3);else if(dianya=7.26)show1(5);else if(dianya=7.28)show1(8);else if(dianya=7.3)show(1,0);else if(dianya=7.32)show(1,2);else if(dianya=7.38)show(1,5);else if(dian
26、ya=7.40)show(1,8);else if(dianya=7.42)show(2,0);else if(dianya=7.44)show(2,5);else if(dianya=7.450523)show(2,8);else if(dianya=7.46)show(3,0);else if(dianya=7.47108)show(3,3);else if(dianya=7.48)show(3,5);else if(dianya=7.50)show(3,8);else if(dianya=7.52)show(4,0);else if(dianya=7.53)show(4,2);else
27、if(dianya=7.54)show(4,5);else if(dianya=7.58)show(5,0);else if(dianya=7.62)show(5,5);else if(dianya=7.65)show(5,8);else if(dianya=7.68)show(6,0);else if(dianya=7.71)show(6,3);else if(dianya=7.74)show(6,5);else if(dianya=7.77)show(6,7);else if(dianya=7.80) show(7,0);else if(dianya=7.835)show(7,3);els
28、e if(dianya=7.86)show(7,5);else if(dianya=7.895)show(7,7);else if(dianya=7.94)show(8,0);else if(dianya=8.00)show(8,2);else if(dianya=8.06)show(8,5);else if(dianya=8.10)show(8,7);else if(dianya=8.16)show(9,0);else if(dianya=8.20)show(9,2);else if(dianya=8.24)show(9,5);else if(dianya=8.28)show(9,7);el
29、se if(dianya8.30)write_com(0x80+6);write_date(0x30+1);write_date(0x30+0);write_date(0x30+0);write_date(%);void show(int x,int y)write_com(0x80+6);write_date( );write_date(0x30+x);write_date(0x30+y);write_date(%);void show1(int x)write_com(0x80+6);write_date( );write_date( );write_date(0x30+x);write_
30、date(%);void delayus(uint z)uint x,y;for(x=z;x0;x-)for(y=10;y0;y-);void delayms(uint z) /延時(shí)uint x,y;for(x=z;x0;x-)for(y=110*3;y0;y-);void q0(void)isp_contr=0;isp_cmd=0;isp_trig=0;isp_addrh=0x80;isp_addrl=0;void cc(uint addr)isp_contr=0x82;isp_cmd=0x03;/eeprom擦除使能isp_addrl=addr;isp_addrh=addr8;ea=0;i
31、sp_trig=0x5a;isp_trig=0xa5;delayus(1);q0();/關(guān)閉isp,iapvoid xcx(uint addr,uchar dat)isp_contr=0x82;isp_cmd=0x02;isp_addrl=addr;isp_addrh=addr8;isp_data=dat;ea=0;isp_trig=0x5a;isp_trig=0xa5;delayus(1);q0();/關(guān)閉isp,iapuchar dcx(uint addr)uchar dat;isp_contr=0x82;isp_cmd=0x01;isp_addrl=addr;isp_addrh=addr
32、8;ea=0;isp_trig=0x5a;isp_trig=0xa5;delayus(1);dat=isp_data;q0();return dat;void write_com(uchar command) /寫指令到12864lcd_rs=0;lcd_wr=0;lcd_en=0;p0=command;delayms(5);lcd_en=1;delayms(5);lcd_en=0;void write_date(uchar date) /寫顯示數(shù)據(jù)到12864lcd_rs=1;lcd_wr=0;lcd_en=0;p0=date;delayms(5);lcd_en=1;delayms(5);l
33、cd_en=0;void ds1302writebyte(uchar dat)uchar i;sclk=0;delayms(1);for(i=0;i=1;/數(shù)據(jù)右移一位uchar ds1302readbyte()uchar i,dat;delayms(1);for(i=0;i=1;/要返回的數(shù)據(jù)左移一位if(sda=1)dat|=0x80;/要傳輸數(shù)據(jù)的當(dāng)前值置為 1,若不是則為0sclk=1;delayus(2);sclk=0;delayus(2);return dat;uchar ds1302read(uchar cmd)uchar dat;rst=0;/初始ce先置0sclk=0;/初始
34、時(shí)鐘線置0rst=1;/ce置1,傳輸開始ds1302writebyte(cmd);/ 傳輸命令字,要讀取的時(shí)間dat=ds1302readbyte();/ 讀取要得到的時(shí)間sclk=1;/時(shí)鐘線拉高rst=0;return dat;void ds1302write(uchar cmd, uchar dat) rst=0;sclk=0;rst=1;ds1302writebyte(cmd);ds1302writebyte(dat);sclk=1;/時(shí)鐘線拉高rst=0;/初次初始化ds1302使用/void init_ds1302(void)/ds1302write(0x8e,0x00);/ds
35、1302write(0x80,0x00);/ 初始秒值為0/ds1302write(0x82,0x21);/ds1302write(0x84,0x19);/初始為24小時(shí)模式 初始時(shí)間為0點(diǎn) /ds1302write(0x86,0x25);/ds1302write(0x88,0x12);/ds1302write(0x8a,0x10);/ds1302write(0x8c,0x06);/ds1302write(0x90,0x01);/充電/ds1302write(0xc0,0xf0);/初始化標(biāo)志/ds1302write(0x8e,0x80);/ void init()uchar num;pwm(
36、128);/init_ds1302(); /初次初始lcd_psb=1; /12864初始化write_com(0x30);delayms(3);write_com(0x0c);delayms(3);write_com(0x01);delayms(3);tmod=0x01;th0=(65536-50000)/256;tl0=(65536-50000)%256;ea=1;et0=1;tr0=1;write_com(0x80);/固定顯示部分for(num=0;num16;num+)write_date(table1num);delayus(50); write_com(0x90); for(nu
37、m=0;num16;num+)write_date(table3num);delayus(50); write_com(0x88);for(num=0;num16;num+)write_date(tablenum);delayus(50); write_com(0x98); for(num=0;num16;num+)write_date(table2num);delayus(50); void keyscan()/設(shè)置時(shí)鐘,開啟時(shí)間,結(jié)束時(shí)間if(s1=0)delayms(1);if(s1=0);s1num+;switch(s1num)/顯示調(diào)節(jié)case 1:write_com(0x90);w
38、rite_date(0x7e);delayms(1);write_com(0x88);write_date( );delayms(1);write_com(0x98);write_date( );delayms(1);break; case 2:write_com(0x90);write_date( );delayms(1);write_com(0x88);write_date(0x7e);delayms(1);write_com(0x98);write_date( );delayms(1);break;case 3:write_com(0x90);write_date( );delayms(
39、1);write_com(0x88);write_date( );delayms(1);write_com(0x98);write_date(0x7e);delayms(1);break;case 4:s1num=0;s2num=0;write_com(0x90);write_date( );delayms(1);write_com(0x88);write_date( );delayms(1);write_com(0x98);write_date( );delayms(1);write_com(0x80+5);write_date( );write_date( );delayms(1);bre
40、ak;if(s1num!=0) /功能鍵被按下后執(zhí)行if(s2=0)delayms(1);if(s2=0);s2num+;switch (s2num)case 1:write_com(0x80+5);write_date(h);write_date(o);delayms(1);break;case 2:write_com(0x80+5);write_date(m);write_date(i);delayms(1);break;case 3:write_com(0x80+5);write_date(s);write_date(e);delayms(1);break;case 4:s2num=0;
41、write_com(0x80+5);write_date( );write_date( );delayms(1);break;if(s1num!=0)if(s2num!=0)switch (s1num)case 1:if(s3=0)delayms(1);if(s3=0)uchar tshi,tge;switch (s2num)case 1:shi=ds1302read(0x85);shi+;if(shi=0x0a)shi=0x10;if(shi=0x1a)shi=0x20;if(shi=0x24)shi=0;ds1302write(0x8e,0x00); /寫保護(hù)關(guān)ds1302write(0x
42、84,shi);ds1302write(0x8e,0x80); /寫保護(hù)開tshi=(ds1302read(0x85)/16*10+ds1302read(0x85)%16)/10;tge=(ds1302read(0x85)/16*10+ds1302read(0x85)%16)%10;write_com(0x90+4);write_date(0x30+tshi); write_date(0x30+tge); break;case 2:fen=ds1302read(0x83);fen+;if(fen=0x0a)fen=0x10;if(fen=0x1a)fen=0x20;if(fen=0x2a)fe
43、n=0x30;if(fen=0x3a)fen=0x40;if(fen=0x4a)fen=0x50;if(fen=0x5a)fen=0x00;ds1302write(0x8e,0x00); /寫保護(hù)關(guān)ds1302write(0x82,fen);ds1302write(0x8e,0x80); /寫保護(hù)開tshi=(ds1302read(0x83)/16*10+ds1302read(0x83)%16)/10;tge=(ds1302read(0x83)/16*10+ds1302read(0x83)%16)%10;write_com(0x90+5);write_date(:);write_date(0x30+tshi);write_com(0x90+6); write_date(0x30+tge); break;case 3:miao=ds1302read(0x81
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣西崇左市交通運(yùn)輸局編外人員招聘1人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年廣西宏桂集團(tuán)匯興資產(chǎn)管理限公司招聘5人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年攪拌站建設(shè)合同2篇
- 2025年廣西南寧職業(yè)技術(shù)學(xué)院第三批招聘6人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年廣西南寧江南區(qū)應(yīng)急管理局招聘5人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年廣西南寧市青秀區(qū)劉圩鎮(zhèn)人民政府招聘行政輔助人員2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年廣西南寧市教育局直屬單位招聘教職工599人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年廣西南寧市興寧區(qū)農(nóng)業(yè)農(nóng)村局招聘1名編制外人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年廣西北海銀海區(qū)科技和工業(yè)信息化局招聘1人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年廣西北海市農(nóng)漁業(yè)經(jīng)營(yíng)管理指導(dǎo)站招聘2人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 垃圾焚燒發(fā)電環(huán)保培訓(xùn)
- 北京市朝陽區(qū)2024-2025學(xué)年高一(上)期末化學(xué)試卷(含答案)
- 中醫(yī)基礎(chǔ)學(xué)考試題(附答案)
- 2025貴州建筑安全員B證考試題庫附答案
- 2024年杭州師范大學(xué)附屬醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024-2025學(xué)年八年級(jí)歷史上冊(cè)期末復(fù)習(xí)課件
- 2025年云南省大理州事業(yè)單位招聘339人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年度第一學(xué)期三年級(jí)數(shù)學(xué)寒假作業(yè) 有答案
- 大型起重機(jī)械現(xiàn)場(chǎng)管理手冊(cè)
- 2024年貴州省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 江蘇省南京市聯(lián)合體2024-2025學(xué)年九年級(jí)上學(xué)期期中學(xué)情分析化學(xué)試卷(無答案)
評(píng)論
0/150
提交評(píng)論