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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7434|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STC12C2052AD單片機串口應(yīng)用及A/D轉(zhuǎn)換

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-24 19:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 51黑黑黑 于 2016-3-3 00:51 編輯

(一)STC12C2052 系列單片機簡介
STC12C2052 系列單片機是單時鐘/機器周期(1T)的兼容8051內(nèi)核的單片機,是高速/低功耗的新一代8051單片機,全新的流水線/精簡指令集結(jié)構(gòu),其特點是:
1.增強型 1T流水線/ 精簡指令集結(jié)構(gòu) 8051 CPU
2.工作電壓:2.4V -3.8V / 3.4V - 5.5V
3.工作頻率范圍:0 - 35MHz,相當(dāng)于普通8051 的0~420MHz
4.用戶應(yīng)用程序空間512 /1K / 2K / 3K / 4K / 5K 字節(jié)
5.片上集成 256字節(jié)RAM
6.15 個通用I/O 口,復(fù)位后為:準雙向口/ 弱上拉
可設(shè)置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏
7.EEPROM 功能
8.共2個16 位定時器/ 計數(shù)器
9.PWM(2 路)/PCA(可編程計數(shù)器陣列)
10.ADC, 8 路8位精度
11. 通用異步串行口(UART)
12. SPI 同步通信口, 主模式/ 從模式
13.看門狗
14.內(nèi)部集成 R/C振蕩器,精度要求不高時可省外部晶體
15.ISP/IAP
16.工作溫度范圍: 0 -75℃ / -40 -+85℃
17.封裝: PDIP-20,SOP-20(寬體),TSSOP-20



STC12C2052AD 系列帶A/D轉(zhuǎn)換的單片機在P1 口,有8 路8 位高精度的高速A/D 轉(zhuǎn)換器,速度可達100KHz。P1.7 - P1.0 共8 路電壓輸入型A/D,可做溫度檢測、電池電壓檢測、按鍵掃描、頻譜檢測等。上電復(fù)位后P1 口為弱上拉型I/O 口,用戶可以通過軟件設(shè)置將8 路中的任何一路設(shè)置為A/D 轉(zhuǎn)換,不需作為A/D 使用的口可繼續(xù)作為I/O 口使用。需作為A/D使用的口需先將其設(shè)置為高阻輸入或開漏模式。在P1M0、P1M1 中對相應(yīng)的位進行設(shè)置。

ADC_START: 模數(shù)轉(zhuǎn)換器(ADC)轉(zhuǎn)換啟動控制位,設(shè)置為“1”時,開始轉(zhuǎn)換
ADC_FLAG: 模數(shù)轉(zhuǎn)換器轉(zhuǎn)換結(jié)束標志位,當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG =1。

STC12C2052AD 系列單片機內(nèi)部有256 字節(jié)常規(guī)的RAM。器件的內(nèi)部常規(guī)數(shù)據(jù)存儲器由3 部分組成:
1.低128字節(jié)RAM(00H~7FH),可直接和間接尋址, 用“MOV”和“MOV@Ri”
2.高128字節(jié)RAM(80H~FFH),間接尋址,用“MOV@Ri”
3.特殊功能寄存器(80H~FFH),只可直接尋址, 用“MOV”
由于高128字節(jié)RAM 和SFR(特殊功能寄存器)占用相同的地址,因此高128 字節(jié)RAM 空間必須用間接尋址(MOV @Ri)來區(qū)分。特殊功能寄存器(80H ~FFH),只可直接尋址(用“MOV”)來區(qū)分。盡管R AM和SFR的地址相同,但它們在物理上是獨立的。
(一)STC12C2052 系列單片機應(yīng)用實例
;下面是利用STC12C4052AD單片機A/D轉(zhuǎn)換器采集數(shù)據(jù),通過串口收到的TPH值決定是幾個通道采集數(shù)據(jù),"AA"雙通道,"CC"三通道,默認一個通道,每采集完128個數(shù)據(jù)后,通過串口發(fā)送到主機,主機收到數(shù)據(jù)后顯示波形,STC12C4052AD單片機比STC12C2052AD單片機FLASH程序存儲器大,其它相同。
                     ORG0000H
AJMP MAIN;轉(zhuǎn)入主程序
                       ORG 0003H ;外部中斷P3.2INT0入口地址
                       RETI
                       ORG000BH;
                       RETI
                       ORG 0013H;
                        RETI
                       ORG 0023H
                       LJMP S
                    WDT_CONTR   EQU0C1H
                    ADC_CONTR  EQU 0C5H   ;A/D轉(zhuǎn)換寄存器
                    ADC_DATA  EQU  0C6H  ;8A/D轉(zhuǎn)換結(jié)果寄存器
                    P1M0 DATA 91H
                    P1M1 DATA 92H
                    TPHDATA 30H ;根據(jù)TPH值決定是幾個通道采集數(shù)據(jù),"AA"雙通道
                    ADC_Channel_1_Result    EQU 33H   ;1通道A/D轉(zhuǎn)換結(jié)果
                    ADC_Power_On_Speed_Channel_0 EQU11100000B    ;;B7=power,B6B5=speed,B4=flag,B3=start;B2B1B0=ch0-ch7, 000P1.0作為A/D輸入,000P1.0輸入
                    ADC_Power_On_Speed_Channel_1 EQU 11100001B  ;001P1.1作為A/D輸入
                    ADC_Power_On_Speed_Channel_2 EQU 11100010B  ;010P1.2作為A/D輸入
MAIN:                MOV  ADC_CONTR, #ADC_Power_On_Speed_Channel_0
                     ; SETB IT0 ;設(shè)定INT0de觸發(fā)方式為脈沖負邊沿觸發(fā)
                      MOV SCon,#50h; 方式1,REN=1.SM0,SM1SM2,REN,TB8,RB8,TI,RI
                      MOV TMOD,#21H;波特率發(fā)生器T1工作在模式2
                      MOV TH1,#0FFH;0E6H;預(yù)置初值(按照波特率1200BPS預(yù)置初值)24.576=12800
                      MOV TL1,TH1;預(yù)置初值(按照波特率1200BPS預(yù)置初值)
                      MOV PCON,#80H ;SMOD=1倍頻
                      MOV  TH0, #10H  ;3.6864M最大定時213.3ms,1000h定時200ms
                   MOV   TL0, #00H
                      SETB TR1;啟動定時器T1
                    ;  MOV WDT_CONTR ,#25H;;;;;;看門狗設(shè)置使能
                      MOVP1M0,#10000111b     ; P1M0=0 P1M1=0雙向口   P1M0=1 P1M1=0輸入口   P1M0=0 P1M1=1推挽輸出20ma
                      MOV P1M1,#01111000b

                      MOV A,#0H
                      MOV R0,#80H
                      MOV R2,#128
CLEAR:               MOV @R0,A
                      INC R0
                      INC A
                      DJNZ R2,CLEAR
                      CALL YSC
                      CALL YSC
                      MOVTPH,#22D     ;4個正弦波=11
                      SETB EA
                      SETBES
DS18B10:              MOV A,TPH
                      XRLA,#0AAH      ;根據(jù)TPH值決定是幾個通道采集數(shù)據(jù),"AA"雙通道
                      JZ DS18B2
                      MOV A,TPH
                      XRLA,#0CCH      ;根據(jù)TPH值決定是幾個通道采集數(shù)據(jù),"CC"三通道
                      JZ DS18B3
                     
DS18B20:              JBP3.7,DS18B10                ;單通道采集數(shù)據(jù)
                      CLR EA
                      MOV R0,#80h;CLR EA
                      MOV R2,#128
                      ;ACALLADC_Power_On             ;ADC電源,第一次使用時要打開內(nèi)部模擬電源
                      JB P1.7,DS17                   ;根據(jù)p1.7 選擇AD通道
                      ACALLSet_ADC_Channel_1        ;設(shè)置 P1.1 作為A/D轉(zhuǎn)換通道  MOV   ADC_CONTR,#ADC_Power_On_Speed_Channel_1
                      AJMP DS18B
DS17:                 MOV   ADC_CONTR,#ADC_Power_On_Speed_Channel_0
                      ACALL CH0
DS18B:                ACALLGet_AD_Result            ;測量電壓并且取A/D轉(zhuǎn)換結(jié)果
                      MOV   A,ADC_Channel_1_Result  ; AD 轉(zhuǎn)換結(jié)果
                      MOV @R0,A;
                      INC R0
                      ; JNB P1.7 ,DS18
                      ACALL YS
DS18:                 DJNZ R2,DS18B
                      CALL FXL1
                      ; MOV   ADC_CONTR,#10000000B
                      CALL YSC
                      CALL YSC
                      CALL YSC
                      CALL YSC
                      SETB EA
                      SJMP DS18B20

DS18B2:               JBP3.7,$                       ;雙通道采集數(shù)據(jù)
                      CLR EA
                      MOV R0,#80h;80H--0FFH128RAM
                      MOV R2,#128
DS2:                  MOV A, ADC_CONTR
                      JB ACC.0, DS1
                      ACALLSet_ADC_Channel_1        ;設(shè)置 P1.1 作為A/D轉(zhuǎn)換通道  MOV   ADC_CONTR,#ADC_Power_On_Speed_Channel_1
                      AJMP DS18B1
DS1:                  MOV   ADC_CONTR,#ADC_Power_On_Speed_Channel_0
                      ACALL CH0
DS18B1:               ACALLGet_AD_Result        ;測量電壓并且取A/D轉(zhuǎn)換結(jié)果
                      MOV   A,ADC_Channel_1_Result  ; AD 轉(zhuǎn)換結(jié)果
                      MOV @R0,A;
                      INC R0
                      ; ACALL YS
                      DJNZ R2,DS2
                      CALL FXL1
                      CALL YSC
                      CALL YSC
                      CALL YSC
                      CALL YSC
                      SETB EA
                      SJMP DS18B10;DS2
                     
DS18B3:               JBP3.7,$                       ;三通道采集數(shù)據(jù)
                      CLR EA
                      MOV R0,#80h;CLR EA
                      MOV R2,#128
                      MOV   ADC_CONTR,#ADC_Power_On_Speed_Channel_2
                      ACALL CH0
DS18B4:               ACALLGet_AD_Result        ;測量電壓并且取A/D轉(zhuǎn)換結(jié)果
                      MOV   A,ADC_Channel_1_Result  ; AD 轉(zhuǎn)換結(jié)果
                      JZ DS18B5
                      SUBB A,#64H
DS18B5:               ADD A,#32H
                      MOV @R0,A;
                      INC R0
                      ACALLYS      ;TPH=CCH
                      DJNZ R2,DS18B4
                      CALL FXL1
                      CALL YSC
                      CALL YSC
                      CALL YSC
                      CALL YSC
                      SETB EA
                      LJMP DS18B10;
                     
S:                    PUSH ACC
                         PUSHPSW
                        PUSH04H
                        PUSHDPH
                        PUSHDPL
                      CLR   ES
S1:                   SETB REN
                      JNBRI,$         ;判斷特征字
                      CLR RI
                      MOV A,SBUF
                      MOV TPH,A
                      POP DPL
                        POPDPH
                        POP04H
                        POPPSW
                        POPACC
SOVER:               SETB ES
                      RETI

FXL1:                MOV R0,#80H
                     MOV R2,#128D
FXL1B:               MOVSBUF,@R0
                     JNB TI,$
                     CLR TI
                     INC R0
                     JB P3.7,$
                     DJNZ R2,FXL1B
                     RET
;--------------------------------------------------------------
ADC_Power_On:
                     PUSH  ACC
                     ORL   ADC_CONTR,#80H          ;A/D轉(zhuǎn)換電源
                     MOV   A, #20H
                     ACALLDelay8  ;A/D轉(zhuǎn)換電源后要加延時,1mS以內(nèi)就足夠了
                     POP   ACC
                     RET
;-------------------------------------------------------------
Set_ADC_Channel_1:
                     MOV   ADC_CONTR,#ADC_Power_On_Speed_Channel_1  ;選擇P1.1作為A/D轉(zhuǎn)換通道
CH0:                 MOV   A,#05H   ;更換 A/D 轉(zhuǎn)換通道后要適當(dāng)延時, 使輸入電壓穩(wěn)定 ;以后如果不更換 A/D 轉(zhuǎn)換通道的話, 不需要加延時                  
                     ACALLDelay8    ;切換 A/D 轉(zhuǎn)換通道,加延時20uS200uS就可以了,與輸入電壓源的內(nèi)阻有關(guān) ;如果輸入電壓信號源的內(nèi)阻在10K以下,可不加延時      
                     ;ACALL DELAY20US
                     RET
;----------------------------------------------------------
Get_AD_Result:
                     PUSH ACC                      ;入棧保護
                     MOV   ADC_DATA, #0
                     ORL   ADC_CONTR,#00001000B    ;啟動 AD 轉(zhuǎn)換
                     NOP   ;在對ADC_CONTR寄存器進行寫操作后,要加4個空操作延時,才能夠正確讀到ADC_CONTR的值
                     NOP   ;
                     NOP   ;
                     NOP   ;
Wait_AD_Finishe:
                     MOV   A,#00010000B            ;判斷 AD 轉(zhuǎn)換是否完成
                     ANL   A, ADC_CONTR
                     JZ   Wait_AD_Finishe         ;AD 轉(zhuǎn)換尚未完成, 繼續(xù)等待
                     ANL   ADC_CONTR,#11100111B    ;0 ADC_FLAG, ADC_START , 停止A/D轉(zhuǎn)換
                     MOV   A, ADC_DATA
                     MOV  ADC_Channel_1_Result,A  ;保存 AD 轉(zhuǎn)換結(jié)果
                     POP   ACC
                     RET
;---------------------------------------------------------------
Delay8:
               PUSH 02                       ;將寄存器組0 R2入棧
               PUSH 03                       ;將寄存器組0 R3入棧
               PUSH 04                       ;將寄存器組0 R4入棧
               MOV   R4, A
Delay_Loop0:
               MOV   R3,#100;200             ;2 CLOCK  ---------------------+
Delay_Loop1:                   ;                             |
               MOV  R2,#249             ;2 CLOCK ------+             |
Delay_Loop:                    ;              | 1002 CLOCK   |200406CLOCK
               DJNZ  R2,Delay_Loop       ;4CLOCK       |             |
               DJNZ  R3,Delay_Loop1      ;4 CLOCK ------+             |
               DJNZ  R4,Delay_Loop0      ;4 CLOCK  ---------------------+
               POP   04
               POP   03
               POP   02
               RET
;----------------------------------------------------------------

YS:             MOV     7EH,   TPH;#64H
YS1:            MOV     7FH,   #40D;0FFH
YS2:            DJNZ    7FH,   YS2
                DJNZ    7EH,   YS1
                RET
YSC:            MOV     7EH,   #0FFH
YSC1:           MOV     7FH,   #0FFH
YSC2:           DJNZ    7FH,   YSC2
                DJNZ    7EH,   YSC1
                RET

             end
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:647857 發(fā)表于 2019-12-24 02:12 來自手機 | 只看該作者
有c語言嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲日本国产 | av黄色片在线观看 | 精品一区二区久久久久久久网站 | 欧美黄色精品 | 天天干夜夜操视频 | 一区二区日本 | 羞羞的视频网站 | 男人天堂网av | 欧美中文在线 | 欧美成人a∨高清免费观看 欧美日韩中 | 亚洲91精品| 久草热视频| av黄色免费 | 观看av | www.天天干.com| 超碰人人做 | 精品免费av| 人和拘一级毛片c | 日本中文在线视频 | 久久久久久九九九九九九 | 久久精品中文字幕 | 国产精品久久欧美久久一区 | 国产一区二区 | 国产二区三区 | 久久噜噜噜精品国产亚洲综合 | 一本大道久久a久久精二百 欧洲一区二区三区 | 欧美男人天堂 | 五月免费视频 | 黄色一级大片在线免费看产 | 精品久久久久国产免费第一页 | 亚洲 中文 欧美 日韩 在线观看 | 久久久久国产精品一区二区 | 久色视频在线 | 天天曰天天干 | 欧美日韩一区在线 | 精品一区二区在线观看 | 涩色视频在线观看 | 麻豆久久久久久久 | 国产一区二区免费 | 久久久久久久夜 | 国产伊人精品 |