單片機(jī)課程設(shè)計(jì)--單片機(jī)模擬電子時鐘設(shè)計(jì)_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  單片機(jī)課程設(shè)計(jì)</b></p><p>  課題:單片機(jī)模擬電子時鐘設(shè)計(jì)</p><p><b>  目 錄</b></p><p><b>  一、前言3</b></p><p><b>  二、設(shè)計(jì)目的3</b>&l

2、t;/p><p>  三、設(shè)計(jì)任務(wù)與要求3</p><p><b>  四、設(shè)計(jì)原理3</b></p><p>  五、總體設(shè)計(jì)方案4</p><p><b>  1、硬件電路圖4</b></p><p>  (1)、總電路圖4</p><p>

3、<b>  (2)、電源5</b></p><p><b>  (3)、晶振5</b></p><p><b> ?。?)、LED5</b></p><p><b> ?。?)、復(fù)位6</b></p><p><b> ?。?)、蜂鳴器

4、6</b></p><p><b> ?。?)、按鍵6</b></p><p><b> ?。?)、串行口7</b></p><p><b> ?。?)、單片機(jī)7</b></p><p>  (10)、數(shù)碼管8</p><p><

5、;b>  2、程序編寫10</b></p><p>  六、小結(jié)與展望21</p><p><b>  七、致謝22</b></p><p>  八、主要參考文獻(xiàn)22</p><p><b>  一、前言</b></p><p>  在當(dāng)今的工作和生

6、活環(huán)境中,有越來越多的單片機(jī)在為人們服務(wù),例如電視遙控、手機(jī)、洗衣機(jī)、空調(diào)等,單片機(jī)幾乎無所不在,學(xué)習(xí)單片微型計(jì)算機(jī)這門課程,就是為了對單片微型計(jì)算機(jī)有進(jìn)一步感性的認(rèn)識,了解、掌握、應(yīng)用,甚至設(shè)計(jì)開發(fā)它。讓我們能綜合運(yùn)用單片機(jī)的軟、硬件技術(shù)分析實(shí)際問題,為工業(yè)生產(chǎn)、科學(xué)研究和實(shí)驗(yàn)設(shè)備等領(lǐng)域的單片機(jī)應(yīng)用和開發(fā)打下良好的基礎(chǔ)。</p><p><b>  二、設(shè)計(jì)目的</b></p>

7、<p>  通過《單片微型計(jì)算機(jī)原理與接口技術(shù)教程》了解單片微型計(jì)算機(jī)的發(fā)展;</p><p>  根據(jù)課程設(shè)計(jì)的要求,學(xué)會用匯編語言設(shè)計(jì)程序,學(xué)會應(yīng)用程序設(shè)計(jì)調(diào)試軟件;</p><p>  通過調(diào)試程序設(shè)計(jì)模塊,掌握單片微型計(jì)算機(jī)的結(jié)構(gòu)原理,了解程序設(shè)計(jì)的編程思想;</p><p>  通過軟件調(diào)試熟悉使用單片機(jī)指令系統(tǒng),掌握匯編語言程序設(shè)計(jì)方法及編

8、程技巧,掌握子程序的設(shè)計(jì)與使用,熟悉中斷服務(wù)程序的設(shè)計(jì)及調(diào)用過程。</p><p><b>  三、設(shè)計(jì)任務(wù)與要求</b></p><p>  任務(wù):利用單片機(jī)定時功能實(shí)現(xiàn)電子時鐘的計(jì)時</p><p>  要求:1.設(shè)計(jì)單片機(jī)電子時鐘設(shè)計(jì)控制方案,功能設(shè)計(jì);</p><p>  2.詳細(xì)描述實(shí)現(xiàn)需要的硬件,效果等;&l

9、t;/p><p>  3.編寫匯編語言程序設(shè)計(jì),在KEIL仿真實(shí)現(xiàn)調(diào)試程序;</p><p><b>  四、設(shè)計(jì)原理</b></p><p>  單片機(jī)可以利用定時功能實(shí)現(xiàn)電子時鐘的計(jì)時。設(shè)計(jì)時利用單片機(jī)的定時器作為時鐘的基準(zhǔn),利用幾個單元作為時、分、秒的累計(jì)單元,秒到時,秒單元加1,直到59s時,分單元加1,依此類推,可完成年、月、日、時、分、

10、秒的計(jì)時工作。</p><p><b>  五、總體設(shè)計(jì)方案</b></p><p><b>  1、硬件電路圖</b></p><p><b> ?。?)總電路圖</b></p><p>  圖1 總硬件電路原理圖</p><p><b>

11、; ?。?)電源</b></p><p>  圖2 電源部分原理圖</p><p>  該電源接上USB口后可輸出一個+5V的直流電源。圖中C1為電解電容,有儲能緩沖作用。C2為一個濾波電容。而R1則為保護(hù)電阻,有限流作用。D1為電源工作指示燈。</p><p><b> ?。?)晶振</b></p><p&

12、gt;  圖3 晶振部分原理圖</p><p>  該振蕩電路可產(chǎn)生11.0952MHZ的頻率。XTAL1為輸入引腳,XTAL2為輸出引腳。Y1為振蕩器,C15、C16為微調(diào)電容,它們之間形成反饋電路,振蕩器即能工作。</p><p><b>  (4)LED</b></p><p>  圖4 LED接線圖</p><

13、;p>  該部分主要用來記秒,即每隔一秒,LED指示燈就閃爍一次。</p><p><b> ?。?)復(fù)位</b></p><p>  圖5 復(fù)位電路原理圖</p><p>  開關(guān)斷開時,復(fù)位鍵RST為低電平,不起作用;當(dāng)按下按鍵時,RST變?yōu)楦唠娖剑瑢⑵鹎辶阕饔谩?lt;/p><p><b> ?。?)

14、蜂鳴器</b></p><p>  圖6 蜂鳴器電路原理圖</p><p>  訪電路在T1口的驅(qū)動后,經(jīng)過Q1的放大,作用到BZ1上發(fā)出聲音,在設(shè)計(jì)中將用作整點(diǎn)報時。</p><p><b> ?。?)按鍵</b></p><p>  圖7 按鍵電路原理圖</p><p>  

15、這兩個按鍵在設(shè)計(jì)中分別用來調(diào)整時間和切換顯示內(nèi)容。</p><p><b> ?。?)串行口</b></p><p>  圖8 串行口電路原理圖</p><p>  該電路主要由MAX232芯片和它的外圍電路組成,可通過它與電腦的串口連接,將程序下載到單片機(jī)里。</p><p><b> ?。?)單片機(jī)&l

16、t;/b></p><p>  圖9 單片機(jī)引腳圖</p><p>  整個電路的主控芯片。</p><p><b>  (10)數(shù)碼管</b></p><p>  圖10 數(shù)碼管顯示電路原理圖</p><p>  該電路通過了二片74HC595芯片組成的電路去驅(qū)動4位的共陰數(shù)碼管顯

17、示時間。</p><p>  74HC595是一款具有8位移位寄存器和一個存儲器,三態(tài)輸出功能的驅(qū)動芯片。移位寄存器和存儲器分別具有獨(dú)立的時鐘信號。數(shù)據(jù)在SHCP的上升沿輸入,在STCP的上升沿進(jìn)入到存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(DS),和一個串行輸出(Q7),和一個異步的低電平復(fù)位(MR),存儲寄存器有一個并行8位的,具備三態(tài)的總線輸

18、出,當(dāng)使能OE時(為低電平),存儲寄存器的數(shù)據(jù)輸出到總線。</p><p>  它和74HC164的功能類似,都是串入并出的IO接口,將串行的數(shù)據(jù),轉(zhuǎn)為并行的輸出,這樣可以節(jié)約MCU的IO口資源。主要應(yīng)用在多路LED指示或多位數(shù)碼管驅(qū)動方面。但與74HC164比,595主要還有以下更優(yōu)越的功能:</p><p>  1.支持3態(tài)輸出,當(dāng)?shù)?3腳為高電平時,595無輸出;</p>

19、<p>  2.具有數(shù)據(jù)鎖存功能,這樣不會影響移位時的瞬時輸出;</p><p>  3.具有數(shù)據(jù)輸出功能,可以更方便的進(jìn)行595級聯(lián)</p><p>  其引腳圖和引腳功能如下:</p><p>  圖11 74HC595引腳圖</p><p>  1. 第1腳:數(shù)據(jù)輸出端QB</p><p>  

20、2. 第2腳:數(shù)據(jù)輸出端QC</p><p>  3. 第3腳:數(shù)據(jù)輸出端QD</p><p>  4. 第4腳:數(shù)據(jù)輸出端QE</p><p>  5. 第5腳:數(shù)據(jù)輸出端QF</p><p>  6. 第6腳:數(shù)據(jù)輸出端QG</p><p>  7. 第7腳:數(shù)據(jù)輸出端QH</p><p>

21、  8. 第8腳:電源GND</p><p>  9. 第9腳:串行數(shù)據(jù)輸入端SQH,時鐘下降沿?cái)?shù)據(jù)移出</p><p>  10. 第10腳:復(fù)位引腳RESET</p><p>  11. 第11腳:數(shù)據(jù)移位時鐘輸入端SCK</p><p>  12. 第12腳:數(shù)據(jù)鎖存信號輸入端RCK</p><p>  13.

22、第13腳:數(shù)據(jù)輸出使能端/OE,低電平有效</p><p>  14. 第14腳:串行數(shù)據(jù)輸入端A,時鐘上升沿?cái)?shù)據(jù)移入</p><p>  15. 第15腳:數(shù)據(jù)輸出端QA</p><p>  16. 第16腳:電源VDD</p><p><b>  2、程序編寫</b></p><p><

23、b>  匯編源程序如下:</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 電子時鐘程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p>

24、;<p>  SPK EQU P3.5 ;P3.5端口定義為喇叭</p><p>  org0x0000;程序執(zhí)行開始地址</p><p>  ajmpmain;跳到標(biāo)號main執(zhí)行</p><p>  org0x0003;外中斷0中斷程序入口</p><p><b>

25、  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 1秒閃爍子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>

26、;<b>  ;</b></p><p>  org0x000b;定時器T0中斷程序入口</p><p>  clrtf0</p><p>  movTH0,#0x4c</p><p>  movTL0,#0x00</p><p>  djnzr4,ret1

27、;50*20(0x14)=1000ms=1S</p><p>  movr4,#0x14</p><p>  clrp1.0;每隔1秒指示燈閃爍一次</p><p><b>  clrp1.1</b></p><p><b>  pushacc</b></p>

28、;<p><b>  setbrs0</b></p><p><b>  clrrs1</b></p><p>  movr0,#0x20</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;

29、;;;;;;;;;;;;;;</p><p>  ;; 秒計(jì)時控制子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  mova,@r0&

30、lt;/p><p>  adda,#0x01</p><p>  daa ;二-十進(jìn)制調(diào)整指令</p><p>  mov@r0,a</p><p>  cjnea,#0x60,t0lp1 ;60秒到后分鐘加1,秒鐘清零</p><p>  mova,#0x00</p>&

31、lt;p>  mov@r0,a</p><p><b>  incr0</b></p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 分計(jì)時控制子程序

32、 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  mova,@r0</p><p>  adda,#0x01</p><p><b>

33、;  daa</b></p><p>  mov@r0,a</p><p>  cjnea,#0x60,t0lp1 ;60分到后時鐘加1,時鐘清零</p><p>  mova,#0x00</p><p>  lcallBZ ;整點(diǎn)到后喇叭報時</p><p>  mov

34、@r0,a</p><p><b>  incr0</b></p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 小時計(jì)時控制子程序 ;;&

35、lt;/p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  mova,@r0</p><p>  adda,#0x01</p><p><b>  daa</

36、b></p><p>  mov@r0,a</p><p>  cjnea,#0x24,t0lp1 ;24小時到后天加1,時鐘清零</p><p>  mova,#0x00</p><p>  mov@r0,a</p><p><b>  incr0</b></

37、p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 天計(jì)時控制子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

38、;;</p><p><b>  ;</b></p><p>  mova,@r0</p><p>  adda,#0x01</p><p><b>  daa</b></p><p>  mov@r0,a</p><p>  

39、cjnea,#0x31,t0lp1 ;30天過后月加1,天歸1</p><p>  mova,#0x01</p><p>  mov@r0,a</p><p><b>  incr0</b></p><p><b>  ;</b></p><p>  ;;

40、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 月計(jì)時控制子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p&

41、gt;  mova,@r0</p><p>  adda,#0x01</p><p><b>  daa</b></p><p>  mov@r0,a</p><p>  cjnea,#0x13,t0lp1 ;12個月過后月歸1</p><p>  mova,#

42、0x01</p><p>  mov@r0,a</p><p><b>  ;</b></p><p><b>  t0lp1:</b></p><p><b>  nop</b></p><p><b>  popacc</b&

43、gt;</p><p><b>  clrrs0</b></p><p>  clrrs1</p><p><b>  ret1:</b></p><p>  cjner4,#0x0a,ret2</p><p>  jcret2 ;point ju

44、dge</p><p>  setbp1.0;point off</p><p>  setbp1.1 </p><p><b>  ret2:</b></p><p><b>  reti</b></p><p><b>  ;</b>&l

45、t;/p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 電子時鐘初始化程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b

46、></p><p>  main:mov0x20,#0x15;秒初始化</p><p>  mov0x21,#0x59;分初始化</p><p>  mov0x22,#0x23;時初始化</p><p>  mov0x23,#0x30;天初始化</p><p>  mo

47、v0x24,#0x12;月份初始化</p><p><b>  ;</b></p><p><b>  clrp1.3</b></p><p><b>  clrp1.4</b></p><p><b>  clrp1.5</b>&l

48、t;/p><p><b>  ;</b></p><p>  acallT0init</p><p>  movsp,#0x0f</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&

49、lt;/p><p>  ;; 顯示時分的子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p><b>  main1:</b></p>

50、;<p>  jbp3.2,hmlp</p><p>  acalldelay</p><p>  jbp3.2,hmlp</p><p>  movr0,#0x21 </p><p>  acalldisplay</p><p>  ajmpmain1</p>

51、<p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 顯示月份與日數(shù)的子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p&

52、gt;<p><b>  ; </b></p><p><b>  hmlp:</b></p><p>  movr0,#0x1f </p><p>  acalldisplay</p><p>  ajmpmain1</p><p>&l

53、t;b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 50ms延時子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p>&

54、lt;p><b>  ;</b></p><p>  T0init:movTMOD,#0x01</p><p>  movTH0,#0x4c ;50ms延時初值設(shè)置</p><p>  movTL0,#0x00</p><p><b>  setbet0</b></

55、p><p><b>  setbea</b></p><p><b>  setbtr0</b></p><p>  movr4,#0x14 </p><p><b>  ret</b></p><p><b>  ;</b&g

56、t;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 顯示子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> 

57、 ;</b></p><p>  display: </p><p>  movr1,#0x01 </p><p>  movr5,#0x04 ;4bit or 8bit</p><p>  movdptr,#0x0300</p><p>  loop:movr

58、7,#0x08</p><p><b>  mova,r1</b></p><p>  lp2:rlca</p><p><b>  setbp1.5</b></p><p><b>  jclp1</b></p><p><b&g

59、t;  clrp1.5</b></p><p>  lp1:setbp1.4</p><p><b>  clrp1.4</b></p><p>  djnzr7,lp2</p><p><b>  ;</b></p><p>  mova,@r

60、0</p><p>  anla,#0x0f</p><p>  movca,@a+dptr</p><p><b>  cpla</b></p><p>  movr7,#0x08</p><p>  lp4:rlca</p><p><b>

61、;  setbp1.5</b></p><p><b>  jclp3</b></p><p><b>  clrp1.5</b></p><p>  lp3:setbp1.4</p><p><b>  clrp1.4</b></p>

62、<p>  djnzr7,lp4</p><p><b>  ;</b></p><p><b>  setbp1.3</b></p><p><b>  clrp1.3</b></p><p><b>  ;</b></p&g

63、t;<p>  acalldelay</p><p><b>  ;</b></p><p><b>  mova,r1</b></p><p><b>  rla</b></p><p><b>  movr1,a</b>&l

64、t;/p><p><b>  ;</b></p><p>  movr7,#0x08</p><p><b>  mova,r1</b></p><p>  lp6:rlca</p><p><b>  setbp1.5</b></p&

65、gt;<p><b>  jclp5</b></p><p><b>  clrp1.5</b></p><p>  lp5:setbp1.4</p><p><b>  clrp1.4</b></p><p>  djnzr7,lp6</

66、p><p><b>  ;</b></p><p>  mova,@r0</p><p>  anla,#0x0f0</p><p><b>  swapa</b></p><p>  movca,@a+dptr</p><p><b&g

67、t;  cpla</b></p><p>  movr7,#0x08</p><p>  lp8:rlca</p><p><b>  setbp1.5</b></p><p><b>  jclp7</b></p><p><b>

68、  clrp1.5</b></p><p>  lp7:setbp1.4</p><p><b>  clrp1.4</b></p><p>  djnzr7,lp8</p><p><b>  ;</b></p><p><b>  se

69、tbp1.3</b></p><p><b>  clrp1.3</b></p><p><b>  ;</b></p><p>  acalldelay</p><p><b>  ;</b></p><p><b>  

70、mova,r1</b></p><p><b>  rla</b></p><p><b>  movr1,a</b></p><p><b>  incr0</b></p><p>  djnzr5,loop</p><p&g

71、t;<b>  ret</b></p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 整點(diǎn)報時子程序 ;;</p><p>  ;;;;;

72、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  BZ:MOV R6, #200</p><p>  B1: CPL SPK</p><p>  ACALL DELAY1</p><p>

73、  DJNZ R6,B1;喇叭響的時間為:R6×R5=0.5s</p><p><b>  RET</b></p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;

74、; 延時子程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  delay:movr6,#0x00</p><p>  del1:dj

75、nzr6,del1</p><p><b>  ret</b></p><p><b>  ;</b></p><p><b>  DELAY1: </b></p><p>  D1:MOV R5,#250 ;延遲時間為:R5<

76、;/p><p>  D2: DJNZ R5,D2</p><p><b>  RET </b></p><p>  START1: LCALL display ;調(diào)用顯示子程序</p><p>  JB p1.2,SETMM1 ;P1.2口為0時轉(zhuǎn)時間調(diào)整程序&l

77、t;/p><p>  SJMP START1 ;P1.2口為1時跳回START1</p><p>  SETMM1: LJMP SETMM ;轉(zhuǎn)到時間調(diào)整程序SETMM</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;

78、;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 時鐘調(diào)整程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;當(dāng)調(diào)時按鍵按下時進(jìn)入此程序</p><p>  SETMM: cLR

79、 ET0 ;關(guān)定時器T0中斷</p><p>  CLR TR0 ;關(guān)閉定時器T0</p><p>  mov TH0,#0x4c</p><p>  mov TL0,#0x00</p><p>  djnzr4,de</p><

80、;p>  de:lcallret1</p><p>  movr4,#0x14 ;調(diào)用1秒延時程序</p><p>  JB p1.2,CLOSEDIS ;鍵按下時間小于1秒,關(guān)閉顯示(省電)</p><p>  MOV R2,#06H ;進(jìn)入調(diào)時狀態(tài),賦閃爍定時初值</p>

81、<p>  SETB ET1 ;允許T1中斷</p><p>  SETB TR1 ;開啟定時器T1</p><p>  SET2: JNB p1.2,SET1 ;P1.2口為0(鍵未釋放),等待</p><p>  SETB 00H

82、 ;鍵釋放,分調(diào)整閃爍標(biāo)志置1</p><p>  SET4: JB p1.2,SET3 ;等待鍵按下</p><p>  movTH0,#0x4c</p><p>  movTL0,#0x00</p><p>  djnzr4,de1</p><p>  de1:

83、lcallret1</p><p>  movr4,#0x0A ;有鍵按下,延時0.5秒</p><p>  JNB p1.2,SETHH ;按下時間大于0.5秒轉(zhuǎn)調(diào)小時狀態(tài)</p><p>  MOV R0,#77H ;按下時間小于0.5秒加1分鐘操作</p><p&

84、gt;  LCALL ADD1 ;調(diào)用加1子程序</p><p>  MOV A,R3 ;取調(diào)整單元數(shù)據(jù)</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  CJNE A,#60H,HHH ;調(diào)整單元數(shù)據(jù)與60比較</p&g

85、t;<p>  HHH: JC SET4 ;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán)</p><p>  LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于60時清0</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  AJMP

86、 SET4 ;跳轉(zhuǎn)到SET4循環(huán)</p><p><b>  ;</b></p><p>  CLOSEDIS: SETB ET0 ;省電(LED不顯示)狀態(tài)。開T0中斷</p><p>  SETB TR0 ;開啟T0定時器(開時鐘)</p><p

87、>  CLOSE: JB p1.2,CLOSE ;無按鍵按下,等待。</p><p>  LCALL display ;有鍵按下,調(diào)顯示子程序延時削抖</p><p>  JB p1.2,CLOSE ;是干擾返回CLOSE等待</p><p>  WAITH: JNB p1

88、.2,WAITH ;等待鍵釋放</p><p>  LJMP START1 ;返回主程序(LED數(shù)據(jù)顯示亮)</p><p>  SETHH: CLR 00H ;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時狀態(tài))</p><p>  SETHH1: JNB p1.2,SET5 ;等待鍵釋放&

89、lt;/p><p>  SETB 01H ;小時調(diào)整標(biāo)志置1</p><p>  SET6: JB p1.2,SET7 ;等待按鍵按下</p><p>  mov TH0,#0x4c</p><p>  mov TL0,#0x00</p><p>  d

90、jnz r4,de2</p><p>  de2: lcall ret1</p><p>  mov r4,#0x0A ;有鍵按下延時0.5秒</p><p>  JNB p1.2,SETOUT ;按下時間大于0.5秒退出時間調(diào)整</p><p>  MOV R0,#79H

91、;按下時間小于0.5秒加1小時操作</p><p>  LCALL ADD1 ;調(diào)加1子程序</p><p>  MOV A,R3 </p><p>  CLR C </p><p>  CJNE A,#24H,HOUU

92、;計(jì)時單元數(shù)據(jù)與24比較</p><p>  HOUU: JC SET6 ;小于24轉(zhuǎn)SET6循環(huán)</p><p>  LCALL CLR0 ;大于或等于24時清0操作</p><p>  AJMP SET6 ;跳轉(zhuǎn)到SET6循環(huán)</p><

93、;p>  SETOUT: JNB p1.2,SETOUT1 ;調(diào)時退出程序。等待鍵釋放</p><p>  LCALL display ;延時削抖</p><p>  JNB p1.2,SETOUT ;是抖動,返回SETOUT再等待</p><p>  CLR 01H

94、 ;清調(diào)小時標(biāo)志</p><p>  CLR 00H ;清調(diào)分標(biāo)志</p><p>  CLR 02H ;清閃爍標(biāo)志</p><p>  CLR TR1 ;關(guān)閉定時器T1</p><p>  CLR ET1

95、 ;關(guān)定時器T1中斷</p><p>  SETB TR0 ;開啟定時器T0</p><p>  SETB ET0 ;開定時器T0中斷(計(jì)時開始)</p><p>  LJMP START1 ;跳回主程序</p><p><b&

96、gt;  ;</b></p><p>  SET1: LCALL display ;鍵釋放等待時調(diào)用顯示程序(調(diào)分)</p><p>  AJMP SET2 ;防止鍵按下時無時鐘顯示</p><p>  SET3: LCALL display ;等待調(diào)分按鍵時時鐘顯示

97、用</p><p>  AJMP SET4</p><p>  SET5: LCALL display ;鍵釋放等待時調(diào)用顯示程序(調(diào)小時)</p><p>  AJMP SETHH1 ;防止鍵按下時無時鐘顯示</p><p>  SET7: LCALL display

98、 ;等待調(diào)小時按鍵時時鐘顯示用</p><p>  AJMP SET6</p><p>  SETOUT1: LCALL display ;退出時鐘調(diào)整時鍵釋放等待</p><p>  AJMP SETOUT ;防止鍵按下時無時鐘顯示</p><p><b>

99、  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 加1子 程 序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>

100、;<b>  ;</b></p><p>  ADD1: MOV A,@R0 ;取當(dāng)前計(jì)時單元數(shù)據(jù)到A</p><p>  DEC R0 ;指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  

101、ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p>  ADD A,#01H ;A加1操作</p><p>  DA A ;十進(jìn)制調(diào)整</p><p>  MOV R3,A ;移入R3寄存器</p><p>  ANL

102、 A,#0FH ;高四位變0</p><p>  MOV @R0,A ;放回前一地址單元</p><p>  MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p>  INC R0 ;指向當(dāng)前地址單元</p><p>  SWAP A

103、 ;A中數(shù)據(jù)高四位與低四位交換</p><p>  ANL A,#0FH ;高四位變0</p><p>  MOV @R0,A ;數(shù)據(jù)放入當(dāng)削地址單元中</p><p>  RET </p><p>  ;;;;;;;;;;;;;;;;;;;;;

104、;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 清零程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;對計(jì)時單元復(fù)零用</b></p><p>  CL

105、R0: CLR A ;清累加器</p><p>  MOV @R0,A ;清當(dāng)前地址單元</p><p>  DEC R0 ;指向前一地址</p><p>  MOV @R0,A ;前一地址單元清0</p>

106、<p><b>  RET </b></p><p><b>  ;</b></p><p>  org0x0300</p><p>  DB0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,00H</p><p> 

107、 ;"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" 共陰段碼表 </p><p><b>  end</b>&l

108、t;/p><p><b>  六、小結(jié)與展望</b></p><p>  通過這次單片機(jī)課程設(shè)計(jì),我終于把在課本上的知識應(yīng)用到了實(shí)際當(dāng)中去。這次課程設(shè)計(jì)還真是受益匪淺。我基本上熟悉了MCS-51單片機(jī)的原理和匯編語言程序的設(shè)計(jì),掌握了外設(shè)接口的編程設(shè)計(jì),中斷系統(tǒng),系統(tǒng)擴(kuò)展等知識。,我不但鞏固了自己電力電子的理論知識,還進(jìn)一步熟練了KEIL仿真軟件的應(yīng)用。用這個仿真軟件,不

109、僅可以方便地實(shí)現(xiàn)程序的修改,而且還可以直接進(jìn)行軟件仿真,觀察程序運(yùn)行情況。還可以將通過接口把程序下載到硬件電路上調(diào)試,真是方便多多??!這種直觀的仿真教學(xué),使我不但驗(yàn)證了書本上的理論知識,而且也對一些抽象難懂的概念有了更加明確直觀的理解。同時也能讓我綜合運(yùn)用單片機(jī)的軟、硬件技術(shù)分析實(shí)際問題,為工業(yè)生產(chǎn)、科學(xué)研究和實(shí)驗(yàn)設(shè)備等領(lǐng)域的單片機(jī)應(yīng)用和開發(fā)打下良好的基礎(chǔ)。</p><p>  本次的課程設(shè)計(jì)還令我認(rèn)識到了熟能生

110、巧這個道理。剛剛接觸單片機(jī)的時候,覺得很難,好像什么都不會,各種各樣的助記符、程序更煩,做一道習(xí)題或者是設(shè)計(jì)一個電路都要耗費(fèi)我很多的時間。但通過這次實(shí)訓(xùn),讓我懂得了世上無難事,只怕有心人的道理。再難的事,只要你肯用心,也會變得容易;反之,再容易的事,如果你無心去做,也會變得遙不可及。要學(xué)好單片機(jī),我們要走的路還很長。但路漫漫其修玩兮,吾將上下而求索。只要我們不懈努力,我相信我們一定能把任何一件事做好。</p><p&

111、gt;<b>  七、致謝</b></p><p>  本次單片機(jī)課程設(shè)計(jì)的順利完成,我要特別感謝我們的張華老師,是他平時理論與實(shí)際的講課方式讓我對單片機(jī)產(chǎn)生了極大的興趣和打下了扎實(shí)的理論基礎(chǔ)。另外,在整個實(shí)訓(xùn)過程中,我還要感謝我的隊(duì)友,是大家在一起討論,一起研究,互相幫助,才會有我們的共同進(jìn)步,才能順利地完成這次的課程設(shè)計(jì)。感謝大家一起為這次課程設(shè)計(jì)營造了良好的氣氛。這次,我還要特別感謝海

112、杰同學(xué)。從實(shí)訓(xùn)開始到結(jié)束,海杰同學(xué)一直都陪著我到實(shí)驗(yàn)室調(diào)試程序,給了我很大的幫忙。對大家給我的無私幫助,在此我要再一次向他們表示衷心的感謝。</p><p><b>  八、主要參考文獻(xiàn)</b></p><p>  1)《單片微型計(jì)算機(jī)原理與接口技術(shù)》 ,高鋒, 科學(xué)出版社,2007</p><p>  2)《單片機(jī)原理及接口技術(shù)》, 李朝青,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論