當前位置:首頁 » 編程語言 » ad7366c語言程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

ad7366c語言程序

發布時間: 2022-08-25 04:49:14

1. 單片機c52 用c語言編寫的 要實現ad轉換程序

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS=P3^0;
sbit CLK=P3^1; //時鍾
sbit DIO=P3^2; //ADC0832輸出引腳
sbit din=P0^7;

uchar code tab1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E}; //共陽數碼表
uchar code tab[4]={0xfe,0xfd,0xfb,0xf7}; //數碼管位選表

void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<121;j++);

}

uint A_D() // A/D轉換函數
{
unsigned char i,dat;

CS=0; //片選
CLK=0; //為第1個脈沖作準備
CLK=1; //第1個脈沖
DIO=1; // DI置1,規定的起始信號
_nop_();_nop_();

CLK=0; //第1個脈沖的下降沿
CLK=1; //第2個脈沖
DIO=1; // DI置1, 通道選擇信號:1
_nop_();_nop_();

CLK=0; //第2個脈沖下降沿
CLK=0; //第3個脈沖
DIO=1; // DI置0,通道選擇信號:0, 選通道0
_nop_();_nop_();

// CLK=0; //第3個脈沖下降沿,轉換開始
// _nop_();_nop_();//第3個脈沖後,
// CLK=1;
for(i=0;i<8;i++) //高位在前
{

CLK=1; //第4個脈沖
if(DIO)
dat=(dat<<1)|0x80;//從高位至低位讀取 "|"的優先順序高於">>"
else
dat=(dat<<1)|0x00;
CLK=0;
}
for(i=0;i<8;i++) //高位在前
{

CLK=1; //第4個脈沖
if(DIO)
dat=(dat>>1)|0x80;//從高位至低位讀取 "|"的優先順序高於">>"
else
dat=(dat>>1)|0x00;
CLK=0;
}

CS=1;
CLK=1;
return dat;
}
void display(uint k)
{

P2=tab[1];
P0=tab1[k/100];
din=0;
delay(3);
P2=0xff;

P2=tab[2];
P0=tab1[k/10%10];
delay(3);
P2=0xff;

P2=tab[3];
P0=tab1[k%10];
delay(3);
P2=0xff;

}

void main(void) //主函數
{
uint temp;
while(1)
{
temp=A_D()*5.0/256*100; // 根據轉換結果求出電壓值
display(temp);
}
}

ADC0832程序 板子做出來 能用

2. 51單片機 C語言ADC程序怎麼寫

typedef unsigned char BYTE;
typedef unsigned int WORD;
#include "reg51.h"
#include "intrins.h"

/*Declare SFR associated with the ADC */
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;

/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60

//延時
void Delay(WORD n)
{
WORD x;

while (n--)
{
x = 5000;
while (x--);
}
}

//初始AD寄存器
void InitADC()
{
P1ASF = 0xff;
ADC_RES = 0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}

//AD轉換
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;

return ADC_RES;
}

void main()
{ BYTE temp;
P2M1=0; P2M0=0x03; //P2.0和P2.1強推挽
InitADC();
while (1)
{
temp=GetADCResult(0);//轉換P1.0
if(temp>1)
P2|=0x03; //P1.0有電壓 P2.0和P2.1輸出高
else
P2&=0xFC; //P1.0無電壓 P2.0和P2.1輸出低
}
}

3. c語言編程軟體AD574的程序

你的函數聲明,和函數原型的參數要一樣才行,改了就錯了。
調用時也要按照定義的參數個數來調用,類型也要正確,否則就錯了。

4. 求簡單C語言程序代碼!

輸入2個正整數m和n,求其最大公約數和最小公倍數

#include

#include

int main()

int m,n,p,q,s,r;

printf("請輸入兩個正整數;m,n ");

scanf("%d,%d",&m,&n);

#include<stdio.h>

main()

int a,b,t=0;

scanf("%d %d",&a,&b);

if (a<b)

printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));

}

主要特點

C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大,依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。

以上內容參考:網路-c語言

5. 51單片機ad轉換的C語言程序怎麼編寫啊

晶元采樣回來後,是一個AD值。需要轉換成想要的一些內容的話,要做表格。
如溫度轉換。首先要製作一個溫度對應的AD表格。多大的值是多少度。
查表可以採用順序法進行。
從表格的第一個開始查起,比第一個大時,再比較第二個,依次類推。每比較一次,將計數器累加一次。
比上一個大,比下一個小時,就是上一個溫度點,此時,把計數器的值拿出來就是對應的溫度值。
圖要看晶元資料連接了,應該很簡單的。

6. AD 控制LED燈亮度 C語言程序怎麼編寫

/**52系列單片機,晶振12MHz,P1.0輸出100Hz方波(即周期10ms),方波由T0定時器產生
P1.3接按鍵
K1,每按一次按鍵,方波占空比改變一次,依次為:1/10→2/10→……→9/10→1/10,如此循環**/
#include"reg52.h"
//包含52系列頭文件
#define
uchar
unsigned
char
//定義
無符號字元型
#define
uint
unsigned
int
//定義
無符號整型
#define
TRUE
1
//定義
邏輯真
#define
FALSE
0
//定義
邏輯假
#define
th0
0xfc
//100Hz(10ms),占空比分母10,則其最小時間單位應該為10ms/10=1ms,故定時器T0定時時間為
1ms
#define
tl0
0x18
//1ms
at
12HMz
Fosc
#define
DutyDeno
10
//定義
占空比分母
為:10
sbit
WaveOut=P1^0;
//定義
方波輸出
介面
sbit
Key1=P1^3;
//定義
按鍵Key1
介面
uchar
DutyNume=1;
//定義
占空比分子
變數,並初始化為
1(即
占空比
為:1/10)
void
Timer0()
interrupt
1
//定時器T0
中斷
函數
{
static
uchar
ty_time=0;
//定義靜態變數,作為
占空比
輸出時間的參考值(1ms)
TL0=tl0;
TH0=th0;
//重賦定時器初值,1ms
ty_time=++ty_time%DutyDeno;
//該句等效於:ty_time++;ty_time%=DutyDeno;
if(ty_time<DutyDeno)
WaveOut=1;
//若計時時間小於
占空比分子,則輸出應為
高電平
else
WaveOut=0;
//若計時時間大於
占空比分子,則輸出應為
低電平
}
void
TimerInit()
//定時器初始化
函數
{
TMOD=0x01;
//T0
16位定時器
EA=1;
//允許系統中斷
ET0=1;
//允許T0中斷
TH0=th0;
TL0=tl0;
//1ms
初值
TR0=1;
//T0開始計時
}
void
KeyResp()
//按鍵響應
函數
{
static
bit
KeyDownFlag,KeyReadyFlag;
//定義
靜態標志位,KeyDownFlag
按鍵按下標志,KeyReadyFlag
按鍵准備(響應)標志
if(!Key1)
//若按鍵Key1
被按下
{
KeyDownFlag=TRUE;
//按鍵按下標志
置位
KeyReadyFlag=TRUE;
//按鍵准備標志
置位
}
else
KeyDownFlag=FALSE;
//若按鍵Key1
無按下,則清空
按鍵按下標志
if(!KeyDownFlag
&&
KeyReadyFlag)
//若
按鍵已准備,且按鍵無按下(即
鬆手狀態)
{
DutyNume++;
//占空比分子
加1
if(DutyNume==DutyDeno)
DutyNume=1;
//若
占空比分子=分母,則返回
1
KeyReadyFlag=FALSE;
//按鍵處理完畢,清
按鍵准備標志
}
}
void
main()
//主函數
{
TimerInit();
//調用
定時器初始化
函數
while(1)
//循環系統
{
KeyResp();
//調用
按鍵響應
函數
}
}
方波輸出介面接燈;

7. 假定從AD7703中讀出的數據中的高4位存於32H單元,中8位存於31H單元,低8位存於30H單元 用C語言怎麼寫啊

READ20()
{
P11 = 0;
P13 = 1;
while(P12 == 1);
P13 = 0;
h4 = EXTDD(4);
h8 = EXTDD(8);
l8 = EXTDD(8);
P13 = 1;
}

EXTDD(char x)
{
char y = 0;
P10 = 1;
for (; x > 0; x--) {
P11 = 0;
y <<= 1;
P11 = 1;
if (P10) y += 1;
}
return y;
}

8. ad測交流電壓、交流電流、有功功率、無功功率的C語言程序

我也正在做這個,要不留個qq號。我們可以探討探討。我的qq372303445

9. 有沒有人能幫我講解一下這個C語言程序的執行過程

#include"stdio.h"

main()

{ char s[80];

int i,j;

gets(s);

for(i=j=0;s[i]!='';i++)//這里只有i++,j++在下面,j不隨for循環自加1

if (s[i]!='c')

s[j++]=s[i];//每有一個不為'c'的單位出現,j自加1;並且該單位的值,重新賦值給數組s,從s[0]開始,因為j初值為0

else//這加個else便於理解,等價於源代碼;該單位的值為'c',就向該單位賦予空值;

s[j]='';

puts(s);

}//例如輸入abcdec,分別占據s[0]='a',s[1]='b',s[2]='c',s[3]='d',s[4]='e',s[5]='c';

//s[0](j==0),s[1](j==1)還是賦值在原位,

//s[2](這if不成立,j不自加1)s[2]='',

//s[3]不為'c'(j==2),所以'd'就賦給了s[2];

//s[4](j==3),'e'賦予s[3],

//s[5]='',賦空值;