freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于at89c51單片機(jī)的自動(dòng)報(bào)時(shí)系統(tǒng)設(shè)計(jì)(編輯修改稿)

2025-02-13 00:51 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 、操作方式:芯片的操 作受地址 /命令字節(jié)控制,每一組數(shù)據(jù)的傳送由命令字節(jié)初始化。地址 /命令字節(jié)格式如圖 。 位 7必須為邏輯 1,如果它是 0,禁止寫 DS1302;位 6邏輯 0,指定為時(shí)鐘 /日歷數(shù)據(jù),為邏輯 1,指定為 RAM數(shù)據(jù);位 1— 5指定輸入或輸出的寄存器單元地址;位 0指定輸入 /輸出數(shù)據(jù)。命令字節(jié)總是從最低有效位開始輸入。 數(shù)據(jù)輸入:當(dāng)命令字節(jié)為寫命令時(shí),最低位為 0,在下 8個(gè) SCLK 周期的上升沿輸入字節(jié),數(shù)據(jù)從最低位開始輸入;數(shù)據(jù)輸出:當(dāng)命令字節(jié)為讀命令時(shí),最低位為1,在下 8個(gè) SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。這時(shí)被 傳送的第一數(shù)據(jù)為發(fā)生在命令字節(jié)的最后一位之后的第一個(gè)下降沿,所以,在非多字節(jié)方式,每次讀或?qū)懙拿}沖個(gè)數(shù)為 16個(gè),前 8個(gè)為命令脈沖,后 8個(gè)為讀或?qū)懙拿}沖。這樣在單字節(jié)傳送數(shù)據(jù)時(shí),每次命令為 16個(gè)脈沖即可完成,多余的脈沖將忽略不計(jì)。通過對(duì)地址 31尋址,可以把時(shí)鐘 /日歷或 RAM 寄存器規(guī)定為多字節(jié)讀寫方式,讀或?qū)懭詮牡刂?0 單元的最低位開始。當(dāng)以多字節(jié)方式寫時(shí)鐘寄存器時(shí),必須按數(shù)據(jù)的次序?qū)懽钕鹊?8個(gè)寄存器。這樣 8個(gè)時(shí)鐘字節(jié)的讀或?qū)懝残?72個(gè)脈沖時(shí)鐘, 31個(gè) RAM的讀或?qū)懝残?256脈沖時(shí)鐘。其時(shí)序如圖 : .DS1302的寫時(shí)序 圖 DS1302的時(shí)序 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 14 電路原理 電路的核心是 89C51單片機(jī),其內(nèi)部帶有 4KB的 FlashROM,無須擴(kuò)展程序存儲(chǔ)器;電腦沒有大量的運(yùn)算和暫存數(shù)據(jù),現(xiàn)有的 128B 片內(nèi) RAM 已能滿足要求,也不必?cái)U(kuò)展片外 RAM。系統(tǒng)配備 6 位 LED 顯示和 4 個(gè)單接口鍵盤,采用 P0 接口外接 8 路反相三態(tài)緩沖器 74LS240作 LED動(dòng)態(tài)掃描的段碼控制驅(qū)動(dòng)信號(hào) ,用 P2接口的 一片集電極開路反相門電路 74LS06做為 6位 LED的位選信號(hào)驅(qū)動(dòng)口, 6個(gè)數(shù)碼管的8 根段選線分別與 74LS06 的輸出端相連; LED 共陰極端與 7406 的輸出端相連;按鍵接口由 、 、 、 。 DS1302 實(shí)時(shí)時(shí)鐘芯片接口由 、 、 P3口接鬧鐘小喇叭。 其硬件原理總圖見附錄 A。 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 15 3 軟件設(shè)計(jì) 設(shè)計(jì)思路 因?yàn)槲易龅氖亲詣?dòng)報(bào)時(shí)系統(tǒng),它需要具有校時(shí),調(diào)時(shí),定時(shí),鬧鐘,等功能,而且用到了 DS1302芯片,此芯片具有自動(dòng)記時(shí)功能所以編寫程序簡(jiǎn)單。 所以我們考慮到用單片機(jī)語言來做我們的設(shè)計(jì)。對(duì)于程序我們的設(shè)計(jì)思路是: 1.在此設(shè)計(jì)中用定時(shí)器來完成動(dòng)態(tài)掃描顯示。用定時(shí)器 T0定 2ms的時(shí) 間間隔,每次定時(shí)時(shí)間到時(shí)就輸出一個(gè) LED信號(hào),即顯示一位。定時(shí)器每中斷 6次后循環(huán)到第一位LED顯示。這樣動(dòng)態(tài)顯示占用 CPU的時(shí)間只有輸出段碼和輸出位碼的有限時(shí)間,提高了CPU的工作效率。 2. 要有主程序程序。 3.本設(shè)計(jì)使用按鍵來對(duì) DS1302寫入時(shí)間校時(shí),對(duì)時(shí),設(shè)定時(shí)間的,所以要有 DS1302的寫時(shí)鐘程序。 4.系統(tǒng)資源分配: 1)定時(shí)器:定時(shí)器 T0用做顯示定時(shí),按方式 1工作,每隔 2ms溢出中斷一次。 2)片內(nèi) RAM及標(biāo)志位的分配: a)顯示緩沖區(qū):使用( 30H— 35H) 6個(gè) RAM作 LED的顯示緩沖區(qū), 每一個(gè)緩沖區(qū)對(duì)應(yīng)一個(gè) LED,在定時(shí)時(shí)間到時(shí)就把 6個(gè)緩沖區(qū)中的數(shù)送給相應(yīng)的 LED顯示。 b)時(shí)間緩沖區(qū):使用( 36H— 3BH) 6個(gè) RAM來保存當(dāng)前從 DS1302中讀出來的時(shí)間,在主程序運(yùn)行時(shí)大約每一秒鐘把其中的數(shù)據(jù)更新到顯示緩沖區(qū)用以顯示。 c)定時(shí)緩沖區(qū):使用( 40H— 45H) 6個(gè) RAM保存設(shè)定的定時(shí)時(shí)間,并在時(shí)間緩沖區(qū)的內(nèi)容更新的同時(shí)進(jìn)行比較,若相同則表明定時(shí)時(shí)間到了,開始調(diào)用報(bào)時(shí)子程序。 主程序與按鍵控制,讀時(shí)間并對(duì)定時(shí)時(shí)間進(jìn)行判斷。主程序初始化后,就開始進(jìn)行對(duì) DS1302 的讀時(shí)間;讀 完后送顯示緩沖區(qū),同時(shí)并對(duì)定時(shí)時(shí)間進(jìn)行判斷比較;然后開始依次掃描 4 個(gè)按鍵來判別是否進(jìn)入相應(yīng)的按鍵子程序中;再對(duì) DS1302 讀時(shí)間完成主循環(huán)程序。流程圖如下: 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 16 開始主程序初始化對(duì) 讀時(shí)間顯示緩沖區(qū)按鍵掃描 圖 主程序流程圖 LCALL KEYSET LCALL ALM SET LCALL ALM MOV ADDR1302, 85H LCALL READCLOCK MOV A, DATA1302 ANL A, 10H MOV 36H, A MOV A, DATA1302 ANL A, 0FH MOV 37H, A MOV ADDR1302, 83H LCALL READCLOCK MOV A, DATA1302 ANL A, 0F0H MOV 38H, A MOV A, DATA1302 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 17 ANL A, 0FH MOV 39H, A MOV ADDR1302, 81H LCALL READCLOCK MOV A, DATA1302 ANL A, 70H MOV 3AH, A MOV A, DATA1302 ANL A, OFH MOV 3BH, A MOV R4, 6 顯示程序采用動(dòng)態(tài)顯示,由位碼控制那一個(gè)數(shù)碼管顯示,由段碼控 制數(shù)碼管顯示什么數(shù)值,根據(jù)中斷程序顯示時(shí)間來查表顯示數(shù)值,從第一位到第六位逐個(gè)點(diǎn)亮,同時(shí)每顯示一位判斷一次 六位顯示完 了嗎?沒有顯示完進(jìn)行顯示下一位,顯示完了從頭開始再循環(huán)。顯示子程序的流程圖如 圖 : 輸出一位段碼段碼左移一位取段碼地址指針設(shè)置輸出一個(gè)位移脈沖取位碼結(jié)束取段碼結(jié)束子程序返回開始 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 18 圖 顯示子程序流程圖 DESPLAY:MOV R2 ,01H ;將位碼送 R2 MOV R0,30 ;將段碼送 R0 NEXT3:MOV A,@R0 MOV DPTR,TAB2 MOVC A,@A+DPTR MOV P0,A ;將段碼送 R0 MOV P1,R2 ;將位碼送 R2 LCALL DELAY1 ;調(diào)用延時(shí)程序 MOV A, R2 JB ,U2 ;顯示完轉(zhuǎn) U2 RL A ;未顯示完,將未碼左移 MOV R2,A ;將位碼重送、 R2中 INC R0 ; 指向 31H LJMP NEXT3 U2:RET ;顯示返回 DS1302 的寫時(shí)鐘程序模塊 DS1302的寫時(shí) 程序 : WRITECLOCK: NOP ; DS1302的寫時(shí)鐘程序,入口: ADDR1302作地址 : DATA1302作數(shù)據(jù) ;功能:在 ADDR地址單元中寫入 DATA 數(shù)據(jù) CLR CLK CLK RST。 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 19 NOP SETB RST MOV R3,ADDR1302 LCALL CLOCKOUT MOV R3, DATA1302 LCALL CLOCKOUT CLR RST SETB CLK RST 進(jìn)入按鍵程序,判斷有鍵按下嗎?沒有,則調(diào)用延時(shí)重新判斷,如果到了,調(diào)用延時(shí)去抖程序,再次判斷有鍵按下否,沒有則返回延時(shí)程序,如果有按鍵,則判斷鍵號(hào),堆棧,判斷鍵是否釋放,沒有,繼續(xù)判斷,釋放了,則輸入鍵號(hào)送往累加器 ,然后返回主程序。 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 20 開始返回輸入鍵號(hào) 閉合鍵釋放否判斷閉合鍵鍵 有鍵閉合否?調(diào)用子程序調(diào)用子程序有鍵閉合否?棧秒秒延時(shí)延時(shí)12號(hào) 圖 KEY: ACALL KS 。調(diào)用 KS 判斷有鍵按下嗎 JNZ K1 。有鍵按下則轉(zhuǎn)移 ACALL DL6ms 。無鍵按下則調(diào)用延時(shí)子程序 AJMP KEY 。延時(shí)返回 K1:ACALL DL6ms 。調(diào)用延時(shí)程序 、 定時(shí)器程序模塊 為定時(shí)器 T0 中斷服務(wù)子程序,主要是完成循環(huán)顯示。 定時(shí)器 T0 每隔 2ms 溢出中斷一次,則循環(huán)中斷 6 次,循環(huán)點(diǎn)亮 6 個(gè) LED 數(shù)碼濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 21 管各一次。系統(tǒng)使用 12MHZ 的晶振,定時(shí)器 0 工作方式 1,則 2ms 定時(shí)對(duì)應(yīng)的定時(shí)器初值可有下式計(jì)算得到: 定時(shí)時(shí)間 =( 216-定時(shí)器 T0 初值)( 12/振蕩周期) 因此,定時(shí)器 T0 初值 =0F830H,即 TH0=0F8H, TL0=30H,當(dāng)系統(tǒng)使用其他頻率的晶振時(shí),也可以由以上式計(jì)算相應(yīng)的定時(shí)器 T0 處治。 如單片機(jī)的主脈沖頻率為12MHZ ,經(jīng)過12分頻 方式 0 定時(shí)時(shí)間= 213 1 微秒= 毫秒 方式 1 定時(shí)時(shí)間= 216 1 微秒= 毫秒 秒鐘已經(jīng)超過了計(jì)數(shù)器的最大定時(shí)間,所以我們只有采用定時(shí)器和軟件 相結(jié)合的辦法才能解決這個(gè)問題,定時(shí)器需定時(shí) 50 毫秒,故T 0 工作于方式 1,定時(shí) 20 次,就可定時(shí)一秒。 定時(shí)器程序: T0TIMER: NOP PUSH ACC PUSH PSW SETB RS0 DJNZ DISCOUNT, T0TIMER1 MOV DIS COUNT , 6 MOV DUANADDR, 30H MOV WEI MA, 00100000B T0TIMER1: NOP MOV R0, DUANADDR MOV P2, 0 MOV A, @R0 MOV DPTR,TAB MOVC A,@A+DPTR MOV P0,A MOV P2,WEIMA INC R0 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 22 MOV A,WEIMA RR A MOV WEIMA,A MOV TH0,0F8H MOV TL1,30H POP PSW POP ACC 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 23 4 系 統(tǒng) 調(diào) 試 完成了硬件的設(shè)計(jì)、制作和軟件編程之后,要使系統(tǒng)能夠按設(shè)計(jì)意圖正常運(yùn)行,必須進(jìn)行系統(tǒng)調(diào)試。系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試兩個(gè)部分。不過,作為一個(gè)單片機(jī)系統(tǒng),其運(yùn)行是軟硬件相結(jié)合的,因此,軟硬件的調(diào)試也是絕對(duì)不可能分開的。 程序的調(diào)式應(yīng)一個(gè)模塊一個(gè)模塊地進(jìn)行,單獨(dú)調(diào) 試各功能子程序,檢驗(yàn)程序是否能夠?qū)崿F(xiàn)預(yù)期的功能,接口電路的控制是否正常等;最后逐步將各個(gè)子程序連接起來總調(diào)。聯(lián)調(diào)需要注意的是,各程序模塊間能否正確傳遞參數(shù),特別要注意各子程序的現(xiàn)場(chǎng)保護(hù)與恢復(fù)。調(diào)試的基本步驟如下: 通過偉福仿真軟件和 Keil軟件來驗(yàn)證程序。 打開偉福軟件模擬器,首先進(jìn)行仿真器設(shè)置,如下圖 、 所示:選擇 E6000/L 仿真器 —— POD8ISIP 仿真頭 ——選擇 8751CPU。然后再進(jìn)行通信設(shè)置、目標(biāo)文件以及語言的設(shè)置。最后點(diǎn)擊“好”,完成仿真器的設(shè)置。 圖 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 24 圖 在偉福軟件中輸入程序,進(jìn)行編譯, 有好幾處錯(cuò)誤程序沒有通過編譯,然后我就查找錯(cuò)誤的所在,一一更改之后終于通過編譯, 如下圖 所示:
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1