基于STM8的ADC0832采集及蓝牙通信系统

基于STM32的智能噪音监测系统 实验法:通过对问题的研究和分析,从已得出的结论和经验出发,形成一种新的假设,再将形成的假设计划出一个可控的实验方法,通过多次的科学实验验证,观察自变量在变化过程中因变量的变化,从而的得出自变量和因变量的关系,最后统计得出假设是否成立。文献研究法:通过网络、查阅书籍和相关的文献来取得一些对于课题有用的资料和前人设计的结果,从中获取其中有用的信息,论证其可行性,从而科学、客观、全面地了解所要研究的问题,找出问题的本质属性,更高效的寻找解决问题的办法。1.打开手机APP,打开蓝牙搜索功能,搜索并且连接上单片机。 阅读详情

为了方便大家学习,工程已经打包上传,http://download.youkuaiyun.com/detail/devintt/8029389


最近在淘宝逛的时候发现了一款单片机,STM8。相比之前一直使用的也是8位的AVR相比,感觉STM8更为强大,芯片特点如下:


内核:具有3级流水线的哈佛结构、扩展指令集

程序存储器:8K字节Flash;RAM:1K字节

数据存储器:640 字节真正的数据EEPROM;可达30万次擦写

更重要的一点就是STM8系列若使用库编程的话,可以方便的不同芯片的程序移植。甚至可以方便的移植到STM32上面,大大减轻了更新硬件的重写程序的工作量。

 

ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。(简述和图片均来之百度百科)


本文适合STM8控制ADC0832,程序是使用库编程,编译工具IAR。其实STM8也自带ADC转换模块了......

     本程序还包括蓝牙串口通信,方便将得到数据从串口输出,我是编写了安卓上位机的app,方便在安卓上面显示图像。

程序还是用了定时器TIM4,确保每次采样的间隔大致相等,对之后的数据处理提供了基础。

 

先介绍核心mian.c文件,主要功能是初始化串口UART1,定时器TIMER4,还有一个发送16进制的函数。其中发送完数据再发送一个字符’U’作为一个数据的结束(你也可以自己定义)。这里说说为什么要选用16进制,而不是10进制,STM8速度有限,为了减少单指令操作,程序用了移位操作,这样可得到16进制每位数值,在发送到安卓上位机,上位机运算速度快,再转化成10进制,这样可以资源合理分配。

main.c程序:

#include "stm8s.h"
#include "stm8s_it.h"

uint8_t HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
uint8_t i=0;

//串口UART1初始化
void Init_UART(void)
{
  //默认初始化
  UART1_DeInit();       
  //设置波特率9600 8位数据 1位停止位 无校验  外部时钟不可用 模式接收发送
  UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
  //设置接收寄存器溢出中断
  UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
}
//定时器TIM4初始化
void Init_Timer4(void)
{
  //1ms中断一次
  TIM4_TimeBaseInit(TIM4_PRESCALER_128, 124);
  /* Clear TIM4 update flag */
  TIM4_ClearFlag(TIM4_FLAG_UPDATE);
  /* Enable update interrupt */
  TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  TIM4_Cmd(ENABLE);
}
//发送字节
void Send(uint8_t dat)
{
  //检查并等待发送寄存器是否为空
  while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));
  //发送字节
  UART1_SendData8(dat);
}
//发送16位16进制
void UART1_mysend16hex(u16 dat)
{
    Send(HexTable[(dat>>12)&0x0f]);
    Send(HexTable[(dat>>8)&0x0f]);
    Send(HexTable[(dat>>4)&0x0f]);
    Send(HexTable[(dat)&0x0f]);
}
//发送8位16进制
void UART1_mysend8hex(uint8_t dat)
{
    Send(HexTable[(dat>>4)&0x0f]);
    Send(HexTable[(dat)&0x0f]);
    Send('U');
}
void main()
{
  //初始化
  Init_UART();
  Init_Timer4();
  //中断开启
  enableInterrupts(); 
  while(1)
  {
  }
}

//这个必须加上 不然会报错 估计是库的要求

#ifdef USE_FULL_ASSERT
void assert_failed(u8* file, u32 line)
{ 
  while (1)
  {
  }
}
#endif


接下来说说中断函数表stm8s_it.c

其中只要选用两个中断函数就可以了:

INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18) 接收寄存器溢出中断

里面添加安卓上位机发送过来的数据的处理程序,我这里写的是ADC0832通道选择的判断。

INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23) 定时器4计数器溢出中断

里面添加初始化ADC0832和ADC0832数据读取并UART1发送到安卓上位机。

stm8s_it.c程序:

#include "stm8s_it.h"
#include "ADC0832.h"
extern uint8_t i;
uint8_t channel=1 ;

//接收寄存器溢出中断
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
 {
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
*/
//下面是我做的安卓上位机发送过来的数据判断,这里可以改成自己想要的程序
  uint8_t tempData;
  tempData = UART1_ReceiveData8();
  if(tempData=='A')
  {
    channel = 0;
  } 
  if(tempData=='Z')
  {
    channel = 1;
  }
//清除UART1中断标识符
    UART1_ClearITPendingBit(UART1_IT_RXNE);
 }

//定时器4计数器溢出中断
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
 {
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
   //1*10m执行一次
   i++;
   if(i==10)
   {
    //进行ADC数模转换
//初始化ADC芯片,写入通道
    AD_init(channel);
u8 u8_adc1_value;
//进行数据读出
u8_adc1_value = AD_read();
//发送8位数据
UART1_mysend8hex(u8_adc1_value);
//清除UART1中断标识符
    UART1_ClearITPendingBit(UART1_IT_RXNE);
    i=0;
   }
   TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
 }

这里说说ADC0832的操作函数:ADC0832.c

程序包括初始化STM8的GPIO,初始化ADC0832和读取ADC0832数据

主要是DODI端口复用的问题,由于STM8端口作为输入输出,需要重新初始化GPIO,所以比一般51单片机的程序要复杂一点。最后读取数据先是从高位读出,再低位读出,进行校验,相同数值再输出。

附上时序图


 

ADC0832.c程序:

/**********************************************
程序名称:ADC0832子程序
作    者:devinzhang91
时    间:2014.10.04
**********************************************/
#ifndef ADC0832_H
#define ADC0832_H
#include "stm8s.h"

//端口设置
#define CLK_GPIO_PORT  (GPIOC)
#define CLK_GPIO_PINS  (GPIO_PIN_3)
#define DI_GPIO_PORT  (GPIOC)
#define DI_GPIO_PINS  (GPIO_PIN_4)
#define DO_GPIO_PORT  (GPIOC)
#define DO_GPIO_PINS  (GPIO_PIN_4)
#define CS_GPIO_PORT  (GPIOC)
#define CS_GPIO_PINS  (GPIO_PIN_1)

/********************************************************
函数名称:void ioInit(void)
函数作用:初始化GPIO
参数说明:null
********************************************************/
void ioInit(void)
{
  //全为输出模式
  GPIO_Init(CLK_GPIO_PORT, CLK_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(DI_GPIO_PORT, DI_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(DO_GPIO_PORT, DO_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(CS_GPIO_PORT, CS_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
}

/********************************************************
函数名称:void ioChange()
函数作用:初始化GPIO
参数说明:i=0,表示输出,i=1,表示输入
********************************************************/
void ioChange(uchar i)
{
  if( i == 0)
    GPIO_Init(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
  if( i == 1)
    GPIO_Init(DI_GPIO_PORT, (GPIO_Pin_TypeDef)DI_GPIO_PINS, GPIO_MODE_IN_PU_NO_IT);
}

/********************************************************
函数名称:void AD_init(uchar i)
函数作用:初始化ADC0832
参数说明:i=0,表示通道0,i=1,表示通道1
********************************************************/
void AD_init(uchar i) 
{
    ioInit();   //初始化io
    ioChange(0);  //作为输出
    GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);    //形成下降沿
    asm("nop");
    asm("nop");
    GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);       /*在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号*/
    asm("nop");
    asm("nop");
    GPIO_WriteLow(CS_GPIO_PORT, (GPIO_Pin_TypeDef)CS_GPIO_PINS);  //使能ADC0832
    asm("nop");
    asm("nop");
    GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);
    asm("nop");
    asm("nop");
    GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);    //形成下降沿1 
    asm("nop");
    asm("nop");         /*在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能*/
    if( i==0 )
      GPIO_WriteLow(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);
    if( i==1 )
      GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);
    asm("nop");
    asm("nop");
    GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);
    asm("nop");
    asm("nop");
    GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);    //形成下降沿2 
    asm("nop");
    asm("nop");
    if( i==0 )
      GPIO_WriteLow(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);
    if( i==1 )
      GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);
    GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);
    asm("nop");
    asm("nop");
    GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);    //形成下降沿3 
    asm("nop");
    asm("nop");
}
/********************************************************
函数名称:uchar AD_read()
函数作用:读取ADC0832转换的数据
参数说明:无
函数返回:返回8位的数据
********************************************************/
u8 AD_read()
{
    u8 temp1 = 0;
    u8 temp2 = 0;
    uchar i = 0;
    GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);
    asm("nop");
    asm("nop");
     ioChange(1); //作为输入
    for(i = 0; i < 8; i++)
    {
        GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);
        asm("nop");
        asm("nop");
        GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);   //形成下降沿
        asm("nop");
        asm("nop");
        temp1 = temp1 << 1;
        if(GPIO_ReadInputPin(DI_GPIO_PORT, (GPIO_Pin_TypeDef)DI_GPIO_PINS) !=0)
          temp1 |= 0x01;
        else temp1 |= 0x00;
    }
    
    for(i = 0; i < 8; i++)
   {
       temp2 = temp2>>1;
       if(GPIO_ReadInputPin(DI_GPIO_PORT, (GPIO_Pin_TypeDef)DI_GPIO_PINS) !=0)
            temp2 = temp2|0x80;
       GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);
       asm("nop");
       asm("nop");
       GPIO_WriteLow(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);   //形成下降沿 
       asm("nop");
       asm("nop");
    }
    GPIO_WriteHigh(CLK_GPIO_PORT, (GPIO_Pin_TypeDef)CLK_GPIO_PINS);
    asm("nop");
    asm("nop");
    GPIO_WriteHigh(DO_GPIO_PORT, (GPIO_Pin_TypeDef)DO_GPIO_PINS);
    asm("nop");
    asm("nop");
    GPIO_WriteHigh(CS_GPIO_PORT, (GPIO_Pin_TypeDef)CS_GPIO_PINS);  //使能ADC0832
    asm("nop");
    asm("nop");
       
    if(temp1 == temp2)
      return temp1;
    else
      return 0;
}
#endif

再说说安卓上位机,一个简单蓝牙接收的apk,用于实时画图,可以显示和画出一段时间内的STM8采样的数值,从后台接收数据,发送消息至进程更新UI。


为了方便大家学习,工程已经打包上传,http://download.youkuaiyun.com/detail/devintt/8029389




模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目工程 模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目工程一、前言1、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目包括用Keil软件编写单片机C语言程序和用Proteus软件仿真单片机外围电路2、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目构思(1)、声明程序变量思维导图(2)、程序子函数思维导图(3)、程序主函数思维导图二... 阅读详情

相关推荐

模数转换器ADC0832在单片机应用中的实例

本文介绍了ADC0832模数转换器在单片机应用中的实例。通过连接电路并使用相应的源代码,我们能够将模拟信号转换为数字信号并进行处理。这个实例可以作为学习和开发使用模数转换器的参考。ADC0832是一种8位模数转换器,常用于单片机系统中进行模拟信号的数字化转换。本文将介绍ADC0832的应用实例,并附上相应的源代码。

VfhBlockchain的博客 1679

STM32单片机(一)STM32简介

本节是STM32单片机部分的第一节,主要对STM32部分课程进行简单介绍,以及对STM32单片机进行简单介绍;其中包括STM32介绍、ARM介绍、片上资源/外设、命名规则、系统结构、引脚定义、启动配置、最小系统电路等。

AnChenliang_1002的博客 4万+

基于FPGA的ADC数据采集蓝牙传输系统

本工程包含设计文档以及设计代码。利用FPGA处理传感器经ADC采集的数据,并通过蓝牙模块发送到手机端,进行数据的实时监测。 本设计使用气体传感器,也可换成其他传感器,例如温度湿度等。。 为了实现对气体传感器的电阻数据采集、处理以及将数据直接传输至手机端,将气体传感器数据采集及无线数据传输系统划分为气敏数据转换系统,数据处理系统,数据传输系统,如下图所示。气敏数据转换系统主要实现将气体传感器的阻值转换为FPGA能够处理的数字信号,该部分包括气体传感器模块,电阻-电压转换模块,模数转换模块。数据处理系统主要负责

QQ_778132974的博客 1万+

2022-3-26 基于单片机和ADC0832的电压表

基于单片机和ADC0832的电压表该系统由单片机最小系统、四位共阳极数码管、ADC0832转换芯片、1K的电位器、模拟电压表组成该系统设计软件:Proteus8.10仿真 keil4编程 C语言该系统的功能为:电位器的模拟量可由模拟电压表直接读出模拟量通过ADC0832芯片转换 传输到51单片机处理后显示在数码管上面届时数码管显示的电压量和模拟电压表读出的一致但是他们之间会有一定的误差 这个误差可以通过程序尽量减小而不能完全消除下面为系统设计的原理仿真图下面为仿真中读取的电压值和模拟电压表上面的电压值以

m0_64334734的博客 1012

基于STM32的智能灌溉系统设计与实现

DS18B20是英国美国 DALLAS 半导体公司公司最新推出几年来研发的全世界第一款完全应用单总线技术来生产的数字温度传感器。它的另一些更主要的技术特性描述如下:①具有了仅仅可以占用一位的接口方式;②支持多个测温点,使分布式多点测温系统中的测温线路结构的设计工作和系统硬件维护开销工作大为得以简化;③测温时无需任何外部元件;④可以直接通过数据线来供电,具有多种超高效低功耗的工作供电方式;⑤的测温频率范围约为-55~和+125℃,测温的精度仅为±和0.5℃;

来自一名程序猿的案例文档分享 1171

18 ADC0832模数转换与显示_LCD1602_adc0832_

使用ADC0832对电压进行采集,然后通过LCD1602对电压进行显示,在文件夹内包含成需以及仿真。

STM32单片机——ADC数据采集

ADC是指模拟/数字转换器ADC的性能指标量程:能测量的电压范围分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,一般来说分辨率越高,转化时间越长转化时间:从转换开始到获得稳定的数字量输出所需要的时间称为转换时间

weixin_46216674的博客 1万+

C#创建COM组件,QT调用COM组件简单测试(VS2008+QT4.6.4)

一. C#创建组件: 1. VS2008新建一个项目,选择Visual C#, Class library 修改Properties下面的AssemblyInfo.cs文件,ComVisible属性设置为True,即:[assembly: ComVisible(true)] 2. 右击项目,选择“属性”, 选择“生成”选项卡,把“为COM互操作注册”勾选上 选择“签名”选项卡,把“

3517

基于51单片机和proteus的电流采集系统

基于51单片机和proteus的电流采集系统

远望创客学堂 3791

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

别再怕无霍尔BLDC了!手把手教你用反电动势过零检测搞定电机换向(附STM32代码片段)

本文详细介绍了无霍尔传感器BLDC电机的驱动方法,重点讲解反电动势过零检测技术及其在STM32上的实现。通过硬件电路设计、信号调理和软件算法优化,手把手教你完成电机换向控制,并提供实用的调试技巧和代码片段,帮助开发者快速掌握无霍尔BLDC驱动技术。

weixin_42522575的博客 492

ADC0832的stm32的实现

采用了软仿SPI最终传值0-256经过protues仿真证明没啥问题。我用的主频是72Mhz'

干啥都是小小白的分享内容 851

Win10插网线显示未识别网络的三种解决方法

本文介绍了三种解决Win10插网线显示未识别网络问题的方法:更新或重启网络设备驱动程序、重置Winsock目录、启用Network Setup Service服务。这些方法都是基于常见的网络问题和解决方案而设计的,适用于大多数Win10用户。如果你遇到了这一问题,可以按照上述步骤进行操作,相信一定能够找到解决问题的方法。需要注意的是,在进行任何操作之前,请务必备份重要数据以防万一。此外,如果你对计算机硬件或软件不熟悉,建议寻求专业人士的帮助以避免造成不必要的损失。

nntxthml的博客 6773

STM32 ADC采样

一个基本的SHA如图,开始的时候模拟开关闭合,通过输入缓冲放大器对模拟电压进行采样,电容C存储或保存采样电压一段时间,输出缓冲放大器提供一个高输入阻抗来防止电容快速掉电。②采样保持:如果被采样的模拟信号的变化频率相对于A/D转换器的速度来说比较高,为保证转换精度,需要在A/D转换之前加上采样保持电路,使得在A/D转换期间保持输入模拟信号不变。又称奈奎斯特采样定理,即当采样频率fs大于采样信号最高频率fmax的两倍时,采样后的数字信号完整地保留了原始信号中的信息。4.采样保持放大器(SHA)

m0_70358541的博客 1万+

Unity必学:Protobuf-net预编译实战

本文深入解析Unity项目使用Protobuf-net Precompile的必要性。作为高效跨平台序列化方案,Protobuf-net解决了Unity工程在网络同步、存档系统中的性能瓶颈,特别是针对iOS等AOT平台的兼容问题。通过预编译模式,将运行时反射转为静态代码生成,显著提升移动端性能表现,支持协议平滑升级,已成为大厂项目的标配方案。文章从原理、实践到多平台适配,全面展示了这一"序列化发动机"如何支撑现代Unity项目的数据传输需求。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 495

如何使用事务码SMICM分析ABAP代码发起的HTTP请求的错误

当我用CL_HTTP_CLIENT往一个外网的url发请求时,遇到错误:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED 错误是从这段ABAP代码里抛出来的: CALL METHOD lo_http_client-&gt;get_last_error IMPORTING code = lv_sysubrc message = ev_error_message. "BREAK-...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3208

ADC0832的使用

百度搜索ADC0832 Datasheet便可以免费获取该芯片的权威数据手册。 最重要的是查看它的时序及对应英文词组的意思。 CLK为时钟信号,需要外部输入,可直接与单片机引脚相连 Chip Select(CS):从Timing图中可以看出芯片工作期间要保持低电平 DATA IN(DI): 第一个时钟周期,输入高电平为启动信号 第二个时钟周期,设置输入方式(单端输入/差分输入) 第三个时钟周期,设置具体通道 第四个时钟周期,将DI拉高,使主机处于接收状态,准备接收 具体的通道设置如图: DATA OUT

CrystalTri的博客 1万+

YOLOv8独家原创改进:SPPF原创自研创新 | SPPF创新结构,重新设计全局平均池化层和全局最大池化层,增强全局视角信息和不同尺度大小的特征

SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4684

分享一篇使用光敏电阻,学习ADC的STM32库函数代码

一、背景光敏电阻引脚连接图上图为普中板子原理图,由图上可以看出如下信息:基于上述信息,写出如下代码:

qq_56883486的博客 585

【3D Slicer】的小白入门使用指南一

3D Slicer 是一个免费的开源软件平台,用于医学、生物医学和其他 3D 图像的可视化、处理、分割、配准和分析。Slicer 的功能包括:读/写。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 5554

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

STC89C51系列单片机与ADC0832通信

输入电压范围为0-5V;8位分辨率,可以将模拟信号转换为8位数字信号;支持单通道和双通道转换;采用串行通信接口,只需要3根信号线即可与单片机通信。

凤凰涅槃而生 6037

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

嵌入式硬件实战基础篇(一)-STM32+DAC0832 可调信号发生器-产生方波-三角波-正弦波

在本篇文章中,我们将深入探讨如何利用 STM32 微控制器和 DAC0832 数模转换器(DAC)设计并实现一个可调信号发生器。通过该信号发生器,我们将能够生成三种常见的波形信号:方波、三角波和正弦波,且可以通过简单的操作调节输出信号的频率。

你要拥有一个你喜欢并且热爱的人生 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

基于单片机智能洗衣机设计与实现

以51单片机作为主控系统;利用STC89C52单片机进行数据处理;通过2路继电器分别控制洗衣机进水、出水相关逻辑运算;采用L298去掉直流电机实现滚筒正反转;通过单片机进行处理数据,把采集到的数据通过LCD液晶显示;按键设置模式,定时开启等条件;三极管驱动继电器进行动作;整个电路以5v供电;电路图。

Holidaylive的博客 1578

Proteus8.9仿真ADC0832的问题

Proteus8.9仿真ADC0832的问题ADC083X.DLL文件找不着,或者ADC0832的元件无法仿真解决方法: 将ADC083X.DLL文件放到Proteus 8 Professional\DATA\MODELS文件夹中,替换原来的ADC083X.DLL文件。 下载地址: 链接:https://pan.baidu.com/s/1udm6DN939RxDwvuwbRDzEA 提取码:n0s7 ...

诊断协议那些事儿's blog 1万+

05、基于ADC0832的双路ADC电压采集仿真

1、临时设置 export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH 2 、当前用户的全局设置 打开~/.bashrc,添加行: export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH 使生效: source .bashrc 3、 所有用户的全局设置 vim /etc/pr...

BaoTTing的博客 2649

151、基于STM32单片机的中小型保鲜库智能控制系统设计

本系统采用STM32微处理器对温度、湿度、CO2传感器等多种传感器进行温度、湿度、CO2浓度的监控,并在液晶显示屏上进行数据显示,并加装执行装置来控制保鲜库温湿度。1.利用SGP30模块气敏传感器测量空气中CO2,利用DHT11模块测试温湿度。2.利用芯片ADC0832将电压信号通过A/D变换为数字信号,再通过MCU和它的周边电路对信号进行处理。3.利用LCD1602显示器可以显示温湿度和CO2浓度。4.利用独立按键设定上下阈值。5.利用执行装置故障时报警模块进行声光报警。6.控制加湿器。

2301_76924958的博客 811
上一篇: 基于Android系统的计步器开发与算法研究
下一篇: 基于单片机蓝牙通信的安卓上位机应用
DevinTT
博客等级 码龄14年 283粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值