找回密码
 立即注册
楼主: admin

视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版

   火... [复制链接]

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-27 20:42:10 | 显示全部楼层
第二十五集:FLASH模拟EEPROM
EEPROM:这种ROM的特点是可以随机访问和修改任何一个字节。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100W次。具有较高的可靠性,但电路复杂、成本高。因此目前的EEPROM都是几十千字节到几百千字节的。绝少有超过512K的。
Flash是广义的EEPROM,因它也是电擦除的ROM。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们称它为Flash。FLASH如果数据不为0xFF,需要擦除后才能写入。它是以扇区为单位进行擦除的。
通常单片机中的Flash都用于存放运行代码,在运行过程中不能改;EEPROM是用来保存用户数据,运行过程中可以改变,如我们在程序运行中需要保存密码等参数,就要存在EEPROM里。但现在很多单片机EEPROM都已不是标配了,怎么存储我们的掉电保存数据呢?
STC32G12K128有128K字节的FLASH,用于存储用户代码,一般我们的代码都没有这么多,就可以把剩余的配置为EEPROM,可以配置EEPROM的大小,512字节单页擦除,擦写次数可达10万次以上。
回复 支持 反对

使用道具 举报 送花

1

主题

14

回帖

90

积分

注册会员

积分
90
发表于 2023-8-27 22:34:38 | 显示全部楼层
第11集学习完毕,定时器初步了解,感觉还有些疑问需要继续学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2023-12-05 19:37:53

3

主题

324

回帖

363

积分

禁止发言

积分
363
发表于 2023-8-29 13:23:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报 送花

0

主题

26

回帖

190

积分

注册会员

积分
190
发表于 2023-8-29 13:26:37 | 显示全部楼层
本帖最后由 sanyang 于 2023-8-29 20:09 编辑

第二十六集 DS18B20温度传感器
测温范围:-55度-+125度,测温误差16度。
支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温。如数量过多会使供电电源电压过低,从而造成信号传输的不稳定。
工作电源:3.0-5.5V/DC,也可以数据线寄生电源供电。
测量结果以9-12位数字量方式串行传送。精度分别为0.5℃、0.25℃、0.125℃、0.0625℃。上电默认为12位转换精度,工作在低功耗闲置状态。主设备必须向18B20发送温度转换命令44H才能开始温度转换。转换后的温度值保存在温度寄存器中。18B20又恢复到闲置状态。如18B20是外部供电,当发送完温度转换命令44H后,主设备可以执行“读数据时序”,若此时温度转换正在进行18B20会响应0,若温度转换完成则响应1.如果是由寄生电源供电,该响应的技术将不能使用,因为在整个温度转换期间,总线必须强制拉高。
      18B20的温度输出数据时在摄氏度下校准,温度数据以一个16位标志扩展二进制补码数的形式存储在温度寄存器中。
      每片18B20的片内ROM中都存有一个独一无二的64位编码。此编码的低8位是18B20的分类编码:28H。中间的48位是独一无二的序列号,最高8位保存片内ROM中前56位的循环冗余校验CRC值。
时间序列
一、初始化
二、ROM命令
三、18B20功能命令
每次对18B20的 访问都必须遵循这样的步骤来进行,如果这些步骤中的任何一个丢失或者没有执行,则18B20将不会响应,除了ROM搜索命令F0h和报警搜索命令ECh之外。执行完这些ROM命令后,主设备必须回到上述步骤中的第一步。
初始化程序-复位和存在脉冲
与18B20所有的通信都是由初始化序列开始的,该序列包括从主设备发出的复位脉冲及从18B20响应的存在脉冲组成。当18B20响应复位信号的脉冲后,则其向主设备表明其在该总线上,并且已经做好操作命令。
总线上的主设备通过拉低1-wire超过480us来发送复位脉冲。之后释放总线进入接收模式。释放后,1-wire总线恢复高电平。当18B20检测到该上升沿信号后,等待15us至60us后通过将1-wire总线拉低60us到240us来实现发送一个存在脉冲。
ROM命令
当总线上的主设备检测到了存在脉冲后,就可以执行ROM命令。这些命令是对每个设备独一无二的64位ROM编码进行操作的,当总线上连接多个设备时,可以通过这些命令识别各个设备。这些命令同时也可以使主设备确定总线上有多少外什么类型的设备或者有温度报警信号的设备。总共包含有5种ROM命令,第个命令长度都是8Bit。主设备在执行18B20功能命令之前必须先执行一个适当的ROM命令。
      1,搜索F0H,当系统上电初始化后,主设备必须识别总线上所有的从设备的ROM编码,这样就可以使得主设备确定总线上的从设备的类型及数量。主设备学习ROM编码是一个清除过程,则主要根据需要循环地搜索ROM[F0H]命令来确定总线上所有的从设备。如果仅有一个从设备在该总线上,更加简单的读取ROM命令可以代替搜索ROM的过程。
      2,读取ROM33H,该命令在总线上仅有一个从设备时都能使用。该命令使得总线上的主设备不需要探索ROM命令过程就可以读取从设备的64位ROM编码。当总线上有超过一个从设备时,若再发送该命令,则当所有从设备都会回应时,将会引起数据冲突。
      3,匹配55H
      4,跳过CCH,主设备使用该命令来同时向总线上所有从设备发送不要发送任何ROM编码命令。例如,主设备向总线上所有的18B20发送跳过ROM命令后再发送温度转换44H命令,则所有设备将会同时执行温度转换。要注意的是,当总线上仅有一个从设备时,读取暂存寄存器BEH命令后面可以跟随跳过ROM命令。这种情况下,主设备可以读取从设备中的数据而不发送64位ROM编码。当总线上有多个从设备时,若在跳过ROM命令后再发送读取暂存寄存器命令,则所有的从设备将会同时开始传送数据,而导致总线上的数据冲突。
      5,警报搜索EDh ,该命令的操作与跳过ROM命令基本相同,不同的是只有警报标志位的从设备才会响应。该命令使得主设备在最近一次温度转换期间是否有18B20有温度报警。当所有的报警搜索命令循环执行后,总线上的主设备必须回到事件序列中的第一步(初始化)。

18B20功能命令
      当总线上的主设备通过ROM命令确定了哪个18B20能够进行通讯时,主设备可以向其中一个18B20发送功能命令。这些命令使得主设备可以向18B20的暂存寄存器写入或者读出数据,初始化温度转换及定义供电模式。
温度转换44h,该命令为初始化单次温度转换。温度转换后,数据存储在暂存寄存器的2个字长的温度寄存器中,这后18B20恢复到低功耗的闲置状态。如果该设备是采用的寄生电源供电模式,在该命令执行10us(最大)后主设备在温度转换期间必须强制拉高数据线。如果该设备是采用的外部供电模式,主设备在温度转换命令之后可以执行读取数据时序,若18B20正在进行温度转换则会响应0电平,温度转换完成则响应1电平。在
寄生电源供电模式下,因在整个温度转换期间总线都是强制拉高的状态,帮不会有上述响应。

写入暂存4EH

读取暂存BEH,该命令使得主设备可以读取暂存寄存器中存储的值。数据从Byte0的低位开始传送直到第9个字节(Byte8-CRC)

拷贝暂存48H

召回EEPROM B8H,该命令将温度报警触发值(TH和TL)及配置寄存器的数据从EEPROM中召回至暂存寄存器中的Byte2,Byte 3和Byte4中。主设备可以在召回EEPROM命令之后执行读取数据时序,若18B20正在进行召回EEPROM则响应0电平,召回EEPROM完成帽响应1电平。召回数据操作在上电初始化后会自动 执行一次,所以设备在上电期间暂存寄存器中一直会有有效的数据。

读取供电模式B4H
主设备通过执行该命令之后再执行读取数据时序来确定总线上的18B20是否是由寄生电源供电。在读取数据时序中,寄生电源供电的,18B20将会拉低总线,外部电源独立供电的18B20则会释放总线让其保持高电平。

1-wire总线信号,18B20采用严谨的1-wire总线通信协议来保证数据的完整性,该协议定义多个信号形式:复位脉冲,存在脉冲,写0,写1,读0,读1.主设备执行除了存在脉冲外的所有其他信号。

写0:输出0保持60us+,输出1保持1us+
写1:输出0保持1us+,输出1保持60us+

读0/1:输出0保持1us+,再输出1保持1us+,然后再读取当前电平,最后再延时60us,表示这一段读已经结束了。
每个读时段最小必须有60us的持续时间且独立的写时段间到少有1us的恢复时间,读时段通过主总线拉低超过1us再释放总线来实现初始化,当主设备初始化完读时段后,18B20将会向总线发送0或1,18B20通过将总线拉高来发送逻辑1,将总线拉至低来发送逻辑0.当发送完0后,18B20将会释放总线,则通过上拉电阻将该总线恢复到高电平 的闲置状态。从18B20中输出的数据在初始化读时序后仅有15us的有效时间。因此,主设备在开始改读时段后的15us之内必须释放总线,并且对总线进行采样。

用户功能函数
温度读取换算函数:复位----CCH----------44H---------等待----复位----CCH-----------BEH-------读取2字节温度数据----换算
                                        跳过ROM     开始转化                         跳过ROM     读取

下面是冲哥的代码:



u16 DS18b20_ReadTemp(void)                        //读取并且换算温度,并返回
{
        u8 TempH;
        u8 TempL;
        u16 temperture;
       
        DS18b20_Reset();                             //1.复位
        DS18b20_WriteByte(0XCC);             //2.跳过ROM指令
        DS18b20_WriteByte(0X44);            //3.开始转化
        while(!DQ);                                   //4.等待DQ变成高电平
       
        DS18b20_Reset();                          //5.复位
        DS18b20_WriteByte(0XCC);          //6.跳过ROM指令       
        DS18b20_WriteByte(0XBE);          //7.读取

        TempL = DS18b20_ReadByte();
        TempH = DS18b20_ReadByte();       
       
        if( TempH & 0XF8 )                                                //有1出现就是负数
        {
                MinusFlag = 1;                                                //标志位负数
                temperture = ((TempH<<8) | TempL);                //将温度换算成16位
                temperture = (~temperture) +1;                 //按位取反+1
                temperture = temperture*10*0.0625;                //最终温度保留一位小数
        }
        else
        {
                MinusFlag = 0;                                                //标志位正数
                temperture = ((TempH<<8) | TempL);                //将温度换算成16位
                temperture = temperture*10*0.0625;                //最终温度保留一位小数
        }
        Temp = temperture;
        return temperture;                                                //保留一位小数的温度
}


















点评

18B20温差有16度吗?really?Are yuo sure?精度是0.0625度,一般相差在±0.5~5度,手机上显示的温度也不一定准确,18B20测的是它本身内部温度,不要频繁读写  发表于 2023-8-31 10:36
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-04-27 10:40:24

11

主题

425

回帖

1985

积分

版主

积分
1985
发表于 2023-8-29 13:58:26 | 显示全部楼层
WangC*** 发表于 2023-8-29 13:23
贵公司是真的格局很大,之前在B站上学习了使用stc89c51,自己还购买了stc32g128k 和 stch8的 mcu,自己想找 ...

坛友可在此发表学习心得,冲哥视频学习到第十五集或参加暑期腾讯会议免费教学研讨班半程以上,可【免费+包邮送】STC32G12K128实验箱 或 STC8H8K64U实验箱

QQ:2269694595     微信:18106296594
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2023-12-05 19:37:53

3

主题

324

回帖

363

积分

禁止发言

积分
363
发表于 2023-8-29 14:21:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2023-12-05 19:37:53

3

主题

324

回帖

363

积分

禁止发言

积分
363
发表于 2023-8-29 14:21:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报 送花

1

主题

14

回帖

90

积分

注册会员

积分
90
发表于 2023-8-30 21:24:13 | 显示全部楼层
第12集学习完毕
回复 支持 反对

使用道具 举报 送花

0

主题

1

回帖

14

积分

新手上路

积分
14
发表于 2023-8-30 21:41:40 | 显示全部楼层
视频教程制作辛苦了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-08-06 14:54:39

0

主题

26

回帖

115

积分

注册会员

积分
115
发表于 2023-8-31 10:58:51 | 显示全部楼层
本帖最后由 tang01 于 2023-8-31 11:00 编辑

学习了定时器计数器,能不能升华一下应用,频率计的原理及其设计难点重点分析一下,计数器的举例就举频率计了。我只能做到10Hz以上,1s以上的等不及了,外缓内急型,实现0.1hz计频需要哪些知识储备
回复 支持 反对

使用道具 举报 送花

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-13 20:36 , Processed in 0.124300 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表