自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

美容仪发烧友

10多年专注于美容仪的设计与开发,熟悉射频仪、脱毛仪、黑头仪、爆脂仪等各种美容仪的设计与开发。

  • 博客(155)
  • 收藏
  • 关注

原创 单片机编程

豆包好不好用啊,有没有用过的朋友,编程方面靠不靠谱。

2025-05-01 18:46:23 163 1

原创 基于IO口模拟实现,总线时序延时等皆由软件方式实现

else if (frame < (sizeof(spiral)/sizeof(spiral[0]))*2) //逐个点熄灭。if (frame < sizeof(spiral)/sizeof(spiral[0])) //逐个点点亮。if (i < (sizeof(ledBuff)-1)) //索引递增循环,遍历整个缓冲区。= KeySta[i][j]) //检测按键动作。static uint8 pdata backup[4][4] = { //按键值备份,保存前一次的值。

2025-04-30 23:16:25 856

原创 基于51单片机的步进电机测试程序

unsigned char code BeatCode[8] = { //步进电机节拍对应的IO控制代码。P1 = tmp;//把低4位的节拍代码和高4位的原值送回P1。//用|操作把节拍代码写到低4位。//用tmp把P1口当前值暂存。//用&操作实现到8归零。//用&操作清零低4位。//节拍输出索引递增。//为T0赋初值0xF8CD,定时2ms。//设置T0为模式1。

2025-04-30 23:14:20 365

原创 基于51单片机的点阵向上移动改为向下移动

/250ms软件定时器。unsigned char code image[] = { //图片的字模表。if (tmr >= 250) //达到250ms时改变一次图片索引。if (index == 0) //图片索引31~0递减循环。//为T0赋初值0xFC67,定时1ms。//使能U4,选择LED点阵。//设置T0为模式1。//以下代码完成每250ms改变一帧图像。//以下代码完成LED点阵动态扫描刷新。/* 定时器0中断服务函数 */

2025-04-30 23:12:01 375

原创 基于51单片机的点阵向左移动改为向右移动

/250ms软件定时器。if (tmr >= 250) //达到250ms时改变一次图片索引。if (index >= 30) //图片索引达到30后归零。//为T0赋初值0xFC67,定时1ms。ENLED = 0;//使能U4,选择LED点阵。//设置T0为模式1。//以下代码完成每250ms改变一帧图像。//以下代码完成LED点阵动态扫描刷新。/* 定时器0中断服务函数 */

2025-04-30 23:11:30 480

原创 基于LED点阵的9~0倒计数

{0xC3, 0x81, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3}, //数字0。{0xC3, 0x81, 0x9D, 0xC7, 0xC7, 0x9D, 0x81, 0xC3}, //数字3。{0xC3, 0x81, 0xF9, 0xC1, 0x81, 0x99, 0x81, 0xC3}, //数字6。{0xC3, 0x81, 0x99, 0xC3, 0xC3, 0x99, 0x81, 0xC3}, //数字8。//为T0赋初值0xFC67,定时1ms。

2025-04-30 23:10:51 400

原创 独立LED、数码管、点阵LED同时全亮-单片机

/为T0赋初值0xFC67,定时1ms。//设置T0为模式1。ENLED = 0;TH0 = 0xFC;//以下代码完成LED点阵动态扫描刷新。P0 = 0xFF;/* 定时器0中断服务函数 */

2025-04-30 23:08:55 314

原创 基于数码管计时程序的函数调用演示

unsigned char LedBuff[6] = { //数码管显示缓冲区,初值0xFF确保启动时都不亮。unsigned char code LedChar[] = { //数码管显示字符转换表。//T0溢出后,清零中断标志。if (cnt >= 1000) //判断T0溢出是否达到1000次。//为T0赋初值0xFC67,定时1ms。if (TF0 == 1) //判断T0是否溢出。/* 秒计数函数,每秒进行一次秒数+1,并转换为数码管显示字符 *///设置T0为模式1。

2025-04-30 23:06:12 362

原创 UART串口控制蜂鸣器的开关

if (RxdByte == 'B') //接收到大写字母B时改变一次蜂鸣器控制标志。unsigned char code LedChar[] = { //数码管显示字符转换表。unsigned char LedBuff[7] = { //数码管+独立LED显示缓冲区。//接收到的数据保存到接收字节变量中。//计算定时器重载值。//串口接收到的字节。//T0重载值的高字节。

2025-04-29 23:54:08 467

原创 UART串口控制流水灯流动和停止

/移位方向变量dir,用于控制移位的方向。flagLight;= 0) //200ms刷新一次流水灯。unsigned char LedBuff[7] = { //数码管+独立LED显示缓冲区。if (shift == 0x80) //左移到最左端后,改变移位方向。if (shift == 0x01) //右移到最右端后,改变移位方向。if (dir == 0) //移位方向变量为0时,左移。

2025-04-29 23:53:25 427

原创 UART串口通信及控制数码管显示的示例

/定时器重载值拆分为高低字节。unsigned char code LedChar[] = { //数码管显示字符转换表。unsigned char LedBuff[7] = { //数码管+独立LED显示缓冲区。//接收到的数据保存到接收字节变量中。//计算定时器重载值。//串口接收到的字节。//T0重载值的高字节。//T0重载值的低字节。

2025-04-29 23:52:48 334

原创 单片机硬件UART中断方式实现串口通信的示例

/接收的数据+1后发回,左边是发送SBUF,右边是接收SBUF。//配置波特率为9600。//手动清零接收中断标志位。//手动清零发送中断标志位。//配置串口为模式1。//清零T1的控制位。//配置T1为模式2。TL1 = TH1;/* 串口配置函数,baud-通信波特率 */if (TI) //字节发送完毕。if (RI) //接收到字节。/* UART中断服务函数 */

2025-04-29 23:51:04 271

原创 单片机硬件UART查询方式实现串口通信的示例

/接收到的数据+1后,发送回去。//清零接收中断标志位。//清零发送中断标志位。//配置波特率为9600。//配置串口为模式1。//清零T1的控制位。//配置T1为模式2。TL1 = TH1;/* 串口配置函数,baud-通信波特率 */

2025-04-29 23:48:50 181

原创 普通IO口模拟实现串口通信的示例

PIN_RXD) //起始位为0时,清零接收缓冲器,准备接收数据位。if (PIN_RXD) //接收脚为1时,缓冲器最高位置1,TH0 = 256 - (11059200/12)/baud;if (PIN_RXD) //停止位为1时,方能认为数据有效。if (cnt <= 8) //低位在先依次发送8bit数据位。else if (cnt <= 8) //处理8位数据位。else if (cnt == 9) //发送停止位。

2025-04-29 23:48:06 568

原创 数码管计时与流水灯同时运行的示例-STC89C52

/循环移位变量shift,并赋初值0x01。unsigned char LedBuff[7] = { //数码管+独立LED显示缓冲区,初值0xFF确保启动时都不亮。i--) //从最高为开始,遇到0不显示,遇到非0退出循环。if (shift == 0x80) //左移到最左端后,改变移位方向。if (shift == 0x01) //右移到最右端后,改变移位方向。if (dir == 0) //移位方向变量为0时,左移。//循环移位变量右移1位。

2025-04-28 23:58:23 385

原创 长短按键/连续按键功能实现示例

static unsigned char pdata backup[4][4] = { //按键值备份,保存前一次的值。static unsigned long pdata TimeThr[4][4] = { //快速输入执行的时间阈值。unsigned long pdata KeyDownTime[4][4] = { //每个按键按下的持续时间,单位ms。//调用按键动作函数。= KeySta[i][j]) //检测按键动作。

2025-04-28 23:57:29 612

原创 交通信号灯示例-stc89c52

/颜色索引:0-绿色/1-黄色/2-红色。switch (color) //LED8/9代表绿灯,LED5/6代表黄灯,LED2/3代表红灯。unsigned char code LedChar[] = { //数码管显示字符转换表。unsigned char LedBuff[7] = { //数码管+独立LED显示缓冲区。P0 = 0xFF;//计算定时器重载值。//T0重载值的低字节。

2025-04-28 23:39:50 355

原创 基于PWM方式控制LED实现呼吸灯效果

/计算高电平的定时器重载值并补偿中断延时。//计算高电平的定时器重载值并补偿中断延时。if (PWMOUT == 1) //当前输出为高电平时,装载低电平值并输出低电平。

2025-04-28 23:38:52 535

原创 基于PWM方式控制LED的亮度

/计算高电平的重载值并补偿中断延时。//计算低电平的重载值并补偿中断延时。if (PWMOUT == 1) //当前输出为高电平时,装载低电平值并输出低电平。//高电平重载值的高字节。//高电平重载值的低字节。//低电平重载值的高字节。//低电平重载值的低字节。

2025-04-28 23:37:45 465

原创 基于数码管显示的数字秒表-STC89C52

if (IntegerPart >= 10000) //整数部分计到10000时归零。if (DecimalPart >= 100) //小数部分计到100时进位到整数部分。= 0) //按键按下时执行动作。//刷新前一次的备份值。if (i == 1) //Esc键复位秒表。else if (i == 2) //回车键启停秒表。= KeySta[i]) //检测按键动作。if (i < 5) //索引递增循环,遍历整个缓冲区。

2025-04-28 23:37:08 1054

原创 蜂鸣器演奏简单乐谱——“两只老虎”-stc89c52

if (time == soundTime) //到达发声时间后,指示关闭蜂鸣器,523, 587, 659, 698, 784, 880, 988, //中音1-7。1047, 1175, 1319, 1397, 1568, 1760, 1976 //高音1-7。65536 - (11059200/12) / (523*2), //中音1。65536 - (11059200/12) / (1047*2), //高音1。if (time == 0) //当前节拍播完则启动一个新节拍。

2025-04-28 23:36:13 600

原创 蜂鸣器驱动的基础示例-STC89C52

/由给定频率计算定时器重载值。//以4KHz的频率启动蜂鸣器。//以1KHz的频率启动蜂鸣器。//计算所需的定时器重载值。//T0重载值的高字节。//T0重载值的低字节。//配置T0工作在模式1,但先不启动。//反转蜂鸣器控制电平。/* 蜂鸣器启动函数,frequ-工作频率 *//* T0中断服务函数,用于控制蜂鸣器发声 */

2025-04-28 23:35:13 433

原创 按键控制步进电机转动的示例-STC89C52

static unsigned char backup[4][4] = { //按键值备份,保存前一次的值。{ 0x30, 0x1B, 0x0D, 0x27 } //数字键0、ESC键、 回车键、 向右键。{ 0x31, 0x32, 0x33, 0x26 }, //数字键1、数字键2、数字键3、向上键。{ 0x34, 0x35, 0x36, 0x25 }, //数字键4、数字键5、数字键6、向左键。{ 0x37, 0x38, 0x39, 0x28 }, //数字键7、数字键8、数字键9、向下键。

2025-04-28 23:34:12 1067

原创 实用的步进电机驱动示例

/把低4位的节拍代码和高4位的原值送回P1。unsigned char code BeatCode[8] = { //步进电机节拍对应的IO控制代码。//用|操作把节拍代码写到低4位。//用tmp把P1口当前值暂存。//用&操作清零低4位。//节拍输出索引递增。//控制电机转动2圈半。//为T0赋初值0xF8CD,定时2ms。= 0) //节拍数不为0则产生一个驱动节拍。//电机转动节拍总数。else //节拍数为0则关闭电机所有的相。

2025-04-28 23:33:24 467

原创 步进电机转动任意角度的示例-STC89C52

/把低4位的节拍代码和高4位的原值送回P1。unsigned char code BeatCode[8] = { //步进电机节拍对应的IO控制代码。//用|操作把节拍代码写到低4位。//用tmp把P1口当前值暂存。//用&操作清零低4位。while (beats--) //判断beats不为0时执行循环,然后自减1。//360度*25,即25圈。/* 步进电机转动函数,angle-需转过的角度 *//* 软件延时函数,延时约2ms */

2025-04-28 23:32:16 453

原创 步进电机驱动的基础示例-STC89C52

/把低4位的节拍代码和高4位的原值送回P1。unsigned char code BeatCode[8] = { //步进电机节拍对应的IO控制代码。//用|操作把节拍代码写到低4位。//延时2ms,即2ms执行一拍。//用tmp把P1口当前值暂存。//用&操作实现到8归零。//用&操作清零低4位。//节拍输出索引递增。//定义节拍输出索引。//定义一个临时变量。/* 软件延时函数,延时约2ms */

2025-04-28 23:31:41 458

原创 简易加减计算器

if ((keycode>=0x30) && (keycode<=0x39)) //输入0-9的数字。{ 0x30, 0x1B, 0x0D, 0x27 } //数字键0、ESC键、 回车键、 向右键。{ 0x31, 0x32, 0x33, 0x26 }, //数字键1、数字键2、数字键3、向上键。{ 0x34, 0x35, 0x36, 0x25 }, //数字键4、数字键5、数字键6、向左键。{ 0x37, 0x38, 0x39, 0x28 }, //数字键7、数字键8、数字键9、向下键。

2025-04-27 23:27:56 396

原创 按键递减计数

backup) //当前值与前次值不相等说明此时按键有动作。if (backup == 0) //如果前次值为0,则说明当前是弹起动作。unsigned char code LedChar[] = { //数码管显示字符转换表。{ //连续8次扫描值都为0,即16ms内都只检测到按下状态时,可认为按键已按下。{ //连续8次扫描值都为1,即16ms内都只检测到弹起状态时,可认为按键已弹起。if (cnt == 0) //按键次数从F~0递减。//按键值备份,保存前一次的扫描值。

2025-04-27 23:27:21 278

原创 矩阵按键扫描并消抖的演示例程2

KeySta[i][j]) //检测按键动作。static unsigned char keybuf[4][4] = { //矩阵按键扫描缓冲区。unsigned char backup[4][4] = { //按键值备份,保存前一次的值。{ //连续4次扫描值为0,即4*4ms内都是按下状态时,可认为按键已稳定的按下。unsigned char KeySta[4][4] = { //全部矩阵按键的当前状态。//索引值加到4即归零。

2025-04-27 23:26:36 431

原创 独立按键扫描并消抖的演示例程

backup) //当前值与前次值不相等说明此时按键有动作。if (backup == 0) //如果前次值为0,则说明当前是弹起动作。unsigned char code LedChar[] = { //数码管显示字符转换表。{ //连续8次扫描值都为0,即16ms内都只检测到按下状态时,可认为按键已按下。{ //连续8次扫描值都为1,即16ms内都只检测到弹起状态时,可认为按键已弹起。//按键计数,记录按键按下的次数。//按键值备份,保存前一次的扫描值。//显示按键次数初值。

2025-04-27 23:24:57 408

原创 独立按键消抖原理演示例程

backup) //当前值与前次值不相等说明此时按键有动作。if (keybuf == KEY4) //判断扫描值有没有发生改变,即按键抖动。if (backup == 0) //如果前次值为0,则说明当前是弹起动作。unsigned char code LedChar[] = { //数码管显示字符转换表。//按键计数,记录按键按下的次数。//把当前扫描值暂存。//延时大约10ms。//按键值暂存,临时保存按键的扫描值。//按键值备份,保存前一次的扫描值。//显示按键次数初值。

2025-04-27 23:24:19 388

原创 独立按键扫描原理演示例程

if (backup == 0) //如果前次值为0,则说明当前是由0变1,即按键弹起。{ //只用1个数码管显示,所以加到10就清零重新开始。= backup) //当前值与前次值不相等说明此时按键有动作。//定义一个计数变量,记录按键按下的次数。unsigned char code LedChar[] = { //数码管显示字符转换表。//定义一个位变量,保存前一次扫描的按键值。//P2.3置0,即KeyOut1输出低电平。//显示按键次数初值。ENLED = 0;

2025-04-27 23:23:47 302

原创 按键基本原理演示例程

P2 = 0xF7;//P2.3置0,即KeyOut1输出低电平。//按下时为0,对应的LED点亮。ENLED = 0;//选择独立LED进行显示。//将按键扫描引脚的值传递到LED上。

2025-04-27 23:23:04 403

原创 基于数码管计时程序的函数调用演示

unsigned char LedBuff[6] = { //数码管显示缓冲区,初值0xFF确保启动时都不亮。unsigned char code LedChar[] = { //数码管显示字符转换表。//T0溢出后,清零中断标志。if (cnt >= 1000) //判断T0溢出是否达到1000次。//为T0赋初值0xFC67,定时1ms。if (TF0 == 1) //判断T0是否溢出。/* 秒计数函数,每秒进行一次秒数+1,并转换为数码管显示字符 *///设置T0为模式1。

2025-04-27 23:22:27 277

原创 密码锁示例-stc89C52

if (buf[PSW_MAX_LEN] == ~sum) //校验通过,即密码有效时,拷贝密码。//密码输入缓冲区1。if ((keycode>='0') && (keycode<='9')) //输入字符。

2025-04-26 13:29:19 505

原创 简易电子广告屏示例-stc89C52

if (CmpMemory(buf, cmdPtr[i], cmdLen[i])) //比较相同时退出循环。//保存字符串1,起始地址为0x20。//保存字符串2,起始地址为0x40。unsigned char code cmdLen[] = { //命令长度汇总表。if (len >= cmdLen[i]) //首先接收到的数据长度要不小于命令长度。

2025-04-26 13:28:04 650

原创 EEPROM连续读与分页写操作示例-STC89C52

i++) //数据依次+1,+2,+3...E2Read(buf, 0x8E, sizeof(buf));//转换为十六进制字符串。if (tmp <= 9) //转换为0-9或A-F。if (tmp <= 9) //转换为0-9或A-F。//添加字符串结束符。

2025-04-26 13:27:11 433

原创 EEPROM多字节读写操作示例-STC89C52

if (I2CWrite(0x50<<1)) //应答则跳出循环,非应答则进行下一次查询。if (I2CWrite(0x50<<1)) //应答则跳出循环,非应答则进行下一次查询。if (tmp <= 9) //转换为0-9或A-F。if (tmp <= 9) //转换为0-9或A-F。/* E2读取函数,buf-数据接收指针,addr-E2中的起始地址,len-读取长度 */

2025-04-26 13:26:26 344

原创 EEPROM单字节读写操作-STC89C52

/读取指定地址上的一个字节。//寻址器件,后续为读操作。//读取一个字节数据。//寻址器件,后续为写操作。//寻址器件,后续为写操作。//写入一个字节数据。/* 读取EEPROM中的一个字节,addr-字节地址 *//* 向EEPROM中写入一个字节,addr-字节地址 */

2025-04-26 13:25:41 305

原创 I2C寻址示例-STC89C52

mask>>=1) //从高位到低位依次进行。//器件地址需左移一位,因寻址命令的最低位。//将地址和应答值转换为字符串。//查询地址为0x50的器件。//查询地址为0x62的器件。//8位数据发送完后,主机释放SDA,以检测从机应答。if ((mask&dat) == 0) //该位的值输出到SDA上。/* I2C寻址函数,即检查地址为addr的器件是否存在,返回值-从器件应答值 *///读取此时的SDA值,即为从机的应答值。/* I2C总线写操作,dat-待写入字节,返回值-从机应答位的值 */

2025-04-26 13:25:01 436

基于STC8G1K08A的108K雾化器(PWM控制)

基于STC8G1K08A的108K雾化器(PWM控制),1、本产品选用STC8G1K08A芯片作为主控芯片; 2、驱动108K雾化片做成的雾化器; 3、采用Type-c做为电源输入接口; 4、产品配备两个按键,可配置为设置工作模式按键(本程序只用做工作按键) 5、产品配置红蓝两灯作为状态指示灯; 6、预留风扇控制接口;

2024-07-20

基于STM32的数字示波器设计

c语言,基于STM32的数字示波器设计,包含源代码

2024-07-20

基于单片机的三层电梯控制系统

基于单片机的三层电梯控制系统,单片机AT89C52,数码管显示,资料包括源代码,仿真原理图

2024-07-20

PADS从0开始绘制原理图

PADS从0开始绘制原理图,对刚入门学习PADS的朋友很有帮助,通俗易懂,入门快捷

2024-05-29

PC电脑主板电路图(全)

电脑方面的硬件工程师,PC电脑主板电路图(全),可以参考一下,

2024-05-29

单片机使用工具 2024

单片机使用工具,方便快捷,提升软件编写效率

2024-05-29

书PADS 2007高速电路板设计

【书】PADS 2007高速电路板设计,PDF格式,对入门PADS的朋友很有帮助哦

2024-05-29

基于TDA2030AL的音频功放评估板

基于TDA2030AL的音频功放评估板_PDF_C99595_2017-06-02,学习功放的朋友可以参考一下

2024-05-29

51单片机代码智能生成系统V1.2

51单片机代码智能生成系统V1.2,快速生成代码的软件,省时省力了

2024-05-29

PADS封装库文件 2024.5.29

PADS封装库文件 2024.5.29 ,资料很全,下载下来可以参考一下哦

2024-05-29

单片机小精灵,该软件可以提升编写软件效率哦

单片机小精灵,该软件可以提升编写软件效率哦

2024-05-29

stc15xx-STC8-sch-pcb-library-ver1.0 STC单片机的原理图和PCB库文件资料

stc15xx-STC8-sch-pcb-library_ver1.0 STC单片机的原理图和PCB库文件资料

2024-05-29

C51单片机-外中断INT0-INT1-INT2-INT3- INT4测试

C51单片机-外中断INT0-INT1-INT2-INT3- INT4测试

2024-03-07

C51单片机-利用定时器测量脉冲宽度

C51单片机-利用定时器测量脉冲宽度

2024-03-07

C51单片机 - 利用T0,T1做外部计数器

C51单片机 - 利用T0,T1做外部计数器,简单例程,可供初学者参考

2024-03-07

C51单片机驱动8个数码管

C51单片机驱动8个数码管,C语言程序,可供初学者参考

2024-03-07

C51单片机-用P6口做跑马灯

C51单片机-用P6口做跑马灯

2024-03-07

触摸台灯控制板-V1.0

触摸台灯控制板_V1.0 (附带原理图 PCB 源文件 和PDF文件)

2024-03-04

雅萌射频仪拆机图片分享

雅萌射频仪拆机图片分享,高清图片

2024-03-03

FM3209 移动电源 充电电路

FM3209 移动电源 充电电路

2023-09-06

点火器 控制板 原理图 不带单片机控制的

点火器 控制板 原理图,不用单片机控制

2023-09-06

128路报警器控制板 PCB附图

128路报警器控制板 PCB附图 如需要参考私我,原理图未上传。

2023-09-06

BAT416 可控硅控制调压板原理图

BAT416 可控硅控制调压板原理图,输入为交流220V, 输出30~220V,电流可达10A以上。

2023-09-06

带触摸IC的台灯控制电路

带触摸IC的台灯控制电路,值得参考哦,目前是免费下载的

2023-09-06

家用美容仪 射频仪 频率1MHZ

该项目是属于家用美容仪器的射频仪,可以去皱纹,嫩肤等功效,和蕥萌、以色列STOP等多款射频仪的原理基本上是一样的,分享给大家了。请勿用于商业用途。重新更新了原理描述,变压器型号更新。

2023-08-28

时间继电器控制板原理图

该资料为时间继电器控制板的原理图源文件,分享给有需要的朋友

2023-08-28

美容仪 爆脂仪 高压电源板 驱动板原理图

该电路图是美容仪 爆脂仪 高压电源板 驱动板原理图,驱动磁控管功率为100W, 高压负压-1800V,电流100mA。欢迎与各位朋友进行技术交流。

2023-08-28

8路独立按键模块 原理图

该资源为8路独立按键的原理图模块,源文件格式为AD,可以直接下载观看,欢迎与各位朋友进行技术交流

2023-08-28

美容仪 超声波驱动电路 频率1MHZ

该资源为美容仪 超声波驱动电路 频率1MHZ,文件是图片格式,如果需要源文件格式的朋友请留言给我。

2023-08-28

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除