STCCAS內(nèi)部ADC轉(zhuǎn)換串口顯示程序_第1頁(yè)
STCCAS內(nèi)部ADC轉(zhuǎn)換串口顯示程序_第2頁(yè)
STCCAS內(nèi)部ADC轉(zhuǎn)換串口顯示程序_第3頁(yè)
STCCAS內(nèi)部ADC轉(zhuǎn)換串口顯示程序_第4頁(yè)
STCCAS內(nèi)部ADC轉(zhuǎn)換串口顯示程序_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、STC12C5A60S加部ADC專換串口顯示程序(已經(jīng)驗(yàn)證成功)#include<stc12c5a60s2.h>#include"intrins.h"typedefunsignedcharuchar;typedefunsignedintuint;/*設(shè)置ADC_CONTRL控制寄存器*/#defineADC_POWER0x80換電源/ADC電源控制為0:關(guān)閉AD轉(zhuǎn)換電源1:打開AD轉(zhuǎn)#defineADC_FLAG0x10/ADC轉(zhuǎn)換結(jié)束標(biāo)志位,AD轉(zhuǎn)換后自動(dòng)置1,/由軟件清零(這里作取反使用)#defineADC_START0x08/ADC轉(zhuǎn)換啟動(dòng)控制位,設(shè)置為

2、1時(shí)開始AD轉(zhuǎn)換,/轉(zhuǎn)換結(jié)束后為0#defineADRJ_0x04/AUXR1寄存器的ADRJ位是轉(zhuǎn)換結(jié)果寄存器(ADC_RES,ADC_RESL)的數(shù)據(jù)格式調(diào)整控制位/ADRJ為0時(shí),10位AD轉(zhuǎn)換結(jié)果的高8位存放在ADC_RES2位存放在ADC_RESL的低2位/ADRJ為1時(shí),10位AD轉(zhuǎn)換結(jié)果的高2位存放在ADC_RES低2位中,低8位存放在ADC_RESL#define ADC_SPEEDLL 0x00#define ADC_SPEEDL 0x20#define ADC_SPEEDH 0x40#define ADC_SPEEDHH 0x60uchar ch = 0;/540個(gè)時(shí)鐘周期

3、轉(zhuǎn)換一次(最低速)/360個(gè)時(shí)鐘周期轉(zhuǎn)換一次(低速)/180個(gè)時(shí)鐘周期轉(zhuǎn)換一次(高速)/90個(gè)時(shí)鐘周期轉(zhuǎn)換一次(最高速)模擬通道ucharcodenum='0','1',2,'3','4',5,'6',7,'8','9'/字符數(shù)組,輸出到串口顯示voiddelay2ms(void)/誤差0.000000000000usunsignedchara,b;for(b=129;b>0;b-)for(a=45;a>0;a-);voiddelay2s(void)/誤差-0.00000

4、0000111usunsignedchara,b,c,n;for(c=142;c>0;c-)for(b=168;b>0;b-)for(a=250;a>0;a-);for(n=2;n>0;n-);_nop_();/ifKeil,requireuseintrins.h/*uchar wj_uun = '!'/用于存放串口 1 接收的字符void bt_uart_init(void)/ 單片機(jī)串口初始化許串口接收/SCON=0X50;SM0 = 0;SM1 = 1;REN = 1;/ SM0=0 SM1=1 SM2=0 REN=1/ 串口工作方式1: 1 位起

5、始位, 8 位數(shù)據(jù)位, 1 位停止位允/ 允許串口接收/RI=1;/接收標(biāo)志位,0:正在接收1:接收完畢(如果RI=1就一直執(zhí)行串口中斷)TMOD = 0X20;/ 定時(shí)器 T1 工作方式 2TH1 = 0XFD;/ 9600bit/s 下的定時(shí)器初值TL1=0XFD;TR1=1;/啟動(dòng)定時(shí)器T1EA=1;/開總中斷ES=1;/開串行口中斷/*1 發(fā)送函數(shù)*/voids1_send_char(uchardat)/發(fā)送端(發(fā)送的是字符)SBUF=dat;/將字符送入發(fā)送緩沖寄存器while(!TI);/TI為發(fā)送狀態(tài)標(biāo)志位,0:發(fā)送中1:發(fā)送結(jié)束TI=0;/手動(dòng)清零標(biāo)志位voids1_send_

6、string(uchar*pt)/通過(guò)調(diào)用發(fā)送字符函數(shù)來(lái)發(fā)送字符數(shù)組while(*pt!='0')s1_send_char(*pt+);voidADC_Init(void)/P1ASF=0x01;/設(shè)置P1口的0為模擬輸入端口(經(jīng)過(guò)測(cè)試這句寫不寫P1口都能模擬輸入)ADC_RES=0;/先清空兩個(gè)寄存器ADC_RESL=0;AUXR1&=ADRJ_;/ADRJ為0的存儲(chǔ)格式(參考技術(shù)手冊(cè))ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;/開啟ADC電源并且啟動(dòng)ADC/經(jīng)過(guò)最少四個(gè)時(shí)鐘周期之后才能夠正確讀取到ADC_CONTR的值

7、delay2ms();EADC=1;/允許ADC中斷*主函數(shù) *voidmain()P4SW=0x70;/P4端口的4、5、6腳可作為通用I/O口bt_uart_init();/串口初始化ADC_Init();/ADC初始化while(1);/*ADC中斷函數(shù)*voidADC_(void)interrupt5/ADC中斷編號(hào)為5uintadc_result=0;/while(!(ADC_CONTR&ADC_FLAG);/如果未轉(zhuǎn)換結(jié)束,等待ADC_CONTR寄存器ADC_FLAG位置1/ADC_CONTR&=ADC_FLAG;/清零ADC轉(zhuǎn)換結(jié)束標(biāo)志位(這句可以不寫,)if(A

8、DC_CONTR&ADC_FLAG)ADC_RESL&=0x03;adc_result=ADC_RES*4+ADC_RESL;/獲取到10AD轉(zhuǎn)換值s1_send_string("通道號(hào):");s1_send_char(numch);/通過(guò)串口發(fā)送通道號(hào)s1_send_string("轉(zhuǎn)換值:");/一共四位數(shù)s1_send_char(numadc_result/1000);s1_send_char(numadc_result%1000/100);s1_send_char(numadc_result%100/10);s1_send_char(numadc_result%10);if(+ch>3)ch=0;/不斷切換通道號(hào)0、1、2、3/再次設(shè)置ADC_CONTR寄存器ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;delay2s();/*1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論