
51单片机学习笔记
学习与回顾总结
MEYOU_Cc
保持热情,永远向上!
展开
-
51单片机直流电机调速
一、直流电机介绍 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时, 电机正转,当电极反接时,电机反转。直流电机主要由永磁体(定子)、线圈(转子) 和换向器组成除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等。二、电机驱动电路①大功率器件直接驱动 ULN2003芯片做驱动或直接搭建器件电路,不能反转②H桥驱动,可以做正反转ULN2003芯片:给0输出1,给1输出0;0是有驱动能力的,1是没有驱动能力的,相当于断开,因...原创 2022-03-21 16:56:13 · 5640 阅读 · 0 评论 -
51单片机LCD1602液晶显示屏
一、LCD1602介绍 LCD1602 (Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量: 16x2个字符, 每个字符为5*7点阵二、引脚及电路应用三、内部结构框图通过往DDRAM中写入数据,DDRAM在字模库里找到然后显示在屏幕上,屏幕只能显示16*2,但实际可以显示40*2,厂家其实并没有做出来。四、存储结构往...原创 2022-03-21 11:43:57 · 13683 阅读 · 4 评论 -
51单片机DS18B20温度报警器
主要是对主函数逻辑的编写,主要有两个注意点:①将按键换成定时器扫描,要注意,单总线进行传输时,要关闭定时器中断,传输结束后再打开定时器,所有的单总线都得这样。因为单总线中必须要进行延时操作。如果在延时操作时,中断触发,去执行中断函数中的内容,则单总线的时序就发生了变化,影响到单总线的运行。这就是单总线比较鸡肋的地方。IIC则不会,因为IIC是时钟控制,时钟变化,数据才进行传输。②显示精度的问题:显示小数部分,先化为整数,强制类型转化为长整型(因为整型的范围是65535,小数点乘以10000,用整型可原创 2022-03-20 19:17:58 · 2567 阅读 · 4 评论 -
51单片机DS18B20(单总线)温度读取
一、DS18B20介绍 DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点 测温范围: -55°C 到+125°C . 通信接口: 1-Wire (单 总线) 其它特征:可形成总线结构、内置温度报警功能、可寄生供电二、引脚及应用电路VCC表示电路的意思,指的是接入电路的电压;VDD表示器件的意思,指的是器件内部的工作电...原创 2022-03-20 15:01:22 · 21770 阅读 · 2 评论 -
51单片机秒表(定时器扫描按键数码管)
利用定时器对代码的优化①对按键代码的优化之前的按键代码unsigned char Key(){ unsigned char KeyNumber=0; if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;} if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;} if(P3_2==0){Delay(20);while(P3_2==0原创 2022-03-18 11:31:15 · 5199 阅读 · 8 评论 -
51单片机EEPROM(I²C总线通信)AT24C02数据存储
一、存储器介绍补充:(1)易失性存储器/RAM 存储速度特别快但掉电丢失①SRAM :运行速度最快,用于电脑CPU,高速缓存;单片机中的SRAM,定义一个变量就会存在SRAM中,使用触发器做的,存储容量小,成本高。②DRAM :运行速度仅次于SRAM,用于电脑里的内存条,手机里的运行内存,电容做的。(2)非易失性存储器/ROM 存储速度比较慢,但掉电不丢失①Mask ROM:第一代,做出来数据是写好的,只能读不能写。②PROM:第二代,做出来只能写一次,以后不能再更改。..原创 2022-03-16 20:57:46 · 10467 阅读 · 1 评论 -
51单片机可调时钟
通过按键实现设置时钟时间void main(){ LCD_Init(); DS1302_Init(); Timer0Init(); LCD_ShowString(1,1," - - ");//静态字符初始化显示 LCD_ShowString(2,1," : : "); DS1302_SetTime();//设置时间 while(1) { KeyNum=Key();//读取键码 if(KeyNum==1)//按键1用来 来回切换模式 {原创 2022-03-10 19:22:22 · 4485 阅读 · 4 评论 -
51单片机DS1302实时时钟
一、DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。 RTC(Real Time Clock):实时时钟,是-种集成电路,通常称为时钟芯片。二、引脚定义与应用电路该电路中没有接备用电池,因此掉电再上电之后是初始化设置的时间。三、操作寄存器的定义及时序定义根据时序图来写代码①首先对DS1302进行引脚定义及初始化设置...原创 2022-03-10 11:22:45 · 19359 阅读 · 20 评论 -
51单片机LED 8*8点阵屏显示动画
通过设置变量,让LED点阵屏一帧一帧的显示,对于显示字的数组,用文字取模软件提取main.c文件#include <REGX52.H>#include "Delay.h"#include "MatrixLED.h"//不加code是存放在RAM中,加code是存放在Flash中,Flash中空间更大,只读不写unsigned char code Animation[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0原创 2022-03-07 19:39:29 · 3360 阅读 · 2 评论 -
51单片机LED 8*8点阵屏显示图形
一、LED点阵屏介绍LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等LED点阵屏分类 按颜色:单色、双色、全彩 按像素:8*8、16*16等(大规模的LED点阵通常由很多个小点阵拼接而成)二、显示原理LED点阵 屏的结构类似于数码管,只不过是数码管把每-列的像素以“8”字型排列而 已 LED点阵屏与数码管一样,有共阴和共阳两种接法,不同的接法对应的电路结构不同 LED点原创 2022-03-07 15:39:21 · 5894 阅读 · 0 评论 -
51单片机电脑通过串口控制LED灯
Hex模式:底层传输的实际数据文本模式:把数据进行编码,显示ASCII码char字符,带括号的是控制字符,无法显示出来代码UART.c#include <REGX52.H>/** * @brief 串口初始化 * @param 无 * @retval 无 */void UART_Init()//UART串口用的T1定时器,模式是8位自动重装载,//4800bps@12.000MHz{ SCON=0x50; //REN置1,允许单片..原创 2022-03-05 10:42:05 · 5186 阅读 · 0 评论 -
51单片机串口向电脑发送数据
一、串口的介绍 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。 51单片机内部自带UART (Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现 单片机的串口通信。二、硬件电路简单双向串口通信有两根通......原创 2022-03-05 10:33:50 · 23715 阅读 · 8 评论 -
51单片机定时器时钟
需要LCD1602.c Timer0.c Delay.cmain.c#include <REGX52.H>#include "Delay.h"#include "LCD1602.h"#include "Timer0.h"unsigned char Sec=30,Min=11,Hour=17;void main(){ LCD_Init(); Timer0Init(); LCD_ShowString(2,3,":"); LCD_ShowString(2,6,":...原创 2022-03-04 16:31:14 · 2557 阅读 · 0 评论 -
51单片机(中断系统)按键控制LED流水灯模式(2)
一、中断系统中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,...原创 2022-03-04 16:18:23 · 15894 阅读 · 6 评论 -
51单片机(定时器)按键控制led流水灯模式(1)
一、定时器介绍●定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成●定时器作用:(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作(2)替代长时间的Delay,提高CPU的运行效率和处理速度............二、STC89C52定时器资源 定时器个数: 3个(T0、 T1、T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源。 注意:定时器的资源和单片机的型号是关联在一起的,...原创 2022-03-04 14:32:57 · 5983 阅读 · 0 评论 -
51单片机矩阵键盘密码锁
主要是对主函数中逻辑的描述#include <REGX52.H>#include "Delay.h"#include "LCD1602.h"#include "MatrixKey.h"unsigned char KeyNum;unsigned int PassWord,Count;void main(){ LCD_Init(); LCD_ShowString(1,1,"PassWord:"); while(1) { KeyNum=MatrixKey(); i原创 2022-03-02 15:41:01 · 1837 阅读 · 4 评论 -
51单片机矩阵键盘
一、矩阵键盘介绍矩阵键盘可以按行也可以按列扫描在STC89C52芯片中所有的IO口都可以是输入也可以做输出,P1 P2 P3都是弱上拉,P0是开漏输出,但在开发板上已经做了外部上拉电阻和P1 P2 P3一样。IO口都是弱上拉,强下拉,所以按键扫描是可以IO口接IO的,不会发生短路的现象。二、扫描的概念三、代码采用模块化编程,在LCD1602上显示,当哪个按键按下就是显示哪个数字,矩阵键盘按列扫描首先让P1口全部写高,当P13口为0,检测P17 P16 P15 P14口的电原创 2022-03-02 15:35:53 · 11099 阅读 · 0 评论 -
51单片机LCD1602液晶屏显示
根据厂家提供的LCD1602驱动代码,会直接调用即可,要知道每个函数中的参数代表什么意思。前两位都是代表起始位,第三位代表所显示的内容,第四位代表内容长度#include <REGX52.H>#include "lcd1602.h"#include "Delay.h"int Result=0;void main(){ LCD_Init();// LCD_ShowChar(1,1,'A');// LCD_ShowString(1,3,"Hello");// L..原创 2022-03-02 13:10:44 · 2635 阅读 · 0 评论 -
51单片机模块化编程
一、传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等。二、模块化编程注意事项:.c文件:函数、变量的定义.h文件:可被外部调用的函数、变量的声明任何自.原创 2022-02-28 19:35:51 · 3381 阅读 · 2 评论 -
51单片机动态数码管显示
动态数码管的显示与静态数码管显示原理相同,但需要对数码管进行 消影为什么要消影?因为程序的运行时,位选 段选 位选 段选 位选 段选因为单片机运行速度很快当下一个位选发生时,上一刻的段选就会发生串位问题到下一个的段选。因此必须要进行消影。解决的办法:位选 段选 延时 清零 位选 段选 延时 清零 位选 段选 延时 清零#include <REGX52.H>unsigned char shumatable[]={0x3F,0x06...原创 2022-02-25 20:22:32 · 1266 阅读 · 0 评论 -
51单片机静态数码管显示
一、数码管分为共阴极和共阳极数码管,以上是单个数码管,数码管的每段都是由一个LED灯构成,引脚与数码段就近相连。其中第3、8引脚是公共端(或者是位选段)。 共阴 共阳51单片机开发板采用的共阴极数码管。二、这是四个连在一起的四位数码管 ,同样有共阴和共阳极,四个数码管段选连接在一起,位选都是独立的。三、...原创 2022-02-25 19:58:45 · 4369 阅读 · 3 评论 -
51单片机独立按键控制LED灯位移
#include <REGX52.H>void Delay(unsigned int xms);//如果子函数放在了主函数后边,一定要在主函数前面声明一下unsigned char LEDNum;//全局变量,上电默认为0void main(){ //unsigned char LEDNum=0;局部变量一定要赋初值 P2=~0x01; while(1) { if(P3_1==0)//左移 { Delay(20); while(P3_1==0.原创 2022-02-24 13:46:13 · 2415 阅读 · 0 评论 -
51单片机独立按键控制LED显示二进制
#include <REGX52.H>void Delay(unsigned int xms) //@12.000MHz{ unsigned char i, j; while(xms--) { i = 2; j = 239; do { while (--j); } while (--i); }}void main(){ unsigned char LEDNum=0;//为什么要用 unsigned char ,因为该数据类型刚好是8位与5.原创 2022-02-24 13:35:53 · 2766 阅读 · 0 评论 -
51单片机独立按键控制LED灯按键消抖
#include <REGX52.H>void Delay(unsigned int xms) //@12.000MHz{ unsigned char i, j; while(xms) { i = 2; j = 239; do { while (--j); } while (--i); xms--; }}void main(){ while(1) { if(P3_1==0) { Delay(10); wh.原创 2022-02-24 13:24:55 · 568 阅读 · 0 评论 -
51单片机独立按键控制LED灯
按键按下控制LED灯亮灭#include <REGX52.H>void main(){ // P2 = 0xFE;//这是对整个P2IO口进行操作 P2_0 = 0;//这是对单个IO口进行操作 while(1) { if(P3_1 == 0 && P3_0 == 0) { P2_0 = 0; } else { P2_0 = 1; } }}由代码可看出P2是对整个IO口的操作,P2_0是对原创 2022-02-24 13:18:11 · 2279 阅读 · 0 评论 -
51单片机LED灯流水修改延时函数
对延时函数的修改,可任意设定延时函数的延时值;在1ms的延时函数的基础上修改,通过设置参数和加入while循环,可随意修改延时时间,unsigned int类型,不超过65535#include <REGX52.H>void Delay(unsigned int xms) //@12.000MHz{ unsigned char i, j; while(xms) { i = 2; j = 239; do { while (--j); } while原创 2022-02-23 22:33:51 · 2484 阅读 · 5 评论 -
51单片机LED灯流水
对P2上所有IO口进行操作,然后进行延时void main(){ while(1) { P2 = 0xFE;//1111 1110 Delay500ms(); P2 = 0xFD;//1111 1101 Delay500ms(); P2 = 0xFB;//1111 1011 Delay500ms(); P2 = 0xF7;//1111 0111 Delay500ms(); P2 = 0xEF;//1110 1111 Delay500ms(); P2原创 2022-02-23 22:27:09 · 177 阅读 · 0 评论 -
51单片机LED灯闪烁
LED灯的闪烁需要调用延时函数,利用STC-ISP软件编写延时函数系统频率为晶振的频率值,定时长度可自己定,8051指令集选择STC-Y1头文件regx52中有各种定义;intrins中有-nop-(),该语句段可删除。#include <REGX52.H>#include <INTRINS.H>void Delay500ms() //@12.000MHz{ unsigned char i, j, k; _nop_(); i = 4; j = 2原创 2022-02-23 22:24:37 · 3499 阅读 · 1 评论 -
51单片机点亮LED灯
对于51单片机来说可以直接操作IO口,例如P2=0xAA;因为每个IO口都有一个8位的寄存器,设置一组IO口的状态0xAA=1010 1010,从右向左以此是IO口的低位到高位:P2_0到P2_7#include <REGX52.H>void main(){ P2 = 0xAA;//1010 1010 while(1) { }} ...原创 2022-02-23 22:13:48 · 272 阅读 · 0 评论 -
51单片机数据类型及进制转换
数的范围都是2的幂次方,因为计算机只认0和1原创 2022-02-24 12:55:02 · 1273 阅读 · 0 评论 -
51单片机最小系统及晶振电容的选择
对于STC89C52系列单片机的最小系统:电源电路、复位电路、晶振时钟电路该单片机就可正常工作,下载电路可随自己要求添加。对于晶振两旁的电容选择,当晶振为4MHz时,电容选100pF;当晶振为6MHz时,电容选47pF-100pF;当晶振为12-25MHz时,电容选47pF;...原创 2022-02-24 12:41:06 · 7301 阅读 · 0 评论 -
keil5兼容stm32和51程序的办法
keil5软件兼容stm32和51程序的办法原创 2022-02-23 22:05:02 · 5675 阅读 · 0 评论