版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 一 題目 自動(dòng)打鈴器</p><p><b> 二 基本要求</b></p><p> 利用單片機(jī)的定時(shí)器設(shè)的一個(gè)時(shí)鐘,在每秒加1的計(jì)時(shí)過(guò)程中,都于規(guī)定的時(shí)間進(jìn)行比較,如果相等就進(jìn)行開(kāi)關(guān)電鈴,不等則返回</p><p> 畢業(yè)設(shè)計(jì)報(bào)告寫(xiě)作要求</p><p><b> 一、封面
2、</b></p><p><b> 二、內(nèi)容提要</b></p><p><b> 三、目錄</b></p><p><b> 四、正文</b></p><p> 1、概述所作題目的意義、本人所做的工作及系統(tǒng)的主要功能;</p><p&g
3、t; 2、硬件電路設(shè)計(jì)及描述;</p><p> 3、軟件設(shè)計(jì)流程及描述;</p><p><b> 4、源程序代碼。</b></p><p><b> 五 設(shè)計(jì)體會(huì)</b></p><p><b> 目錄</b></p><p> 一、引
4、言……………………………………….……..3</p><p> 二、單片機(jī)的結(jié)構(gòu)和說(shuō)明……………………………………4</p><p> 1.單片機(jī)的定義…………………………………….……4</p><p> 2.單片機(jī)的組成…………………………………….………4</p><p> 3.8051單片機(jī)的結(jié)構(gòu)和引腳說(shuō)明…………………………
5、4</p><p> 4.單片機(jī)的應(yīng)用特點(diǎn)…………………………………….…6</p><p> 三、總體設(shè)計(jì)方案…………………………………….………..6</p><p> 1.設(shè)計(jì)思路……………………………………….………..6</p><p> 2.硬件設(shè)計(jì)及引腳接線框圖……………………….………..7</p>&l
6、t;p> 四、設(shè)計(jì)原理分析………………………………………….…..8</p><p> 1.校時(shí)模式……………………………………………….…..8</p><p> 2.定時(shí)模式……………………………………………….…..8</p><p> 3.工作模式……………………………………………….…..8</p><p> 4.
7、存儲(chǔ)器93C46的相關(guān)介紹…………………………….…..8</p><p> 五、程序部分……………………………………..……8</p><p> 1.程序分為五部分…………………………………………..8</p><p> 2.部分寄存器及按鍵說(shuō)明…………………………………..8</p><p> 3.程序流程圖……………………………
8、…………….…..8</p><p> 4.程序清單…………………………………….…….…..12六、方案論證…………………………………….…….…….29</p><p> 七、總結(jié)與體會(huì)…………………………………….….…...28八、謝詞…………………………………….….…............28</p><p> 九、參考文獻(xiàn)……………………………
9、………………..…..29</p><p> 十、總電路圖……………………………………………..…..30</p><p><b> 自動(dòng)打鈴器</b></p><p> 摘要 文章介紹了一種以8051單片機(jī)為核心控制的并帶有數(shù)碼LED顯示時(shí).分.秒和以指示燈做標(biāo)志的按鍵校時(shí)自動(dòng)打鈴器。</p><p><
10、b> 一、引言</b></p><p> 單片機(jī)自1976年由Intel公司推出MCS-48開(kāi)始,迄今已有二十多年了。由于單片機(jī)集成度高、功能強(qiáng)、可靠性高、體積小、功耗地、使用方便、價(jià)格低廉等一系列優(yōu)點(diǎn),目前已經(jīng)滲入到人們工作和生活的方方面面,幾乎“無(wú)處不在,無(wú)所不為”。單片機(jī)的應(yīng)用領(lǐng)域已從面向工業(yè)控制、通訊、交通、智能儀表等迅速發(fā)展到家用消費(fèi)產(chǎn)品、辦公自動(dòng)化、汽車(chē)電子、PC機(jī)外圍以及網(wǎng)絡(luò)通
11、訊等廣大領(lǐng)域。 按照內(nèi)部數(shù)據(jù)通道的寬度,單片機(jī)可分為4位、8位、16位及32位等。單片機(jī)的中央處理器(CPU)和通用微處理器基本相同,只是增設(shè)了“面向控制”的處理功能。例如:位處理、查表、多種地址訪問(wèn)方式、多種跳轉(zhuǎn)、乘除法運(yùn)算、狀態(tài)監(jiān)測(cè)、中斷處理等,增強(qiáng)了實(shí)時(shí)性。 單片機(jī)有兩種基本結(jié)構(gòu)形式:一種是在通用微型計(jì)算機(jī)中廣泛采用的,將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合用一個(gè)存儲(chǔ)器空間的結(jié)構(gòu),稱為普林斯頓(Princeton)結(jié)構(gòu)。另一種是將程序
12、存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開(kāi),分別尋址的結(jié)構(gòu),一般需要較大的程序存儲(chǔ)器,目前的單片機(jī)以采用程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開(kāi)的結(jié)構(gòu)為多。 單片微型計(jì)算機(jī)自從問(wèn)世以來(lái),作為微型計(jì)算機(jī)一個(gè)很重要的分支,應(yīng)用廣泛,</p><p> 二、單片機(jī)的結(jié)構(gòu)和說(shuō)明</p><p><b> ?。?單片機(jī)的定義</b></p><p> 單片微型計(jì)算機(jī)(S
13、ingle-Chip Microcomputer),簡(jiǎn)稱單片機(jī)。就是將微處理器(CPU)、存儲(chǔ)器(存放程序或數(shù)據(jù)的ROM和RAM)、總線、定時(shí)器/計(jì)數(shù)器、輸入/輸出接口(I/O口)和其他多種功能器件集成在一塊芯片上的微型計(jì)算機(jī)。</p><p><b> 2.單片機(jī)的組成</b></p><p> 單片機(jī)是由中央處理器(即CPU中的運(yùn)算器和控制器)、只讀存貯器(通
14、常表示為ROM)、讀寫(xiě)存貯器(又稱隨機(jī)存貯器通常表示為RAM)、輸入/輸出口(又分為并行口和串行口,表示為I/O口)等等組成。</p><p> 3.8051單片機(jī)的結(jié)構(gòu)和引腳說(shuō)明</p><p> 51系列單片機(jī)8031、8051及89c51/89s51均采用40Pin封裝的雙列直接DIP結(jié)構(gòu)。下圖是它們的引腳配置:40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位
15、共32個(gè)I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:</p><p> Pin20:接地腳。Pin40:正電源腳,工作時(shí),接+5V電源。Pin19:時(shí)鐘XTAL1腳,片內(nèi)振蕩電路的輸入端。Pin18:時(shí)鐘XTAL2腳,片內(nèi)振蕩電路的輸出端。 8051的時(shí)鐘有兩種方式,一種是片內(nèi)時(shí)鐘振蕩方式,但需在18和19腳外接石英晶體(2-12MHz)和振蕩電容,振蕩電容的值一般取10p-3
16、0p。另外一種是外部時(shí)鐘方式,即將XTAL1接地,外部時(shí)鐘信號(hào)從XTAL2腳輸入。</p><p> 輸入輸出(I/O)引腳:</p><p> Pin39-Pin32為P0.0-P0.7輸入輸出腳。 </p><p> Pin1-Pin8為P1.0-P1.7輸入輸出腳。 </p><p> Pin21-Pin28為P2.0-P2.7
17、輸入輸出腳。 </p><p> Pin10-Pin17為P3.0-P3.7輸入輸出腳。 </p><p> Pin9:RESET/Vpd復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。 </p><p> 8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,見(jiàn)下圖。此外,RESET/Vpd還
18、是一復(fù)用腳,Vcc掉電期間,此腳可接上備用電源, 以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。 </p><p> Pin30:ALE/ 當(dāng)訪問(wèn)外部程序器時(shí),ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問(wèn)內(nèi)部程序存儲(chǔ)器時(shí),ALE端將有一個(gè)1/6時(shí)鐘頻率的正脈沖信號(hào),這個(gè)信號(hào)可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。如果單片機(jī)是EPROM,在編程其間, 將用于輸入編程脈沖。Pin29: 當(dāng)訪問(wèn)外
19、部程序存儲(chǔ)器時(shí),此腳輸出負(fù)脈沖選通信號(hào),PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。Pin31:EA/Vpp程序存儲(chǔ)器的內(nèi)外部選通線,8051和8751單片機(jī),內(nèi)置有4kB的程序存儲(chǔ)器,當(dāng)EA為高電平并且程序地址小于4kB時(shí),讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù),而超過(guò)4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲(chǔ)器指令。</p>&l
20、t;p> 4.單片機(jī)的應(yīng)用特點(diǎn)</p><p> 單片機(jī)的主要特點(diǎn)有:(1)可靠性高(2)便于擴(kuò)展(3)控制功能強(qiáng)(4)低電壓、低功耗(5)片內(nèi)存儲(chǔ)容量較小,除此之外,單片機(jī)還具有集成度高、體積小、性價(jià)比高、應(yīng)用廣泛、易于產(chǎn)品化等特點(diǎn)</p><p><b> 三、總體設(shè)計(jì)方案</b></p><p><b> ?。?設(shè)計(jì)
21、思路</b></p><p> 利用單片機(jī)及定時(shí)器設(shè)計(jì)的一個(gè)時(shí)鐘,在每次秒加1的計(jì)時(shí)過(guò)程中,都與規(guī)定的時(shí)間作比較,如果相等就進(jìn)行開(kāi)關(guān)電鈴,不等則返回。</p><p> 2.硬件設(shè)計(jì)及引腳接線框圖</p><p><b> 四、設(shè)計(jì)原理分析</b></p><p><b> 1.校時(shí)模式&l
22、t;/b></p><p> 按下K1(模式選擇鍵),將模式選擇為校時(shí)模式(模式指示燈黃燈亮),K2,K3,K4分別為時(shí)鐘加1鍵,分鐘加1鍵,秒鐘加1鍵,K5無(wú)用。</p><p><b> 2.定時(shí)模式</b></p><p> 按下K1(模式選擇鍵),將模式選擇為定時(shí)模式(模式指示燈綠燈亮),K2為定時(shí)器組選擇(本裝置有24組定
23、時(shí)器)鍵,K3,K4分別為定時(shí)器時(shí)鐘加1鍵和定時(shí)器分鐘加1鍵,K5為定時(shí)器狀態(tài)</p><p> 選擇鍵,每按K5一次,此組的定時(shí)器狀態(tài)改變一次,并將此組數(shù)據(jù)存入93C46</p><p><b> 中。</b></p><p><b> 3.工作模式</b></p><p> 按下K1(模
24、式選擇鍵),將模式選擇為工作模式(模式指示燈紅燈亮),K2,K3,K4,K5無(wú)用。此模式為正常工作模式</p><p> 4.存儲(chǔ)器93C46的相關(guān)介紹</p><p> 存儲(chǔ)器AT93C46為SPI接口,1腳為CS,2腳為CLK,3腳為DI,4腳為DO,5腳為GND,6腳為ORG,7腳為NC,8腳為VCC。單5V電壓,DIP8,64*16(ORG為HI)或128*8(ORG為L(zhǎng)O),
25、芯片及字的清除,時(shí)鐘最高為250KHZ。讀(READ)操作:當(dāng)下達(dá)10XXXX指令后,將地址(XXXXXX)的數(shù)據(jù)在CLK=HI時(shí)由DO輸出。寫(xiě)(WRITE)操作:在寫(xiě)入之前,必須先下達(dá)寫(xiě)使能(EWEN)指令,然后在下達(dá)01XXXXXX指令后,當(dāng)CLK為HI時(shí),在把數(shù)據(jù)寫(xiě)入指定的地址(XXXXXX),而DO=0時(shí),表示還在燒寫(xiě),燒寫(xiě)完成后,DO會(huì)轉(zhuǎn)為HI,寫(xiě)入動(dòng)作完成后,必須再下達(dá)寫(xiě)禁止(ENDS)</p><p&g
26、t; 指令。寫(xiě)使能(EWEN):下達(dá)0011XXXX指令后,才可進(jìn)行寫(xiě)入(WRITE)的數(shù)據(jù)清除。寫(xiě)禁止(EWDS):</p><p><b> 五、程序部分</b></p><p><b> 1.程序分為五部分</b></p><p> 1.初始化程序,2.鍵值處理程序,3.中斷程序,4.顯示程序,5.存儲(chǔ)器93
27、C46讀寫(xiě)程序</p><p> 2.部分寄存器及按鍵說(shuō)明</p><p> 28H:掃描指針寄存器</p><p> 20H--25H:顯示緩存寄存器</p><p><b> R6:時(shí)鐘寄存器</b></p><p><b> R5:分鐘寄存器</b></
28、p><p><b> R4:秒鐘寄存器</b></p><p><b> K1:模式選擇鍵</b></p><p> K2:時(shí)加1(定時(shí)器組加1)鍵</p><p> K3:分加1(定時(shí)器時(shí)加1)鍵</p><p> K4:秒加1(定時(shí)器分加1)鍵</p>
29、<p> K5:定時(shí)器狀態(tài)改變既存儲(chǔ)鍵</p><p><b> 3程序流程圖</b></p><p> 圖3 總體軟件流程圖</p><p> 圖4 校時(shí)及顯示流程圖</p><p> 圖5 校分及顯示流程圖</p><p><b> 4.程序清單</b&
30、gt;</p><p><b> 1.初始化程序:</b></p><p> READ EQU 0 ;讀93C46</p><p> WRITE EQU 2 ;寫(xiě)入93C46</p><p> EWEN EQU 4 ;93C46寫(xiě)入使能</p><p> EWDS EQU 6 ;93C4
31、6寫(xiě)入禁止</p><p> ADR46 EQU 21H ;93C46地址</p><p> THIGH EQU 0F8H</p><p> TLOW EQU 5FH</p><p> TIMENEQU 30 ;打鈴持續(xù)時(shí)間(30秒)</p><p> CS BIT P3.7 ;93C46CS</p&g
32、t;<p> CLK BIT P3.6 ;93C46CLK</p><p> DI BIT P3.5 ;93C46DI</p><p> DO BIT P3.4 ;93C46DO</p><p> ORG 0000H ;主程序起始地址</p><p> AJMP START ;跳至主程序</p><
33、p> ORG 000BH ;TIMER0中斷起始地址</p><p> AJMP TIM0 ;跳至TIMER0中斷子程序</p><p> START:MOV SP,#60H ;設(shè)置堆棧在60H</p><p> MOV 28H,#00 ;顯示寄存器初值為00</p><p> MOV R6,#12H ; ?時(shí)?寄存器值為12
34、H</p><p> MOV R5,#00H ;“分”寄存器值為00H</p><p> MOV R4,#00H ;“秒”寄存器值為00H</p><p> MOV TMOD,#01H ;設(shè)TIMER0為MODE1</p><p> MOV TH0,#THIGH ;計(jì)時(shí)中斷為4000微秒</p><p> M
35、OV TL0,#TLOW</p><p> MOV IE,#82 ;TIMER中斷使能</p><p> MOV R2,#250 ;中斷250次</p><p> SETB TR0 ;啟動(dòng)TIMER0</p><p><b> 2.鍵值處理程序:</b></p><p> LOOP: S
36、ETB P0.5 ;工作模式</p><p><b> CLR P0.6</b></p><p><b> CLR P0.7</b></p><p> JB P0.0,N1 ;K1(模式選擇鍵)按了?不是則跳至N1</p><p> ACALL DELAY ;消除抖動(dòng)</p>
37、<p> JNB P0.0,$ ;K1(模式選擇鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> AJMP SET ;轉(zhuǎn)到定時(shí)模式SET</p><p> N1: MOV 2FH,R6 ;將時(shí)鐘數(shù)據(jù)載入2FH中</p><p> MOV 2EH,R5 ;將分鐘數(shù)據(jù)載入2EH中</p
38、><p> MOV ADR46,#00 ;把93C46地址置0</p><p> SETB RS0 ;將工作寄存器組選擇1區(qū)</p><p> LOOP1: MOV A,#READ ;讀93C46</p><p> ACALL TO93c46</p><p> MOV A,R3 ;取出定時(shí)器的狀態(tài)</p&g
39、t;<p> ANL A,#01H</p><p> CJNE A,#01H,N2 ;定時(shí)器為關(guān)閉,則跳轉(zhuǎn)至N2</p><p> MOV A,R4 ;取出定時(shí)器分鐘數(shù)據(jù)</p><p> CJNE A,2FH,N2 ;定時(shí)器分鐘數(shù)據(jù)與時(shí)鐘分鐘不同則轉(zhuǎn)至N2</p><p> MOV A,R5 ;取出定時(shí)器時(shí)鐘數(shù)據(jù)&l
40、t;/p><p> CJNE A,2EH,N2 ;定時(shí)器時(shí)鐘數(shù)據(jù)與時(shí)鐘時(shí)鐘不同則轉(zhuǎn)至N2</p><p> SETB P2.1 ;定時(shí)器時(shí)間到,打鈴</p><p> MOV A,ADR46 ;將93C46地址載入A中</p><p> N2: CJNE A,#1EH,N3 ;到定時(shí)器數(shù)據(jù)表表尾?沒(méi)到轉(zhuǎn)至N3</p><
41、;p> MOV ADR46,#00 ;到表尾,置93C46地址為表頭</p><p> AJMP LOOP1 ;轉(zhuǎn)至LOOP1</p><p> N3: INC ADR46 ;93C46地址加2</p><p><b> INC ADR46</b></p><p> AJMP LOOP1 ;轉(zhuǎn)至LOOP1
42、</p><p> SET: CLR P0.5 ;校時(shí)模式</p><p><b> SETB p0.6</b></p><p><b> CLR P0.7</b></p><p> LOOPS: JB P0.0,N11 ;K1(模式選擇鍵)按了?不是則跳至N11</p>&l
43、t;p> ACALL DELAY ;消除抖動(dòng)</p><p> JNBP0.0,$ ;K1(模式選擇鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> AJMP SETTIME ;轉(zhuǎn)至SETTIME</p><p> N11: JB P0.1,N13 ;K2(時(shí)鐘加1鍵)按了?不是則跳至N13
44、</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> MOV A,R6 ;將時(shí)寄存器的值載入A</p><p> ADD A,#01H ;A內(nèi)容加1</p><p> DA A ;做十進(jìn)制調(diào)整</p><p> MOV R6,A ;將A的值存入時(shí)寄存器</p><p&g
45、t; CJNE A,#24H,N12 ;是否超過(guò)24時(shí)?不是則跳至N12</p><p> MOV R6,#00H ;是則清除時(shí)寄存器的值為00</p><p> N12: JNB P0.1,$ ;K2(時(shí)鐘加1鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> N13: JB P0.2,N15 ;
46、K3(分鐘加1鍵)按了?不是則跳至N15</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> MOV A,R5 ;將分寄存器的值載入A</p><p> ADD A,#01 ;A內(nèi)容加1</p><p> DA A ;做十進(jìn)制調(diào)整</p><p> MOV R5,A ;將A的值存入分寄存器
47、</p><p> CJNE A,#60H,N14 ;是否超過(guò)60分?不是則跳至N14</p><p> MOV R5,#00H ;是則清除分寄存器的值為00</p><p> N14: JNB P0.2,$ ;K3(分鐘加1鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p>
48、 N15: JB P0.3,N17 ;K4(秒鐘加1鍵)按了?不是則跳至N17</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> MOV A,R4 ;將秒寄存器的值載入A</p><p> ADD A,#01 ;A內(nèi)容加1</p><p> DA A ;做十進(jìn)制調(diào)整</p><p> M
49、OV R4,A ;將A的值存入秒寄存器</p><p> CJNE A,#60H,N16 ;是否超過(guò)60秒?不是則跳至N16</p><p> MOV R4,#00 ;是則清除分寄存器的值為00</p><p> N16: JNB P0.3,$ ;K4(秒鐘加1鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)<
50、/p><p> N17: AJMP LOOPS ;轉(zhuǎn)至LOOPS</p><p> SETTIME:CLR P0.5 ;定時(shí)模式</p><p><b> CLR P0.6</b></p><p><b> SETB P0.7</b></p><p> MOV ADR4
51、6,#00H</p><p> MOV A,#READ ;讀93C46地址為ADR46中的數(shù)據(jù)</p><p> ACALL TO9346</p><p> LOOPB:ACALL DISP ;調(diào)用DISP</p><p> JB P0.0,N21 ;K1(模式選擇鍵)按了?不是則跳至N21</p><p>
52、 ACALL DELAY ;消除抖動(dòng)</p><p> JNB P0.0,$ ;K1(模式選擇鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> AJMP LOOP ;轉(zhuǎn)至LOOP</p><p> N21: JB P0.1,N22 ;K2(定時(shí)器組加1鍵)按了?不是則跳至N22</p>
53、<p> ACALL DELAY ;消除抖動(dòng)</p><p> MOV A,ADR46 ;將地址載入A</p><p> CLR C ;清除進(jìn)位位</p><p> RRC A ;A右移1位</p><p> ADD A,#01H ;地址加1</p><p> MOV R6,A ;將A存入R6&
54、lt;/p><p> CLR C ;清除進(jìn)位位</p><p> RLC A ;A左移1位</p><p> MOV ADR46,A ;將A中地址存入ADR46</p><p> MOV A,#READ ;讀93C46地址為ADR46中的數(shù)據(jù)</p><p> ACALL TO9346</p>&l
55、t;p> JNB P0.1,$ ;K2(定時(shí)器組加1鍵)放開(kāi)了?</p><p> ACALLDELAY ;消除抖動(dòng)</p><p> N22: JB P0.2,N24 ;K3(定時(shí)器分鐘加1鍵)按了?不是則跳至N24</p><p> ACALLDELAY ;消除抖動(dòng)</p><p> MOV A,R4 ;將定時(shí)器分寄存器的
56、值載入A</p><p> ADD A,#01 ;A內(nèi)容加1</p><p> DA A ;做十進(jìn)制調(diào)整</p><p> MOV R4,A ;將A的值存入定時(shí)器分寄存器</p><p> CJNE A,#60H,N23 ;是否超過(guò)60分?不是則跳至N16</p><p> MOV R4,#00H ;是則清除
57、分寄存器的值為00</p><p> N23: JNB P0.2,$ ;K3(定時(shí)器分鐘加1鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> N24: JB P0.3,N26 ;K4(定時(shí)器時(shí)鐘加1鍵)按了?不是則跳至N26</p><p> ACALL DELAY ;消除抖動(dòng)</p>
58、<p> MOV A,R5 ;將定時(shí)器時(shí)寄存器的值載入A</p><p> ADD A,#01H ;A內(nèi)容加1</p><p> DA A ;做十進(jìn)制調(diào)整</p><p> MOV R5,A ;將A的值存入定時(shí)器時(shí)寄存器</p><p> CJNE A,#24H,N25 ;是否超過(guò)24時(shí)?不是則跳至N25</p&g
59、t;<p> MOV R5,#00 ;是則清除分寄存器的值為00</p><p> N25:JNB P0.3,$ ;K4(定時(shí)器時(shí)鐘加1鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> N26:JB P0.4,N27 ;K5(改變定時(shí)器狀態(tài)存儲(chǔ)鍵)按了?不是則跳至N27</p><p>
60、; ACALL DELAY ;消除抖動(dòng)</p><p> INC R3 ;改變R3最低位的值(表示定時(shí)器的狀態(tài),1表示開(kāi),0</p><p><b> 表示關(guān))</b></p><p> MOV A,#WRITE ;將A的值寫(xiě)入93C46地址為ADR46中</p><p> ACALL TO9346</p
61、><p> JNB P0.4,$ ;K5(改變定時(shí)器狀態(tài)存儲(chǔ)鍵)放開(kāi)了?</p><p> ACALL DELAY ;消除抖動(dòng)</p><p> N27:AJMP LOOPB ;轉(zhuǎn)至LOOPB</p><p> 3.讀寫(xiě)93C46程序:</p><p> TO9346:SETB CS ;CS=1</p>
62、;<p> SETB DI ;DI=1</p><p> SETB CLK ;CLK=1</p><p> ACALL DELAY</p><p> CLR CLK ;CLK=0</p><p> ACALL DELAY</p><p> MOV DPTR,#JPTBL46</p>
63、<p> JMP @A+DPTR;</p><p> JPTBL46:AJMPSREAD ;讀</p><p> AJMP SWRITE ;寫(xiě)</p><p> AJMP SEWEN ;寫(xiě)使能</p><p> AJMP SEWDS ;寫(xiě)禁止</p><p> SREAD: MOV A,ADR
64、46 ;地址載入A</p><p> ADD A,#80H ;10XXXX讀指令</p><p> ACALL SDT46 ;讀入地址</p><p> ACALL RDT46 ;讀定時(shí)器時(shí)鐘數(shù)據(jù)</p><p> MOV R5,A ;存入R5</p><p> ACALL RDT46 ;讀定時(shí)器分鐘數(shù)據(jù)&l
65、t;/p><p> MOV R4,A ;存入R4</p><p> INC ADR46 ;地址加1</p><p> MOV A,ADR46 ;地址載入A</p><p> ADD A,#80H ;10XXXX讀指令</p><p> ACALL SDT46 ;讀入地址</p><p>
66、 ACALL RDT46 ;讀定時(shí)器狀態(tài)數(shù)據(jù)</p><p> ACALL RDT46</p><p><b> DEC ADR46</b></p><p> MOV R3,A ;存入R3</p><p> AJMP EX9346</p><p> SWRITE:MOVA,ADR46 ;
67、寫(xiě)入地址載入A</p><p> ADD A,#40H ;01XXXX寫(xiě)指令</p><p> ACALL SDT46 ; 載入地址</p><p> MOV A,R5 ;載入定時(shí)器時(shí)鐘數(shù)據(jù)</p><p> ACALL SDT46 ;寫(xiě)入定時(shí)器時(shí)鐘數(shù)據(jù)</p><p> MOV A,R4 ;載入定時(shí)器分鐘數(shù)
68、據(jù)</p><p> ACALL SDT46 ;寫(xiě)入定時(shí)器分鐘數(shù)據(jù)</p><p> INC ADR46 ;地址加1</p><p> MOV A,ADR46 ;寫(xiě)入地址載入A</p><p> ADD A,#40H ;01XXXX寫(xiě)指令</p><p> ACALL SDT46 ;載入地址</p>
69、;<p> MOV A,R3 ;載入定時(shí)器狀態(tài)數(shù)據(jù)</p><p> DEC ADR46 ;地址減1</p><p> ACALL ADR46 ;寫(xiě)入定時(shí)器狀態(tài)數(shù)據(jù)</p><p> AJMP EX9346 ;轉(zhuǎn)至EX9346</p><p> SEWEN:MOVA,#30H ;0011XXXX寫(xiě)使能指令</p&
70、gt;<p> ACALL SDT46</p><p> AJMP EX9346</p><p> SEWDS:CLR A ;0000XXXX寫(xiě)禁止指令</p><p> ACALL SDT46</p><p> EX9346:CLRCS ;CS=0</p><p><b> RET
71、</b></p><p> SDT46:MOV R2,#8 ;寫(xiě)入8位數(shù)據(jù)</p><p> SD1: RLC A</p><p><b> MOV DI,C</b></p><p><b> SETB CLK</b></p><p> ACALL DE
72、LAY</p><p><b> CLR CLK</b></p><p> ACALL DELAY</p><p> DJNZ R2,SD1</p><p><b> RET</b></p><p> RDT46:MOV R2,#8 ;讀出8位數(shù)據(jù)</p>
73、;<p> RD1: SETB CLK</p><p> ACALL DELAY</p><p><b> CLR CLK</b></p><p> ACALL DELAY</p><p><b> MOV C,DO</b></p><p><b
74、> RLC A</b></p><p> DJNZ R2,RD1</p><p><b> RET</b></p><p> DELAY:MOVR7,#0FH ;</p><p><b> DJNZ R7,$</b></p><p><b&g
75、t; RET</b></p><p><b> 4.中斷程序:</b></p><p> TIM0:MOV TH0,#THIGH ;重設(shè)計(jì)時(shí)4000微秒</p><p> MOV TL0,#TLOW</p><p> PUSH ACC ;將A的值存入堆棧</p><p>
76、PUSH PSW ;將PSW的值存入堆棧</p><p> CLR RS0 ;設(shè)置工作寄存器為0區(qū)</p><p> DJNZ R2,X2 ;計(jì)時(shí)1秒</p><p> MOV R2,#250</p><p> ACALL CLOCK ;調(diào)用計(jì)時(shí)子程序CLOCK</p><p> ACALL DISP ;調(diào)用
77、顯示子程序</p><p> X2:ACALL SCAN ;調(diào)用掃描子程序</p><p><b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> RETI</b></p><p><b
78、> 顯示器驅(qū)動(dòng)程序:</b></p><p> SCAN:MOV R0,#28H ;(28H)為掃描指針</p><p> INC @R0 ;掃描指針加1</p><p> CJNE @R0,#6,X3 ;掃描完6個(gè)顯示器?不是跳至X3</p><p> MOV @R0,#00 ;是則掃描指針為0</p>
79、;<p> X3:MOV A,@R0 ;掃描指針載入A</p><p> ADD A,#20 ;A加常數(shù)20H(顯示寄存器地址)=各時(shí)間顯示區(qū)地址</p><p> ;存入R1=各時(shí)間顯示地址</p><p> MOV R1,A ;掃描指針存入A</p><p> MOV A,@R0 ;將A高低4位交換(P1高4位為掃
80、描值,</p><p> SWAP A ;低4位為顯示數(shù)據(jù)值)</p><p> ORL A,@R1 ;掃描值+顯示值</p><p> MOV R1,A ;輸出至P1</p><p><b> RET</b></p><p><b> 計(jì)時(shí)程序:</b></
81、p><p> CLOCK:MOV A,R4 ;R4為秒寄存器</p><p> ADD A,#01 ;加1</p><p> DA A ;做十進(jìn)制調(diào)整</p><p> MOV R4,A ;存入秒寄存器</p><p> CJNE A,#TIMEN,X4 ;是否超過(guò)打零連續(xù)時(shí)間?不是則跳至X4</p>
82、<p> CLR P2.0 ;關(guān)鈴</p><p> X4:CJNE A,#60H,X5 ;是否超過(guò)60秒?不是則跳至X5</p><p> MOV R4,#00 ;是則清除為0</p><p> MOV A,R5 ;R5為分寄存器</p><p> ADD A,#01 ;加1</p><p>
83、 DA A ;做十進(jìn)制調(diào)整</p><p> MOV R5,A ;存入分寄存器</p><p> CJNE A,#60H,X5 ;是否超過(guò)60分?不是則跳至X5</p><p> MOV R5,#00 ;是則清除為0</p><p> MOV A,R6 ;R6為時(shí)寄存器</p><p> ADD A,#01
84、 ;加1</p><p> DA A ;做十進(jìn)制調(diào)整</p><p> MOV R6,A ;存入時(shí)寄存器</p><p> CJNEA,#60H,X5 ;是否超過(guò)24時(shí)?不是則跳至X5</p><p> MOV R6,#00 ;是則清除為0</p><p><b> X5:RET</b>
85、</p><p><b> 5.顯示程序:</b></p><p> DISP:MOVR1,#20 ;(20H)為顯示寄存器,R1=20H</p><p> MOV A,R6 ;將時(shí)寄存器的內(nèi)容存入A</p><p> MOV B,#01H ;設(shè)B累加器的值為10H</p><p> D
86、IV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個(gè)位數(shù))存入B</p><p> MOV @R1,B ;將B的內(nèi)容存入(20H)</p><p> INC R1 ;R1=21H</p><p> MOV @R1,A ;將A的內(nèi)容存入(21H)</p><p> INC R1 ;R1=22H</p><p>
87、MOV A,R5 ;將分寄存器的內(nèi)容存入A</p><p> MOV B,#01H ;設(shè)B累加器的值為10H</p><p> DIV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個(gè)位數(shù))存入B</p><p> MOV @R1,B ;將B的內(nèi)容存入(22H)</p><p> INC R1 ;R1=23H</p><
88、;p> MOV @R1,A ;將A的內(nèi)容存入(23H)</p><p> INC R1 ;R1=24H</p><p> MOV A,R4 ;將秒寄存器的內(nèi)容存入A</p><p> MOV B,#01H ;設(shè)B累加器的值為10H</p><p> DIV AB ;A/B,商(十位數(shù))存入A,余數(shù)(個(gè)位數(shù))存入B</p&
89、gt;<p> MOV @R1,B ;將B的內(nèi)容存入(24H)</p><p> INC R1 ;R1=25H</p><p> MOV @R1,A ;將A的內(nèi)容存入(25H)</p><p><b> RET</b></p><p><b> END</b></p&g
90、t;<p><b> 六、方案論證</b></p><p> 在現(xiàn)行系統(tǒng)中,大多數(shù)采用單片機(jī)控制,其精度遠(yuǎn)遠(yuǎn)大于繼電器,響應(yīng)時(shí)間短,軟件可靠性高 不會(huì)因?yàn)楣ぷ鲿r(shí)間緣故而降低其性能,相比而言,本方案具有很高的可行性.</p><p><b> 七、總結(jié)與體會(huì)</b></p><p> 經(jīng)過(guò)近二個(gè)月的努力
91、,在老師和同學(xué)的幫助下,我基本上完成了設(shè)計(jì)任務(wù).通過(guò)這次課程設(shè)計(jì),我充分認(rèn)識(shí)到了自學(xué)的重要性,以及學(xué)以致用的道理.我在圖書(shū)館查閱了大量的資料,同時(shí)也認(rèn)識(shí)到了圖書(shū)館的重要作用.在今后的學(xué)習(xí)過(guò)程中,應(yīng)該多到圖書(shū)館看一些專業(yè)方面的書(shū)籍,以豐富自己的知識(shí).也使我加深了對(duì)單片機(jī)知識(shí)的了解和應(yīng)用和對(duì)線路CAD 的理解和應(yīng)用.由于知識(shí)水平的局限和時(shí)間的倉(cāng)促,設(shè)計(jì)中可能會(huì)存在著一些不足,我真誠(chéng)的接受老師和同學(xué)的批評(píng)和指正.最后衷心感謝老師的悉心指導(dǎo)和同
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 利用單片機(jī)打鈴器畢業(yè)論文設(shè)計(jì)
- 畢業(yè)論文--基于單片機(jī)的打鈴系統(tǒng)
- 畢業(yè)論文--基于單片機(jī)的打鈴系統(tǒng)
- 單片機(jī)自動(dòng)打鈴系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的定時(shí)打鈴設(shè)計(jì)-本科畢業(yè)論文
- 畢業(yè)設(shè)計(jì)--單片機(jī)自動(dòng)打鈴系統(tǒng)論文
- 單片機(jī)搶答器畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的定時(shí)打鈴器設(shè)計(jì)
- 基于at89s52單片機(jī)的校園打鈴系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的自動(dòng)打鈴器的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)論文 --單片機(jī)定時(shí)器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)單片機(jī)自動(dòng)打鈴系統(tǒng)論文定稿
- 單片機(jī)畢業(yè)論文8
- 單片機(jī)秒表畢業(yè)論文
- 畢業(yè)設(shè)計(jì)單片機(jī)自動(dòng)打鈴系統(tǒng)論文定稿
- 單片機(jī)無(wú)線搶答器設(shè)計(jì)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論