利用單片機(jī)打鈴器畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論