最挣钱的三个销售行业,seo难不难,网站店铺vr场景可以做吗,成都网站制作工作室1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备#xff0c;包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复用器可以直接访问8个单端模拟信号。 该设备消除了外部零点和满量程调整的需要。通过锁存和解码的多路复用器地址输入以及锁存的TTL TRI-STATE®输出提供了与微处理器的简易接口。 ADC0808的设计通过结合几种A/D转换技术的最理想方面进行了优化。ADC0808和ADC0809提供高速、高精度、温度依赖性小、长期精度和重复性极佳并且功耗极低。这些特点使得该设备非常适合从过程和机器控制到消费和汽车应用的应用。
特点 易于与所有微处理器接口 可以比率计量操作或使用5 Vpc或模拟跨度调整的电压参考 不需要零点或满量程调整 8通道多路复用器带地址逻辑 输入范围0V至5V单5V电源供电
引脚定义 IN0~IN78路模拟量输入端。
D0~D78位数字量输出端。
ADDA、ADDB、ADDC3位地址输入线用于选择8路模拟通道中的一路选择情况见表。
ALE地址锁存允许信号输入高电平有效。
STARTA/D转换启动信号输入高电平有效。
EOCA/D转换结束信号输出。当启动转换时该引脚为低电平当A/D转换结束时该线脚输出高电平。
OE数据输出允许信号输入高电平有效。当转换结束后如果从该引脚输入高电平则打开输出三态门输出锁存器的数据从D0~D7送出。
CLK时钟脉冲输入端。要求时钟频率不高于640KHZ. REF、REF-基准电压输入端。 时序图 典型电路 2、仿真电路 电路中12位的max1241和adc0808电压采样结果形成对比红色数码管显示的是 adc0808蓝色数码管显示的是max1241的采样结果结果表明两者误差相差10倍以上。
3、软件代码
ADC0808.c
/********************************************************************** 模块名称: Adc0808.h* 模块名ADC0808控制模块* 功能描述: 该模块定义了与ADC0808进行通信所需的宏和函数原型* 创 建 人bianjingyuan * 日期2024-10-30* 编译环境Windows XP MPLAB IDE 8.83 Picc 9.60* 版本号1.0* 修改记录*********************************************************************/
// 数据类型定义
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define nop asm(NOP)
#define sleep asm(sleep)
//**************************新增模块的相关定义**********************************/
// 定义0808通信端口
/*解析:
START、EOC 和 OE 是用于0808通信的端口信号。
TRISD3 0 配置RD3为输出表示在代码中START信号将由微控制器驱动。
TRISD4 1 配置RD4为输入表示在代码中EOC信号为微控制器从外部设备读取的信号。
TRISA0 0 配置RA0为输出表示在代码中OE信号将由微控制器驱动。
*/
#define START RD3 // RD3作为输出
#define EOC RD4 // RD4作为输入
#define OE RA0 // RA0作为输出// 宏定义 - 这里定义了PORTC为某个特定的硬件寄存器
#define ADC_DATA_PORT PORTC//**************************本模块的函数定义**********************************/
uchar ad_result0;
extern void delayus(uchar a);// 延时10us最准
/********************************************************************** 函数名: Adc0808_Read* 功能描述: 读取ADC0808的转换结果* 调用函数: delayus()* 全局变量: ad_result, START, EOC, OE* 输 入: 无* 返 回: ADC转换结果无符号字符*********************************************************************/
uchar Adc0808_Read(void)
{// 首先是START信号由低变高再变低START 0;START 1; // 清空ADC0808的内部寄存器值delayus(10);START 0; // 下降沿开始AD转换// 然后看EOC信号由高到低while (EOC 0); // 等待EOC信号为0表示转换完成// OUTPUT ENABLE(OE)信号变高然后读取输出信号OE 1; // 使能输出ad_result ADC_DATA_PORT; // 使用宏定义来读取数据OE 0; // 关闭输出return ad_result; // 返回ADC转换结果
}main.c
//********************************************************************
//* 文件名main.c
//* 文件描述单片机主程序负责系统初始化和电压显示
//* 编译环境: Windows XP MPLAB IDE 8.83 Picc 9.60
//* 编程者: bianjingyuan
//* 编程日期: 2024-11-06
//* 版本号1.0
//* 修改记录无
//********************************************************************
void main()
{Initial_System(); // 初始化系统设置ad_init(); // 初始化AD转换功能Set_Port_IO(); // 设置端口IO方向max7219_int(); // 初始化MAX7219显示驱动di(); // 禁用全局中断TRISD0 1; // RD0为转换结果输入TRISD4 1; // 配置RD4为输入TRISC 0b11111111; // 配置RC端口为输入max1241_init_io(); // 初始化MAX1241模块add3 0; add2 0; // 清除显示数据add1 0; add0 0;redo:counter 0;for (k 10; k 0; k--) // 进行10次采样以获得5.115V电压基准{max1241_read_io(); // 读取MAX1241转换结果counter counter adre_1241; // 累加转换结果}cal_hex(counter 3); // 计算结果并转为十六进制send(0x05, add3 128); // 发送小数点相关数据用于显示电压send(0x06, add2);send(0x07, add1);send(0x08, add0);counter 0;for (k 20; k 0; k--) // 进行20次采样以获得ADC0808转换结果{Adc0808_Read(); // 读取ADC0808的转换结果counter counter ad_result; // 累加ADC转换结果}cal_hex(counter); // 计算并转为十六进制send(0x01, add3 128); // 发送ADC结果send(0x02, add2);send(0x03, add1);send(0x04, add0);delay1s(); // 延时1秒delayms(100); // 延时100毫秒delayus(10); // 延时10微秒delay1s(); // 再次延时1秒goto redo; // 循环返回到redo标签
}
4、代码解析 该代码实现了对 ADC0808 的控制与数据读取。ADC0808 是一种8位模数转换器具有8通道的多路复用输入。代码通过定义宏、设置引脚以及实现读取函数实现与 ADC0808 的通信。模块的主要功能包括 定义数据类型及控制信号 使用宏定义了一些常用的数据类型缩写及控制信号如 START、EOC 和 OE分别用于启动转换、检测转换结束和使能数据输出。定义 ADC_DATA_PORT 为数据读取端口。 读取转换结果 Adc0808_Read() 函数用于执行模数转换并读取转换结果。通过控制引脚信号顺序实现对 ADC0808 的启动、转换完成检测以及数据读取。 5、硬件资源分配表
序号引脚类别方向功能定义功能内容相关寄存器及配置1RD3数字IO输出START启动信号TRISD3 02RD4数字IO输入EOC转换完成信号TRISD4 13RA0数字IO输出OE输出使能信号TRISA0 04PORTC数据端口输入ADC_DATA_PORT读取ADC数据数据端口PORTC
6、软件流程图 在这个流程图中
启动ADC转换过程流程的起点开始ADC的转换过程。设置START信号由低变高再变低设置ADC的START信号通常是一个脉冲信号用于启动ADC转换。等待EOC信号变高等待转换结束信号EOCEnd of Conversion变为高电平表示转换完成。使能输出(OE)读取转换结果使能输出使能信号OE准备读取转换结果。 7、仿真运行结果