自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

悟已往之不谏 知来者之可追

大家好,我是CSDN博主ReCclay,《2020博客之星年度总评选》正在火热进行,希望可以得到您的关注和投票。地址:https://bss.csdn.net/m/topic/blog_star2020/detail?username=recclay

  • 博客(40)
  • 资源 (1)
  • 论坛 (3)
  • 收藏
  • 关注

原创 12864学习总结

一切尽在注释中: 参考博文:一篇详细的12864博文/* 简单理解即是* CGRAM是留给自己造字的地方,CGROM是字库所在地方* DDRAM是显示数据地方* 地址计数器用来存CGRAM以及DDRAM的地址值*/#define _LCD_12864_C#include "config.h"#include "Lcd12864.h"/* 等待液晶准备好 */void LcdW

2017-07-30 23:45:23 2655

原创 内部10位ADC

#include "UART.H" // 包含IAP15W4K58S4寄存器定义文件 #define VCC 4.965 // 存放用万用表实测的单片机供电电压unsigned int ADC_P11(){ unsigned int i; // 用于软件延时程序 unsigned char status=0; // 用于判断AD转换结束的标志 un

2017-07-30 00:26:06 1833 4

原创 PCA的PWM

#include "STC15W4K.H" // 包含STC15W4K寄存器定义文件void main(){//占空比 = (1-CCAPnH/256)*100%//CCAPnH = (1 - 占空比)*256// (1-0.875)*256 = 32 = 20H CCAPM0=0x42; // 设置PCA模块为PWM输出方式。 CR=1;

2017-07-29 22:10:34 1880 2

原创 PCA高速输出

#include "STC15W4K.H" // 包含STC15W4K寄存器定义文件 void main(){//初值计算方法为:步长值=计数脉冲频率/(2*所需频率)// (22118400/12)/(2*10000) = 92.16 = 0x005C CCAP0L=0x5C; // 给PCA模块0的CCAP0L置初值 10khz CC

2017-07-29 21:11:27 1420 2

原创 数据溢出与类型提升(keil下的C51)

来看这个,,#include #include unsigned long a1,a2,a3,a4,a5,a6;unsigned char b=1;unsigned char c=255;unsigned int d=65535;unsigned char e=255;void main(){ TI = 1; while(1) {

2017-07-29 20:27:59 1078 2

原创 PCA16位定时器

#include "STC15W4K.H" // °üº¬STC15W4K¼Ä´æÆ÷¶¨ÒåÎļþsbit LED_1s=P0^0;unsigned char Count; // ÖжϴÎÊý±äÁ¿void port_mode() // ¶Ë¿Úģʽ{ P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1

2017-07-29 18:17:38 2591

原创 PCA三路外中断

#include "STC15W4K.H" // 包含STC15W4K寄存器定义文件sbit LED_PCA0=P0^1; // PCA0对应P1.1脚sbit LED_PCA1=P0^0; // PCA1对应P1.0脚sbit LED_PCA2=P0^2; // PCA2对应P3.7脚void port_mode() // 端口模式{ P

2017-07-29 17:59:01 1025

原创 15的外部中断INT3和INT4

#include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定义头文件sbit P0_0=P0^0;void port_mode() // 端口模式{ P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;

2017-07-29 01:27:57 2048 2

原创 15T3T4M操作技巧

在T3T4M开启T3的速度控制位时#include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定义头文件sbit P0_0=P0^0;void main(){ P0=0xff; // 关闭P0口接的所有灯 T4T3M &= 0xFD; // 定时器3为12T模式 T3L = 0;

2017-07-29 01:18:06 854

原创 六路时钟输出

// 功能:输出P5.4(MCLKO)——11.0592MHz// 输出P3.5(T0_CLKO)——5M// 输出P3.4(T1_CLKO)——38.4KHz// 输出P3.0(T2_CLKO)——500Hz// 输出P0.4(T3_CLKO)——200Hz// 输出P0.6(T4_CLKO)——100Hz#include "S

2017-07-29 00:57:45 513

原创 6路定时器

定时器中断相关模块:STC15W4 系列有5个定时器/计数器(T0~T4) 6通道可编程时钟输出(5路定时器时钟+主时钟),最高输出频率可达13.5MHZ 1个PCA模块,可用作外部中断(2通道,即是两个引脚)、定时器1个、时钟输出和脉宽调制PWM输出2通道 6个外中断输入口(INT0~INT4),其中外0和外1既可以上升沿触发又可以下降沿触发。而其他三个只能下降沿触发。定时器/计数器原理概述

2017-07-28 21:32:33 410

原创 强制转换的使用技巧(keil下的C51)

//************** 强制类型转换实用技巧(地址类型转换)******************//(A)将long型变量a(值:0x12345678)的第3个字节(值:0x56)赋给char型变量b。// (B) 将数组的4个字节拼成1个long型变量// (C) 将数组的4个字节转换成2个整数// (D) 将数组的4个字节转换成1个float小数// (E) 将float型

2017-07-28 17:10:01 1777

原创 关于有符号数的移位操作

特殊对待有符号负数的移位操作。

2017-07-28 15:36:06 1377

原创 keil 里的补码妙用(keil下的C51)

keil 内存相关。

2017-07-28 14:33:09 2009

原创 硬件仿真注意事项

出现进入调试环境可能会失败,这时可将整个程序代码注释掉,只写一个最简单的主函数,编译后再 尝试进入调试环境,若顺利进入,说明是软件代码(比如串口程序)占用了仿真调试接口,否则可能是仿 真串口号选择有误或硬件问题,比如仿真芯片问题或计算机出来的串口工作不正常。另外注意P3.0、P3.1为单片机和计算机通信引脚,注意不能占用!

2017-07-28 09:47:30 415

原创 IAP15W4K58S4 端口配置

新奇。。。。void port_mode() // 端口模式(准双向、弱上拉){ P0M1=0x00;P0M0=0x00;P1M1=0x00;P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00;P3M0=0x00; P4M1=0x00;P4M0=0x00;P5M1=0x00;P5M0=0x00;P6M1=0x00; P6M0=0x

2017-07-28 09:40:37 5397

原创 关于PID的一些理解与调节经验

搞了四天的PID闭环,结果挺让人糟心。今天决定先行脱坑,吾生有崖,不可虚待。(其实太打击了。。。。2333)阶段性的总结下这几天的收获: (希望自己在硬件这条路上走的越远的时候,可以回过头来把这个坑再次补上)C语言模拟PID修正过程#include <iostream>#include <windows.h&

2017-07-28 00:56:34 16273 3

原创 一般直流电机与直流伺服电机的区别:

伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高、始动电压等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。伺服电机一般与伺服驱动器、控制器(数控系统或其他电脑控制系统)配套使用,实现闭环控制。 伺服电机和普通电机的主要区别是启动和停止快,这就要求它具有旋转惯量小,启动力矩大,制动迅速的特点;为了精确获得电机转子的位

2017-07-27 21:59:06 1989

原创 【AD快速入门】8051最小系统绘制

手把手教你入坑 本人所用软件为AD16,分享一下主要。绘制流程为 创建工程->保存工程->创建原理图(库)、PCB图(库)并保存->再次保存工程 当然了,一般都是先画库再画对应的原理图和PCB的。创建工程及必要文件注意: 可以直接在左边一栏导航栏,有个project点击后Add new project->PCB project。 当然也可以

2017-07-23 19:36:14 9168 3

原创 运算符++的前缀、后缀和&的记录

++和&

2017-07-22 17:43:27 763

原创 配置PCA的一点总结12单片机

先看代码#include "stc12.h"unsigned int Last_Capture_Data=0; unsigned int New_Capture_Data=0; unsigned int g_Period=0; unsigned int g_Frequency=0; unsigned char str1[12];unsigned char str2[12];

2017-07-22 17:03:41 602

原创 步进电机的一点收获

步进电机

2017-07-22 15:52:07 844

原创 关于解决12单片机定时竟然不准的问题

自己不断的折腾确实挺浪费时间的,但是真的收获颇丰。问题 今天,在用12的时候,定时器无意之间debug竟然发现,定时不准? 查查查,,,一直没有头绪,还好没有放弃一直在苦苦挣扎。过程再现#include <stc12.h>#include <intrins.h>unsigned char T0RH;unsigned char T0RL;/* 配置并启动T0,ms-T0定时时间 */

2017-07-21 23:52:03 1443

原创 蜂鸣器的一点没想到

#include <reg52.h>sbit BUZZ = P1^6;unsigned char T0RH;unsigned char T0RL;void OpenBuzz(unsigned int fre);void StopBuzz();void main(){ unsigned int i; EA = 1; while(1) { OpenBu

2017-07-21 00:26:57 438

原创 28BYJ的一点收获

#include <reg52.h>unsigned long beats = 0;void StartMotor(unsigned int angle);void main(){ TMOD = 0x01; TH0 = 0xF8; TL0 = 0xCD; ET0 = 1; TR0 = 1; StartMotor(360*2+180); wh

2017-07-20 23:35:30 373

原创 UART、I2C以及SPI协议学习总结

UART(通用异步收发器)异步串行通信 是属于异步通信。所谓的异步通信,简单来讲就是不同步,比如计算机发送给单片机,计算机只负责把数据通过TXD发送出来即可,接收数据是单片机自己的事。UART通信先是一直保持高电平,发送数据之前有起始位0,而后是8位数据位(数据位是固定长度,福特率分之一),完了之后是1位停止位(保持高电平))。(数据位是低位在先,高位在后) UART通信虽然是两条线(TX

2017-07-20 16:54:35 1506

原创 89和12单片机的I2C通信时序问题

今天用ADC偶然发现了这个问题,分享给各位朋友。89的I2CDelay:#define I2CDelay() {_nop_();_nop_();_nop_();_nop_();}12的I2CDelay:void Delay_us(unsigned char us){ do { _nop_(); _nop_(); _nop_();

2017-07-20 02:49:45 813

原创 条件编译

何谓条件编译? 条件编译又叫预处理程序,包括宏,都是在程序编译前做的一些必要的处理,这些都不是程序的实际功能代码,而仅仅是告诉编译器需要进行的特定操作一般一个.c对应一个.h file.h主要包含: 1.”file.c”中所要使用的一些宏 2.”file.c”中自定义类型的声明 3.”file.c”中定义的全局变量进行extern声明,提供给其他.c使用(必须加exter

2017-07-20 02:15:44 282

原创 矩阵按键扫描的疑惑与解答

学习金沙滩宋老师的单片机,说实话学着是比较吃力,但是不后悔!老师交给的绝不是仅仅只是“鱼”。 发现自己的学习态度以及严谨真的和一些前辈比起相差甚远。 下面摘自一位名为“商道”的群友的学习总结关于矩阵按键扫描消抖的解释-教材第8章-矩阵按键扫描例题8.4.5 教材116页第8章-矩阵按键扫描例题8.4.5中, 中断函数void interrupttime0() int...

2017-07-20 00:42:59 1893 3

原创 keil里面骚气的printf

骚气的printf。。。

2017-07-18 19:25:37 619

原创 关于keil调试不能下断点的问题解决

原因其实很简单,keil默认设置的优化等级太高了!需要更改下即可 改成0后,任何地方就都能下断点了对了,改完之后不要忘记编译,完了之后才生效

2017-07-18 17:38:04 3433 1

原创 不用定时器和汇编语言,只用C语言实现精确无误的延时

对于51定时器,却是有点少,有时候不经意间就被用完了,而实现定时又TM神坑了!一般的解决方案有直接上汇编,一条语句的执行时间就是一个机器周期,所以多写几个就实现了完美的定时功能。可是可是……..又有多少学51的会汇编呢?呵呵哒所以来分享一个神好用的方法,C语言的while和nop结合使用实现精确延时上调试代码:#include <reg52.h> #include <intrins.h>//声

2017-07-18 17:33:39 1526

原创 51实现定时器定时调整

随着学习的深入对51的认识也越来越深,尤其对中断的重要性更是深深体会!如果你是和我一样的初学者,请一定要学好中断! 今天来分享一下有关定时器定时补偿的冷知识。不知道你是否做过这样的实验,就是当你用定时器来定时1ms来实现数码管的自动加1。随着时间的推移,会发现和真正的时间略有偏差。于是就引出了接下来所要讲的。到底这些值差在哪里呢?主要在三个方面: 进入中断前要进行压栈,即是进行数据保

2017-07-18 17:06:43 1710 2

原创 单片机小知识总结

单片机

2017-07-17 13:17:37 3433 6

原创 关于对 (char *)字符指针强制转换类型的一些理解

强制转化(char *)

2017-07-16 14:10:28 4619

原创 C++里的引用

char * 和 char * &p

2017-07-14 00:43:46 439

原创 51keil与proteus联调,实现在线仿真

联调

2017-07-13 16:14:28 4867 4

原创 有趣的宏定义

我不得不讲,宏是真的666! 你以为你学会C语言了?不信你来瞧瞧下面这玩意!!! (PS:纯属巧合,在PCA的学习中偶然发现的硬件代码,我简直无FUCK可说,刚一开始,我还曾坚信楼主的傻逼,直到现在才知道自己的low)话不多说,这就开始: 1.有关在宏中进行do{……}while(0); do while 的结构 意味着程序肯定会执行,while(0)意味着肯定会只执行一次。 有关缘由,其

2017-07-13 00:19:34 311

原创 总结一下常用的VScode快捷键

VS code 6的飞起的快捷键

2017-07-12 11:09:55 3726

原创 批处理删除无关紧要的文件

在学单片机时候,突然发现例程中有一个不错的批处理文件,顺便学习一下// 关闭命令行本身@echo offecho 正在执行清理......del /f/s/q *.objdel /f/s/q *.lstdel /f/s/q *.lnpdel /f/s/q *.m51del /f/s/q *.plgdel /f/s/q *.wccdel /f/s/q *.bakdel /f/s/q

2017-07-12 10:54:35 303

TFT 底层---自己总结后做的(很有参考价值)

总结了下自己关于TFT 1,8寸 彩屏的底层驱动程序,,个人感觉挺好用,分享出来。结了下自己关于TFT 1,8寸 彩屏的底层驱动程序,,个人感觉挺好用,分享出来结了下自己关于TFT 1,8寸 彩屏的底层驱动程序,,个人感觉挺好用,分享出来

2017-10-22

每天还有文章数量限制。。。。

发表于 2018-02-02 最后回复 2020-04-25

ReCclay的留言板

发表于 2020-01-02 最后回复 2020-02-25

为什么我的代码不能高亮了?

发表于 2018-02-17 最后回复 2018-02-22

空空如也

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

TA关注的人 TA的粉丝

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