自定义博客皮肤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)
  • 资源 (3)
  • 收藏
  • 关注

原创 理一下单片机中文显示及抗锯齿

在形形色色的嵌入式产品中,实现中文显示是一个广泛的需求。还记得我刚学习单片机时在一块LCD12864上显示出中文的激动,果然,岁月不居,时节如流哇!那时我使用的是一个带字库的LCD12864显示模块,当然,那时我其实还没有所谓字库的概念。那么何谓字库,如果是不带字库的显示屏如何更好的显示汉字呢?

2024-06-03 19:50:44 1245

原创 嵌入式神经网络入门笔记

多层感知器,是一种基本的神经网络结构,包含多个全连接层。一个简单的全连接网络模型大概长下面这样子,其中w1/w2/w3/w4/w5/w6叫权重,b1/b2b3叫偏置。用大白话讲,最后的输出就是够简单吧,就是无数的y=kx+b~~然后呢,在神经网络里面还有个概念叫激活函数,一般放在每一个输出层之后,用来引入非线性特性,比如最常用的ReLU 函数,它就极其简单粗暴即只保留正数~~它咋用呢?以上面这个模型为例,如果我们在隐藏层后面放了一个relu激活函数,那它的输出如下。h1 : 0。

2024-05-17 17:30:09 896 2

原创 一种通用串口命令解析器

在一个产品的开发过程中,往往涉及很多参数的配置、功能模式的切换、状态查询等等,一般这个时候会通过uart下发一些命令,去进行配置等。该博文实现了一种易于移植的字符串命令解析器,能解析以下两种格式的明文字符串带参数的比如> $ZZB RESET\r\n 重启> $ZZB SN PAR\r\n 修改产品SN号> $ZZB LOG GET\r\n 获取日志信息> $ZZB LOG ON/OFF\r\n 使能/关闭日志记录不带参数的直接是全字符串匹配比如。

2024-04-23 16:12:38 1056

原创 一种通用hex协议解析器的简单实现

hex协议基本是私有定制的,但他们都具有一定的共性,比如一个例子如下帧头帧类型数据长度数据校验帧尾1 byte1 byten bytexor一般hex协议的基本数据流都类似这种,或是其变种,这些数据流可以通过UART、网口、蓝牙、2.4g、SPI等等等等进行传输,简单的,我们就串口而言,解析它的方式大致两种。

2024-03-21 16:32:41 1845

原创 一种flash双区备份机制的简单实现

读flash大致思路如下,先读出主区保存的数据和校验值,对数据进行CRC32校验并判断是否和保存的校验值一致,若一致,则数据可靠可以使用(并判断备份区数据是否可靠,不可靠就把主区数据再重写到备份区去),若不一致,读备份区数据和校验值,对备份区数据进行CRC32校验并判断是否和保存的校验值一致,若一致,则将备份区的数据重写到主区,并使用该备份数据,若不一致,则恢复出厂值。试想,我们在当配置数据时,flash正处于擦除阶段,这个时候掉电了,或者才写了一半,掉电了,或者受到电磁干扰,导致写入的数据出错等等等等。

2024-03-21 10:55:40 897 7

原创 LCD12864串口高级操作

上面是LCD12864的串口通信时序图。其中RW是方向位,RS是命令数据选择位,SID为数据线,SCLK为时钟线,CS为使能端。其中CS为1时使能时序操作,由图可以看出,数据线在时钟线为低电平的时候变化,在时钟线为高电平时锁存。一次完整的通信由3个字节组成,第一个字节是引导码,由固定的5为高电平,1位方向位,1位命令数据选择位,1位低电平组成,第二个字节是数据或命令的高4位+4个低电平,第三个...

2019-08-21 15:26:20 5866 7

原创 时基法编程之按键

按键堵塞式按键消抖如下是一个普通的堵塞式按键程序: sbit K1 = P1^0; sbit K1 = P1^1; sbit K1 = P1^2; sbit K1 = P1^3; #define KEY_VALUE_NULL 0X00 #define KEY_VALUE_1 0X01 #define KEY_VALUE_1 0X02 #define KEY_VALUE_...

2019-08-06 15:03:11 519

原创 时基法编程之流水灯和蜂鸣器

流水灯和蜂鸣器先上代码,边看边讲,实现2个任务,一边8颗LED灯流水,一边蜂鸣器1HZ蜂鸣: //LED灯驱动时基 unsigned int LED_ScanCnt = 0; //蜂鸣器驱动时基 unsigned int BUZ_ScanCnt = 0; //实际项目中很少能规律的给你一组IO口供你用, //因为要合理的分配各种资源外设考虑走线等等,大多都是东一个脚西一个脚 sbi...

2019-07-26 16:16:37 1183

原创 时基法编程之从一颗LED灯讲起

从闪烁一颗灯开始堵塞编程非堵塞式编程功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入堵塞编程如下是一个最普通的LED...

2019-07-26 14:10:08 416

原创 治具测试开发经验--IIC通信测试

在对一个带连接器的FPCA进行OS测试以及传感器功能测试时,当OS测试完毕后,用继电器将传感器的VCC-GND-SDA-SCL-INT-EN等驱动引脚接入另一块测试板卡时,发现另一块测试板卡跟产品的IIC通信无法连接。后来发现是6根信号线没有完全跟测试板隔离,之后将产品点位接入继电器COM端,模拟开关OS测试点接入NC端,板卡通信端接入NO端,解决了无法通信的问题。后来在测试过程中发现IIC频...

2019-07-31 15:04:21 447

LCD12864驱动文件.rar

LCD12864底层驱动及一些常用函数。包括printf/打点/反白等等... 该函数更新一下。 void LCD_PointPlay(u8 x,u8 y,u8 bitEn) { //u16 point = ((u16)y>>7) + x;//x*128+y :当前点位序号------原语句 u16 point = ((u16)y<>4; //point/16:当前点位所在显存数组下标 if(bitEn) LCD_RAM[Index] |= 0x8000>>(point & 0xf); //point % 16 == 当前点位所在显存半字中的bit位 else LCD_RAM[Index] &= ~(0x8000>>(point & 0xf)); LCD_Write(LCD_CMD,0x34); LCD_Write(LCD_CMD,0x36);//扩展指令集 //写入垂直地址 LCD_Write(LCD_CMD,0x80 + (y & 0x1f)); //写入水平地址 //第一行0x80-0x87 //第二行0x90-0x97 //第三行0x88-0x8f //第四行0x98-0x9f LCD_Write(LCD_CMD,0x80 + (y >= 32 ? 0x08 :0) + (x>>4)); //写入半字数据 LCD_Write(LCD_DAT,(LCD_RAM[Index]&0xff00;)>>8); LCD_Write(LCD_DAT,(LCD_RAM[Index]&0x00ff;)); LCD_Write(LCD_CMD,0x30);//基本指令集 }

2019-08-23

自考02202传感器与检测技术

自考02202传感器与检测技术 包括: 2004年到2018年真题及答案。 重点笔记小抄版。 自测题及答案等

2019-02-28

低功耗经验总结

工作中的一些低功耗经验总结.

2019-02-25

空空如也

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

TA关注的人

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