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]!='