STM32F407单片机16bit_DAC_AD5689模拟量(0V~10V)电压输出实验KEIL工程源码: int main(void) { uint16_t data=0; double temp,opa; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); KEY_GPIO_Init(); printf("硬石DAC(AD5689)模块模拟量电压输出测试\n"); AD5689_Init(); AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); printf("data:%d\n",data); opa=OPA_RES_R2/OPA_RES_R1; while(1) { if(KEY1_StateRead()==KEY_DOWN) { if(data>(0xFFFF-1000)) data=(0xFFFF-1000); data +=1000; AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); temp=(double)data*2500*opa/0xFFFF; //temp为目标电源值,这里先放大1000倍(方便计算而已),等后面显示再还原 //data是数字量DA值,当data取值为:0~0xFFFF对应AD5689输出为0~2.5V //本例程是输出0V~10V,这个功能主要是靠运放实现,特殊的电路使得: //AD5689输出0V时对应运放输出0V,AD5689输出2.5V对应运放输出10V //(上面虽说是10V,实际上应该是 2.5V*opa(运放放大倍数),这里opa=40.2K/10K=4.02) //所以使得程序:data值为0时运放输出0V,data为0xFFFF时输出运放输出10V //temp=data/0xFFFF*2.5*1000*opa printf("data:%d->%0.3fV\n",data,temp/1000); } if(KEY2_StateRead()==KEY_DOWN) { if(data%0.3fV\n",data,temp/1000); } HAL_Delay(50);
STM32F407单片机16bit_DAC_AD5689模拟量(-10V~10V)电压输出实验KEIL工程源码: int main(void) { uint16_t data=0xFFFF/2; double temp,opa; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); KEY_GPIO_Init(); printf("硬石DAC(AD5689)模块模拟量电压输出测试\n"); AD5689_Init(); AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); printf("data:%d\n",data); opa=OPA_RES_R2/OPA_RES_R1; while(1) { if(KEY1_StateRead()==KEY_DOWN) { if(data>(0xFFFF-1000)) data=(0xFFFF-1000); data +=1000; AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); temp=(double)(data*2-0xFFFF)*2500*opa/0xFFFF; //temp为目标电源值,这里先放大1000倍(方便计算而已),等后面显示再还原 //data是数字量DA值,当data取值为:0~0xFFFF对应AD5689输出为0~5V //本例程是输出-10V~10V,这个功能主要是靠运放实现,特殊的电路使得: //AD5689输出0V时对应运放输出-10V,AD5689输出2.5V对应运放输出0V,AD5689输出5V对应运放输出10V //(上面虽说是10V,实际上应该是 2.5V*opa(运放放大倍数),这里opa=40.2K/10K=4.02) //所以使得程序:data值为0时运放输出-10V, data为0xFFFF/2时输出运放输出0V,data为0xFFFF时输出运放输出10V //temp=(data-0xFFFF/2)/(0xFFFF/2)*2.5*1000*opa printf("data:%d->%0.3fV\n",data,temp/1000); } if(KEY2_StateRead()==KEY_DOWN) { if(data<1000) data=1000; data -=1000;
STM32F407单片机24bit_ADC_AD7190称重模块+16bit_DAC_电压输出实验KEIL工程源码 int main(void) { uint16_t data=0xFFFF/2; double temp,opa; float data_temp; int32_t weight_count; uint8_t cali_flag=0; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); /* 初始化LED */ LED_GPIO_Init(); KEY_GPIO_Init(); /* 初始化BEEP */ BEEP_GPIO_Init(); if(AD7190_Init()==0) { printf("获取不到 AD7190 !\n"); while(1) { HAL_Delay(1000); if(AD7190_Init()) break; } } printf("检测到 AD7190 !\n"); weight_ad7190_conf(); HAL_Delay(500); weight_Zero_Data = weight_ad7190_ReadAvg(6); printf("zero:%d\n",weight_Zero_Data); printf("硬石DAC(AD5689)模块模拟量电压输出\n"); AD5689_Init(); AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); printf("data:%d\n",data); opa=OPA_RES_R2/OPA_RES_R1; while(1) { weight_count=weight_ad7190_ReadAvg(3); data_temp=weight_count-weight_Zero_Data; weight=data_temp*1000/weight_proportion; printf("重量:%d->%.2f\n",weight_count,weight); HAL_Delay(200); if(KEY1_StateRead()==KEY_DOWN) // 清零 { weight_Zero_Data = weight_ad7190_ReadAvg(6); printf("zero:%d\n",weight_Zero_Data); cali_flag=1; } if(KEY2_StateRead()==KEY_DOWN) // 校准:必须先按“清零”键,然后把20g砝码放在称上,按下校准键 { if(cali_flag) { weight_count = weight_ad7190_ReadAvg(6); weight_proportion=(weight_count-weight_Zero_Data)*1000/100; printf("weight_proportion:%d\n",weight_proportion); } cali_flag=0; } if(KEY3_StateRead()==KEY_DOWN) { if(data>(0xFFFF-1000)) data=(0xFFFF-1000); data +=1000; AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); temp=(double)(data*2-0xFFFF)*2500*opa/0xFFFF; //temp为目标电源值,这里先放大1000倍(方便计算而已),等后面显示再还原 //data是数字量DA值,当data取值
STM32F407IGT6单片机USART串口通信实验例程9个合集KEIL工程源码+文档说明: YSF4_HAL-008. USART1-同步异步串行通信.rar YSF4_HAL-009. USART2-同步异步串行通信.rar YSF4_HAL-010. USART6-同步异步串行通信.rar YSF4_HAL-011. UART4-异步串行通信.rar YSF4_HAL-012. UART5-异步串行通信(RS232).rar YSF4_HAL-013. USART3-RS485双机通信.rar YSF4_HAL-014. RS485接发测试.rar YSF4_HAL-015. USART-调试串口.rar YSF4_HAL-016. USART-指令控制.rar
STM32F407IGT6单片机定时器应用实验例程22个合集KEIL工程源码+文档说明: YSF4_HAL-020. TIM6-基本定时器定时.rar YSF4_HAL-021. TIM7-基本定时器定时.rar YSF4_HAL-022. TIM2-通用定时器定时.rar YSF4_HAL-023. TIM3-通用定时器定时.rar YSF4_HAL-024. TIM4-通用定时器定时.rar YSF4_HAL-025. TIM5-通用定时器定时.rar YSF4_HAL-026. TIM9-通用定时器定时.rar YSF4_HAL-027. TIM10-通用定时器定时.rar YSF4_HAL-028. TIM11-通用定时器定时.rar YSF4_HAL-029. TIM12-通用定时器定时.rar YSF4_HAL-030. TIM13-通用定时器定时.rar YSF4_HAL-031. TIM14-通用定时器定时.rar YSF4_HAL-032. TIM1-高级定时器定时.rar YSF4_HAL-033. TIM8-高级定时器定时.rar YSF4_HAL-034. 定时器捕获频率.rar YSF4_HAL-035. 定时器捕获脉冲宽度.rar YSF4_HAL-036. 定时器PWM输入模式.rar YSF4_HAL-037. TIM-高级定时器比较输出.rar YSF4_HAL-038. TIM-通用定时器PWM输出.rar YSF4_HAL-039. TIM-通用定时器呼吸灯.rar YSF4_HAL-040. TIM-高级定时器PWM输出.rar YSF4_HAL-041. TIM-2个高级定时器比较输出.rar
STM32F407IGT6单片机ADC实验+DAC实验例程7个合集KEIL工程源码+文档说明: ADC-单通道采集.rar ADC-单通道采集(DMA).rar ADC-双ADC慢速交叉模式.rar ADC-多通道采集(DMA).rar ADC-芯片温度读取.rar DAC-可调电压输出.rar DAC-正弦波.rar
STM32F407IGT6单片机SPI FLASH读写实验例程5个合集KEIL工程源码+文档说明: SPI-串行Flash小数存储.rar SPI-串行Flash整数存储.rar SPI-串行Flash读写测试.rar SPI-基于串行Flash的FatFs功能使用.rar SPI-基于串行Flash的FatFs文件系统.rar
STM32F407IGT6单片机 CHIPD(芯片ID)实验例程22个合集KEIL工程源码+文档说明: int main(void) { /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); Get_ChipID(); /* 芯片的唯一ID */ printf("\r\n芯片的唯一ID为: %X-%X-%X\r\n",CPU_ID[0],CPU_ID[1],CPU_ID[2]); /* 芯片的容量 */ printf("\r\n芯片flash的容量为: %dK \r\n", *(__IO uint16_t *)(0x1FFF7A22)); /* 无限循环 */ while (1) { } }
3.5寸TFT液晶屏模块原理图+AD封装库+STM32F407IGT6单片机显示实验例程11个合集KEIL工程源码+文档说明: 3.5寸TFT液晶显示屏模块原理图.rar HAL_3.5LCD-001. LCD-液晶显示.rar HAL_3.5LCD-002. LCD-基本图形显示.rar HAL_3.5LCD-003. LCD-显示英文(字模在内部Flash).rar HAL_3.5LCD-004. LCD-显示中文(字模在内部Flash).rar HAL_3.5LCD-005. 烧写LCD显示需要的中文字库.rar HAL_3.5LCD-006. LCD-显示中文(字模在外部Flash,根据串口写入字库).rar HAL_3.5LCD-007. LCD-显示中文(字模在外部Flash,根据U盘写入字库).rar HAL_3.5LCD-008. LCD-显示图片(内部FLASH).rar HAL_3.5LCD-009. LCD-显示图片(图片在U盘).rar HAL_3.5LCD-010. LCD-触摸画笔.rar HAL_3.5LCD-011. 液晶显示随意变量.rar
7寸LCD液晶显示屏模块PDF原理图+AD封装库+STM32F407IGT6单片机显示实验例程16个合集KEIL工程源码+文档说明 7寸液晶触摸屏原理图.rar HAL_7.0LCD-201. 液晶面板SPI FLAH的读写.rar HAL_7.0LCD-202. USB烧写图片数据至液晶面板SPI FLASH.rar HAL_7.0LCD-203. 液晶基本图形显示.rar HAL_7.0LCD-204. 中英文显示(横屏).rar HAL_7.0LCD-205. 中英文显示(竖屏).rar HAL_7.0LCD-206. 变量数值改变效果.rar HAL_7.0LCD-207. 中英文水平卷动显示.rar HAL_7.0LCD-208. 中英文垂直卷动显示.rar HAL_7.0LCD-209. 液晶触摸.rar HAL_7.0LCD-210. 触摸控制LED亮灭.rar HAL_7.0LCD-211. 液晶触摸控制步进电机.rar HAL_7.0LCD-212. 图片显示(液晶板串行Flash).rar HAL_7.0LCD-213. 图片显示(读取开发板U盘).rar HAL_7.0LCD-214. 液晶截图.rar HAL_7.0LCD-215. 温湿度数据显示.rar HAL_7.0LCD-216. 图标显示(BTE通透写入).rar