导航:首页 > 操作系统 > 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程序相关的资料

热点内容
淮南程序员接私活项目 浏览:480
怎样加密自己的密码 浏览:521
安卓怎么关权限保护隐私 浏览:390
海牛微视app怎么用 浏览:70
单片机怎样选变压器 浏览:829
癌症pdf 浏览:725
云服务器镜像批量部署环境 浏览:683
安卓手机浏览器能访问什么网站 浏览:254
找不到网站的服务器ip地址该如何解决 浏览:743
算法十个数降序排列 浏览:95
基于单片机的老年人健康监测系统 浏览:706
python入门经典pdf下载 浏览:17
东芝变频2p空调压缩机 浏览:227
自家wifi怎么能加密 浏览:644
红米k40加密门禁卡 浏览:847
什么样的源码好看 浏览:156
手机主服务器有什么用 浏览:612
程序编写命令 浏览:597
android发送心跳包 浏览:385
指标源码和原理 浏览:700