当前位置: 首页 > news >正文

单片机数据采集板(设计资料,非实物) 以STC系列的51单片机为主控,集合了多种外设; 有23...

单片机数据采集板(设计资料,非实物) 以STC系列的51单片机为主控,集合了多种外设; 有232串口通信; 2路PWM信号转模拟量输出; 以TLC2543为核心的模拟量输入; 计数器和中断输入端子接口; MAX517和DAC0832为核心的模拟量输出; 74LS48为核心的数码管驱动电路; LM324为主体的有源低通滤波电路; 是单片机爱好者学习基础功能的绝佳资料

最近在整理工作室的时候翻出一块老古董——基于STC51的数据采集板设计资料。这板子简直是把传统单片机外设玩出花来了,特别适合刚入坑的硬件爱好者练手。今天就带大家拆解几个有意思的模块,手把手教你怎么玩转这些经典电路。

先看最核心的PWM转模拟量模块。板子上的两路PWM通过RC滤波转成0-5V电压,配合STC自带的PWM模块特别省事。初始化代码大概长这样:

void PWM_Init(void) { P1M1 |= 0x03; // P1.0/P1.1推挽输出 CMOD = 0x02; // 时钟源=系统时钟/2 CL = 0x00; // 清零计数器 CH = 0x00; CCAPM0 = 0x42; // PWM0模式 CCAPM1 = 0x42; // PWM1模式 CR = 1; // 启动PCA计数器 }

这里有个坑要注意:STC的PCA模块默认是12T模式,如果主频跑在24MHz的话,PWM频率大概在24MHz/(256*12)=7.8kHz左右。实际用示波器看波形时,如果发现纹波太大,可以适当增大滤波电容值。

模拟量采集用TLC2543这枚12位ADC,典型的三线SPI接口操作。读取通道1的代码示例:

unsigned int ReadADC(unsigned char ch) { unsigned int val = 0; ADCS = 0; // 片选使能 ch <<= 4; for(unsigned char i=0; i<12; i++){ DIN = (ch & 0x80) ? 1 : 0; CLK = 1; val <<= 1; if(DOUT) val |= 1; CLK = 0; ch <<= 1; } ADCS = 1; // 片选关闭 return val; }

这个时序要注意数据是在时钟下降沿采样的,调试时可以用LED先验证高低位是否正常。实测发现当输入电压接近参考电压时,读值偶尔会跳变,这时候需要在软件里做滑动平均滤波。

单片机数据采集板(设计资料,非实物) 以STC系列的51单片机为主控,集合了多种外设; 有232串口通信; 2路PWM信号转模拟量输出; 以TLC2543为核心的模拟量输入; 计数器和中断输入端子接口; MAX517和DAC0832为核心的模拟量输出; 74LS48为核心的数码管驱动电路; LM324为主体的有源低通滤波电路; 是单片机爱好者学习基础功能的绝佳资料

板子上的DAC模块混搭了MAX517(I2C接口)和DAC0832(并行接口)两套方案,挺有意思的对比。个人更推荐用MAX517,毕竟I2C布线方便。输出0-2.5V的典型代码:

void SetDAC(unsigned char val) { I2C_Start(); I2C_SendByte(0x58); // 器件地址 I2C_SendByte(0x00); // 命令字节 I2C_SendByte(val); // 数据 I2C_Stop(); }

调试时记得先确认I2C总线上有没有设备应答,可以用逻辑分析仪抓波形。遇到过最奇葩的问题是I2C上拉电阻没焊,结果数据线一直保持低电平...

数码管驱动部分用了74LS48 BCD译码器,这种设计现在看有点复古了。动态扫描的核心代码:

unsigned char code segTable[] = {0x3F,0x06...}; // 共阴段码表 void Display(unsigned int num) { unsigned char digits[4]; digits[0] = num/1000; digits[1] = num%1000/100; digits[2] = num%100/10; digits[3] = num%10; for(unsigned char i=0; i<4; i++){ P2 = ~(1 << i); // 位选 P0 = segTable[digits[i]]; // 段码 delay_ms(2); } }

这里有个视觉暂留的技巧:每个数码管点亮时间不要超过5ms,否则会有明显闪烁。实测发现当主循环有其他耗时操作时,显示会变暗,这时候需要优化代码结构或者上定时器中断。

板子上的LM324低通滤波电路参数挺讲究,截止频率设在1kHz左右。不过实际测试时发现运放输出有约50mV的直流偏移,后来在软件里做了自动校零才解决。模拟电路和数字电路果然还是得做好隔离,血的教训啊...

这板子虽然用的都是老芯片,但用来理解底层硬件原理特别合适。现在的新手可能习惯了Arduino那种傻瓜式操作,但真正要深入嵌入式开发,还是得从寄存器操作开始练起。下次准备用这块板改个简易示波器玩玩,有兴趣的可以关注后续更新~

http://www.jsqmd.com/news/495578/

相关文章:

  • Ubuntu下Docker调用NVIDIA GPU报错?5分钟搞定nvidia-container-toolkit安装
  • Amazon Bedrock Guardrails 实战:AI Agent 安全防护方案详解
  • 从微博大V到抖音网红:用PageRank原理分析社交网络影响力排名
  • 西恩士 全场景工业清洁度检测 发动仪清洁度检测仪优选厂家 - 仪器权威论
  • 你的私人贾维斯:Windows 极速部署 OpenClaw,AI 全天候服务
  • 如何降低Animator的调用次数
  • 每月给龙虾充几百刀的朋友,这组Skill值得你最先装上
  • copilot学生认证2026-github copilot学生认证(手把手教会)
  • 连云港华博管道吹扫消音器TOP:工业管道降噪专业解决方案厂家 - 速递信息
  • 手把手教你用kubeadm搭建谷粒商城K8s集群(含镜像加速与Flannel避坑指南)
  • STM32G431 FOC线性磁链观测器驱动资料:零速闭环启动与电角度快速收敛控制方案,全C语...
  • Petalinux开发避坑指南:为什么你的内核修改总被覆盖?
  • N4 传感器
  • SVGDeveloper详细评测:Neo4j图谱导出后如何高效编辑与优化?
  • 2026年 机柜空调厂家推荐排行榜:室内/户外/变频/箱变/无人值守/预制舱空调,专业温控解决方案与技术创新实力深度解析 - 品牌企业推荐师(官方)
  • STM32 学习 —— 个人学习笔记9-2(USART串口数据包 串口收发 HEX 及 文本 数据包)
  • 直流储能电池充放电仿真与应用研究:基于buck-boost变换器的充放电流模拟与优化
  • OpenClaw技术发展研究
  • C++类设计优化
  • python开发之路【第四章】:python程序流程控制
  • 零基础转行大模型,年薪 50W + 不是梦!保姆级学习路线 + 避坑指南,收藏这篇就够
  • AI分镜生成:Qwen-Image-Edit驱动的电影叙事革新
  • 2026六大城市高端腕表“闲置激活”终极档案:从无锡百达翡丽到南京积家,这些沉睡的资产正在悄悄贬值 - 时光修表匠
  • 借助 Windows CBT 挂钩实现自定义修改 MessageBox 阻塞式模态对话框中按钮的文字
  • 告别繁琐调试:用快马AI一键生成LaTeX高效排版模板与代码片段
  • 无锡芮生建设工程有限公司_一级资质防水修缮_14年专注房屋防水补漏 - 十大品牌榜单
  • AI 时代的程序员:从“建造者”到“定义者”
  • Suno音乐生成-从一个简单的提示开始,或者深入我们的专业编辑工具,您的下一首曲目就在一步之遥......
  • 2026年 铝液测氢仪厂家推荐排行榜,真空/在线/全自动/台式/移动型铝液测氢仪,铝合金氢含量检测仪专业品牌深度解析 - 品牌企业推荐师(官方)
  • 汽车洗美厂家常见问题解答(2026最新专家版) - 速递信息