久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3110|回復: 0
收起左側

基于51單片機的電動百葉窗設計(匯編語言)

[復制鏈接]
ID:722471 發表于 2020-4-9 13:15 | 顯示全部樓層 |閱讀模式

內容:本項目利用AD加光敏電阻傳感器,按鍵及DA對直流電機的控制實現智能百葉窗的控制。具體功能:數碼管顯示測量結果光強,設置三個按鍵:手動/自動切換、手動正轉和手動反轉,用一個發光二極管顯示手動/自動狀態,自動狀態時二極管亮。設置兩個極限位置保護行程開關,用于保護百葉窗葉片:當正轉到極限位置壓下行程開關時,電機停止正轉,但還可以反轉;當反轉到極限位置壓下行程開關時,電機停止反轉,但還可以正轉。

意義:利用單片機進行光照監控及窗戶自動化控制,能夠很好的理解和學習單片機的控制及設計。

二、整體設計原理及方案
2.1使用器件

本次實驗使用器件為Generic-8051系列單片機,ADC0809芯片,DAC0832芯片,8279鍵盤、顯示控制器芯片,兩個電位開關,三個發光二極管,LED燈以及自行焊接的光強信號采集電路板一塊。

2.2工作原理

光強信號采集電路每一次采集光強信號之后,將光強信號傳輸至ADC0809芯片,通過模/數轉換后,由單片機采集轉換后的數字信號,實行判斷光強是否超過閾值,通過8279鍵盤、顯示控制器芯片顯示光強信號的數值,并結合鍵盤上按鍵的控制(自動/手動切換,手動正轉,手動反轉),實現預定的輸出。輸出的數字信號經由DAC0832芯片轉換成模擬信號,并將模擬信號輸送到電機控制端實現執行功能。

因本實驗電機不能實現反轉,故用快轉代替正轉,慢轉代替反轉。

2.3設計方案
2.3.1 功能切換及功能指示

              該部分有3個按鍵及1個紅色LED燈組成。其中一個按鍵為功能切換按鍵,連接著8051的外部中斷接口。另外兩個按鍵為手動正轉和手動反轉。接外部中斷的按鍵按下可以切換工作模式:自動模式,手動模式。LED燈1為模式指示燈,當為自動模式的時候亮,手動模式的時候滅。當自動模式時,根據自設定的閾值,當超過最強光照強度時控制電機慢轉,當低于最弱光強時控制電機快轉。當處于手動模式時與光強度無關,按下手動正轉鍵則電機正轉,按下手動反轉鍵則電機反轉。

2.3.2光照獲取及光照顯示

首先由光敏電阻組成的傳感器模塊提供隨光照強度變化的電壓值,在由A/D0809轉換電路,將模擬量轉換為數字量。還有一個由8279控制的6位數碼管,我們將光照信息實時顯示在數碼管的前2位。

2.3.3極限開關的設置

極限開關通過P0.1和P0.2分別控制手動正轉和手動反轉停止。當極限開關為低電平時使電機停轉,高電平時不影響電機轉動。同時當開關低電平時點亮一個發光二極管代表極限開關打開,電機停止轉動。

三、硬件電路圖
3.1單片機最小系統

該設計中除了熱敏電阻電路其余電路均由實驗臺提供,實驗臺上提供了51單片機的最小系統并做了相關設定。

1)、微處理器:i80c31,它的P1口、P3口皆對用戶開放,供用戶使用。

2)、時鐘頻率:6.0MHz

3)、存儲器:程序存儲器與數據存儲器統一編址,最多可達64k,板載ROM12k;RAM1(程序存儲器6264)8k供用戶下載實驗程序,可擴展達32k;RAM2(數據存儲器6264)8k供用戶程序使用,可擴展達32k。在程序存儲器中,0000H----2FFFH為監控程序存儲器區,用戶不可用,4000H----5FFFH為用戶實驗程序存儲區,供用戶下載實驗程序。數據存儲器的范圍為:6000H----7FFFH,供用戶實驗程序使用。

注意:因用戶實驗程序區位于4000H-----5FFFH,用戶在編寫實驗程序時要注意,程序的起始地址應為4000H,所用的中斷入口地址均應在原地址的基礎上,加上4000H。例如:外部中斷0的原中斷入口為0003H,用戶實驗程序的外部中斷0的中斷程序入口為4003H。

中斷名稱    8051原中斷程序入口      用戶實驗程序響應程序入口

外部中斷0          0003H                 4003H

定時器0中斷        000BH                 400BH

外部中斷1          0013H                 4013H

定時器1中斷        001BH                 401BH

串行口中斷          0023H                 4023H

表1-1:用戶中斷程序入口表

利用這些提供的基本硬件電路就可以進行相關的設計。

3.2 A/D轉換

八路八位A/D實驗電路由一片ADC0809,一片74LS04,一片74LS32組成,該電路中,ADIN0—ADIN7是ADC0809的模擬量輸入插孔,CS0809是0809的AD啟動和片選的輸入插孔,EOC是0809轉換結束標志,高電平表示轉換結束。齊納二極管LM336-5提供5V的參考電源,ADC0809的參考電壓,數據總線輸出,通道控制線均已接好。   

3.3 D/A轉換

電路原理八路八位A/D實驗電路由一片ADC0809,一片74LS04,一片74LS32組成,該電路中,ADIN0—ADIN7是ADC0809的模擬量輸入插孔,CS0809是0809的AD啟動和片選的輸入插孔,EOC是0809轉換結束標志,高電平表示轉換結束。齊納二極管LM336-5提供5V的參考電源,ADC0809的參考電壓,數據總線輸出,通道控制線均已接好。

D/A0832電路設計3.3.1電路原理八位雙緩沖D/A實驗電路由一片DAC0832。一片74LS00,一片74LS04,一片LM324組成,該電路中除DAC0832的片選未接好外,其他信號均已接好,片選插孔標號CS0832。輸出插孔標號DAOUT。該電路為非偏移二進制D/A轉換電路,通過調節POT3,可調節D/A轉換器的滿偏值,調節POT2,可調節D/A轉換器的零偏值。


3.4 8279鍵盤、顯示電路
3.4.1
電路原理

8279顯示電路由6位共陰極數碼管顯示,74LS244為段驅動器,75451為位驅動器,可編程鍵盤電路由1片74LS138組成,8279的數據口,地址,讀寫線,復位,時鐘,片選都已經接好,鍵盤行列掃描線均有插孔輸出。鍵盤行掃描線插孔號為KA0~KA3;列掃描線插孔號為RL0~RL7;8279還引出CTRL、SHIFT插孔。六位數碼管的位選、段選信號可以從8279引入,也可以有外部的其他電路引入,原理圖如下:

3.4.2電路測試見整機測試

六位數碼管電路的測試:除去電路板上數碼管右側的跳線,系統加點,用導線將插孔LED1接低電平(GND),再將插孔LED-A,LED-B,LED-C,LED-D,LED-E,LED-F,LED-G,LED-DP依次接高電平(VCC),則數碼管SLED1的相應段應點亮,如果所有的段都不亮,則檢查相應的芯片75451,如果個別段不亮,則檢查該段的連線、及數碼管是否損壞。用同樣的方法依次檢查其它數碼管。

8279顯示、鍵盤控制芯片電路的測試:加上數碼管右邊的所有短路線,復位系統,應能正常顯示。否則檢查8279芯片、244芯片、138芯片是否正常。


3.5 光強信號采集電路

              該信號采集電路由電壓跟隨器(輸入級),差動比例放大器(中間級)以及反向比例放大器(輸出級)構成。中間級為調零電路,輸出級將高于零點的電位放大,并將測量上限放大為ADC輸入上限。

3.6直流調壓調速測速電機

直流調壓調速電機模塊由測速電路和調速電路兩部分組成。模塊的電源由接口總線引入。本模塊中使用的電機為12V的直流電機。

3.6.1電機測速部分

(1)直流電機測速原理介紹

電機測速部分由一個霍爾開關和信號放大電路組成。與電機同軸的轉盤上裝有兩塊的強力磁鋼,它們的磁極性相反,以保持轉盤的平衡并保證轉盤每轉一周霍爾開關只導通一次。霍爾開關平時輸出為正電壓,當轉盤上的磁鋼與霍爾開關正對時,霍爾開關輸出負電壓,經整形、放大輸出。單片機通過對負脈沖計數,可計算出電機的轉速。  

(2)電機測速部分電路原理及說明

                                 

3144為霍爾開關,整形、放大由LM358完成。LM358作為比較器使用。SIGNAL為負脈沖輸出接口,對應于模塊上的SIGNAL插孔。可直接用SIGNAL信號進行測速。

此外,模塊還提供了另一種測速方法。如下圖所示:


平時使START保持低電平,OUT2輸出為低電平,OUT1為高電平。拉高START表示允許測速,此時OUT1的下降沿啟動計數,上升沿停止計數,表示測速結束。

(3)電機測速部分電路測試方法

   將模塊插在接口掛箱或對象掛箱上并接通電源,調節電位器R9,使電機轉動。用示波器在SIGNAL插孔處可以看到連續的負脈沖。

3.6.2電機調速部分

電機調速的原理是通過改變電機兩端的電壓來改變電機的轉速。其原理如下:

                          

該部分電路測試方法:

DRV接GND,調節電位器R9,可以觀察到電機轉速的變化。


四、程序設計流程圖

                                               自動模式

                                                手動模式

五、實驗結果及數據

開機默認情況下是電機停轉。

開關第一個鍵切換至自動模式,模式指示燈點亮,8279控制的數碼管能夠實時的顯示A/D0809讀取的值,并且跟隨光照強度變化。而D/A輸出值跟隨A/D值同步變化。

當光強位于兩個閾值中間值時,電機停轉。當用手遮住一部分燈光,A/D值馬上下降,達到最弱光強(60H)之下時,電機開始正轉(快轉),當用強光照射后,A/D值上升,超過設定最強光強(E0H)后,電機轉速反轉(慢轉)。

開關第二個鍵為切換到手動正轉鍵,電機正轉(快轉),當極限開關1為低電平時,電機停止轉動,高電平時不影響。開關第三個鍵為切換到手動反轉轉鍵,電機反轉(慢轉)當極限開關2為低電平時,電機停止轉動,高電平時不影響。

當工作在手動模式情況下,光強變化對電機工作狀態均不起影響。

六、問題及心得

在本次設計中遇到的最大問題是在最后一周的時候才發現焊的電路板有問題,經過反復檢查后決定重新焊電路板花費很長時間。之后程序設計經過反復修改得以順利完成本次課程設計。

這次我學會了8279鍵盤的使用,以及AD轉換和DA轉換的原理,對單片機編程更加熟練,焊電路板也更加熟練。

  1. AD0809IN0                 EQU              0CFA0H                            ;0809地址
  2. CON8279                            EQU              0CFE9H                            ;8279命令字
  3. DATA8279                 EQU              0CFE8H                            ;8279數據字
  4. DA0832                             EQU 0CFB0H                            ;0832地址
  5.        ORG                                  0000H
  6.        MOV                                  R2,#00H                                            ;DAC初值
  7.        MOV                                  R3,#00H                                 ;自動手動標志
  8.        LJMP                    START
  9.        ORG                                  0100H
  10. START:              MOV                   DPTR,#CON8279                  ;8279命令字
  11.        MOV                              A,#0D1H                                                     ;清屏、清緩存命令
  12.        MOVX                @DPTR,A
  13.        MOV                              R2,#0FFH                  ;DA轉換初值設為FFH,為停轉
  14.        MOV                              R3,#00H                   ;R3自動標志位
  15.        WAIT:                MOVX                 A,@DPTR                                              ;讀狀態
  16.        JB                              ACC.7,WAIT                ;等待清屏幕完成
  17.        LJMP                START1                    ;有按鍵則跳轉去判斷鍵值
  18. ;****************AD轉換函數*****************
  19. STARTADC:
  20.        MOV                   DPTR,#AD0809IN0         ;啟動通道0
  21.        MOVX                 @DPTR,A
  22.        MOV                 R6,#0FFH                                      ;等待轉換完成
  23. LOOP1: DJNZ               R6,LOOP1                               ;等待轉換,完成后向下繼續
  24.        MOVX                 A,@DPTR                                                ;讀取轉換值
  25.        CJNE                R3,#0FFH,DISP                    ;判斷是否自動,不是自動模式跳轉
  26.        MOV                 R1,A                                                    ;儲存光強轉換的數字量
  27. ;****************與閾值進行比較****************
  28.        CLR                    C                                                         ;清除進位位
  29.        SUBB     A,#0E0H                 ;與最強光照閾值進行比較
  30.        JC      A0                    ;小于最強光則轉移去和最小值比較
  31.        MOV     R2,#20H       ;如果光強超過閾值,R2附初值FFH使其慢轉
  32.        LJMP     DISP                    ;跳轉去顯示函數
  33. A0:    MOV     A,R1
  34.        CLR      C
  35.        SUBB    A,#60H                  ;與最小光強閾值進行比較
  36.        JNC      A1                      ;大于最小光強大則跳轉
  37.        MOV      R2,#00H           ;小于最小光強,R2附初值00H使其快轉
  38.        LJMP     DISP                    ;跳轉去顯示函數
  39. A1:    MOV     R2,#0FFH        ;中間值則停轉
  40.        LJMP     DISP
  41. ;****************顯示函數**********************
  42. DISP:              MOV                 A,R1                                           ;從R1中取轉換結果
  43.        SWAP                 A                                                         ;分離高四位和低四位
  44.        ANL                 A,#0FH                                                  ;并依次存放在50H到51H中
  45.        MOV                 50H,A                   ;高4位存在50H
  46.        MOV                 A,R1
  47.        ANL                 A,#0FH                  ;低四位存在51H
  48.        MOV                 51H,A
  49. LOOP2: MOV                 DPTR,#CON8279                 ;寫顯示RAM命令字
  50.        MOV                 A,#90H            ;每寫入數據都自動加一,從0地址開始
  51.        MOVX                 @DPTR,A
  52.        MOV                 R0,#50H                                        ;存放轉換結果地址初值送R0
  53.        MOV                 R1,#02H                 ;2次取出
  54.        MOV                 DPTR,#DATA8279                       ;8279數據口地址
  55.        DL0:                 MOV                 A,@R0            ;取出存到A中
  56.        ACALL                 TABLE                                                   ;轉換為顯碼
  57.        MOVX                 @DPTR,A                                         ;送顯碼輸出
  58.        INC                 R0                      ;加一
  59.        DJNZ                 R1,DL0
  60.        LCALL    DEL1                   ;延遲一段時間使顯示更穩定
  61. ;***************DA轉換函數********************
  62. DAC:              MOV                    A,R2                                   ;初值送ACC
  63.        LCALL    DAZH                                                     ;調DA轉換子程序
  64.        LCALL    DEL1                    ;延遲使穩定
  65.        LJMP     START                   ;循環
  66. ;**************鍵盤掃描函數******************
  67. START1: SETB              P1.0            ;第一個燈先滅
  68.        MOV               DPTR,#CON8279
  69.        MOV                   A,#0A0H                                                 ;顯示\消隱命令
  70.        MOVX                @DPTR,A
  71.        MOV                   A,#40H                                                     ;讀FIFO命令
  72.        MOVX              @DPTR,A
  73.        MOV                   DPTR,#DATA8279                      ;讀鍵值
  74.        MOVX              A,@DPTR
  75.        MOV                   R1,A                                                      ;保存鍵值
  76. ;****************判斷按得哪個鍵****************************
  77. A9:                            MOV                  A,R1
  78.        CJNE              A,#0C0H,A10      ;判斷是不是自動按鍵,不是自動轉移
  79.        CLR                  P1.0                    ;是自動點亮第一個燈
  80.        MOV                  R3,#0FFH                                       ;自動標志位
  81.        MOV                  R2,#0FFH                ;DAC初值停轉
  82.        LJMP              LJSTART                 ;判斷完后回到AD轉換
  83. A10:              MOV                 A,R1                                               ;手動正轉
  84.        CJNE              A,#0C1H,A11             ;比較是不是手動正轉按鍵
  85.        SETB              P1.0                    ;使第一個燈滅
  86.        MOV  R3,#00H                 ;清零自動標志位
  87.        MOV                R2,#00H                 ;快轉
  88. A13:              JB   P1.1,LJSTART                   ;極限按鍵,判斷有木有低電平
  89.        MOV  R2,#0FFH                                     ;低電平有效則停止轉動
  90. A11:              MOV   A,R1                                                  ;手動反轉
  91.        CJNE              A,#0C2H,A12             ;比較是不是手動反轉按鍵
  92.        SETB              P1.0                    ;使第一個燈滅
  93.        MOV  R3,#00H                 ;清零自動標志位
  94.        MOV                R2,#10H                 ;慢轉
  95. A14:   JB    P1.2,LJSTART                      ;極限按鍵,判斷有木有低電平
  96.        MOV   R2,#0FFH                ;低電平有效則停止轉動
  97. A12:   SETB  P1.0                    ;如果都不是這些按鍵,使第一個燈滅
  98.        MOV   R2,#0FFH                ;R2初值慢轉
  99.        MOV   R3,#00H                 ;自動標志位00
  100.        LJMP  LJSTART                 ;判斷完后回到AD轉換
  101. ;************DA執行函數**********************
  102. DAZH:              MOV                DPTR,#DA0832                 ;DAC輸入寄存器端口地址
  103.        MOVX  @DPTR,A                    ;送出數據
  104.        INC                            DPTR                       ;加一,為DAC寄存器端口地址
  105.        MOVX              @DPTR,A                    ;啟動轉換
  106.        RET
  107. ;*************跳轉接力***********************
  108. LJSTART:
  109.        LJMP               STARTADC              ;循環
  110. ;**************延時函數************************
  111. DEL1:  MOV               R6,#255               ;延時一段時間使顯示更穩定
  112. DEL2:               MOV               R5,#255
  113. DEL3:               DJNZ              R5,DEL3
  114.        DJNZ              R6,DEL2
  115.        RET
  116. ;***************顯示字表***********************
  117. TABLE: INC               A
  118.        MOVC              A,@A+PC
  119.        RET
  120.        DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
  121.        DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H
  122.        END
復制代碼

試驗圖:

1.遮光時

2.強光照射時
3.自動處于中間值時
4.手動正轉
5.手動反轉
6.電路板正面
7.電路板反面

以上的Word格式文檔51黑下載地址:
單片機51hei設計.doc (6.25 MB, 下載次數: 24)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美高清视频一区 | 午夜精品视频在线观看 | 国产精品久久亚洲 | 国产成人免费观看 | 精品成人一区 | 91亚洲精品国偷拍自产在线观看 | 一区二区三区中文字幕 | 久久久久久国产精品三区 | 午夜精品一区二区三区在线观看 | 天天操天天操 | 中文字幕日韩欧美一区二区三区 | 涩涩视频在线观看 | 美女福利视频一区 | 国产99久久久国产精品 | 最新伦理片 | 日韩欧美二区 | 色99视频 | 欧美一区二区三区在线播放 | 免费观看av | 黄网免费看| 日韩国产中文字幕 | 1区2区视频| 国产传媒在线播放 | 成人在线不卡 | 91看片| 日韩av高清在线 | 亚洲欧美国产精品一区二区 | 日韩成人免费视频 | 国产黄色在线观看 | 在线观看中文字幕 | 99久久99| 人人干人人干人人 | 亚洲欧美激情精品一区二区 | 久久久av一区 | 亚洲国产精品日韩av不卡在线 | 久热m3u8| 国产成人精品免费视频 | 亚洲福利网站 | 7777在线视频免费播放 | 伊人狠狠操 | 福利在线观看 |