51单片机
文章平均质量分 69
颖川初尘
纸上得来终觉浅,绝知此事要躬行
展开
-
C51编程总结-单片机的奇怪知识2(Keil 编译器报错)
Keil奇怪的报错原创 2021-12-10 23:12:40 · 3444 阅读 · 0 评论 -
C51编程总结-单片机的奇怪知识1(IC输入输出电压)
为什么5V IC跟3V IC通讯会识别不到电平原创 2021-12-10 22:14:29 · 3353 阅读 · 0 评论 -
C51编程25-应用篇(单片机与电脑端实现wifi通讯)
单片机使用ESP-01S wifi模块与电脑端进行数据通讯。原创 2021-12-01 18:53:08 · 9970 阅读 · 4 评论 -
C51编程24-应用篇(ESP-01S WIFI模块与电脑端通讯)
为了实现电脑端与单片机透传之前,我们先要了解下wifi模块。测试wifi模块的是否正常使用串口线连接到wifi模块串口。CH340G串口线TX与wifi模块的RX连接,CH340G串口线RX与wifi模块的TX连接。如下表 CH340G 串口线 wifi模块 TX RX RX TX 注:wifi模块不可以用5V供电,wifi模块是3.3V供电的。引脚图如下 ...原创 2021-12-01 17:15:55 · 5084 阅读 · 0 评论 -
C51编程23-应用篇(HC 06蓝牙模块)
51单片机使用HC 06 蓝牙模块 发送数据给笔记本与手机原创 2021-11-28 01:46:48 · 5968 阅读 · 1 评论 -
C51编程22-应用篇(解码红外遥控器)
在使用家电过程中,必不可少的就是遥控器了。51单片机解码红外遥控信号。内含代码sbit LCD_WR = P2^5;sbit LCD_RS = P2^6;sbit LCD_EN = P2^7;void LCD1602_WriteCmd(uchar cmd);void LCD1602_WriteData(uchar ldata);void LCD1602_Init();void LCD1602_WriteStrXY(uchar x...原创 2021-11-27 17:59:48 · 974 阅读 · 0 评论 -
51诞生记
单片机诞生于20世纪70年代,象Fairchild公司研制的F8单片微型计算机。所谓单片机是利用大规模集成电路技术把中央处理单元(Center Processing Unit,也即常称的CPU)和数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛。 1976年INTEL公司推出了MCS-48单片机,这个时期的单...原创 2020-06-04 21:35:44 · 1016 阅读 · 0 评论 -
Keil C51V901安装
下载Keil C51V901后,需要将该软件安装在电脑上才可以使用,软件可以从互联网上获得,也可以从上一篇文章(Keil软件与烧录工具的使用)提供的百度网盘地址上获取。 下面介绍下如何安装Keil C51V901及破解。安装:1)从百度网盘下载后,解压得到下面两个文件。2)点击next3)勾选同意协议,并点击下一步4)选择安装路径,并且点击next5)选择安装路径,并且点击next6)软件自动进行安装,等待软...原创 2020-06-28 16:03:20 · 6310 阅读 · 5 评论 -
Keil软件介绍与烧录工具的使用
MSC51单片机,如果要实现功能,就需要执行程序,正如在电脑上,想要听音乐,你必须要安装一个软件打开音频文件,这个软件可以是酷狗,也可以是网易云音乐。 为了生成执行程序,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。 特别注意:在互联网搜索时,不要搜索Keil uVersion 4或者Keil uVersion 5,不然可能会安装到Keil公司的MDK(支持STM32的编译软件),可以搜索下图所示 C...原创 2020-06-28 16:07:28 · 10299 阅读 · 1 评论 -
Keil C51V901界面设置与代码格式化
Keil C51V901界面设置: 安装完keil后,可能因为默认的界面不太友好,例如,字体大小,关键字颜色,我们需要对界面进行设置。 Edit->Configuration或者点下面的图标均可以进入设置界面。设置界面写代码时,常用TabSize进行代码对齐,显得代码清晰,如下图所示。红色的方框间隔使用的时Tab键占用的空间,而不是使用连续按四次空格键占用空间。设置如下:颜色与字体的设置:...原创 2020-06-28 16:10:13 · 2129 阅读 · 2 评论 -
Keil C51V901建立一个简单的工程
Keil C51V901,总算安装好了,马上来创建一个项目吧。打开 Keil C51V901,点击Project->New uVison Project,开始创建工程。在弹出的对话框中,点击鼠标右键,根据自己需要创建项目文件夹(本文中创建一个'proTest'的项目文件夹)。1)创建项目文件夹创建项目文件夹的意义,在于将项目文件都放到这个的文件夹下面,方便以后的管理及使用。2)创建项目名创建项目文件夹后,双击进入项目文件夹,创建“proTe...原创 2020-06-28 16:11:40 · 902 阅读 · 0 评论 -
C51编程1-输出电平(点亮LED1)
51单片机中,有4个组I/O口,分别是P0、P1、P2、P3;I/O(Input/Output)口,Input表示输入电平信号,Out表示输出电平信号。在数字电路中,电平有高低电平两种,也就是说I/O口,这个端口可以输入或者输出高低电平。不同数字电路系统中,对于电平的定义的电压不一样。而在STC89C52中5V的系统中(如下图所示),低于0.8V被识别为低电平,而高于2.0V被识别为高电平。LED电路原理图:在51单片机系统中,LED正极接电源VC...原创 2020-07-11 09:58:47 · 7708 阅读 · 0 评论 -
C51编程2-输出电平(点亮LED2)
上一讲中,直接通过变量sbit来控制P2口中一个LED的亮灭。除了可以通过sbit位控制来设置LED,我们还可以通过P2口,直接控制P2口的LED。下面的代码可以实现上一讲一样的功能,控制led0亮。#include"reg52.h"voidmain(){P2=0xfe;} 从上面的代码中,将0xfe直接赋值给P2为什么实现的功能跟位操作的一样?而我们学习的C语言中,貌似没有都见过sbit,P2这两个东西。在《标准C与C51》的文章中...原创 2020-07-11 09:59:48 · 1160 阅读 · 0 评论 -
C51编程3-输出电平(点亮LED3)
P2口的I/O口连接8个led,假设现在点亮第1个led(LED1),而其他led不亮。不用C51的位变量进行直接操作,而是使用标准51的写法,会有以下的代码。#include "reg52.h"void main(){ P2 = 0xfe;}假设有需要要最后一个led(LED8)点亮,我们会写以下的代码。#include "reg52.h"void main(){ P2=0x7f;}现在提出一个新的需求,先点亮LED1...原创 2020-07-12 17:09:56 · 934 阅读 · 2 评论 -
C51编程4-输入电平(独立按键)
I/O口,I代表Inpout,O代表Output。前面的所讲的点亮LED,是单片机输出高低电平,从而达到控制LED;这一讲将会通过按键输入电平,单片机检测到输入高低电平,将会有对应的动作。 STC89C52的输入电平识别。独立按键按键的一端接单片的I/O口,另一端接GND或者VCC(接VCC的时候需要注意,电压是需要单片机能够识别的输入的电压。),下图是接GND的连接方式。当独立按键按下时,高低电平(VCC或者GND...原创 2020-07-12 17:10:57 · 1382 阅读 · 0 评论 -
C51编程5-输入电平(矩阵键盘)
独立按键,一个按键需要占用一个I/O口,如果需要16个按键,那么就会 占用16个I/O口,占据MCS-51系列单片机一半的I/O口。理论基础为了解决I/O这个问题,设计出了矩阵键盘,下图是一个4*4的矩阵键盘原理图。按键按照4*4的格局进行摆放,组成4行4列,将按键的同行或同列连接在一起,分别连接到P1口。怎么才能识别是哪个按键被按下呢? 以上图的S1为例,当按键被按下S1导通,P17与P13导通,可以通过判断P17与P13端口的电平是否一致,判断按...原创 2021-02-26 10:46:47 · 1554 阅读 · 0 评论 -
C51编程6-双向I/O口与准双向I/O口
通过前面的输入输出的内容(LED控制与按键的使用),我们对控制I/O口有了一个基本的了解。如果需要输出高低电平,可以对该引脚进行写"1"或者"0";如果需要读取I/O的电平,直接判断该引脚是高电平或者低电平既可。在程序上对P0~P3的输入输出控制是一样的,但实际上它们内部结构是不一样的,下面是P0~P3的内部结构图。双向I/O与准双向I/O从P0~P3的内部结构图可以看出,P0口内部没有上拉电阻。当用作I/O口时,CONTROL输出为0,ADDRDAT...原创 2021-02-26 10:48:09 · 4534 阅读 · 2 评论 -
C51编程7-数码管(工作原理1)
如果将单片机的比喻计算的主机,而按键相当于电脑的输入设备(键盘或者鼠标),那么LED灯可以作为输出设备的显示器;如果8位数据,使用8个LED显示数据表示,相当于是以二进制显示数据,非常不利于阅读。为了追求成本低,便于阅读,人们生产出数码管,通过控制数码管直接显示对应的数字,如下图所示。共阴数码管与共阳数码管数码管实际上是8段LED组成(7段LED+1个圆圈),LED的接线有两种方式,第一种将LED负极接在一起,称为共阴数码管,图1;第二种将正极接在一起,称为共阳数...原创 2021-02-26 10:49:17 · 1934 阅读 · 0 评论 -
C51编程8-数码管(工作原理2)
从共阴与共阳的数码管上看,对数码管的控制与控制LED一样,只需要控制数码管的两端高低电平(位选引脚与段选引脚的电平),数码管便可以被点亮。静态显示与动态显示静态显示:各数码管处于恒电压或者恒电流状态,硬件电路复杂成本高;动态显示:各数码管被分时选通,利用人的视觉暂留特性显示,成本低,需要占用CPU运行时间。驱动电路虽然数码管的使用只需要设置控制位选与段选引脚,便可以使其工作。但数码管工作需要电流比较大,51单片机的P0双向I...原创 2021-02-26 10:50:01 · 2171 阅读 · 0 评论 -
C51编程9-数码管(显示)
根据项目需求可以用I/O外部上拉,用来驱动数码管;也可以74HC138(38译码器)+74HC245(8路信号收发器)驱动数码管。本文会以后者为数码管驱动电路,在代码上实现数码管的显示。驱动电路:电路讲解: 1)数码管元件采用共阴数码管,如果需要某位数码管被点亮,位选引脚需要被拉成电平; 2)八个数码管有8个位选引脚,8个段选引脚。为了将节省I/O口,使用74HC138将3位(CBA)选择,转换为8位二值代码,例如CBA值为0...原创 2021-02-26 10:52:10 · 3554 阅读 · 0 评论 -
C51编程10-I/O口综合练习
I/O口综合实践项目 1)矩阵键盘键盘的每一个按键,进行编码键值码(1~16); 2)单片将对应的键值码转换为数码管编码; 3)数码管持续显示键值码(0~15); 4)按下按键,释放按键后,持续持续显示键值码,直到下一次按键被按下为止。 软件系统框图如下:功能需求分析: 按下按键,释放按键后,持续持续显示键值码,直到下一次按键被按下为止。当按键被按下,才会产生键值码,当手释放后,键值码为0。如果需要按下按键后释放,还有显示,需要将数...原创 2021-02-26 10:55:02 · 471 阅读 · 0 评论 -
C51编程11-中断篇(中断原理1)
在前面的IO篇中,使用到矩阵键盘与LED,主函数中对它们的功能函数,从而检测矩阵键盘是否被按下,LED是否需要被点亮。如下面的代码所示,在循环中,不断执行键盘扫描与显示。/********************************************************* Function name :main* Description :扫描键盘与显示* Parameter :None* Return :None*******原创 2021-02-26 10:58:10 · 1532 阅读 · 1 评论 -
C51编程12-中断篇(中断原理2)
中断可以用下面的例子理解工程师A在自己的位置做着自己的工作(写代码),工程师B有个问题需要请教工程师A,于是工程师B就会跑过来跟工程A请教。这时工程师A的写代码的工作会被打断,开始回答工程B的问题,解答完问题后,工程师A又开始愉快的写代码。从工程师B打断工程师A,到工程师A继续写代码这者整个过程叫中断。1)工程师B的问题,称为中断源 2)工程师A停止当前的工作,准备解答称为:中断响应; 3)工程师A解答问题的过程称为:中断服务程序; 4)工程师A解答完继...原创 2021-02-26 10:59:01 · 2617 阅读 · 0 评论 -
C51编程13-中断篇(外部中断)
CPU在执行的过程中,一般来说都是在执行主程序(main函数里面的代码)。如果希望处理其他的功能,可以通过查询的方式进行,判断是否需要处理或者通过中断的方式,进入中断服务函数程序里面执行。前者是在主程序中判断条件是否成立,如果成立则执行其他功能,否则不执行;后者是CPU在执行过程中,判断是否有中断标志位,响应中断进入中断服务函数,执行相关功能。 MCS-51 单片机中,有两个外部中断(INT0与INT1),中断有两种方式低电平触发与负跳变(下降沿)触发。下面通过讲IN...原创 2021-02-26 12:33:26 · 3807 阅读 · 0 评论 -
C51编程14-中断篇(定时器中断1)
在MCS-51的中断系统中,除了有外部中断以外,还有定时器/计数器中断、串行中断,本章节将会说明定时器/计数器中断,以及它的四种方式 MCS-51单片机中,内部有两个16位的可以选择的定时器/计数器,称为定时器0(T0)或者定时器1(T1),它们用来做定时器或者计数器。定时器/计数器工作原理:作为定时器使用时,输入的时钟脉冲是由晶体振荡器的输出12分频后得到的,所以定时器是对机器周期的计数器,每一个机器周期+1,因此它的定时频率为晶振频率的1/12;当设置了定时...原创 2021-02-26 12:37:58 · 3762 阅读 · 0 评论 -
C51编程15-中断篇(定时器中断2)
使用定时器/计数器中断,需要将满足以下的条件。 1)中断总允许打开 EA = 1; 2)中断源允许打开 ET0= 1或者 ET1= 1;3)设置定时器计/计数器的工作方式(设置TMOD) 4)装载定时器,设置计数器的初始计算值。 5)开启定时器(TCON中的TR0 = 1或者TR1 = 1) 6)中断服务函数 在满足上面的条件后,就使用定时器了,但为了对定时器的4种方式更深入的了解,下面从逻辑图上讲解4种方式。方...原创 2021-02-27 10:22:20 · 2709 阅读 · 1 评论 -
C51编程16-中断篇(定时器中断3)
使用定时器/计数器中断,需要将满足以下的条件。 1)中断总允许打开 EA = 1; 2)中断源允许打开 ET0= 1或者 ET1= 1;3)设置定时器计/计数器的工作方式(设置TMOD) 4)装载定时器,设置计数器的初始计算值。 5)开启定时器(TCON中的TR0 = 1或者TR1 = 1) 6)中断服务函数通过前面一些中断文章的学习,相信除了上面的第4点外,使用定时器/计数器已经没什么难度了。装载定时...原创 2021-02-27 10:25:34 · 2038 阅读 · 0 评论 -
C51编程17-中断篇(串行通讯1)
在实际的工作中,通常不是一个CPU将所有的事情处理完。为了提高工作效率,通常都是多个CPU之间的合作完成某一项功能。计算机与键盘之间的数据交换,键盘的所有案件并不是直接连接到计算机的CPU中,而是由键盘中CPU将键盘按键信息处理完后,通过USB-HID的通讯方式上传计算机的CPU。这样子的处理方式计算机(主控)CPU任务处理,更有利于设备更换(不至于键盘坏了,需要换一台计算机)。计算机之间的基本数据通讯方式有并行通讯与串行通讯两种。并行通讯:数据各位同时进行传输(发送或接收...原创 2021-02-27 10:26:23 · 442 阅读 · 0 评论 -
C51编程18-中断篇(串行通讯2)
MCS-51单片机内部有两个独立的接收与发送SBUF,接收SBUF不能发送,发送SBUF不能接收,它们共用一个地址(99H)。内部逻辑结构下图所示:在串行内部逻辑结构中可以看到,串行通信除了与SBUF有关外,还与串行口控制寄存器SCON(地址为98H)、定时器T1有关,此外还有一个寄存器PCON(地址为87H),该寄存器只有一位与串行通讯有关。 PCON寄存器的功能串行口控制寄存器SCON(地址为87H),复位初始值为0;寄存器不可以位寻址。...原创 2021-02-27 10:27:31 · 843 阅读 · 0 评论 -
C51编程19-中断篇(串行通讯3)
MCS-51单片机提供了4种串口的方式,但是我们只有方式1最常用(可变的10位串行通讯方式),下面就方式1的使用进行讲解。在开始之前先明确一个概念,中断会产生中断标志位,而CPU检测到中断标志位后,如果没有其他更高的中断在执行,CPU会响应该中断,并进入中断服务函数。串行通讯属于中断方式的一种,它服从这个概念。此外串行通讯并不是需要进入串行通讯的时候,会产生中断标志位;而是发送或者接收成功后,会产生中断标志位。通过中断向量,可以知道串行通讯只有一个中断号4,也就是说当进入无论是发送或...原创 2021-02-27 10:28:52 · 2149 阅读 · 0 评论 -
C51编程20-应用篇(LCD1602显示-1)
回顾之前编程教程,第1篇是I/O篇,I/O主要说明I/O的引脚特性以及如何通过C51控制I/O的电平输入输出;第2篇是中断篇,中断篇中介绍了中断系统必要性以及如何使用单片机中的中断系统(外部中断0、外部中断1、定时器/计数器0、定时器/计数器1、串行中断)。通过I/O篇与中断篇的学习,其实基本学习完51单片机了。应用篇的出现是为了更好的利用单片机去做项目,通过做项目更好的利用单片机中I/O与中断系统。言归正传,开始本文内容。在I/O篇的综合练习中,矩阵键盘用作输入,单片...原创 2021-02-27 10:30:07 · 882 阅读 · 0 评论 -
C51编程21-应用篇(LCD1602显示-2)
LCD的写模式操作对LCD1602,具有四种基本的操作,读命令,写命令,读数据,写数据。由于主要是让LCD1602显示数据,我们只需要用到写命令与写数据即可。写数据和写命令为称之为写模式 在LCD1602中,RS引脚的高低电平 控制是数据或者命令,高电平为数据,低电平为命令。R/W引脚的高低电平控制是读模式或者写模式,高电平为读,低电平为写;E引脚控制数据与命令使能,使操作生效,高电平写入数据,低电平生效。下面时序图为写模式的时序图由于单片机运行的机器...原创 2021-02-27 10:30:45 · 832 阅读 · 0 评论