ADC0809程序(基础知识)

来源:本站
导读:目前正在解读《ADC0809程序(基础知识)》的相关信息,《ADC0809程序(基础知识)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ADC0809程序(基础知识)》的详细说明。
简介:ADC0809程序

/*---------------------------------------------------------------------------------------------------

程序说明:adc0809接到51单片机的P1口,P1口接有8个LED,每次转换结束都可以通过LED观察到转换结果(低电平亮),ADC参考电压与单片机的电源要一致

通过验证:输入5v则LED全灭

输入0v则LED全亮

通过电位器控制输入0~5v则1602显示输出从0~255逐次增加

------------------------------------------------------------------------------------------------------*/

#include

#include

#include"1602.c"

#define uchar unsigned char

#define uint unsigned int

sbit ADC_START=P2^0;

sbit ADC_ALE =P2^1;

sbit ADC_OE =P2^2;

sbit ADC_EOC =P2^3;

sbit D0=P1^0;

sbit D1=P1^1;

sbit D2=P1^2;

sbit D3=P1^3;

sbit D4=P1^4;

sbit D5=P1^5;

sbit D6=P1^6;

sbit D7=P1^7;

uchar ad_dat;

/*---------------------------------

函数名:delayus(i)

功 能:延时t=(12*i+14)us

参 数:i

返回值:无

备 注: 晶振12MHz

-----------------------------------*/

/*void delayus(i)

{

for(i;i>0;i--);

}

*/

/*---------------------------------

dac0809初始化

----------------------------------*/

void init0809()

{

ADC_START=0;

ADC_OE =0;

_nop_();

ADC_ALE=0;

_nop_();

_nop_();

_nop_();

ADC_ALE=1; //ALE=1时地址进入锁存器

_nop_();

_nop_();

_nop_();

ADC_ALE=0; //ALE=0时地址被锁存住

_nop_();

_nop_();

_nop_();

}

/*---------------------------------

dac0809模数转换

----------------------------------*/

void ADC_0809()

{

ADC_START=1; //上升沿复位

_nop_();

_nop_();

_nop_();

ADC_START=0; //下降沿开始

_nop_();

_nop_();

_nop_();

while(!ADC_EOC); //等待转换结束

ADC_OE =1;

w_dat_1602(0x30+(uchar)D0);

w_dat_1602(0x30+(uchar)D1);

w_dat_1602(0x30+(uchar)D2);

w_dat_1602(0x30+(uchar)D3);

w_dat_1602(0x30+(uchar)D4);

w_dat_1602(0x30+(uchar)D5);

w_dat_1602(0x30+(uchar)D6);

w_dat_1602(0x30+(uchar)D7);

delayus(5);

ADC_OE =0;

}

void main()

{

init0809();

init_1602();

delayus(10);

while(1)

{

w_com_1602(0x80);

ADC_0809();

}

}

#include

#define uchar unsigned char

#define uint unsigned int

sbit rs=P2^4; //1602io引脚

sbit rw=P2^5; //1602io引脚

sbit e=P2^6; //1602io引脚

/*---------------------------------

函数名:delayusus(i)

功 能:延时t=(12*i+14)us

参 数:i

返回值:无

备 注: 晶振12MHz

-----------------------------------*/

void delayus(i)

{

for(i;i>0;i--);

}

/*---------------------------------

函数名:w_com_1602(uchar com)

功 能:写命令

参 数:uchar com

返回值:无

-----------------------------------*/

void w_com_1602(uchar com)

{

e=0;

rs=0;

rw=0;

delayus(2);

P0=com;

e=1;

delayus(2);

e=0;

delayus(2);

}

/*---------------------------------

函数名:w_dat_1602(uchar dat)

功 能:写数据

参 数:uchar dat

返回值:无

-----------------------------------*/

void w_dat_1602(uchar dat)

{

e=0;

rs=1;

rw=0;

delayus(2);

P0=dat;

e=1;

delayus(2);

e=0;

delayus(2);

}

/*---------------------------------

函数名:init_1602()

功 能:1602初始化

参 数:无

返回值:无

-----------------------------------*/

void init_1602()

{

P0=0xff; //端口初始化

w_com_1602(0x38); //功能设置

w_com_1602(0x0f); //开光标但不闪烁

w_com_1602(0x06); //设置输入方式

w_com_1602(0x01); //清屏

delayus(5);

}

提醒:《ADC0809程序(基础知识)》最后刷新时间 2024-03-14 01:14:13,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ADC0809程序(基础知识)》该内容的真实性请自行鉴别。