\n#include //包含单片机寄存器的头文件\n#define uprogramming #define uo program #define ul unsigned long\n// 定义空指令函数\n#define NOP() _nop_()\n/* 定义空指令 */\n#define _Nop() _nop_()\n// 位定义\nsbit SCL = P1^0; //I2C时钟\nsbit SDA = P1^1; //I2C数据\nsbit LCD1602_RS = P0^5; //定义1602液晶显示屏的数据/命令选择端,数据/命令(H/L)\nsbit LCD1602_RW = P0^6; //定义1602液晶显示屏的读/写选择端,读/写(H/L)\nsbit LCD1602_EN = P0^7; //定义1602液晶显示屏的使能端\nbit ack; /*应答标志位*/\n// 变量定义\nuchar AD_CHANNEL;\nulong LedOut[8]; //单片机内部存取器\nulong xdata, v, a, ss;\nuchar date;\n\n// 函数申明\nextern bit ack;\n// 起动总线函数\nextern void Start_I2c();\n// 结束总线函数\nextern void Stop_I2c();\n\n// 应答子函数\nextern void Ack_I2c(bit a);\n// 字节数据发送函数\nextern void SendByte(uchar c);\n\n// 有子地址发送多字节数据函数\nextern bit ISendStr(uchar sla, uchar suba, uchar *s, uchar no);\n// 无子地址发送多字节数据函数\nextern bit ISendStrExt(uchar sla, uchar *s, uchar no);\n// 无子地址读字节数据函数\nextern uchar RcvByte();\n\nvoid LCD1602_delay_ms(uint n);\nvoid LCD1602_write_com(uchar com);\nvoid LCD1602_write_data(ulong dat);\nvoid LCD1602_write_word(uchar *s);\nvoid Init_LCD1602();\n\n// 字节数据发送函数\nbit ISendByte(uchar sla, uchar c);\nuchar IRcvByte(uchar sla);\n\n// MS延时函数(12M晶振下测试)\nvoid delay_ms(uint n) {\n unsigned int i;\n for(i=0; i
优质
本项目专注于单片机控制下的开机关机电路设计方案,旨在提供一种简洁高效的电源管理解决方案。通过优化电路结构与元件选择,实现低功耗、高可靠性的电子设备自动控制需求。
最近看到很多单片机初学者都在询问关于开关机电路的问题。我为此制作了一个图,并分享给大家。
工作原理其实很简单:
开机过程:当S1被按下后,Q1的栅极电压降低,使得Q1导通并给后续部分供电。此时单片机上电并且检测到连接处有低电平信号,表明是开机键已被按压。这时控制IO输出高电平使Q2导通,而当Q2导通后会拉低Q1的栅极电压,从而完成整个开机过程。
关机过程:同样地,在S1被按下时,单片机会检测到连接处有低电平信号,并且此时控制IO输出低电平使得Q2截止。这样在松开S1之后就可以断电了。
是不是很简单呢?
优质
本项目提供了一个基于开源硬件的六位半数字电压电表的设计与实现教程,包括详细的源代码及电路原理图。适合电子爱好者进行DIY尝试。
六位半数字多用电表的设计思想主要基于成本、可靠性和性能的平衡考虑。
首先,在元件选择上,高端电表通常采用恒温深埋齐纳基准源配合前端为Dual JFET混合低噪声运算放大器以及高速高分辨率ADC来构建测量系统。然而这些元件制造难度大且调试校准需要昂贵设备,业余条件下难以实现。因此设计中采用了相对低成本但可靠的精密带隙基准、单片低噪声斩波稳零放大器和24Bits低噪声ΣΔ ADC作为替代方案,这样既能简化采购流程降低成本,又能确保系统性能可靠。
其次,在功能上放弃了高电压及大电流的测量量程。这是因为实现这些功能需要极高的精度要求,并且对输入选择和保护机制有较高需求,同时占用大量PCB面积并增加元件成本。更重要的是从用户安全角度考虑,避免设置可能引发危险的情况。
此外还舍弃了长期稳定性设计。如果要依靠电表自身保持长期稳定,则需使用深埋齐纳基准及精密电阻网络等高精度组件,这将显著提高制造成本。相反购买或制作标定好的外部基准可以更经济且在对比测量时提升整体精度。
同时由于没有条件设计交流测量系统,因此该方案未包含此功能模块。
最后基于现代MCU的集成度和开发工具便捷性,并结合笔者近期对STM32的学习经验,最终决定将设备做成手持式结构。总体而言,在成本、体积、功耗与性能这四个方面中优先级排序为:低成本 > 小巧 > 低功耗 > 高性能。
优质
本设计提供了一种用于测量30V以下直流电压的简易51单片机电压表电路方案。该方案结构简单,成本低,易于实现,适合于多种应用场景。
可以用简单的方法制作一个51单片机电压表来测量30V以下的直流电压。虽然没有精确的电压表进行校准,但用普通万用表测试后发现其精度还不错。这个电表的精度主要取决于参考电压的准确性、AD转换位数以及分压电阻的精度。
这种自制电压表适用于一般的电压测量需求,并且可以通过调整分压电阻和修改算法参数来适应其他量程范围内的电压检测。