- 博客(41)
- 收藏
- 关注
原创 迪文屏 显示ASCII字符
在DGUS里面如何配置才能不用中文字符集就能直接显示ASCII码,选择GB2312内码才能正常显示,我这里就显示了冒号,其他自己试试。
2024-05-04 17:59:16
186
原创 基本排序算法
目录1.冒泡排序(缺点:元素交换次数太多,意味这内存的更多读写操作)2.鸡尾酒排序-冒泡排序的优化3.选择排序4.插入排序5.希尔排序6.归并排序7.快速排序8.堆排序9.计数排序10.桶排序11.基数排序1.冒泡排序(缺点:元素交换次数太多,意味这内存的更多读写操作)void bubbleSort(int *arr,int length){ int i,j,temp; for(i=0;i<length-1;i++)...
2022-05-21 13:20:16
185
原创 51.N皇后
n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/n-queens著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。/** * Return an array...
2022-05-19 15:16:23
94
原创 开方 C语言 迭代法加二分法
迭代法对大于1的数计算更准确,小于1的话就比较麻烦,所以大于1用迭代,小于1用二分#define n_MAX_ERROR (0.002)//最大为误差#define n_MAX_COUNT_MAX_TIME 10 //最大计算次数double mySqrt( double x ){ double a = x; double min,max,mid,res; unsigned char t; unsigned char count=0; if(x<
2022-03-25 15:50:54
1140
原创 红外接收C语言实现 NEC 定时器
使用定时器实现红外的接收,定时器的时间为80uS,协议为NEC。 typedef unsigned char bit;typedef unsigned char BYTE;//timer 80us 定时器每80us进去一次#define n_InfraredLowBitMin 4//560us#define n_InfraredLowBitMax 10//560us#define n_InfraredZeroBitMin n_InfraredLowBitMin#define n_Inf
2022-03-01 18:01:10
908
原创 通过AD旋钮(编码器)改变数据,C语言实现
说明:我有一个带位置限制的编码器,里面是一个滑动变阻器,我通过AD采样到的值是0X00-0XFF,我想通过旋转编码器改变某个范围内的数值,比如30-80,但我不想直接映射,因为这样会出现调一小幅度,数值变化较大的情况。所以我想:1.向上旋转,数据++,方向为上,在方向为上时,不理会向下旋转的动作。2.向下旋转,数据--,方向为下,在方向为下时,不理会向上旋转的动作。typedef volatile unsigned char BYTE;typedef volatile unsigned
2022-01-06 13:07:41
911
原创 滤波-限幅消抖
//////////////////////////////使用限幅消抖 ////vesion1.0 ////2021.12.03 //////////////////////////////#define n_OPTIMIZE_OFFSET 1//优化偏差#define n_OPTIMIZE_COMPARE_TIME 10 //比较的次数typedef volatile unsigned char BYTE;...
2021-12-03 12:50:27
278
原创 MODBUS RTU C语言 从机实现
参考链接:Modbus协议解析--小白一看就懂的协议_“社会大学三年级”的博客-CSDN博客_modbus协议详解水平有限,仅供参考////////////////////////////////////////////////////////////modbus_rtu//地址(1字节)+功能码(1字节)+寄存器地址(2字节)+数据()+校验(2字节)////////////////////////////////////////////////////////////typedef
2021-09-16 18:13:21
5426
4
原创 AVR IO操作 异常
我在中断中用pc1进行IO口翻转驱动无源蜂鸣器;主循环中pc2-pc4驱动LCD驱动芯片;出现了一个问题,蜂鸣器异响,IO口的翻转频率也出现了变化。原因是AVR的IO口操作是整个IO操作,比如PORTC;例如 PORTC |=0x02;上面这条语句翻译成汇编之后是两条语句,如果在这两条语句中间跳到了中断,就会出现问题。解决的办法有两个:1.IO操作的时候屏蔽中断。2.把IO操作改成汇编,比如asm(“CBI (0x15),1”);//清零PORTC的bit1,因为PORTC的地址是0X15
2020-12-08 00:30:21
395
1
原创 AVR比合泰消耗ROM(flash)
我写了一个基本相同的实现,用的是8K的flash,我用AVR几乎写不下(还需要我优化很多东西),用合泰仅用了54%。不知道是不是编译器的原因。还有,我测试了AVR的语句,单个语句(比如判断)要比合泰的多几个字节。...
2020-11-27 17:32:56
161
转载 WinAVR在win10下编译报错 win10安装不了USBISP驱动
1.WinAVR在win10下编译报错具体报错是:Build started 18.11.2014 at 23:33:54 0 [main] sh 13304 sync_with_child: child 11844(0x14C) died before initialization with status code 0xC0000142 38575 [main] sh 13304 sync_with_child: *** child state waiting for long...
2020-11-23 18:42:09
1563
原创 把一个范围的数映射到另一个范围
如何将一个范围的数映射到另一个范围,这是一个很简单的问题。但是有时候8位单片机对乘除法支持不是很好,会出现溢出,这样你就不能很好地得到你想要的数。这里我提供一个简单的算法,可以对整型进行误差较小的映射。/*************************************目的:将200 - 1023 中的某个数映射到 20 - 160 上*原范围:200 - 1023*目标范围:20 - 160*大数到小数的映射会出现精度的损失,所以先将小数的范围扩大,*这里采用的是左移n位,
2020-09-20 01:05:58
5045
原创 error: expected constructor, destructor, or type conversion before '*' token
报错:error: expected constructor, destructor, or type conversion before '*' tokenclass AVLTree{private: struct BTNode { int key; struct BTNode *left; struct BTNode *r...
2019-12-04 12:25:47
1813
原创 linux之间文件传输scp传输
scp -r yourFile remoteUser@remoteAdress:remoteFile举个栗子:scp -r ./helloWorld .txt root@101.33.36.11:/root/home/就把当前目录中的helloWorld.txt发送到远程目录 /root/home/ 下了...
2019-11-07 13:08:55
174
原创 在linux和windows之间传文件之ftp传输
查看linux是否安装ftp: rpm -qa | grep vsftpd 2.安装ftp: yum install vsftpd 3.到 /etc/vsftpd/目录下修改参数 cd /etc/vsftpd 4.修改ftpusers的参数,把root注...
2019-11-05 21:23:49
1322
原创 Linux C语言 socket 多线程(循环创建多个线程,同时进行,非阻塞)
我看了一些博客,多线程网络编程用的是堵塞,也就是 pthread_join函数,可是既然是监听接口怎么能用堵塞的。我要做的东西是:监听80端口,然后接收请求,创建一个线程完成相应任务。我遇到的问题是:用阻塞(也就是pthread_join(thread_id))相当于单线程无法满足要求,用非阻塞(pthread_detach(thread_id))然后我的socket没反应。问题原因...
2019-10-03 16:33:58
3093
原创 486. 预测赢家 leetcode
给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入: [1, 5, 2]输出:...
2019-07-04 18:09:52
336
原创 单片机温度传感器的想法
1.首先单片机AD是多少位的,比如n位,那么单片机AD的最大值是2^n-1;2.串接传感器的电阻为R,传感器的电阻为Rc3.AD的值: val = (Rc/(R+Rc))*2^n;4.根据供应商提供的温度和电阻的匹配表,进行计算。温度和电阻一般为非线性的,所以一般会用查表法来查找温度值(精度要求不高的情况下)。8位单片机ram很小,把你要查的数据设成 const, 别设成v...
2019-06-14 17:01:00
531
转载 编码器的扫描-单片机
编码器家用电器旋转编码器的扫描首先说一下端口怎么接,A、C接到单片机的引脚,都要接上拉电阻,C接地。家用旋转编码器稳定时(就是停下来的时候),有AB有两种状态,00,和11;顺时针旋转时:A 0 0 1 1 0B 0 1 1 0 0逆时针旋转时:A 0 1 1 0 0B 0 0 1 1 0由于上拉的原因,ON的状态为低电平,OFF状态为高电平经过这五种状态我们会输出...
2019-06-10 13:48:39
1040
转载 好酷的单片机IO口扫描方法
一个很棒的IO扫描方法,我无意间搜到的https://www.amobbs.com/forum.php?mod=viewthread&tid=854599&highlight=%E5%A0%AA%E7%A7%B0%E4%B8%80%E7%BB%9D
2019-05-27 11:24:42
721
原创 C语言可变参数函数的两种实现方式以及va_list、va_start、va_arg、va_end详解
函数的可变参数的实现方式有两种:1.通过库函数stdarg.h实现先贴代码int add(int n,...){ int i = 0; int sum = 0; va_list ap; va_start(ap,n); for(i = 0;i < n;i++) { sum += va_arg(ap,int); ...
2019-05-08 22:08:22
1215
1
原创 STM32的独立看门狗
独立看门狗时钟频率一般以40KHz,但不是非常准确,变化范围在15-47KHz。看门狗在开启后不能关闭,除非复位。1.寄存器关键字寄存器 IWDG_KR:用来写指令,指令有0xAAAA(把IWDG_RLR的值载入到计数器,避免产生复位),0x5555(允许对IWDG_PR和IWDG_RLR寄存器的访问),0xCCCC(开启看门狗)。IWDG_PR 和 IWDG_RLR 寄存器具有...
2019-03-27 22:39:05
754
原创 Leetcode 525. 连续数组
给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。int findMaxLength(int* nums, int numsSize) { int res = 0; int temp = 0;//记录一段长度相加的值 int *map = (int *)malloc(sizeof(int)*(numsSize+1)); int r...
2019-03-19 20:51:20
192
原创 51单片机寄存器篇之一
1.定时/计数器方式寄存器TMOD(段寻址)GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0 GATE:门控制位C/T:定时器和计数器的模式选择为M1M0:工作模式选择位2.控制寄存器TCON(可以位寻址)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 ...
2019-03-19 20:46:58
418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人