51单片机
背着代码的蜗牛
这个作者很懒,什么都没留下…
展开
-
51单片机笔记
对于C语言编写的单片机程序,寄存器的声明包含在头文件"reg52.h"中特殊的声明:sfr——特殊功能寄存器的数据声明,声明一个8位的寄存器。sfr16——16位特殊功能寄存器的数据声明。sbit——特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位。bit——位变量声明,当定义一个位变量时可以使用此符号。 单片机最小系统运行的必要条件:电源,晶振(时钟电路)...原创 2019-01-18 21:34:37 · 484 阅读 · 0 评论 -
51单片机实验12:EEPROM(IIC总线) 应用
开发板EEPROM模块电路图如下:目的:实现单片机与开发板AT24C02芯片通信。实验现象:下载程序后数码管后4位显示0,按K1保存显示的数据,按K2读取上次保存的数据,按K3显示数据加一,按K4显示数据清零。最大能写入的数据是255。开发板独立按键的使用及原理图参考:https://blog.csdn.net/cax1165/article/details/86566884开...原创 2019-02-03 21:31:42 · 1925 阅读 · 0 评论 -
51单片机外围模块——DS18B20温度传感器
一. DS18B20简介DS18B20数字温度传感器接线方便,封装后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。二. D...原创 2019-02-04 19:04:34 · 11193 阅读 · 0 评论 -
51单片机实验13:温度传感器模块应用
开发板温度模块电路图如下:目的:利用开发板温度传感器测量温度,并在数码管显示。开发板温度传感器模块相关内容:https://blog.csdn.net/cax1165/article/details/86763991开发板数码管模块的相关内容:https://blog.csdn.net/cax1165/article/details/86557551主函数:#includ...原创 2019-02-05 22:21:46 · 5146 阅读 · 0 评论 -
51单片机外围模块——红外通信
一. 什么是红外线人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线.红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。二. 红外线系统的组成红外线遥控器已被广泛使用在各种类型的家电产品上,它的出现...原创 2019-02-06 21:40:36 · 1019 阅读 · 0 评论 -
51单片机实验14:红外通信模块应用
目的:利用遥控器与单片机通信,并将遥控器按键所对应的编码在数码管上以十六进制的形式显示出来。开发板红外传感器数据输出引脚对应的IO口为P3^2,该IO口同时为外部中断引脚,因此程序中采用下降沿触发的外部中断来判断是否接收到起始码。51单片机中断系统的相关内容:https://blog.csdn.net/cax1165/article/details/86633086 数码管的相关内容:...原创 2019-02-06 22:03:07 · 2056 阅读 · 0 评论 -
51单片机外围模块——DS1302时钟模块
一.DS1302的主要性能指标DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。 内部含有31个字节静态RAM,可提供用户访问。 采用串行数据传送方式,使得管脚数量最少,简单SPI 3线接口。 工作电压范围宽:2.0~5.5V。 工作电流:2.0V时,小于300nA 时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传...原创 2019-02-08 20:37:49 · 4799 阅读 · 0 评论 -
51单片机实验15:DS1302时钟模块应用
开发板DS1302模块电路图如下: 目的:单片机查询DS1302时钟模块时间,并将其显示在数码管上。DS1302的初始化时间为2019年1月1日12:00(星期二)#include<reg52.h>#include<dse1302.h>sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uc code x[...原创 2019-02-08 20:44:47 · 1888 阅读 · 0 评论 -
SPI总线原理
SPI是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。优点及特点:传输速度快 全双工通信 同步通信 通信简单 主从机通信模式 总线式通信 常用于单片机和EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。标准SPI包括4个接口:SDO/MOSI – 主设备数据输出,从设备数据输入。 SDI/MISO – 主设...原创 2019-02-11 16:16:33 · 1903 阅读 · 0 评论 -
DS1302时钟模块通信原理(SPI总线)
学过SPI总线后,不难发现SPI总线通信时序与DS1302通信时序有相似之处。关于SPI总线的内容请参考:https://blog.csdn.net/cax1165/article/details/87001618然而DS1302模块却仅有三根线,事实上,DS1302的通信是SPI的变异种类,它采用了SPI的通信时序,但是通信的时候没有完全按照SPI的规则来,下面我们将逐步分析DS1302...原创 2019-02-11 17:09:05 · 7865 阅读 · 0 评论 -
51单片机外围模块——A/D模数转换
一、A/D转换器的主要技术指标1、分辨率ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/(2^12 )=2.4mV。2、量化误差ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。...原创 2019-02-11 21:41:39 · 14417 阅读 · 1 评论 -
51单片机实验16:A/D模数转换(XPT2046)
关于A/D模数转换以及XPT2046芯片的内容请参考:https://blog.csdn.net/cax1165/article/details/87024388#include<reg52.h>#include<XPT2046.h>sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uc code x[10]={0x3f...原创 2019-02-11 21:49:22 · 9543 阅读 · 10 评论 -
DA数模转换与应用
一、D/A转换器的基本原理及分类T型电阻网络D/A转换器 :由图可知,运放两个输入端为“虚地”,所以电位都约为0。所以无论开关在0或者1,最后两个2R都是并联得R,和电阻R串联又为2R,以此类推,那么到最前端,相当于两个2R的电阻并联,可知电流I=Vref/R。I7=I/2,I6=1/2*I/2,由此追溯到I0=I/256,如果Rfb=R,那么V0只与Vref有关,即V0=Vref*z...原创 2019-02-12 15:17:39 · 6650 阅读 · 0 评论 -
51单片机外围模块——蜂鸣器
蜂鸣器简介 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2...原创 2019-02-18 18:04:08 · 2906 阅读 · 0 评论 -
51单片机实验18:蜂鸣器
关于蜂鸣器的内容参考:https://blog.csdn.net/cax1165/article/details/87634433开发板蜂鸣器模块原理图如下:#include<reg52.h>#define uc unsigned charsbit beep=P1^5;void delay(uc x){ uc i,j; for(i=1;i<=x;i++...原创 2019-02-18 18:06:10 · 999 阅读 · 0 评论 -
51单片机外围模块——LCD1602液晶模块
LCD1602简介1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。1602的引脚操作步骤初始化(写命令) 写地址 写数据时序图及时序...原创 2019-02-13 11:59:32 · 9036 阅读 · 0 评论 -
51单片机实验8:led点阵(1):点亮一个点
开发板led点阵模块电路图如下:74HC595:74HC595是一个8位串行输入、并行输出的位移缓存器。芯片第11角为数据输入时钟线,上升沿有效。芯片第12脚为输出存储器锁存时钟线,上升沿有效。芯片第13脚为输出有效(低电平)。芯片第14脚为串行数据输入。为表示出输入74HC595的8位二进制数,开发板加入了led模块(图一中绿色所示)。若要使led发光,则需将JP595接vcc。...原创 2019-01-23 12:03:22 · 6359 阅读 · 12 评论 -
51单片机——I2C总线驱动程序
为方便移植,采用多文件工程的方式。void Delay10us()//延时10us{ unsigned char a,b; for(b=1;b>0;b--) for(a=2;a>0;a--);}起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿void I2cStart()//为方便与其他函数衔接,起始之后SDA和SCL都为0,虽然这与I2C总...原创 2019-02-02 23:47:51 · 1971 阅读 · 0 评论 -
51单片机实验1:点亮第一盏led
开发板led模块原理图如下:通过声明位变量,使得P2^0口电平为0,即可点亮第一盏led程序1如下:#include<reg52.h>sbit led1=P2^0;void main(){ led1=0; while(1);}不声明位变量,直接将P2赋值为0xFE(对应二进制为1111 1110)可使P2^0口电平为0,其他口电平为1。程序二如下...原创 2019-01-18 21:59:56 · 1936 阅读 · 0 评论 -
51单片机实验2:led灯闪烁
开发板led模块电路图如下: 在keil中,sbit的声明要放在全局变量的位置,若放在函数中,会报错。 延时函数的变量使用unsigned char,而不是int,因为char所占空间为1字节,为int所占空间为4字节,因此使用char可以节约内存。但是unsigned char仅能表示0~255,所以延时函数中的参数最大为255,若要更大,则使用int。#include<...原创 2019-01-19 12:02:49 · 2188 阅读 · 0 评论 -
51单片机实验3:led流水灯
开发板led模块电路图如下:循环左/右移函数头文件为"intrins.h"#include<reg52.h>#include<intrins.h>#define uc unsigned charvoid delay(uc n){ uc i,j; for(i=1;i<=n;i++) for(j=110;j>=1;j...原创 2019-01-19 12:12:31 · 1016 阅读 · 0 评论 -
51单片机实验8:led点阵(2):点亮一个数字图案
开发板led点阵模块电路图如下: 点阵内部led连接方式如下图:led点阵点亮图案仍然使用动态扫描的方式,方法同“51单片机实验5:动态数码管”https://blog.csdn.net/cax1165/article/details/86557551D0口到D7口依次控制点阵的第8到1行(注意顺序),P0^0到P0^7口依次控制点阵的第8到1列(注意顺序)。...原创 2019-01-24 19:02:48 · 5985 阅读 · 0 评论 -
51单片机实验4:静态数码管
开发板数码管模块电路图如下:开发板数码管共阴连接,P0口通过输出阳极电平来控制段选,74ls138译码器通过控制8个数码管的阴极电平来控制位选。实验任务:点亮第一个数码管并使其显示数字0;P2^2,P2^3,P2^4口置0,使138译码器译码为1000 0000,即第一个数码管阴极电平为0,其他7个数码管阴极电平为1。P0口置为0x3f,即:0011 1111,(二极管a b ...原创 2019-01-19 18:18:59 · 1284 阅读 · 0 评论 -
51单片机实验5:动态数码管
开发板数码管模块电路图如下:由于74ls138译码器的特点,即只能是一个数码管的阴极电平为0,显然不能使多个数码管同时工作,若想要得到多个数码管同时工作的效果,只能采用动态扫描显示的方式。所谓动态扫描显示,就是利用发光管的余辉和人眼视觉暂留作用,使人感觉好像多个数码管在同时工作。程序中digdisplay函数利用for循环和switch语句,不断扫描8个数码管,完成位选工作,并对P0口...原创 2019-01-19 22:10:09 · 4186 阅读 · 0 评论 -
STC89C52系列单片机内部资源——中断系统
中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或者内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握。首先介绍单片机中断技术的优点:解决了快速主机与慢速I/O设备的数据传送问题; 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率; 实时响应。CPU能够及时处理应用系统的随机事件,系统...原创 2019-01-24 21:52:10 · 11816 阅读 · 2 评论 -
51单片机实验6:独立按键
开发板独立按键模块电路图如下:目的:通过控制独立按键K1,使第一盏led发光/关闭P3口位准双向io口,当K1按下时,P3^1口接地,电平为0。当K1按下时,由于独立键盘的物理特性以及按下过程等因素的干扰,P3^1口电平变化与理想情况并不相符,出现“抖动”现象,如下图所示:为消除按下抖动造成的影响,在led状态改变之前,加入延时函数,判断独立按键K1是否真正被按下。难点...原创 2019-01-20 22:00:47 · 7581 阅读 · 2 评论 -
51单片机实验9:外部中断
实验:按下按键,使led状态反转。开发板独立按键,led,mcu电路图如下:对于中断系统的介绍参考:https://blog.csdn.net/cax1165/article/details/86633086#include<reg52.h>#define uc unsigned charsbit led=P2^0;sbit k3=P3^2;void ...原创 2019-01-26 11:43:48 · 3175 阅读 · 0 评论 -
STC89C52系列单片机内部资源——定时器和计数器
CPU时序的有关知识振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期) 状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。 机器周期:机器周期也就是CPU完成一个基本操作所需要的时间。1个机器周期含6个状态周期,12个振荡周期。机器周期=1/单片机的时钟频率。 时钟频率:外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进...原创 2019-01-26 19:55:41 · 9778 阅读 · 0 评论 -
51单片机实验7:矩阵按键
矩阵按键扫描原理方法一: 逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。方法二: 行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键原创 2019-01-21 21:32:08 · 3413 阅读 · 0 评论 -
STC89C52系列单片机内部资源——串口通信
计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换 。可以分为两大类:并行通信与串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送 。并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点:传输线...原创 2019-01-31 17:46:00 · 14513 阅读 · 0 评论 -
51单片机实验11:串口通信
目的:通过电脑向单片机发送字符,单片机收到字符后,向电脑回应相同的字符。开发板时钟频率为12MHz。程序设置波特率为4800,加倍。#include<reg52.h>#define uc unsigned charvoid usartinit(){ TMOD=0X20; TH1=0XF3; TL1=0XF3; PCON=0X80; S...原创 2019-01-31 19:41:21 · 1861 阅读 · 0 评论 -
51单片机实验10:定时器中断
目的:通过定时器中断控制延时,使第一盏led的状态反转开发板muc与led模块电路图如下:关于定时器和计数器的要点请参考:https://blog.csdn.net/cax1165/article/details/86659302关于中断的要点请参考:https://blog.csdn.net/cax1165/article/details/86633086#includ...原创 2019-01-27 20:38:23 · 2986 阅读 · 0 评论 -
51单片机资源——EEPROM(IIC总线)
I2C串行总线的组成及工作原理采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。I2C串行总线概述I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。 I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。I2C总线通过上拉电阻接正电源...原创 2019-02-02 23:03:19 · 1910 阅读 · 0 评论 -
51单片机实验17:LCD1602液晶
开发板液晶模块电路图如下:#include<reg52.h>#include<lcd.h>uc dig1[]=" Happy New Year ";uc dig2[]=" Ha Ha Ha Ha ";void main(){ uc i; lcdinit(); lcdwritecom(0x80); for(i=1;i<=16;i++...原创 2019-02-13 12:02:43 · 1251 阅读 · 0 评论