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