
单片机程序
随风飘零翼
记录自己的调试代码内容,简略。
展开
-
DMA多通道AD
初始化及配置#include "ACS712.h"__IO uint16_t ADC_Value[2] = {0, 0};void adc_Configuration(){ GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStruct...原创 2019-07-02 19:10:45 · 1634 阅读 · 0 评论 -
AD采集(电位器模拟温度)
以前的比赛和训练题目,也就是用滑动变阻器改变电压,然后进行AD采集可以用于此方面功能,第三小题当时比赛现场写的,这里没体现此功能。可以配合我之前写的pwm控制电机程序实现#include <STC12C5A60S2.H>#include <intrins.h>#define uint unsigned int#define uchar unsigned c...原创 2019-05-08 11:12:20 · 4229 阅读 · 0 评论 -
蓝牙HC05常用调试指令
拿到手后,用USB转串口工具接上电源和地,以及交叉相连tx和rx引脚,按住模块上的小黑点再通电进入AT模式。AT+UART=115200,0,0, 波特率修改为115200,0停止位,0校验位。波特率调整为38400,这是AT模式的通信波特率。AT+ROLE或AT+ROLE?,返回当前主从模式,1表示主机,0表示从机。AT+ROLE=X,修改主从模式,X为1或0,对应主机和从机。AT+BIND=XX,XX,XX,修改绑定地址(CMODE=0)发送AT加回车,返回OK表示通信成功。原创 2023-03-21 09:50:42 · 2710 阅读 · 1 评论 -
AS5045B/AS5145 零位编程 OTP
因为项目需要修改零位,最终没有采用硬件SPI,发现OTP操作需要用到芯片手册中特定的时序,于是采用IO模拟的方法。下图是芯片的寄存器,蛋疼的是根据官方手册和例程,知道这款芯片需要对寄存器所有位进行操作,所以需要先读一遍寄存器,再把零位数据Z11-Z0依次写入。AMS公司有别的芯片,可以通过spi选择寄存器对某些功能进行改写。有关SSI通信的还有另一种,AS5045不带B的,那个貌似只需要直接写16位命令即可,比较方便,没有实际动手尝试过。对芯片进行写/编程操作分4块步骤。原创 2022-02-11 14:51:47 · 5688 阅读 · 0 评论 -
PIC16F18xx软/硬件SPI驱动磁性传感器AS5045B(附SPI模式分辨方法)
PIC16F1823软硬件SPI驱动磁性传感器AS5045B(附SPI模式分辨方法)原创 2021-12-23 15:30:41 · 1454 阅读 · 0 评论 -
STC单片机超声波程序
HCSR04个人看来是个一般的超声波//Trig = P1^0//Echo = P3^2/*****************************...原创 2019-05-18 10:11:53 · 3118 阅读 · 1 评论 -
分贝检测传感器
这里只需要注意校验就行了,我们直接跳过第一个校验,校验第二个0xAA就行了。最奇葩的是倒过来的。不需要程序都可以用usb转串口发数据.bit f_r;unsigned char f_1,r[3];void UartInit(void) //115200bps@11.0592MHz{ PCON &= 0x7F; //波特率不倍速 SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR...原创 2019-05-18 10:08:22 · 4207 阅读 · 4 评论 -
EEPROM密码锁第一次烧录设置默认密码思路
I原创 2019-05-08 11:04:37 · 1234 阅读 · 1 评论 -
SYN6288中文语音合成 程序
51单片机比较麻烦些,用到串口,因为会被占用,所以每次下载程序都要重新拔插。注意接收和发送两头别接同错了。#include <reg51.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned int//**********************************...原创 2019-05-08 10:59:18 · 8257 阅读 · 1 评论 -
HX711称重模块程序(程序已过时,早期写的不行。而且建议用tm7711)
去年省比赛准备51模块程序之一.以上部分截自于厂家数据手册。#include <STC12C5A60S2.H>#include"lcd12864.h"unsigned long HX711_Buffer = 0;unsigned long Weight_Maopi = 0;unsigned long Weight_Maopi_0 = 0;...原创 2019-05-08 10:55:20 · 27899 阅读 · 4 评论 -
HC-SR501人体红外感应模块程序
当感应到时,输出一个高电平。这里我对io口进行了配置,要不然读不到高电平。建议大家以后养成习惯,对io口进行配置,stm32中会用到。在这里我额外提下,一般在stm32中 浮空输入芯片内部没有接上下拉电阻。由于其输入阻抗较大,这种模式一般用于标准通信协议,如I2C、USART的接收端等模拟输入模式:芯片内部由另一条线路把电压信号传送到片上外设模块。如传送至ADC模...原创 2019-05-08 10:49:18 · 22739 阅读 · 4 评论 -
不同单片机ms级延时函数(stc12和51) 较为精准
stc12void delay(uint z){ uint x,y;for(x=z; x>0; x--) for(y=920; y>0; y--); }89c51/52void delay(uint t){ uint i; while(t--) for(i=0;i<110;i++);}用来写...原创 2019-04-22 10:52:04 · 4298 阅读 · 0 评论 -
LCD12864驱动显示程序
这里是用的并行写法,后续会更新串行 。并行缺点就是太占用io口了,我其实更喜欢用串行。不过不是比赛要求都不怎么用了。lcd12864.c#include"lcd12864.h"uchar code num[]={"0123456789 e:.-"};sbit RS = P3^5; //命令/数据选择 sbit RW = P3^6; //读写...原创 2019-04-22 10:49:30 · 19989 阅读 · 2 评论 -
利用单片机内部定时器产生pwm进行led呼吸灯调光
之前写过用内部pwm直接产生脉冲:https://blog.youkuaiyun.com/zy19981110/article/details/89446812这次写的是用定时器,不推薦用延时来模拟。此程序结合了我之前发的矩阵按键程序,按键进行亮度调整。#include"lcd12864.h"#include<reg51.h>uchar code num1[]={" 1234567...原创 2019-04-22 10:41:27 · 5078 阅读 · 0 评论 -
用STC12单片机内部PWM产生脉冲方波(直流电机调速/正反转)
这个程序是以前比赛时候准备的,方便用来调电机转速,也可作呼吸灯等。采用的是mx1508数字芯片作为直流电机驱动板,可双路输出。感觉比纯模拟电路的mos管好用还便宜。IN1和IN2是控制端(电机A),控制高低电平可以来控制正反转。没有调速端口。一个方案是在供电端给不同pwm进行调速,可io供电能力有限,速度可能会慢。所以另一个方案就是一个输入端口给pwm,改变电平;另一端输入口给固定电平就...原创 2019-04-22 10:35:14 · 8943 阅读 · 1 评论 -
一种矩阵按键扫描方法,很简略
去年大一比赛,因为时间问题,还有程序得现场手打,找老师要过他的程序,这种矩阵按键的确挺好用的,而且代码量不大。当时比赛4个小时,各种底层驱动还要自己手打,时间还是挺紧张的,当时功能要求都勉强写完了。一般我程序不另作介绍,一般都写在注释里了,平常没太多时间。不过这个程序还真没注释……矩阵按键解释起来感觉很麻烦。接法就按行P口低四位,列高4位接。#define uchar unsigne...原创 2019-04-22 10:10:44 · 2449 阅读 · 0 评论