51单片机
文章平均质量分 70
51单片机学习笔记
ONE_Day|
这个作者很懒,什么都没留下…
展开
-
总结:代码思路
实验2:蜂鸣器 按键提示音beep.c:位定义蜂鸣器的端口P1^5,一个延时函数,一个蜂鸣器发出响声的函数,在for循环里不断翻转蜂鸣器电平,并加上延时,使其有周期性Delay.c:1ms延时函数key.c:软件消抖方式的按键检测Nixie.c:数码管显示,先位定义好74HC138译码器的三个引脚P22、P23、P24,8种组合对应数码管的位选,再用数组定义好P0口所需的段选数值,显示的函数里用switch case 判断参数传来的位选以及段选main.c:获取按键值,有按键按下则蜂鸣器发出响声,数目管显原创 2022-06-18 15:51:45 · 2588 阅读 · 0 评论 -
DS18B20温度传感器编程注意事项
问题:在用定时器扫描按键的时候,CPU会每隔20毫秒处理一次中断,而此时与DS18B20通信的单总线里,发送与接收的延时是必须遵守的,延时时间是定死的,若刚好在通信延时的时候去处理中断响应,则通信会被打乱,在项目里的现象就是LCD温度显示不稳定,会有残影,而如果不使用定时器扫描按键,当按住按钮不松手时,CPU会卡死在循环里,无法与DS18B20通信,无论温度怎么变化,都无法显示变动结果解决办法:按理来说使用定时器扫描按键是比较合理的,可以在单总线的起始信号,发送一个字,接收一个字时序函数中都在开始通信前关闭原创 2022-06-18 15:27:31 · 1328 阅读 · 0 评论 -
DS18B20温度传感器使用介绍
DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点测温范围:-55°C 到 +125°C通信接口:1-Wire(单总线)其它特征:可形成总线结构、内置温度报警功能、可寄生供电(VCC都不用接,直接信号线加GND线就可以通信)模拟温度传感器:热敏电阻,可通过温度的变化改变电阻值,一般再接一个分压电阻,串联到VCC和GND之间,需要用AD转换芯片将模拟信号转换为数字信号才能供单片机使用DS18B2原创 2022-06-18 15:22:51 · 12972 阅读 · 0 评论 -
单总线编程介绍(用于DS18B20)
单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线一根通信线:DQ异步、半双工单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线设备的DQ均要配置成开漏输出模式(与I2C总线相似)DQ添加一个上拉电阻,阻值一般为4.7KΩ左右(与I2C总线相似)若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路主机将总线拉低至少480us,然后释放总线,等待15 ~ 60us后,存在的从机会拉低总线60原创 2022-06-18 15:17:54 · 850 阅读 · 0 评论 -
DS1302时钟芯片(SPI协议)
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能可以把该芯片看成一个小型的单片机,其内部的寄存器不能控制,通过协议与51进行通信RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片在哪 写入 写入什么 -> 单片机在哪 读取 读取什么 -> 时钟芯片该寄存器显示了时钟的地址信息,操作时往对应的地址写入值就行,也就是说如果想写入秒,往对应的寄存器写入0x80;表示小时的地址的原创 2022-06-18 15:00:28 · 8804 阅读 · 1 评论 -
51开发板用ADC采集模拟量
AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能AD转换通常有多个输入通道,用多路选择开关连接至AD转换器,以实现AD多路复用的目的,提高硬件利用率AD/DA与单片机数据传送可使用并口(速度快、原理简单),也可使用串口(接线少、使用方便)可将AD/DA模块原创 2022-06-18 14:46:20 · 5697 阅读 · 4 评论 -
I2C总线及AT24C02读写
I2C总线介绍1. I2C总线(Inter IC BUS)是由Philips公司开发的一种通用数据总线2. 两根通信线:SCL(Serial Clock)、SDA(Serial Data)3. 同步、半双工,带数据应答4. 通用的I2C总线,可以使各种设备的通信标准统一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性,对于应用者来说,使用通用的通信协议可以避免学习各种各样的自定义协议,降低了学习和应用的难度...原创 2022-06-12 16:34:12 · 2842 阅读 · 1 评论 -
LCD1602液晶显示屏使用方法
LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符显示容量:16×2个字符,每个字符为5*7点阵LCD1602背面的两个黑色的块是芯片,是自带扫描功能的,只需将字符传给LCD1602,芯片便会自己扫描显示可以看到,8位的数据都接到了单片机的P0口,控制位EN、RS、WR分别接到了P2.7、P2.6、P2.5口,后续编写代码时,初始化这几个引脚即可编写代码往DDRAM中写入指令或者数原创 2022-06-03 22:25:04 · 15759 阅读 · 0 评论 -
LCD1602显示字符、字符串、十进制、十六进制、二进制
1.先定义端口,因为整个P0端口都是要传输的数据,这里用宏定义标识一下2.LCD1602写指令,按照时序结构编写3.LCD1602写数据,将字符显示在屏幕上4.LCD1602初始化,在main函数中使用LCD时要先调用初始化函数5.检测忙信号6.LCD1602设置光标位置函数,因为每次要显示字符都要设置在屏幕的哪个位置显示,所以写成一个函数,供其他函数调用,先检测忙信号6.LCD1602在指定的位置显示一个字符7.LCD1602在指定位置上显示字符串8.LCD1602在指定位置显示十进制数字原创 2022-06-03 22:02:33 · 8268 阅读 · 4 评论 -
AT24C02介绍以及存储器分类
AT24C02AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息存储介质:E2PROM通讯接口:I2C总线容量:256字节引脚功能VCC、GND电源(1.8V~5.5V )WP写保护(高电平有效)SCL、SDAI2C接口A0、A1、A2I2C地址存储器介绍简称全称介绍RAM随机存取存储器(Random-Access Memory)存储速度特别快,掉电丢失ROM只读存原创 2022-05-28 16:57:36 · 4765 阅读 · 0 评论 -
直流电机及PWM介绍
直流电机介绍直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转直流电机主要由永磁体(定子)、线圈(转子)和换向器组成除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等电机驱动电路大功率器件直接驱动:不能控制正反转1.用普通电路控制2.用集成电路控制续流二极管作用:因为电机、继电器等是感性负载元件,当IN给1时,三极管不导通,在断开的瞬间电机里的电感(线圈)要求电流不能突变,但此时没有回路形成电流,如果电感较大,原创 2022-05-28 16:51:06 · 9302 阅读 · 0 评论 -
PWM呼吸灯及电机调速
LED实现呼吸灯呼吸灯:不亮——亮度慢慢增加——全亮——亮度慢慢减少——不亮主要解决如何让亮度缓慢增加或者减少,增加的过程简单来说就是LED灯亮持续的时间逐渐增加,灭持续的时间逐渐减少,就达到了从不亮到全亮的效果,减少的过程刚好反过来,让亮持续的时间逐渐减少,灭持续的时间逐渐增加,就能达到从全亮到全灭的效果模拟实现PWM,在一个周期内,如100,让灯亮一会,再让灯灭一会,控制亮灭的间隙#include <REGX52.H>sbit LED = P2^0;void Delay(unsi原创 2022-05-20 23:10:28 · 723 阅读 · 2 评论 -
8x8点阵显示图形或动态显示字符串
8x8点阵显示原理LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已LED点阵屏与数码管一样,有共阴和共阳两种接法,不同的接法对应的电路结构不同LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示共阳接法:每一行的发光二极管的阳极引脚都是连在一起的共阴接法则是每一行的发光二极管的阴极引脚是连在一起的开发板上的点阵可以理解为从上到下的行标号分别是h,g,f,e,d,c,b,a,从左到右的列标号原创 2022-05-20 22:35:15 · 5450 阅读 · 1 评论 -
单片机通过串口与电脑通信
串口寄存器的配置及使用可手动配置,也可用STC-ISP工具的波特率计算器生成配置函数PCON寄存器的SMOD位置1,PCON |= 0x80,设置波特率倍增:因为波特率倍增了,所以TH1和TL1设置波特率时,要比预设定的波特率小,如要得到9600,则TH1和TL1就要配成4800的,然后再经过倍增得到9600;想要得到4800,就要配置成2400//串口初始化函数void UartInit(void) //4800bps@11.0592MHz{ PCON |= 0x80; //使能波特率倍原创 2022-05-15 00:09:34 · 4605 阅读 · 0 评论 -
蜂鸣器介绍
蜂鸣器介绍蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音蜂鸣器有正负极,顶部印有+号的为正极,若蜂鸣器引脚没剪,则长的为正极驱动电路三极管驱动单片机引脚不能直接蜂鸣器加NPN型三极管进行驱动,因为单片机的引脚驱动能力有限,蜂鸣器的功率比较原创 2022-05-13 21:40:29 · 31661 阅读 · 0 评论 -
51单片机定时器扫描按键
定时器扫描按键定时器每隔20毫秒扫描一次按键问题:在之前写的按键检测函数中,要在按键按下后用Delay函数进行软件消抖,还要用while(P3_1==0)来判断是否松手,如果长期不松手,则CPU会 卡在该死循环里,不能执行其他代码,造成某些功能代码失效,这次用定时器扫描按键的方法解决该问题key.c函数#include <REGX52.H>unsigned char key_keyNumber;/** * @brief按键检测,之前要在按键按下后用Delay函数进行软件消抖,还要原创 2022-05-13 21:34:36 · 7458 阅读 · 13 评论 -
51单片机定时器的配置与使用
定时器定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成定时器作用:(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作(2)替代长时间的Delay,提高CPU的运行效率和处理速度(…)定时器0初始化定时器1初始化中断源#include "reg52.h"typedef unsigned int u_int;sbit LED1 = P2^1;sbit LED0 = P2^0;void Timer0Init()原创 2022-05-10 23:37:04 · 3540 阅读 · 0 评论 -
串口通信以及波特率计算方法
串口通信51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信RS-232 也称标准串口,最常用的一种串行通讯接口,比如我们的电脑主机的9针串口 ,最高速率为20kb/sRS-232是为点对点(即只用一对收、发设备)通讯而设计的,其传送距离最大为约15米。所以RS-232适合本地设备之间的通信硬件电路简单双向串口通信有两根通信线(发送端TXD和接收端RXD)TXD与RXD要交叉连接当只需单向的原创 2022-05-08 14:24:45 · 15686 阅读 · 5 评论 -
关于RAM和ROM的区别
关于RAM和ROM的区别RAM和ROM出现的地方1.keil软件编译后提示信息2.电脑配置信息3.单片机数据手册介绍RAM和ROM的区别RAM(Random Access Memory) :掉电之后就丢失数据,读写速度块ROM (Read Only Memory) :掉电之后仍然可以保持数据data:单片机的RAMcode:单片机的flashFLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程的性能,还不会断电丢失数据同时可以快速读取数据。DRAM原创 2022-05-08 14:08:38 · 3049 阅读 · 0 评论 -
单片机及开发板介绍(学习笔记)
STC89C52单片机所属系列: 51单片机系列公司:STC公司位数: 8位RAM: 512字节ROM: 8K (Flash)工作频率: 11.0592MHz(本开发板使用)芯片电路图电源部分的电容起滤波作用,防止外接的电源电流时大时小,保证流入芯片的是稳定的电流开发板AD/DA部分从左到右是光敏电阻,热敏电阻,电位器,单片机只能处理数字信号,要么5v要么0v,模拟信号不一定是这两个值,有高有低,所以要经过模数转换才能给单片机处理74HC595芯片用于扩展单原创 2022-05-05 23:34:05 · 1584 阅读 · 0 评论 -
keil编译错误KEY.c(44): error C141: syntax error near ‘unsigned’, expected ‘__asm’
错误提示:KEY.c(44): error C141: syntax error near ‘unsigned’, expected ‘__asm’意思:错误C141:“unsigned”附近的语法错误,应为“asm”KEY.c(44): error C202: ‘num’: undefined identifier意思:错误C202:“num”:未定义的标识符源代码:void main(){ P2 = ~0x01; unsigned char num; while(1原创 2022-05-05 23:24:25 · 15933 阅读 · 2 评论 -
C51数据的存储类型
C51数据的存储类型C51的存储类型与8051存储空间的对应关系如表存储器类型长度/位对应单片机存储器bdata1片内RAM,位寻址区,共128位(也能字节访问)data8片内RAM,直接寻址,共128Bidata8片内RAM,间接寻址,共256Bpdata8片外RAM,分页间址,共256Bxdata16片外RAM,间接寻址,共64Kcode16ROM区域,间接寻址,共64K对于8051系列单片机来说,访问片内的RAM比访原创 2022-05-02 14:19:45 · 5647 阅读 · 1 评论 -
80C51的存储结构,这次一定,一定懂
这里会有个疑惑:80C51的片内RAM只有128B,为什么有些教材上会有80C51低128B和高128B的说法呢?答:低128位的空间才是80C51真正的RAM,上图中工作寄存器区+位寻址区+用户RAM区才是80C51的片内RAM区,00H ~ 7FH,共128B;原创 2022-05-02 14:16:30 · 10198 阅读 · 1 评论