一、A/D(模数)、D/A(数模)转换
(一)、引脚
AOUT:模拟输出
Vref:参考电压
AGND:模拟地
EXT:接地
OSC:悬空
SCL,SDA:IIC
AIN0、AIN1、AIN2:模拟输入口
(二)、电路图
从电路图可以看出,A0,A1,A2接地,所以当写入的时候地址应该是0X90,读取的时候应该是0X91
(三)、AGND和DGND
模拟地和数字地隔离开,消除干扰
(四)、控制字节
(五)、AD读数据函数
#include
#include "delay.h"
#include "iic.h"
#define SUCC 1
#define FAIL 0
unsigned char ad_read_byte(unsigned char device_addr,unsigned char channel)
{
unsigned char result;
unsigned char temp;
iic_start();
result = iic_send_byte(device_addr);
if(result == FAIL)
{
return FAIL;
}
result = iic_send_byte(0x44 + channel);
if(result == FAIL)
{
return FAIL;
}
iic_start();
result = iic_send_byte(device_addr + 1);
if(result == FAIL)
{
return FAIL;
}
temp = iic_rcv_byte();
iic_noack();
iic_stop();
return temp;
}
(六)、AD写数据函数
unsigned char ad_write_byte(unsigned char deviceaddr, unsigned char num)
{
unsigned char result;
iic_start();
result = iic_send_byte(deviceaddr);
if(result == FAIL) return FAIL;
result = iic_send_byte(0x40);
if(result == FAIL) return FAIL;
result = iic_send_byte(num);
if(result == FAIL) return FAIL;
iic_stop();
return SUCC;
}
关键字:51单片机 DA转换
引用地址:
51单片机的AD/DA转换
推荐阅读最新更新时间:2024-03-16 16:02
51单片机矩阵键盘与8051连接设计
众所周知,51单片机一般的键盘检测原理为非编码键盘检测,没有专门用来产生键编码号或键值的电路芯片;而我们使用的电脑键盘为编码键盘,通过编码电路芯片为每个按键产生一个编码号,可以通过串行总线把键值传输给电脑。在进行矩阵键盘检测时,书本或老师一般教的都是扫描检测,即一行一行地检测或者一列一列地检测,代码繁琐复杂,且缺点很多(例如执行效率较低)。 举例电路: 矩阵键盘与8051连接如上图所示,首先,令P3=0x0f,检测P30、P31、P32、P33哪一行被按下,将此时P3的值存入寄存器1。然后,令P3=0xf0 | 寄存器1,检测P34、P35、P36、P37哪一列被按下,将此时P3的值存入寄存器2。最后,把寄存器1的值和寄存
[单片机]
51单片机学习:ADC模数转换实验--光敏电阻AD采集
实验名称:ADC模数转换实验--光敏电阻AD采集 接线说明: 实验现象:下载程序后,数码管上显示AD模块采集光敏电阻的AD值 注意事项: ***************************************************************************************/ #include public.h #include smg.h #include xpt2046.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数
[单片机]
51单片机万能红外遥控解码程序
自己写个万能 红外遥控 解码 本程序中需要用的头文件下载: http://www.51hei.com/mcu/2564.html //家用遥控器通用解码程序 //原理和录音机一样只不过这里录的是高低 电平 的脉宽,注意家用 遥控器 一般是38KHZ的脉冲接收头所以为了 //发射方便所以单片机使用了455MHZ晶振(旧遥控里拆一个),最好不要自己用定时器溢出来输出38KHZ的方波 //我自己试了N种中断或延时的方法都没成功,因为没有示波器也找不到究竟是神马问题最后还是靠拆一个455 晶振 //才解决问题,自己家里的 机顶盒 和电视 遥控 都成功解码 #include STC12C5A60S2.H //STC12C5
[单片机]
51单片机汇编学习和系统除错步骤
如果单片机系统出现问题,检修流程如下: 一、对硬件电路的检查 1、检查电源(40脚) 2、检查振荡(18、19脚) 3、检查地(20脚) 3、检查复位电路(9脚) 4、检查中断允许(31脚) 5、然后再检查是否有信号 6、信号是否正确 二、软件编写规则 1、只被调用一次的不要写成子程序 2、不比自己定义太多的ORG地址入口,只需定义两个,一个0000H,还有一个主程序入口, 3、中断程序需定义自己的程序入口地址, 中断源有INT0,定时器T0,INT1,定时器T1,串行口中断,共5种中断, 入口地址分别为,INT0 = 0003H, 定时器T0 = 000BH, INT1
[单片机]
51单片机入门教程上(保姆级指南)
前言 一、入门学习路线 1.《电路基础》 2.C语言基础 3.单片机基础 4.Altium Designer 二、前期准备工作 1.所需要的软件 (1)Keil 5 (2)STC-ISP (3)Proteus Professional 8 2.所需的硬件 (1)普中A2开发板 (2)其他开发板 正文 一、单片机的最小系统 1.复位电路 2.晶振电路 3.单片机IO口 (1)基本工作条件引脚 (2)输入输出引脚 (3)控制引脚 二、单片机的内部架构 三、单片机可控制的外设 1.LED流水灯 2.矩阵键盘和数码管显示 3.LCD1602和DS18B20 总结 前言 提示:以下是本篇文
[单片机]
51单片机使用点滴
8051单片机是我们最常见的一种单片机,我用8051已经很久了,也教过一段时间的单片机课程,在这里把自己的心得与大家分享一下。 一、硬件部分 1、一定要记得接晶振和复位电路。很多学生在Proteus上仿真成功后,焊板子的时候总是不记得把晶振和复位电路接上,这样板子是不会工作的。 2、一般没有特殊要求的话,选用11.0592MHZ的晶振。这样有利于得到没有误差的波特率。特别是当与PC机进行通信的话,选用这种晶振比较好。 3、复位电路的电容可以选择10uF或者22uF。如果是10uF的话,充电电阻R的值要高于4K欧姆,如果你的单片机工作速度很慢,可以选择8.2K欧姆。 4、每个大规模的数字IC旁边都
[单片机]
MCS-51单片机内部数据存储器的RAM结构详细解析
内部数据存储器低128单元 8051单片机的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。如图所示为低128单元的配置图。 寄存器区 8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H~1FH单元地址。 在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1、R
[单片机]
如何创建51单片机KEIL工程步骤
1. 什么是Keil软件 Keil软件是一款专为嵌入式系统开发而设计的集成开发环境(IDE),常用于51、STM32单片机软件开发的编程软件。Keil编程软件不仅支持多种工具和扩展程序,还能够处理多种文件格式和数据交换方式;可支持单片机程序的在线仿真,或通过仿真器进行实物仿真,大大方便开发人员的工作。 其中,我们常用的Keil软件有两种,分别为Keil C51以及Keil MDK,前者主要用于51单片机等8051内核单片机的开发工具(不支持32位单片机),Keil MDK主要用于ARM架构单片机的开发工具,主要用于STM32单片机等32单片机。所以在使用Keil软件时需要主要这一点。 2.如何创建51单片机KEIL工程步骤
[单片机]