導航:首頁 > 操作系統 > 51單片機ad程序

51單片機ad程序

發布時間:2023-03-17 23:31:08

『壹』 51單片機AD轉換實驗,電路和程序

#include <reg51.h>
#include <INTRINS.H>
#include <STDIO.H>

// define P1.0 to check STATUS.
sbit STATUS = P1^0;

unsigned char xdata CTRL _at_ 0x2FFF;
unsigned char xdata ADSEL _at_ 0x4FFF;
unsigned char hByte;
unsigned char lByte;

void adc_Convert (void)
{ // Start a conversion with A0 and A/$C$ low.
// The convesion takes place on rising CE edge.
CTRL = 0x00;
ADSEL = 0x00;
// Wait until we have completed a conversion .
while(STATUS==1);
// Set R/$C$ with A0 low and read the low byte.
CTRL = 0x02;
hByte = ADSEL;
// Set R/$C$ with A0 high and read the high.
CTRL = 0x03;
lByte = ADSEL;
}

void main(void)
{ unsigned int delay, MSB , LSB, adc_Res;
// Initialize serial interface
SCON = 0xDA; // SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xFD; // TH1: reload value for 1200 baud @ 12MHz */
TR1 = 1; // TR1: timer 1 run */
TI = 1; // TI: set TI to send first char of UART */

while(1)
{ adc_Convert();
MSB=(unsigned int)(hByte << 4);
LSB=(unsigned int)(lByte >> 4);
// adc_Res now has the converted data with 12-bit resolution.
adc_Res = MSB + LSB;
// Send adc results to the serial interface
printf("ADC READINGS: %03Xh\n", adc_Res);
// simple delay - it is mcu clock dependent !
for (delay=0; delay<10000; delay++)
;
}
}

『貳』 用匯編語言寫一個51單片機adc0809的程序

正好做過,就給你吧!
*************************************
;* *
;* 主程序和中斷程序入口 *
;* *
;*************************************
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI
ORG 002BH
RETI
;
;*************************************
;* *
;* 初始化程序中橘仿的各變數 *
;* *
;*************************************
CLEARMEMIO: CLR A
MOV P2,A
MOV R0,#70H
MOV R2,#0DH
LOOPMEM: MOV @R0,A
INC R0
DJNZ R2,LOOPMEM
MOV 20H,#00H
MOV A,#0FFH
MOV P0,A
MOV P1,A
MOV P3,A
RET
;
;*************************************
;* *
;* 主 程 序 *
;* *
;*************************************
START: LCALL CLEARMEMIO ;初始化
MAIN: LCALL TEST ;測量一次
LCALL DISPLAY ;顯示數據一次
AJMP MAIN
NOP ;PC值出錯處理
NOP
NOP
LJMP START
;
;*************************************
;* 顯 示 控 制 程 序 *
;*************************************
;
DISPLAY: JB 00H,DISP11 ;
MOV R3,#04H ;4路信號循環顯示控鏈春制
MOV R0,#70H ;顯示數據初址70H~73H
MOV 77H,#00H ;顯示通道路數初值
DISLOOP1: LCALL TUNBCD ;顯示數據轉為三位BCD碼存入76H、75H、74H(最大5.00v)
MOV R2,#0FFH ;每路顯示時間控制圓喚纖 4MS*255
DISLOOP2: LCALL DISP ;調四位顯示程序
LCALL KEYWORK1 ;
DJNZ R2,DISLOOP2 ;
INC R0 ;顯示下一路
INC 77H ;通道顯示數加一
DJNZ R3,DISLOOP1
RET
;
DISP11: MOV A,77H ;
SUBB A,#01H ;
MOV 77H,A ;
ADD A,#70H ;
MOV R0,A ;
DISLOOP11: LCALL TUNBCD ;顯示數據轉為三位BCD碼存入7AH、79H、78H(最大5.00v)
MOV R2,#0FFH ;每路顯示時間控制 4MS*25
DISLOOP22: LCALL DISP ;調四位顯示程序
LCALL KEYWORK2 ;
DJNZ R2,DISLOOP22
INC 77H ;通道顯示數加一
RET
;
;*************************************
;* 顯示數據轉為三位BCD碼程序 *
;*************************************
;顯示數據轉為三位BCD碼存入76H、75H、74H(最大值5.00v)
;
TUNBCD: MOV A,@R0 ;255/51=5.00V運算
MOV B,#51 ;
DIV AB ;
MOV 76H,A ;個位數放入76H
MOV A,B ;余數大於19H,F0為1,乘法溢出,結果加5
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10 ;
MUL AB ;
MOV B,#51 ;
DIV AB
JB F0,LOOP2 ;
ADD A,#5
LOOP2: MOV 75H,A ;小數後第一位放入75H
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10 ;
MUL AB ;
MOV B,#51 ;
DIV AB
JB F0,LOOP3 ;
ADD A,#5
LOOP3: MOV 74H,A ;小數後第二位放入74H
RET
;
;*************************************
;* ? 顯?示 程 序 *
;*************************************
;共陽顯示子程序,顯示內容在74H—77H
;
DISP: MOV R1,#74H ;共陽顯示子程序,顯示內容在74H—77H
MOV R5,#0FEH ;數據在P1輸出,列掃描在P3.0-P3.3
PLAY: MOV P1,#0FFH
MOV A,R5
ANL P3,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
JB P3.2,PLAY1 ;小數點處理
CLR P1.7 ;小數點顯示(顯示格式為XX.XX)
PLAY1: LCALL DL1MS
INC R1
MOV A,P3
JNB ACC.3,ENDOUT
RL A
MOV R5,A
MOV P3,#0FFH
AJMP PLAY
ENDOUT: MOV P3,#0FFH
MOV P1,#0FFH
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
;
;*************************************
;* ? ? 延時程序 *
;*************************************
;
DL10MS: MOV R6,#0D0H ;10MS延時子程序
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
;
DL1MS: MOV R4,#0FFH ;513+513=1MS
LOOP11: DJNZ R4,LOOP11
MOV R4,#0FFH
LOOP22: DJNZ R4,LOOP22
RET
;
;*************************************
;* ? 電壓測量(A/D)子程序 *
;*************************************
; 一次測量數據4個,依次放入70H-73H單元中
;
TEST: CLR A ;模數轉換子程序
MOV P2,A
MOV R0,#70H ;轉換值存放首址
MOV R7,#04H ;轉換4次控制
LCALL TESTART ;啟動測試
WAIT: JB P3.7,MOVD ;等A/D轉換結束信號
AJMP WAIT
;
TESTART: SETB P2.3 ;測試啟動
NOP
NOP
CLR P2.3
SETB P2.4
NOP
NOP
CLR P2.4
NOP
NOP
NOP
NOP
RET
;
MOVD: SETB P2.5 ;取A/D轉換數據
MOV A,P0
MOV @R0,A
CLR P2.5
INC R0
MOV A,P2 ;通道地址加1
INC A
MOV P2,A
CJNE A,#04H,TESTEND ;等8路A/D轉換結束
TESTEND: JC TESTCON
CLR A ;結束恢復埠
MOV P2,A
MOV A,#0FFH
MOV P0,A
MOV P1,A
MOV P3,A
RET
;
TESTCON: LCALL TESTART
LJMP WAIT
;
;*************************************
;* ? 按鍵檢測子程序 *
;*************************************
;
KEYWORK1: JNB P3.5,KEY1
KEYOUT: RET
;
KEY1: LCALL DISP ;延時消抖
JB P3.5,KEYOUT
WAIT11: JNB P3.5,WAIT12
CPL 00H
MOV R2,#01H
MOV R3,#01H
RET
;
WAIT12: LCALL DISP ;鍵釋放等待時顯示用
AJMP WAIT11
;
KEYWORK2: JNB P3.5,KEY1
JNB P3.6,KEY2
RET
;
KEY2: LCALL DISP ;延時消抖用
JB P3.6,KEYOUT
WAIT22: JNB P3.6,WAIT21
INC 77H
MOV A,77H
CJNE A,#04H,KEYOUT11
KEYOUT11: JC KEYOUT1
MOV 77H,#00H
KEYOUT1: RET
;
WAIT21: LCALL DISP ;鍵釋放等待時顯示用
AJMP WAIT22
;
END

附錄3:
單片機C源程序清單
/*********************************************************************/
// 四路電壓表C程序
// 使用keil C51 ver7.09
/*********************************************************************/
/*使用AT89C52單片機,12MHZ晶振,P0口讀入AD值,P2口作AD控制,用共陽LED數碼管
P1口輸出段碼,P3口掃描,最高位指示通道(0-7)。*/
#include "reg52.h" //52系列單片機定義文件
#include "intrins.h" //調用_nop_();延時函數用
#define ad_con P2 //AD控制口
#define addata P0 //AD數據計入讀入口
#define Disdata P1 //顯示數據段碼輸出口
#define uchar unsigned char//無符號字元(8位)
#define uint unsigned int //無符號整數(16位)
sbit ALE=P2^3; //鎖存地址控制位
sbit START=P2^4; //啟動一次轉換位
sbit OE=P2^5; //0809輸出數據控制位
sbit EOC=P3^7; //轉換結束標志位
sbit DISX=Disdata^7; //LED小數點
//
//
uchar code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
/* 共陽七段LED段碼表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" */
uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //四位列掃描控制字
uchar data ad_data[8]={0x00,0x00,0x00,0x00};//定義4個數據內存單元
uint data dis[5]={0x00,0x00,0x00,0x00,0x00}; //定義4個顯示數據單元、1個數據暫存單元
//
//
/********1毫秒延時子函數**********/
delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
//
//
/***********顯示掃描子函數**********/
scan()
{
uchar k,n;
int h;
dis[3]=0x00; //通道初值為0
for(n=0;n<4;n++) //每次顯示4個數據
{
dis[2]=ad_data[n]/51; //測得值轉換為三位BCD碼,最大為5.00V
dis[4]=ad_data[n]%51; // 余數暫存
dis[4]=dis[4]*10; //計算小數第一位
dis[1]=dis[4]/51; //
dis[4]=dis[4]%51; //
dis[4]=dis[4]*10; //計算小數第二位
dis[0]=dis[4]/51; //
for(h=0;h<500;h++) //每個通道值顯示時間控制(約1秒)
{
for(k=0;k<4;k++) //四位LED掃描控制
{
Disdata=dis_7[dis[k]];
if(k==2){DISX=0;}
P3=scan_con[k];delay1ms(1);P3=0xff;
}
}
dis[3]++; //通道值加1
}
}
//
//
/*******0809AD轉換子函數***********/
test()
{
uchar m;
uchar s=0x00;
ad_con=s;
for(m=0;m<4;m++)
{
ALE=1;_nop_();_nop_();ALE=0; //轉換通道地址鎖存
START=1;_nop_();_nop_();START=0; //開始轉換命令
_nop_();_nop_();_nop_();_nop_(); //延時4微秒
while(EOC==0); //等待轉換結束
OE=1;ad_data[m]=addata;OE=0;s++;ad_con=s;//取AD值,地址加1
}
ad_con=0x00; //控制復位
}
//
//
/**************主函數****************/
main()
{
P0=0xff; //初始化埠
P2=0x00;
P1=0xff;
P3=0xff;
while(1)
{
scan(); //依次顯示4個通道值一次
test(); //測量轉換一次
}
}
//
//
//*********************結束**************************//

『叄』 51單片機與AD轉換程序

#include<reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitwr=P2^6;

sbitrd=P2^7;

sbitadint=P2^5;

delay(uintz)

{

ucharw;

while(z--)

{

for(w=0;w<125;w++);

}

}

ad_star()

{

wr=1;

wr=0;

wr=1;

}

main()

{

uchara;

while(1)

{

ad_star();

while(adint);

rd=0;

a=P0;

delay(10);

rd=1;

if(a>0&a<=20){P3=0xc0;}

if(a>20&a<=40){P3=0xf9;}

if(a>40&a<=60){P3=0xa4;}

if(a>60&a<=80){P3=0xb0;}

if(a>80&a<=100){P3=0x99;}

if(a>100&a<=120){P3=0x92;}

if(a>120&a<=140){P3=0x82;}

if(a>140&a<160){P3=0xf8;}

if(a>160&a<=180){P3=0x80;}

if(a>180&a<=200){P3=0x90;}

if(a>200&a<=220){P3=0x88;}

if(a>220&a<=240){P3=0x83;}

if(a>240&a<=255){P3=0xc6;}

}

}

『肆』 求51單片機AD程序

如下程序是在
STC
官方網站
提供的。應該很有用。
////
//本示例在Keil開發環境下請選擇Intel的8058晶元型號進行編譯
//假定測試晶元的工作頻率為18.432MHz
#include
"reg51.h"
#include
"intrins.h"
#define
FOSC
18432000L
#define
BAUD
9600
typedef
unsigned
char
BYTE;
typedef
unsigned
int
WORD;
#define
URMD
0
//0:使用定時器2作為波特率發生器
//1:使用定時器1的模式0(16位自動重載模式)作為波特率發生器
//2:使用定時器1的模式2(8位自動重載模式)作為波特率發生器
sfr
T2H
=
0xd6;
//定時器2高8位
sfr
T2L
=
0xd7;
//定時器2低8位
sfr
AUXR
=
0x8e;
//輔助寄存器
sfr
ADC_CONTR
=
0xBC;
//ADC控制寄存器
sfr
ADC_RES
=
0xBD;
//ADC高8位結果
sfr
ADC_LOW2
=
0xBE;
//ADC低2位結果
sfr
P1ASF
=
0x9D;
//P1口第2功能控制寄存器
#define
ADC_POWER
0x80
//ADC電源控制位
#define
ADC_FLAG
0x10
//ADC完成標志
#define
ADC_START
0x08
//ADC起始控制位
#define
ADC_SPEEDLL
0x00
//540個時鍾
#define
ADC_SPEEDL
0x20
//360個時鍾
#define
ADC_SPEEDH
0x40
//180個時鍾
#define
ADC_SPEEDHH
0x60
//90個時鍾
void
InitUart();
void
InitADC();
void
SendData(BYTE
dat);
BYTE
GetADCResult(BYTE
ch);
void
Delay(WORD
n);
void
ShowResult(BYTE
ch);
void
main()
{
InitUart();
//初始化串口
InitADC();
//初始化ADC
while
(1)
{
ShowResult(0);
//顯示通道0
ShowResult(1);
//顯示通道1
ShowResult(2);
//顯示通道2
ShowResult(3);
//顯示通道3
ShowResult(4);
//顯示通道4
ShowResult(5);
//顯示通道5
ShowResult(6);
//顯示通道6
ShowResult(7);
//顯示通道7
}
}
/*----------------------------
發送ADC結果到PC
----------------------------*/
void
ShowResult(BYTE
ch)
{
SendData(ch);
//顯示通道號
SendData(GetADCResult(ch));
//顯示ADC高8位結果
//
SendData(ADC_LOW2);
//顯示低2位結果
}
/*----------------------------
讀取ADC結果
----------------------------*/
BYTE
GetADCResult(BYTE
ch)
{
ADC_CONTR
=
ADC_POWER
|
ADC_SPEEDLL
|
ch
|
ADC_START;
_nop_();
//等待4個NOP
_nop_();
_nop_();
_nop_();
while
(!(ADC_CONTR
&
ADC_FLAG));//等待ADC轉換完成
ADC_CONTR
&=
~ADC_FLAG;
//Close
ADC
return
ADC_RES;
//返回ADC結果
}
/*----------------------------
初始化串口
----------------------------*/
void
InitUart()
{
SCON
=
0x5a;
//設置串口為8位可變波特率
#if
URMD
==
0
T2L
=
0xd8;
//設置波特率重裝值
T2H
=
0xff;
//115200
bps(65536-18432000/4/115200)
AUXR
=
0x14;
//T2為1T模式,
並啟動定時器2
AUXR
|=
0x01;
//選擇定時器2為串口1的波特率發生器
#elif
URMD
==
1
AUXR
=
0x40;
//定時器1為1T模式
TMOD
=
0x00;
//定時器1為模式0(16位自動重載)
TL1
=
0xd8;
//設置波特率重裝值
TH1
=
0xff;
//115200
bps(65536-18432000/4/115200)
TR1
=
1;
//定時器1開始啟動
#else
TMOD
=
0x20;
//設置定時器1為8位自動重裝載模式
AUXR
=
0x40;
//定時器1為1T模式
TH1
=
TL1
=
0xfb;
//115200
bps(256
-
18432000/32/115200)
TR1
=
1;
#endif
}
/*----------------------------
初始化ADC
----------------------------*/
void
InitADC()
{
P1ASF
=
0xff;
//設置P1口為AD口
ADC_RES
=
0;
//清除結果寄存器
ADC_CONTR
=
ADC_POWER
|
ADC_SPEEDLL;
Delay(2);
//ADC上電並延時
}
/*----------------------------
發送串口數據
----------------------------*/
void
SendData(BYTE
dat)
{
while
(!TI);
//等待前一個數據發送完成
TI
=
0;
//清除發送標志
SBUF
=
dat;
//發送當前數據
}
/*----------------------------
軟體延時
----------------------------*/
void
Delay(WORD
n)
{
WORD
x;
while
(n--)
{
x
=
5000;
while
(x--);
}
}

『伍』 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輸出低
}
}

『陸』 C51單片機AD轉換

用c51單片機做AD轉換,只要用一個簡單的延時就可以,沒必要動用定時器這么高級的東西,DMA就更別提了,我寫了很多程序,還真沒有人能用C51實現DMA,DMA一般在arm系列和FPGA等的高級嵌入式裡面才會用到的。

『柒』 請教stc自帶ad的51單片機的使用方法

STC單項片機說明文檔里有例子
下面是我的採集程序,采三次,求平均值:
void adchange()//AD採集程序,採集3路
{
uchar temp7,temp8,temp9,temp10,temp11,temp12;
uint tempa,tempb,tempc,tempd;
ADC_CONTR=ADC_CONTR|0X80; //10000000 開啟轉換電源

Delay1ms(1); //延時,等待內部電源穩定
//P1M0=P1M0|0X07; //設置p1.0 P1.1和 p1.3所在通道為開/漏模式
//P1M1=P1M1|0X07;
ADC_CONTR=0xe0; //11100000 開啟P1.0通道開始轉換
Delay25us(10); //延時一端時間,使輸入電壓達到穩定
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,開始轉換
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D轉換結束
temp7=ADC_DATA; //讀取轉換結果
temp8=ADC_LOW2;
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
ADC_CONTR=ADC_CONTR&0xe7; //將ADC_FLAG軟體清零
Delay25us(1);
ADC_CONTR |= 0x08; //ADC_START=1,開始轉換
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D轉換結束
temp9=ADC_DATA; //讀取轉換結果
temp10=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //將ADC_FLAG軟體清零
Delay25us(1);
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,開始轉換
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D轉換結束
temp11=ADC_DATA; //讀取轉換結果
temp12=ADC_LOW2;
ADC_CONTR=ADC_CONTR&0xe7; //將ADC_FLAG軟體清零
Delay25us(1);
ADC_DATA =0x00; //清A/D轉換結果寄存器
ADC_LOW2 =0x00;
tempa=(temp7*4+temp8);//真煩人,但必須這么算,一次算會出錯
tempb=(temp9*4+temp10);
tempc=(temp11*4+temp12);
tempd=tempa+tempb+tempc;
temp1=(tempd+1)/3;

。。。。。。其它兩路略

//P1M0=P1M0&0X00; //設置P1口為普通I/O模式,以便用P1口顯示數據。
//P1M1=P1M1&0X00;

}

『捌』 求個 51單片機AD ,C語言程序

#include<stc89.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x00};
uchar led[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0x00,0xFF};
sbit adrd=P3^7;
sbit adwr=P3^6;
sbit la=P2^6;
sbit wela=P2^7;

uchar date1=0;
uchar date2=50;
uchar date3=100;
uchar date4=150;
uchar date5=200;
uchar date6=255;

uchar a,sz;

void init();
void delay(uint z);
uchar adchushihua();
void shumaguan(uint shu);
void processing();
void main()
{
init();

while(1)
{

sz=adchushihua();
for(a=10;a>0;a--)
{
shumaguan(sz);
processing();
}
}
}

void init()
{

P0=0x7f;

}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>困塵0;y--);
}

uchar adchushihua()
{
uchar shu;
adwr=1;
_nop_();
adwr=0;
_nop_();
adwr=1;

P1=0xff;

adrd=1;
_nop_();
adrd=0;
_nop_();
shu=P1;
adrd=1;

return shu;
}
void shumaguan(uint shu)
{
uchar ,shi,ge;
=shu/100;
shi=shu%100/10;
ge=shu%10;

la=1;
P0=table[];
la=0;
P0=0xff;
wela=1;
P0=0x7e;
wela=0;
delay(5);

la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0x7d;
wela=0;
delay(5);

la=1;
P0=table[ge];
la=0;
P0=0xff;
wela=1;
P0=0x7b;
wela=0;
delay(5);

}

void processing()
{
if((sz>=date1)&&(sz<=date2))
{
P1=0xfe;
}
else if((sz>=date2)&&(sz<運尺李=date3))
{
P1=0xfd;
}
else if((sz>=date3)&&(sz<=date4))
{
P1=0xfb;
}
else if((sz>=date4)&&(sz<=date5))
{
P1=0xf7;
}
else if((sz>=date5)&&(sz<date6))
{
P1=0xef;
}
else if(sz==date6)
{
P1=~P1;
delay(20);

}

}

這個是我剛剛寫的 根據你的需要 反正閑來無事 我寫的比較籠統 需要你自己根據 自己的實際情況來判斷確定 我只是利用AD簡單的處理 成數碼管顯示的數字 你要是 轉換成電壓 那就把裡面的變數 修改一下 我寫的那個控制LED燈亮就不要動了 只是旁遲修改一下他前面定義的數字就可以 最後那個是我自己加上去的有點趣味性 希望對你有幫助

閱讀全文

與51單片機ad程序相關的資料

熱點內容
如何用python寫vlookup函數 瀏覽:794
社保加密狗廠商 瀏覽:212
php編譯運行說法 瀏覽:953
程序員說喂 瀏覽:238
抖音直播雲伺服器 瀏覽:627
一加7pro文件夾data 瀏覽:424
程序員淋雨 瀏覽:947
python輸出數字序列中的空格 瀏覽:78
怎麼將pdf文件大小 瀏覽:734
氧原子相對分子量演算法 瀏覽:988
加密機為什麼是安全的 瀏覽:451
單片機拼音輸入法 瀏覽:789
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:739
方舟編譯器現在可提速哪些軟體 瀏覽:60
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:604
蘋果13如何加密視頻 瀏覽:815
linuxweblogic緩存 瀏覽:69
雲伺服器不同地域 瀏覽:946