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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機控制實驗(PWM)匯編語言

[復制鏈接]
ID:946503 發表于 2021-6-29 11:48 | 顯示全部樓層 |閱讀模式
1.了解直流電機 PWM 的工作原理
2.基礎要求:編程并實現直流電機的調速,LED 顯示電機的轉速,即電位器輸出(開環)
3.擴展要求:編程并實現直流電機的調速,以 SPEED 口輸出的信號為反饋顯示電機的實 際轉速(閉環)


實驗原理
1.PWM 的調速原理
PWM 調速是通過改變輸出脈沖的占空比,從而改變電機轉速的一種調速方法。PWM 調速 分為單極性和雙極性兩種。在單極性方式下,電機的轉動方向不變,改變的只是轉速;而在 雙極性方式下,電機的轉動方向和轉速都是可變的。以下以單極性為      例說明 PWM 調速 的基本原理。
假設一個脈沖周期內,高電平電壓為 Us,持續時間為 t1;低電平為 0V,持續時間為 t2。 則脈沖周期 T=t1+t2,該周期內平均電壓 U0=t1*Us/T。令α=t1/T,則 U0=α*Us,α表示占 空比。當高電平電壓不變的情況下,電機兩端電壓的平均值 U0 取決于占空比α的大小。改 變α值就可以改變端電壓的平均值,從而達到調速的目的,這就是  PWM 調速原理。
在雙極性方式下,如果 U0 為負,意味著電機將反轉,轉速由 U0 的絕對值控制。

2.對象模塊(PWM 電機調速模塊)工作原理
直流電機 PWM 調速模塊由測速電路和 PWM 調速電路兩部分組成。模塊的電源由接口總線 引入。本模塊中使用的電機為 5V 的直流電機。

?    電機測速部分
(1)直流電機測速原理介紹 電機測速部分由一個霍爾開關和信號放大電路組成。與電機同軸的轉盤上裝有兩塊的強
力磁鋼,它們的磁極性相反,以保持轉盤的平衡并保證轉盤每轉一周霍爾開關只導通一次。 霍爾開關平時輸出為正電壓,當轉盤上的磁鋼與霍爾開關正對時,霍爾開關輸出負電壓,經 整形、放大輸出。單片機通過對負脈沖計數,可計算出電機的轉速。
(2)電機測速部分電路原理及說明
3144 為霍爾開關,整形、放大由 LM358 完成。第一級 358 作為比較器使用,第二級作 為電壓跟隨器。SPEED 為負脈沖輸出接口,對應于模塊上的 SPEED 插孔。
(3)電機測速部分電路測試方法 將模塊插在接口掛箱或對象掛箱上并接通電源,電機應轉動。用示波器在 SPEED 插孔處
可以看到連續的負脈沖。
51hei.png
PWM 調速部分
(1)PWM  調速電路原理及說明
JUMP 跳線為極性選擇。2、3 腳短接(模塊上選擇 D 端)為雙極性;1、2 腳短接(模 塊上選擇 S 端)為單極性。單極性時,PWM IN 為高,電機兩端無電壓;PWM IN 為低,電 機兩端為正電壓。
雙極性時,PWM IN 為高,電機兩端為負電壓;PWM IN 為低,電機兩端為正電壓。
(2)PWM 調速電路基本測試方法
將 CPU 模塊的 P1.0~P1.1 分別接至 CPU 掛箱的 K1~K3,T0 接 PWM 調速模塊的 PWM IN, 模塊的跳線 1、2 腳短接。運行測試程序,改變 K1~K3 的值,電機轉速應隨之變化。
51hei.png
3.電位器模塊
電位器模塊為一個 10K 的可調電阻,通過調節電位器上的旋鈕可以改變電位器的電壓輸 出。此電位器的電壓輸出為 0~5V 模擬電壓。通過連接 ADC0809 可將電位器的模擬電壓轉換 為數字量,提供給單片機使用。

4.ADC0809 模塊
ADC0809 是一種逐次比較式 8 路模擬輸入、8 位數字量輸出的 A/D 轉換器。
ADC0809  START 端為 A/D 轉換啟動信號,ALE 端為通道選擇地址的鎖存信號。實驗電路 中將其相連,以便同時鎖存通道地址并開始 A/D 采樣轉換,故啟動 A/D 轉換只需如下兩條指 令:
MOV     DPTR,#PORT MOVX    @DPTR,A
A 中為何內容并不重要,這是一次虛擬寫。
在中斷方式下,A/D 轉換結束后會自動產生 EOC 信號,將其與 8031CPU 板上的 INT0 相 連接。在中斷處理程序中,使用如下指令即可讀取 A/D 轉換的結果:
MOV     DPTR,#PORT MOVX    A,@DPTR
5.8279 顯示模塊
(1)、電路原理
8279 顯示電路由 6 位共陰極數碼管顯示,74LS244 為段驅動器,75451 為位驅動器,可 編程鍵盤電路由1片 74LS138 組成,8279  的數據口,地址,讀寫線,復位,時鐘,片選都 已經接好,鍵盤行列掃描線均有插孔輸出。鍵盤行掃描線插孔號為 KA0~KA3;列掃描線插孔 號為 RL0~RL7;8279 還引出 CTRL、SHIFT 插孔。六位數碼管的位選、段選信號可以從 8279 引入,也可以有外部的其他電路引入,原理圖如下:
(2)、電路測試見整機測試
六位數碼管電路的測試:除去電路板上數碼管右側的跳線,系統加點,用導線將插孔 LED1 接低電平(GND),再將插孔 LED-A,LED-B,LED-C,LED-D,LED-E,LED-F,LED-G,LED-DP 依次接高電平(VCC),則數碼管 SLED1 的相應段應點亮,如果所有的段都不亮,則檢查相應 的芯片 75451,如果個別段不亮,則檢查該段的連線、及數碼管是否損壞。
用同樣的方法依次檢查其它數碼管。
8259 顯示、鍵盤控制芯片電路的測試:加上數碼管右邊的所有短路線,復位系統,應 能正常顯示。否則檢查 8279 芯片、244 芯片、138 芯片是否正常。
軟件設計
1.思路描述
本實驗要實現的功能分別為電機調速和 LED 顯示。


直流電機調速部分:由于電位器輸出為模擬電壓,而單片機所能處理的僅為數字信號, 所以要經過 ADC0809 將電位器的輸出裝換為數字信號。因此編程時要啟動 IN0,啟動 A/D 轉 換,并用軟件延時一段時間等待轉換結束,然后讀取轉換結果并將其存入指定的寄存器供調 用。
直流電機轉速的調節需要改變輸出脈沖的占空比,因此需要編寫一個能輸出方波的子程 序。如先讓 PWM 為 0,延時一段時間后,再將 PWM 取反,即為 1,在延時取反,如此反復就 能達到輸出方波的目的。通過調節電位器的電壓輸出改變輸出方波的占空比,達到調速的目 的。


LED 顯示部分:本部分的主要功能是將 ADC0809 的輸出顯示在 LED 上。首先將轉換結果 存入寄存器 R1,然后寫顯示 RAM 命令字,數據端口地址送 R0,并將初值送  R0。寫 8279 數 據口地址,讀取轉換結果,語句“ACALL   TABLE”通過查表將 ADC0809 的轉換結果轉換為 顯示碼,寫入 8279 顯示 RAM 指針 R0 加 1,顯示碼送 DPTR 輸出。計數器 R7 減 1,不為零則 跳轉顯示下一個數據,減為零則從子程序返回。

3.程序清單


(1)PWM 電機調速程序 PWM 模塊調試接線說明
模塊的 PWM   插口與系統板上的 P1.0 插口相連;
外擴 a/d 模塊 0809 的片選信號與系統板上的 CS3 相連(箱式的片選地址為 CFB8H) PWM 模塊的跳線:在 S 端短路時,單脈沖;
在 D 段短路時,雙脈沖
0809 的 CLK 接 CPU 掛箱的 CLK3,ADIN0 接模擬輸入。


CSEG     AT     4000H PORT        EQU        0CFB8H PWM        EQU        P1.0

LJMP        START CSEG     AT  4030H
START:  MOV     R3,#1H
MOV   DPTR,#PORT    ;啟動通道 0
MOVX  @DPTR,A MOV   R0,#30H
LOOP1:  DJNZ  R0,LOOP1
MOVX  A,@DPTR SWAP    A
ANL    A,#0FH CJNE    A,#0H,LP JMP    LP2
LP:    CJNE    A,#0FH,LP1
JMP    LP2
LP1:     MOV     R0,A MOV     R4,A MOV     A,#0FH CLR     C
SUBB     A,R0
MOV         R5,A LP2:     CPL     PWM
MOV     A,R4
MOV     R0,A CALL     DELAY CPL     PWM MOV     A,R5
MOV     R0,A CALL     DELAY DJNZ    R3,LP2
MOV     R3,#1H JMP    START
DELAY:  MOV     R1,#8FH DELAY1:NOP
DJNZ    R1,DELAY1
DJNZ    R0,DELAY RET
END (2)LED 顯示程序 CSEG  AT  0000H
LJMP  START

CSEG  AT  4100H
PORT     EQU    0CFB8H START:    SETB    P1.0
MOV    DPTR,#PORT     ;啟動通道 0
MOVX    @DPTR,A WAIT:    JNB    P1.0 WAIT
MOVX    A,  @DPTR MOV     R0,  A


DISP:    MOV     DPTR,#0CFE9H    ; MOV     A,#08H
MOVX     @DPTR,A
MOV     DPTR,#0CFE9H    ;寫顯示 RAM 命令字 MOV     A,#90H
MOVX     @DPTR,A


MOV    A,  R0    ;轉換結果
ANL    A,#0F0H   
SWAP    A   
ACALL    TABLE    ;轉換為顯碼


MOV    DPTR,#0CFE8H    ;8279 數據口地址
MOVX    @DPTR,A
;送顯碼輸出

MOV     A,  R0     ;轉換結果
ANL    A,#0FH
ACALL    TABLE    ;轉換為顯碼


MOV    DPTR,#0CFE8H     ;8279 數據口地址 MOVX    @DPTR,A     ;送顯碼輸出
CALL     DELAY

LJMP     START


DELAY:    MOV     R6,#255    ;延時 DEL2:    MOV     R5,#255
DEL3:    NOP NOP
DJNZ  R5,DEL3
DJNZ  R6,DEL2
RET

TABLE:    INC     A
MOVC     A,@A+PC RET
DB     3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB     7FH,6FH,77H,7CH,39H,5EH,79H,71H

END

(3)總程序


CSEG    AT    4000H   
PORT    EQU    0CFB8H    ;端口地址
PWM    EQU    P1.0   
LJMP    START
CSEG     AT  4030H


START: MOV    R3,#1H    ;設置模擬輸出通道個數為 1,PWM 調速程序部分 MOV   DPTR,#PORT    ;啟動通道 IN0,端口地址送 DPTR
MOVX  @DPTR,A    ;啟動 A/D 轉換
MOV   R0,#30H    ;軟件延時,等待轉換結束


LOOP1:  DJNZ R0,LOOP1    ;R0 寄存器減 1,不為零則轉移 MOVX A,@DPTR     ;讀取轉換結果
SWAP    A     ;高低半字節交換
ANL    A,#0FH     ;屏蔽高四位,取低四位
CJNE    A,#0H,LP    ;比較電壓是否為 0V,不相等則跳轉至子程序 LP JMP    LP2    ;等于 0V 則跳轉至方波輸出子程序 LP2

LP:     CJNE    A,#0FH,LP1    ;不等于 5V 則跳轉至子程序 LP1
JMP    LP2    ;等于 5V 則跳轉至方波輸出子程序 LP2

LP1:     MOV    R0,A    ;轉換值存入 R0
MOV    R4,A    ;轉換值存入 R4
MOV    A,#0FH     ;最大值送入累加器 CLR     C    ;進位位清零
SUBB     A,R0
MOV     R5,A


LP2:     CPL    PWM    ;PWM 求反,為 0,方波輸出子程序 MOV         A,R4
MOV     R0,A
CALL     DELAY    ;延時
CPL     PWM    ;PWM 求反,P1.0=1
MOV     A,R5

MOV     R0,A CALL     DELAY
DJNZ    R3,LP2    ;R3 減 1,不等于零則轉移,循環 MOV    R3,#1H     ;重新置值
JMP    START     ;跳轉至 START 程序


START1: MOV    DPTR,#0CFB8H    ;顯示部分程序 MOV     DPTR,#PORT
MOVX    @DPTR,A


WAIT:    JNB    P1.0  WAIT    ;等待中斷 MOVX    A,  @DPTR
MOV     R0,  A

DISP:     MOV    A,R1    ;轉換結果存入 R1
SWAP    A     ;分離高四位和低四位 ANL     A,#0FH
MOV     50H,A    ;存入 50H 中 MOV     A,R1
ANL    A,#0FH
MOV     51H,A    ;存入 51H 中 MOVX     @DPTR,A

LPPO:    MOV MOV MOVX MOV MOV    DPTR,#0CFE9H A,#90H
@DPTR,A R0,50H R2,#02H    ;寫顯示  RAM 命令字



;存放轉換結果地址,初值送 R0
    MOV    DPTR,#0CFE8H    ;8279 數據口地址
DL0:   
MOV ACALL    A,@R0
TABLE   

;絕對調用,轉換為顯碼
    MOVX
INC DJNZ SJMP CALL LJMP    @DPTR,A
R0
R2,DL0
DEL1
DELAY START    ;送顯碼輸出

;短轉移

DELAY:    MOV    R6,#8FH     ;延時程序
DELAY1:  NOP
DJNZ  R6,DELAY1
DJNZ  R0,DELAY

DEL1:  MOV R6,#15H DEL2:  MOV R7,#25H DEL3:      NOP
NOP
DJNZ  R7,DEL3
DJNZ  R6,DEL2
CJMP  START     ;循環 RET


IT0P:        SETB      TR1  ;開定時器 1    ;中斷程序 SETB    ET1
RETI    ;中斷返回 IT1P:
CLR  TR0
CLR  TR1
MOV   A,TL0
MOV   TH0,#0H;  置零 MOV   TL0,#0H;
MOV   TH1,  #3CH     ;重置初值 MOV   TL1 ,#0B0H
MOV   R2,  A
ACALL  DISP ;調用顯示函數 ACALL  COMPARE
RETI

TABLE:    INC             A
MOVC     A,@A+PC RET
DB     3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB     7FH,6FH,77H,7CH,39H,5EH,79H,71H

END


調試說明
1.實驗現象
當電位器旋到最小電壓輸出時,電機停止轉動,LED 模塊顯示為“00”;逐步增大電位 器的電壓輸出,直流電機的轉速逐步加快,LED 顯示增大;當電位器旋到最大電壓輸出時, 電機轉速最大,LED 顯示為“FF”。

2.列舉問題
LED 顯示由“00”逐漸增大到“FF”過程中顯示正常,但是過一段時間后顯示變為“00”, 并不再改變。
3.原因分析

經分析為計數器計數溢出。計數器記錄的是方波脈沖,在從“00”增大到“FF”過程是 可以正常計數,但當計數超過“FF”時,計數器發生溢出,所以顯示變成“00”。可以通過 添加中斷程序,當計數器發生溢出時,CPU 響應中斷,并將計數器清零,重新計數可以解決 此問題。

IT0P:
SETB  TR1 ;開定時器 1
SETB  ET1
RETI    ;中斷返回 IT1P:
CLR  TR0
CLR  TR1
MOV   A,TL0
MOV   TH0,#0H;  置零 MOV   TL0,#0H;
MOV   TH1,  #3CH     ;重置初值 MOV   TL1 ,#0B0H
MOV   R2,  A
ACALL  DISP ;調用顯示函數 ACALL  COMPARE
RETI END

4.實驗總結
(1)實驗實現功能 本實驗實現了通過調節電位器的不同電壓輸出來改變直流調速電機的轉速。當電位器輸
出最小時,電機轉速最慢;電位器輸出最大時,電機達到最大轉速。并且電機的轉速可以通 過 LED 模塊顯示出來,可以通過觀察來發現電機轉速的情況。因此,本實驗即達到了動態調 節電機轉速,又實現了實時監測電機的運轉情況。

(2)實驗不足及改正意見
本實驗雖然實現了直流電機調速和 LED 動態顯示,但 LED 顯示的數值是經過延時后輸出 的,并不是電機現在轉速的實時精確值。不過就現有的實驗條件來看已經是所能達到的最準 確的。
另外,此試驗只利用了單片機的某一些端口,并且也是一些不很復雜的輸出和輸入,數 據轉換功能,并未充分利用單片機的片內資源。就這一點來看,由本實驗出發,單片機所能 實現的功能還有待進一步在后續的試驗中繼續開發。
實驗編程使用的是匯編語言,具有編寫的程序效率高,占用的存儲空間小,運行速度快, 能直接管理和控制硬件設備,直接訪問存儲器及 I/O 接口電路等優點。但其可讀性和可維護 性較差,編寫程序需要對硬件電路及存儲器特別了解,是設計程序時不能把精力全部集中到 程序所能實現的功能上。如果程序很長的話,無論是讀懂還是修改都是一件很麻煩的事。因 此,建議適當學習高級語言,如 C 語言的單片機程序編寫。可以減少在程序設計階段一些不 必要的麻煩。

記錄

1.解釋霍爾器件的工作過程。 答:在電機同軸的轉盤上裝有兩塊的強力磁鋼,它們的磁極性相反,以保持轉盤的平衡
并保證轉盤每轉一周霍爾開關只導通一次。霍爾開關平時輸出為正電壓,當轉盤上的磁鋼與 霍爾開關正對時,霍爾開關輸出負電壓,經整形、放大輸出。單片機通過對負脈沖計數,可 計算出電機的轉速。
2.PWM 模塊上的 IN4002 是什么元件,作用是什么。 答:IN4002 是二極管,作用是整流。
3.PWM 模塊上 JUMP 跳線的 S/D 分別是什么,有什么作用。 答:JUMP 跳線的作用為極性選擇。
2、3 腳短接(即 D 端)為雙極性;1、2 腳短接(即 S 端)為單極性。 單極性時,PWM  IN 為高,電機兩端無電壓;PWM  IN 為低,電機兩端為正電壓。單
極性是只可以調節電機的轉速;雙極性時可以調節電機的轉速和轉動方向。

以上內容的Word格式文檔51黑下載地址:
單片機綜合實驗-PWM直流電機調速-449985896529647d27285290.doc (713.5 KB, 下載次數: 12)

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区 | 亚洲精品一区二区在线观看 | 国内精品免费久久久久软件老师 | 97精品超碰一区二区三区 | 涩涩视频在线观看 | 国产精品二区三区 | a级免费观看视频 | 91国在线 | a毛片 | 99re6在线视频 | 免费网站国产 | 日韩av免费在线电影 | 在线永久看片免费的视频 | 成人黄色在线观看 | 精品av久久久久电影 | 久久久av一区 | 日韩小视频 | 中文字幕在线第一页 | 99精品国产一区二区三区 | 日韩精品一区二区三区第95 | 亚洲一区二区三区四区五区中文 | 国产中文字幕亚洲 | 在线免费观看黄a | 亚洲毛片在线 | 一区二区在线免费观看 | 日韩视频区 | 日日精品 | 亚洲高清av在线 | 精品日韩在线 | 国产男女猛烈无遮掩视频免费网站 | 999久久久久久久久6666 | 国产色网 | 国产一区二区三区 | 色播久久 | 亚洲精品乱码久久久久久久久久 | 久久a久久 | 二区av| 国产1区2区3区 | 色综合久久久久 | 国产精品无码专区在线观看 | 欧美激情欧美激情在线五月 |