c语言
文章平均质量分 51
jacklood
这个作者很懒,什么都没留下…
展开
-
STM32实现多级菜单界面显示
1、main函数中,while循环之前。3、MultiMenu.c中。4、MultiMenu.h中。2、while循环中。原创 2024-06-15 13:47:18 · 522 阅读 · 0 评论 -
STM32开发遇到问题解决2024.6.14
第一次使用开关电源,可以正常打到200kpa,第二次使用电池,上电后电磁阀直接动作,经过排查mos管是否损坏,测量控制极的上电电压,只有mos2的上电电压正常,说明其他三个mos管都损坏了,原因可能是在使用开关电源供电时,在结束时没有先拔掉mos控制板上的电源供电导致的。检查气压传感器采集气压不行的原因,审核原理图、接线并在开发板上测试都没有问题,不知原因,最后讨论后,试试3.3V供电,可以,原因找到:之前设计时以为5V和3.3V供电都可以,实际传感器手册上面写的是3.3V电压供电。1、电路板打样出问题。原创 2024-06-14 14:01:16 · 264 阅读 · 0 评论 -
STM32开发遇见问题解决2024.6.13
修改程序,将中断按钮的case中key置0,下载测试,按键按下后几乎没有反应;测试使用12V4.3寸工业屏,修改屏幕制作文件的字体大小为合适,中文字库重新生成测试,仍然有字体不能显示是红色方块,和屏技术支持沟通后,原因是因为串口屏的存储位置有分区,23号中文字库编号和41号变量图标的存储区有冲突导致。由于更换串口屏,把USB口的电路板供电拔了,主板断了电,但是,电池的电源线没断,导致12V电源一直给mos板供电了十多分钟,后面气泵电机突然蹦跶几下,发现有胶糊味道,把电池的电源线拔掉,线已发软了;原创 2024-06-13 13:59:48 · 117 阅读 · 0 评论 -
STM32开发遇见问题解决2024.6.12
解决深度不显示的bug,修改程序代码后,先是查看从flash中读出来的datatemp数据,发现没有深度数据,不知为何,查看代码,看到之前每次写入flash中的数据长度都是20,以为这种余量够了,加上了深度的2字节长度数据应该可以,测试把写入和读出长度都修改为了size的结构体长度,调试看到深度数据在第20和21位,而不是18和19位,因为时间时期的数据在结构体中的存储长度有字节对齐的原因,所以这样,所有读写的代码修改为size后,和读出的深度的数组位置后,测试,深度数据显示正常。1、历史数据存储混乱。原创 2024-06-12 14:04:50 · 185 阅读 · 0 评论 -
STM32开发遇到问题解决2024.6.7
汉字显示功能一开始不知道,用的是0号字库,查询“正常”的GBK的ASCII码后,修改程序,下载,显示的字为乱码,问询迪文屏技术支持后,得知0号字库不包含汉字,需要生成汉字字库,即ts3字库生成工具,又根据迪文哔哩哔哩官网的文本显示实现,迪文屏制作软件上带有字库生成工具DGUS字库,使用用制作字库,字库开头须为23,多次测试字体大小,最终确定字体大小为30*30的宋体可以,最终,汉字显示正常,测试,没有问题。拔掉12V电源,后测量mos板,没有问题,但实际已烧坏,不能工作。改为使用3A的保护板电池后没问题。原创 2024-06-07 13:57:22 · 236 阅读 · 0 评论 -
STM32开发遇见问题解决2024.6.6
查看迪文串口屏的使用手册,了解文本显示的方法,发送的指令中数据为ASCII码,找到一个十六进制数据转化为ASCII码的代码做参考,复制到程序工程中,并完善编写时间显示的串口指令程序,重新制作串口屏显示文件,下载程序后,文本显示日期时间正常,注意发送的指令的数组的数据长度如果短的话,显示会不完整。与迪文屏技术支持联系后,用描述指针来隐藏数据,查看使用手册后,修改制作文件和程序代码,测试,发现数据隐藏后还需要隐藏后显示数据指令,已添加左右翻页的部分,当数据量不大于6的情况下也需修改完善。1、实时时钟掉电保存。原创 2024-06-06 14:01:23 · 334 阅读 · 0 评论 -
STM32项目开发遇见问题解决2024.6.4V2
下载程序后,程序倒计时不显示,进入调试界面,查看倒计时变量是变化的,说明定时器已工作,再核对倒计时程序里面的地址和屏幕制作软件里面的地址不同一个1100一个1110,修改程序里面的地址为1100后,下载,运行正常。修改程序代码,加入按键按下后开始启动倒计时,并且在定时器回调函数中设计倒计时为0后,停止定时器工作,存储参数1和参数2和测量值保存在flash中,下载,测试,按下按键不工作,查看按键的接线没有接,接上后,按下,倒计时启动,当为0后,查看历史记录,数据有保存。2、串口屏变量地址不对应。原创 2024-06-04 14:13:56 · 451 阅读 · 0 评论 -
STM32项目开发遇见问题解决2024.6.4
并找来一个按键板,接好线到单片机,查看之前的按键程序,移植过来并修改。程序初步编写完成后运行,按下增加、减小、切换按键没有反应,单步调试查看不了按键的值,查看变量值没有改变,后来又把增加减小按键代码放在while循环中也不行,经过排查,调试程序观察按键扫描函数的返回值,让程序一直全速运行,按下增加、减小按键后返回值一直是0,说明按键扫描函数有问题,进入按键扫描函数,发现keyscan()函数中新增加的4个按键的对应的代码没有添加,修改后,下载程序,可以正常运行,可以增加、减小。2、按键需要按多次才起作用。原创 2024-06-04 13:59:01 · 158 阅读 · 0 评论 -
STM32单片机遇见问题总结1
2、修改后采集的ADC值仍不准确,初始ADC引脚应该为0.5V,测量出来却有0.89V,误差较大,排查原因,发现用的ADC引脚为PA7,该引脚在开发板上接的有上拉电阻,换用其他没有接任何器件的ADC引脚PC0和PB0,测试还是不行,在不接传感器输出线的情况,ADC口的电压应为0,采集后却有1.15V的电压,原因在排查中。7、使用USB转TTL模块在串口调试助手发送读屏指令,测试成功,屏有回复数据,单独再测试写数据指令,数据写入成功,写入的数据需要是2字节的,但是在界面制作数据变量时,数据是4字节的。原创 2024-06-01 13:55:03 · 135 阅读 · 0 评论 -
串口屏变量图标显示电量
2、然后可以使用美图秀秀逐个修改图片的像素为一致,比如像素为55*32,修改后如下。3、然后打开DGUS_V7.647软件,点击ICL生成工具。6、在变量图标右侧属性修改框修改属性,添加36变量图标文件。4、导入图片,点击生成ICL,如文件命名为36变量图标。7、这样变量图标配置完毕,生成屏幕文件。8、将以下屏幕文件下载到串口屏即可。5、然后在配置界面设置变量图标。原创 2024-05-31 13:49:51 · 180 阅读 · 0 评论 -
PIC单片机控制小型三相无刷直流电机
1、使用PIC12F629小型三相无刷直流电机制作电动口罩,涉及到电机的驱动芯片的选型,这里选用国产的MS39549驱动芯片;4、由于PIC12F629单片机只有八个引脚,资源很少,所以需要使用一个定时器实现PWM信号的生成。3、单片机给MS39549驱动芯片发送PWM占空比信号,即可实现对电机的转速控制;原创 2024-05-29 14:12:40 · 241 阅读 · 0 评论 -
STM32待机休眠指令设置
1、如果使用STM32单片机需要在不工作的时候进入待机休眠模式,通过查询STM32的数据手册,可以通过几个指令语句设置先关的寄存器即可。当按键按下的时候,取消待机休眠模式,进入正常工作的状态。原创 2024-05-20 13:42:59 · 219 阅读 · 0 评论 -
将结构体中的浮点数数据提取出来并发送至串口屏显示
3、这样,就可以使用pdata2指针按字节地址访问结构体中的成员数据,这里通过提取,将float LiuLiang_Value数据存放在了liuliang_buff[i]中。5、需要注意的是,直接将float LiuLiang_Value值给串口屏是无法实现的。现需要将其中的float LiuLiang_Value;4、然后,可以发送串口屏指令,将浮点数据显示在串口屏上。可以看到,单精度浮点数占据4个字节长度。再讲结构体指针做一个转化。2、先定义结构体变量。原创 2024-02-03 14:26:31 · 489 阅读 · 0 评论 -
迪文串口屏数据的隐藏功能
由于项目中在使用迪文屏显示数据的时候,需要在数据为0的时候不显示0,而迪文屏默认的数据变量在无值的时候显示为0,此时可以使用数据的隐藏功能指令。3、设置完描述指针地址和变量地址后,就可以发送指令5A A5 05 82 80 00 FF 00,将该变量数据隐藏。FF 00即表示将数据隐藏。原创 2024-02-03 13:47:17 · 584 阅读 · 0 评论 -
迪文串口屏文本显示的使用
从图中看出如果想显示日期、时间,则需要的串口发送数据的时候先转化为ASCII码才能在屏幕上显示出来,如图,数字1的ASCII码为31,数字2的ASCII码为32。变量地址为串口要控制文本框显示的地址,范围为1000到FFFF,编码方式这里选择GBK,文本长度为要显示的文本的字节数,这里期日、时间的字节长度设置为24,X\Y方向的点阵数为这里显示的字符的字体大小。注意,日期、时间中的“-”、空格和“:”需要查询ASCII码值,分别为0x2d、0x20和0x3A。原创 2024-01-27 11:45:56 · 1566 阅读 · 0 评论 -
基于cubeMX的正点原子miniSTM32对W25Q64的存储使用
可以实现将TEXT_Buffer数组的数据写入flash中,地址为倒数第100个地址,该地址也可以更改为从0地址开始写,然后从该地址读出数据,显示在屏幕上,从而实现了数据存储在flash中,掉电后flash中的数据不会清空。5、添加正点原子hal库的w25q64驱动程序,如下图,注意先添加.C程序后也要添加w25q64.h的头文件路径,具体添加过程不再叙述。使用cubeMX建立项目工程,结合正点原子提供的hal库对W25Q64闪存调用的例程,实现W25Q64的读写。3、设置完成,生成代码。原创 2024-01-24 17:06:33 · 736 阅读 · 0 评论 -
关于变量在多个.C文件中使用(Undefined symbol tempbuff (referred from main.o).问题解决)
于是,就将使用的代码移动了过来,为SetTxData1_toLCD(0x00,0x01);和UserUart1Send( tempbuff1,sizeof(tempbuff1));另外,如果是函数在别的文件中使用,可以不用加extern,如void UserUart1Send(uint8_t *send_data,uint8_t send_len);1、如图结构,想在multimenu.C和usart1.c中使用变量tempbuff。提示未定义,原因是只在usart1.h中做了extern的声明,如图。原创 2024-01-17 17:01:42 · 451 阅读 · 0 评论 -
传感器浮点数数据在串口通信中封包技术解析
首先,需要取temperature的地址将其强制转化为unsigned char *类型的指针pdata1,由于temperature的8个字节的数据依次存放在存储空间中,所以将pdata1指针连续加1,并将指向的字节数据存储在charArray1[8]中,则完成了double型温度数据到字节数据的转化,pressure数据的转化同样如此。这里,在发送数据的时候,添加了简单的枕头、帧尾。接下来,则调用串口的发送函数,将已经转化为字节数据的温度数据和气压数据发送出去。三、机器人A发送大气压数据前的转化过程。原创 2023-09-14 20:11:49 · 143 阅读 · 0 评论 -
STM32程序模块化开发指导
3、当GYBMP280模块和OLED显示屏模块的c程序代码和头文件建立完成后,需要将两个模块添加到项目工程面,首先,在项目工程的如下目录创建HARDWARE目录,并将GYBMP280模块和OLED显示屏模块的c程序代码和头文件放到该目录下面。1、模块化开发的思路是在基础项目模板工程的基础基础上,添加新的功能模块则是以模块独立文件包的形式添加到项目工程里,通过相关的设置后,即可编译项目工程代码,添加n个功能模块则添加n个模块文件包到工程里即可,具体操作如下。同时,也将I2CS.C添加到system目录下面。原创 2023-07-10 15:17:38 · 616 阅读 · 0 评论 -
基于STM32单片机的RFID门禁系统设计
门禁系统主要组成:由CPU、复位电路、电源指示、工作指示、振荡电路、蜂鸣器电路、门控锁电路、出门按钮、读卡模块、显示模块等组成。其门禁系统的工作原理:当刷卡时,蜂鸣器响一下,如卡权限获得允许,显示模块显示卡号,同时继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭。对形成的黑膜,要"吃"净焊锡,清洁被焊元器件或印刷板表面,重新进行焊接才行。当少量松香残留时,可以用电烙铁再轻轻加热一下,让松香挥发掉,也可以用蘸有无水酒精的棉球,擦去多余的松香或焊剂。三、软件设计程序流程图。原创 2023-06-26 11:04:40 · 1007 阅读 · 0 评论 -
基于51单片机射频RFID卡考勤人数计数系统设计
本设计由STC89C52单片机电路+RFID模块电路+1602液晶显示电路+按键电路+蜂鸣器报警电路+电源电路组成。2、任何一个人刷卡成功能,1602液晶响应显示,未刷卡显示空“ ”位置上空的,刷卡成功后相应位置显示有人。4、按下按键表示上课,如果签到人数和总人数不符合,蜂鸣器报警处理。1、系统有3张卡,分别代表依次是张三、李四、王二。3、液晶第二行显示刷卡人数,即出勤总人数。RFID卡或RFID钥匙扣。RFID/RC522模块。AMS1117稳压芯片。普通USB线(小头)原创 2023-06-14 15:31:44 · 424 阅读 · 0 评论 -
基于51单片机的RFID门禁系统
本设计采用STC89C52作为主控芯片,专用读卡器模块用来读射频卡的信息,当有卡进入到读卡器读卡的范围内时就会读取到相应的卡序列号,并根据得到的卡序列号做出相应的操作。本设计实现了自动、准确的识别卡序列号,对门禁系统起着重要的作用EEPROM采用AT24C04芯片,掉电后可以存储密码,从而保证了系统的安全性。(4)密码输入模块:(a)针对于用按键输入密码,根据密码的正确与否来进行相应的操作;(3)数据处理:针对数据的采集和分析的结果做出相应的处理,例如显示、报警、门控等。原创 2023-06-14 15:20:08 · 871 阅读 · 0 评论 -
keil 4单片机程序的debug调试
3、再单击窗口右下角变量观察窗口的watch#1标签,窗口变成下图所示,可以看到上面显示type F2 to edit字样,按两次F2输入程序中用到的变量temp和a,右侧立即显示出变量值0x00,因为两个变量最开始定义的时候没有给它们赋初值,编译器默认给它们赋的初值是0,当执行到后面的程序的时候,temp和a的值才会变化。4、在窗口的左侧为寄存器窗口,可以看到一些寄存器名称和它们的值,sec为程序代码执行所用的时间,单位是秒,这是程序启动执行到目前停止位置所花的所有时间。是程序直接运行至当前光标所在行。原创 2023-05-10 11:00:39 · 4386 阅读 · 0 评论 -
ESP8266WIFI模块连接原子云及手机APP
一、项目需求使用ESP8266WIFI模块连接到正点原子的原子云,下载原子云手机APP到安卓手机,使用APP与8266WIFI模块通信互发数据。二、软硬件准备硬件: 1、正点原子的esp8266模块 2、usb to ttl 模块软件: 1、正点原子的 串口助手 2、正点原子的 原子云手机APP 3、esp8266刷固件软件原子云后台管理界面 ——附上网站:https://cloud.alientek.com三、调试过程1、刷8266WIFI模块固件用于可支持与原子云通信,将esp8266与 US原创 2022-06-13 17:28:24 · 11416 阅读 · 10 评论 -
瓦斯抽放采集仪设计过程
便携式激光瓦斯抽放综合参数测定仪的设计调试过程原创 2022-03-04 15:54:03 · 38 阅读 · 0 评论 -
电动口罩电路图和源代码程序破解
1、项目需求: 使用无刷电机,电路板能控制电机三挡调速,电池采用3.7V锂电池,可给锂电池充电,充电口为安卓充电口或TYPEC口,当电机未启动的时候,MCU处于休眠模式,当长按按键3秒后,电路板上电,电机开始转动,然后每按一次按键档位加1,总共1、2、3档,当到3档后再按一次按键到1档,当再长按按键3秒后,MCU进入休眠模式。2、设计过程(1)一开始在51单片机上测试PWM波控制直流电机,程序使用例程,例程中用了2个定时器,定时器1和定时器2来产生PWM波。拆开了厂家的电动口罩后,....原创 2021-12-10 14:27:50 · 663 阅读 · 0 评论 -
2021-08-16 C语言实验一
一、类型转换实验----题目出处:《程序员面试宝典》1、代码如下,问输出分别是什么?#include <stdio.h>int main(){ unsigned int a=0xfffffff7; unsigned char i=(unsigned char)a; char *b=(char*)&a; printf("%08x,%d,%08x,%d",i,i,*b,*b); return 0; } 第一段,int型的a转换为无符号型的char,则i的值取低位原创 2021-08-16 17:16:20 · 363 阅读 · 0 评论 -
2021-08-05 C语言内存分配问题
一、1、编写程序如下://下面程序会出现什么结果#include <stdio.h>#include <stdlib.h>#include <string.h>void getmemory(char *p){ p=(char *)malloc(100); strcpy(p,"hello word");}int main(){ char *str=NULL; getmemory(str); ...原创 2021-08-05 16:37:27 · 207 阅读 · 0 评论 -
2021-08-05 dev-c++的使用
1、从官网下载dev-c++ 5.11版本,安装即可使用。2、新建源文件,如下图:新建源代码文件,即可编程,编写代码如下:3、点击运行--编译运行,即可出运行结果,如下:原创 2021-08-05 16:13:46 · 468 阅读 · 0 评论 -
2021-06-16 基于STM32的modbus rtu从机代码修改
一、基于STM32的modbus rtu从机代码修改1、从网上搜了搜modbus rtu从机的代码下载,搜到了一个,连接如下:https://blog.csdn.net/qq_27762895/article/details/902024402、充了年卡会员198元可下载400次,下载了代码3、MDK5打开代码后,编译通过,然后用STLINK下载失败,解决方法见上一篇博客4、下载入开发版程序后,又百度下载modbus调试精灵1.024,再次使用了csdn的会员下载。使用调试精灵设置好串口原创 2021-06-16 17:06:28 · 924 阅读 · 0 评论 -
2021-6-25 组态王与modbus rtu从机STM32精英开发板通信
一、组态王与modbus rtu从机通信原创 2021-06-25 15:59:54 · 2742 阅读 · 7 评论