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

標(biāo)題: STC12C2052AD單片機(jī)串口應(yīng)用及A/D轉(zhuǎn)換 [打印本頁]

作者: 51黑黑黑    時(shí)間: 2016-2-24 19:02
標(biāo)題: STC12C2052AD單片機(jī)串口應(yīng)用及A/D轉(zhuǎn)換
本帖最后由 51黑黑黑 于 2016-3-3 00:51 編輯

(一)STC12C2052 系列單片機(jī)簡介
STC12C2052 系列單片機(jī)是單時(shí)鐘/機(jī)器周期(1T)的兼容8051內(nèi)核的單片機(jī),是高速/低功耗的新一代8051單片機(jī),全新的流水線/精簡指令集結(jié)構(gòu),其特點(diǎn)是:
1.增強(qiáng)型 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 個(gè)通用I/O 口,復(fù)位后為:準(zhǔn)雙向口/ 弱上拉
可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,推挽/強(qiáng)上拉,僅為輸入/高阻,開漏
7.EEPROM 功能
8.共2個(gè)16 位定時(shí)器/ 計(jì)數(shù)器
9.PWM(2 路)/PCA(可編程計(jì)數(shù)器陣列)
10.ADC, 8 路8位精度
11. 通用異步串行口(UART)
12. SPI 同步通信口, 主模式/ 從模式
13.看門狗
14.內(nèi)部集成 R/C振蕩器,精度要求不高時(shí)可省外部晶體
15.ISP/IAP
16.工作溫度范圍: 0 -75℃ / -40 -+85℃
17.封裝: PDIP-20,SOP-20(寬體),TSSOP-20



STC12C2052AD 系列帶A/D轉(zhuǎn)換的單片機(jī)在P1 口,有8 路8 位高精度的高速A/D 轉(zhuǎn)換器,速度可達(dá)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 中對(duì)相應(yīng)的位進(jìn)行設(shè)置。

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

STC12C2052AD 系列單片機(jī)內(nèi)部有256 字節(jié)常規(guī)的RAM。器件的內(nèi)部常規(guī)數(shù)據(jù)存儲(chǔ)器由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的地址相同,但它們?cè)谖锢砩鲜仟?dú)立的。
(一)STC12C2052 系列單片機(jī)應(yīng)用實(shí)例
;下面是利用STC12C4052AD單片機(jī)A/D轉(zhuǎn)換器采集數(shù)據(jù),通過串口收到的TPH值決定是幾個(gè)通道采集數(shù)據(jù),"AA"雙通道,"CC"三通道,默認(rèn)一個(gè)通道,每采集完128個(gè)數(shù)據(jù)后,通過串口發(fā)送到主機(jī),主機(jī)收到數(shù)據(jù)后顯示波形,STC12C4052AD單片機(jī)比STC12C2052AD單片機(jī)FLASH程序存儲(chǔ)器大,其它相同。
                     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值決定是幾個(gè)通道采集數(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ù)邊沿觸發(fā)
                      MOV SCon,#50h; 方式1,REN=1.SM0SM1SM2REN,TB8RB8TI,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最大定時(shí)213.3ms1000h定時(shí)200ms
                   MOV   TL0, #00H
                      SETB TR1;啟動(dòng)定時(shí)器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個(gè)正弦波=11
                      SETB EA
                      SETBES
DS18B10:              MOV A,TPH
                      XRLA,#0AAH      ;根據(jù)TPH值決定是幾個(gè)通道采集數(shù)據(jù),"AA"雙通道
                      JZ DS18B2
                      MOV A,TPH
                      XRLA,#0CCH      ;根據(jù)TPH值決定是幾個(gè)通道采集數(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電源,第一次使用時(shí)要打開內(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--0FFH128個(gè)RAM
                      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)換電源后要加延時(shí),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)延時(shí), 使輸入電壓穩(wěn)定 ;以后如果不更換 A/D 轉(zhuǎn)換通道的話, 不需要加延時(shí)                  
                     ACALLDelay8    ;切換 A/D 轉(zhuǎn)換通道,加延時(shí)20uS200uS就可以了,與輸入電壓源的內(nèi)阻有關(guān) ;如果輸入電壓信號(hào)源的內(nèi)阻在10K以下,可不加延時(shí)      
                     ;ACALL DELAY20US
                     RET
;----------------------------------------------------------
Get_AD_Result:
                     PUSH ACC                      ;入棧保護(hù)
                     MOV   ADC_DATA, #0
                     ORL   ADC_CONTR,#00001000B    ;啟動(dòng) AD 轉(zhuǎn)換
                     NOP   ;在對(duì)ADC_CONTR寄存器進(jìn)行寫操作后,要加4個(gè)空操作延時(shí),才能夠正確讀到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

作者: wd1135108562    時(shí)間: 2019-12-24 02:12
有c語言嗎




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产激情视频网址 | 偷拍自拍在线观看 | 国产在线麻豆精品入口 | 爱草在线 | 国产黄色大片 | 日韩精品中文字幕在线 | 亚洲一区在线日韩在线深爱 | 日本三级网站在线 | 青青久草| 91久久久久久久久久久久久 | 亚洲精品久久久一区二区三区 | 国产精品久久久亚洲 | 99re6在线| 日本久久久久久 | 成人三级视频在线观看 | 成人日韩av | 日本精品一区二区三区在线观看视频 | 国产成人免费视频网站高清观看视频 | 国内精品久久精品 | 成人午夜精品一区二区三区 | 日本不卡一区二区三区 | 国产精品资源在线 | 亚洲欧美日韩一区二区 | 毛片免费观看视频 | 伊人久久大香线 | 91大神在线看 | 大象一区 | 亚洲精品专区 | 国产成都精品91一区二区三 | 欧美成人精品一区二区男人看 | 日韩视频免费 | 日韩在线不卡 | 欧美片网站免费 | 日本综合在线观看 | 免费a级毛片在线播放 | 欧美一区二区大片 | 精品国产一区二区三区久久久四川 | 欧美黑人狂野猛交老妇 | 一区二区三区在线免费观看 | 国产人免费人成免费视频 | 蜜臀久久99精品久久久久久宅男 |