當前位置:首頁 » 編程語言 » c語言adc

c語言adc

發布時間: 2023-11-10 19:07:42

A. pic系列單片機用c語言編程時,讓他執行A/D轉換的指令是什麼

AD轉換不是一條指令就可以完成的,它要先經過埠設置,AD設置等過程後才能准備進入AD轉換,下例是從北航的<PIC16單片機C程序設計與PROTEUS模擬>一書中得到的啟發編制的程序,希望對你能有幫助.建議你看一下這本書,對初學和想進一步提高在PIC單片機應用編程等會有用的.

附圖是對應程序的,在模擬時調整電位器可以看到AD結果的變化,並通過計算器可以驗證程序的正確性.

//ADl轉換示例,可以改變輸入電壓、AD通道、結果對齊方式等,看其變化

#include<pic.h>

__CONFIG(0x3F39);//配置位設置

voidmain(void)

{ chari,X,Y;

TRISA=0xFF; //將所有的A口設置為輸入

TRISE=0x03; //將所有的E口設置為輸入

TRISD=0; //C口與D口全為輸出

TRISC=0;

ADCON1=0b10000000; //設置AD結果對齊方式、AD時鍾選擇(與ADCON0的位7,6一起),AD埠設置等

ADCON0=0b01011001; //AD時鍾選擇(與ADCON1的位6一起),通道選擇,AD模塊使能

while(1)

{ NOP();

for(i=0;i<3;i++) //延時時間大約20us

NOP();

ADGO=1; //開始AD

while(ADGO==1); //等待AD轉換完成

ADIF=0;

X=ADRESH; //讀取AD結果高位元組至C口

PORTC=X;

Y=ADRESL; //讀取AD結果低位元組至D口

PORTD=Y;

};

}

B. AD轉換(C語言)

//------------------------------------------------------------
// ADC0809模數轉換
//ADC0809采樣通道3輸入的模擬量,轉換後結果顯示在數碼管上
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

uchar code LEDData[]=;
//ADC0809引腳定義
sbit OE=P1^0;
sbit EOC=P1^1;
sbit ST=P1^2;
sbit CLK=P1^3;
//延時
void Delayms(uint ms)
{
uchar i;
while(ms--)for(i=0;i<120;i++);
}
//顯示轉換結果
void Display_Result(uchar d)
{
P2=0xf7;
P0=LEDData[d%10];
Delayms(5);
P2=0xfd;
P0=LEDData[d%100/10];
Delayms(5);
P2=0xfd;
P0=LEDData[d/100];
Delayms(5);
}
// 主程序
void main()
{
TMOD=0x02;
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
P1=0x3f;//選擇ADC0809通道3(0111)
//高4位設通道地址為0111
while(1)
{
ST=0;ST=1;ST=0;//啟動轉換
while(EOC==0); //等待轉換結果
OE=1; //允許輸出
Display_Result(P3); //顯示A/D轉換結果
OE=0; //關閉輸出
}
}
//T0定時器中斷給ADC0809提供時鍾信號
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0809時鍾信號
}

C. PIC單片機C語言編程,二進制如何轉換成十六進制。

二進制到十六進制不需要轉換,C語言的十六進制在計算機中也是作二進制處理。
ADC的轉換值通過液屏顯示,你需要把ADC值轉換為字元的ASCII碼。
比如ADC=123,你要把123的二進制碼轉換為123字元對應的二進制碼。
方法1:
使用#include<stdio.h>中 的字元串轉換函數sprintf:
sprintf的一個功能:
int a = 12345;
char s[10] = "";
sprintf(s,"%d",a);
那麼此時有
s[0]=1; s[1]=2; s[2]=3; s[3]=4; s[4]=5;
char s[10] = "12345 ";

也就是把一個int型按逐個字元轉換成了char型,存在數組中的是字元型,ASC碼
這樣就能把字元的ASC碼直接寫入屏顯示了。

2.把ADC的每一位值摳出,再每位數加上'0':
如ADC=123,
a=ADC/100=123/100=1,A=a+'0',就得到ADC 的最高位字元,就是'1'.
b=ADC/10%10=123/10%10,就得到ADC 的第二位字元'2' .

熱點內容
requestdatapython 發布:2025-01-31 08:02:01 瀏覽:44
javades加密工具 發布:2025-01-31 07:54:04 瀏覽:243
電話如何配置ip 發布:2025-01-31 07:48:48 瀏覽:300
2021賓士e300l哪個配置性價比高 發布:2025-01-31 07:47:14 瀏覽:656
sqlserver2008光碟 發布:2025-01-31 07:32:13 瀏覽:578
sql查詢小時 發布:2025-01-31 07:23:00 瀏覽:423
新車鑒別時怎麼查看汽車配置 發布:2025-01-31 07:19:37 瀏覽:881
linux驅動程序開發 發布:2025-01-31 06:56:03 瀏覽:771
nlms演算法 發布:2025-01-31 06:55:56 瀏覽:899
結束伺服器怎麼操作 發布:2025-01-31 06:54:17 瀏覽:394