自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 PCF8591

先看模块是几位,以寄存器八位为例,把0~5v量化为0 ~255的整数,输出对应的电压需给寄存器对应的整数,反之读取外部输入电压,寄存器读出来的数占255的比则是外部输入电压与5v的比值。比赛考虑控制字D6,D1,D0,其余置0,光敏电阻通道1(01),电位器通道3(11),DA输出电压通道0(00),光强越大,电阻越小,AIN1测得的电压越大(即R31两端电压);,D6必须置0,D5置0,再根据输入通道来配置D1、D0,3、DA、AD同时进行,D6必须置1,再配置通道。通俗来讲,AD测电压,DA输出电压。

2025-03-11 20:58:57 391

原创 AT24C02存储器

流程:开始-》发送器件地址(写0xa0)-》等待应答-》字节地址(指定要读哪里的数据)-》等待应答-》开始-》发送器件地址(0xa1)-》等待应答-》读数据-》停止。流程:开始函数-》发送器件地址-》等待应答-》发送将数据地址(即要将数据写入在哪)-》等待应答-》发送要写入的数据-》等待应答-》停止函数。AT24C02为2k的,对应下面的地址(A0~2均接地为0),读这个存储器最低位为1,写为0(

2025-03-09 16:09:39 152

原创 DS1302

SPI三线接口,有2块存储器:日历时钟寄存器(记录时间)、静态RAM存储器(记录其他数据)注意:蓝桥杯提供的驱动代码不完整,需重新命名引脚、在头文件中进行函数声明。设定时钟初值,不断读取时间并将时间用数码管显示。写入数据上升沿有效,读出数据下降沿有效。

2025-03-07 20:13:15 182

原创 DS18B20的温度转换与读取

6、由于需要显示小数,涉及到带小数点的数字对应的段码,蓝桥杯仅提供不带小数点的数字对应的段码,蓝桥杯板子为共阳极数码管,带小数点的数字对应的段码即不带小数点的数字对应的段码的最高位取反,相差0x80,用计算器可获得对应带小数点的数字的段码(,跳过ROM指令(rom存储着设备的ID号,若总线上只有一个设备,就不需要去匹配ID,可跳过)7、温度转化延时时,需要在延时里加数码管的动态显示函数,否则会出现数码管不亮的情况。1、竞赛用的板子的频率和提供的测试环境的频率不同,需要进行调整。2、数码管的动态显示。

2025-03-06 19:42:43 341

原创 NE555定时器与频率测量

2、需要用到2个定时器,用T0来计数(P34为T0的信号输入端),T1来计时(定时1s)3、比赛给的手册M1,M0=00是16位自动重装(小蜜蜂给的是13位定时/计数器)1、1Hz:1秒内有一个信号脉冲(n Hz即1秒内有n个信号脉冲)4、要将P34与signal短接才能测频率。5、蓝桥杯会提供0~ 9、A~F的段码表。

2025-03-02 21:05:40 270

原创 工厂灯光控制系统

5、由于在主函数中,每次数码管显示完之后都会将P0清零,每轮询一次,led将全部熄灭,按下按键后只有一个led会亮,无法做到同时亮,因此要设置一个变量存储led的状态。再将led_state按位取反后,保持高位不变,其余位置1;3、在写按键消抖时,用到死循环,要在死循环内加入数码管显示时间的函数,才能避免按下按键时间无法继续显示的情况;4、在数码管动态显示函数中,每轮询完一次应及时将P0清零(将P0赋值位为0xff,避免后续对led的影响。1、在书写数码管的动态显示函数的时候,每显示一位要适当延时一会儿;

2025-03-01 14:46:48 265

原创 存储器映射扩展技术应用

(存储器映射)两种扩展模式,通过。关键字来操作部分资源。

2025-02-26 10:30:00 147

原创 串口通信基本原理与应用

2、定时器1产生波特率,需要使用到定时器,首先要对控制定时器的寄存器进行配置,具体如下图。设置定时器1工作模式为自动重装8位定时器用于产生波特率(TH1、TL1=0xfd,设置波特率为9600)1、定义辅助寄存器AUXR(地址为0x8e)并清零(AUXR=0x00)(未进行此操作无法进行通信)3、控制灯光的指令包括两部分,一是高4位,二是低四位,板子上的led从左到右对应P0口的低位到高位。4、设置串口工作模式,异步8位UART,允许接收(SCON=0x50);5、打开中断允许(ES,EA=1)

2025-02-25 19:37:51 278

原创 PWM脉宽调制信号的发生与控制

LED是低电平亮,高电平时间占比越多led越暗,所以10%的亮度对应90%的占空比,即一个周期内90%是低电平。将10000us分成100份,100份为一个周期,每份100us。//定时器0可以在要产生脉宽调制时才打开。周期信号,通过调整高电平的宽度实现对电压的控制。高电平时间与一个周期的比值;

2025-02-21 21:39:51 202

原创 定时器实现秒表功能

1、按键的处理,当按键还未松开时,之前的做法是用个四循环(while(s4==0);)让程序停滞,在这里却不可以这样做,若在这单纯让程序停滞什么都不做,数码管将不能显示如何东西,因此可以在循环中不断扫描数码管(加入displaytime()这个函数),让数码管继续显示时间。2、这里定义从左到右为第0~7位数码管。

2025-02-20 20:16:15 185

原创 定时器基本原理与应用

定时/计数器本质是计数器,当计数达到设定要求,向cpu请求中断。作为定时器时,计数信号来源为周期性的内部时钟脉冲;作为计数器时为非周期的外部输入信号。有2个定时/计数器T0、T1,为16位加法计数器,低8位TLx和高八位THx两个寄存器组成,最大计数值为65535。注意:有人说是用65536减,见仁见智吧TMOD只能字节寻址!定时器0的中断号为1。后续优化:减少中断函数中的操作,巧用取余

2025-02-19 18:52:27 457

原创 中断系统与外部中断

IE(中断的开关)分为2部分:相应外部中断和中断总开关(EA),EA可以理解为总电闸,相应外部中断可以理解为灯光的开关。若总闸断开,则中断没有意义,怎么样都不会有反应。两种方式有所不同,方式1会发生L1与L8同时亮的情况,而方式二不会发生(由于函数执行有前后之分),不同方法分具体情况使用;独立按键5、4与INT0、INT1共用引脚,按键按下松开模拟上升、下降沿;2、2个中断请求标志——TCON、SCON寄存器。1、2个控制寄存器——IE、IP寄存器。中断相关寄存器4个,都可位寻址。中断函数尽量少些代码;

2025-02-18 20:58:44 268

原创 矩阵键盘(蓝桥杯练习06)

先选中一行,使IO口为低电平,依次扫描列,若读出的IO口为低电平,则按键被按下,依次重复上述操作。:两别都接在了IO口上。若左边IO口为0,按键按下右边读出低电平,未被按下则读出高电平。:接上拉电阻,按键未按下时稳定输出高电平。按下按键,引脚接地,读到低电平。16个按键,这里只用一位数码管显示按键值,对应0~F的段码值。这里定义的第一行第一列为右上角的那个按键。

2025-02-17 22:08:57 196

原创 独立按键的基本操作(蓝桥杯练习05)

2、省流版:s6,s7选择模式,模式1(L1亮):s4,s5分别控制L3,L4亮;模式2(L1亮):s4,s5分别控制L5,L6亮;1、将J5短接,使用独立按键,按键一边接地,一边分别接到P30,P31,P32,P33引脚。按键按下,引脚变为低电平。2、 存在按键抖动,抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。

2025-01-26 19:12:12 198

原创 共阳数码管的动态显示(蓝桥杯练习04)

遇到的问题与解决方法:在数据快速更新的同时,数码管如果同步显示更新的数据,数码管显示的数据就会非常快,以至于我们人眼看上去很乱甚至看不清数据,在一开始使用的延时函数的基础上加以修改就可以使数码管延时显示一会儿更新之后的数据,让数据显示更加稳定清晰。轮流点亮单个数码管,但看起来数码管是同时点亮的。

2025-01-19 21:40:45 457

原创 共阳极数码管的静态显示(蓝桥杯练习03)

数码管的每一段对应一个发光二极管,共阳数码管二极管阳极连接在一起,数码管某一阴极置低电平对应段则被点亮。a~g、dp对应p0低位到高位。数码管的每一段通过限流电阻连接着一个锁存器,数码管的公共端与另一个锁存器连接着,即Y6控制着公共端,Y7控制着段码。

2025-01-18 22:35:45 305

原创 蜂鸣器与继电器的基本控制(蓝桥杯练习02)

与前文的led一样,或非门连接着译码器和锁存器,当Y5C被选中(Y5被选中,wr默认低电平),P0可以控制继电器和蜂鸣器,P06为1蜂鸣器响,P04为1继电器工作。RELAY-SPDT为线圈,里面有铁芯,给线圈通电(VCC一端为高电平,N RELAY给低电平)使其产生磁场将K1吸合。1,可以看到初步代码对功能进行了多次选择,这里可以优化为一个模式选择函数。中间连接了一个非门,若左边为1,右边输出则为0。正极接电源,给N BUZZ低电平,蜂鸣器鸣叫。

2025-01-17 20:15:20 497

原创 LED指示灯的基本控制(蓝桥杯练习01)

led引脚不是直接接在IO口上,而是接在了573锁存器上,需选通P0口控制led。LE为高电平时,输出同步(D端和Q端相当于打通了,D输出什么Q也是什么),为低电平时数据被锁存。或非门连接着译码器和锁存器,当y4和wr同时为低电平时,输出y4c为高电平即led引脚与p0口同步输出(理解成被打通),led低电平亮,高电平熄灭。三个输入(p25、p26、p27)控制八路互斥、低电平有效输出(y0~y7)三个输入与输出的二进制对应关系(注意C(即P27)为高位)IO模式下WR引脚默认为0。

2025-01-15 21:51:26 252

原创 DS18B02温度传感器——学习记录

Vcc和Vdd是器件的电源端。Vcc是双极器件的正,Vdd多半是单极器件的正。初始化:总线初始状态为高电平,当主机想开始数据传输时,主机将总线至少拉低480us,然后释放总线,等待一定时间后,存在的主机会拉低总线一定时间以响应主机,在此期间主机读取IO口电平以了解从机是否存在,最后从机释放总线。发送一位:主机向从机发送一位数据。从机会在发送期间读取电平(即读取主机发来的数据),发送0的整个过程不能超过120us(不然会和开始信号有所冲突)接收一位:主机接收从机传来的数据。

2024-11-28 20:02:21 377

原创 秒表(定时器扫描按键、数码管)——学习记录

delay函数检测按键状态,按下按键不松开函数会卡在那(delay函数里利用了死循环),只有等按键松开的时候才会继续执行。由于按键抖动的时间大概在20ms,所以在20ms一定能检测到按键的变化,那么我们就可以设置定时器在每20ms检测一次按键状态。按照江科的代码实验出来会有很大误差,应该是新版晶振频率和旧版不同导致的,我在他代码的基础上改了定时器的初值,但是仍有误差(快了),可能还需要改一下最开始keil选择的单片机型号吧,不过之前做实验只能选c52,就习惯性选了,这里没改。

2024-11-21 23:10:21 201

原创 51单片机——AT24C02(学习记录)

AT24C02是一个2K位串行CMOS E2PROM, 内部含有**256个8位字节**。AT24C02有一个16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。功能描述:AT24C02支持总线数据传送协议I2C,协议规定任何将数据传送到总线的器件作为发送器,反之从总线接收的器件则为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件均可作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式。

2024-11-15 21:19:15 1177

原创 51单片机—蜂鸣器播放《天空之城》(学习记录)

整体思路:根据每个音的频率计算出对应的蜂鸣器频率,再根据乐谱依次变化蜂鸣器的频率。需要注意的是每个音之间存在停顿,由于频率不好表征,需要计算对应的周期,方面采用定时器控制周期的变化进而控制蜂鸣器的频率,还要考虑到音乐播放时长,这里引入了一个音乐结束的标志位来控制音乐播放的结束。蜂鸣器连接的IO口是P25(普中A2),要拔掉红外。

2024-11-08 21:48:19 353 1

原创 51单片机——蜂鸣器播放提示音(学习记录)

比如为100Hz 的蜂鸣器的驱动,可以知道周期为10000μs,这样只需要驱动蜂鸣器的I/O 口每5000μs 翻转一次电平就可以产生一个频率为100Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。就行,但一定要把P15改成P25!

2024-11-03 12:21:10 1332

原创 51单片机——DS1302实时时钟(学习记录)

51单片机——DS1302实时时钟学习

2024-10-25 16:43:52 813

空空如也

空空如也

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

TA关注的人

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