数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 3498|回复: 34

[外设] 学习I2C协议,重新自作8421手台信道显示控制板,断电保存数据(开源)

[复制链接]
发表于 2022-5-29 00:20:39 | 显示全部楼层 |阅读模式
多年前参考无线电论坛一位大神的程序制作过一款手台改车台的信道显示控制板,我记得包括给朋友一起做了20块。这里感谢那位大神的奉献。
我这出门躲避疫情快半年了,结果被困在辽宁3个月了,没事干就从新弄弄程序,当时做的这个控制板没有断电记忆功能,每次开机都是默认信道。正好趁着这次机会研究下EEPROM芯片。
这里肯定会有坛友问了怎么不用带eeprom的单片机?因为我手里还有很多老古董51以及24c02,放着也是浪费就用了吧

要研究eeprom芯片,首先就是学习I2C协议,当然I2C以后在驱动oled屏幕上也要用。第一件事先下载个24c02手册,做这个控制板只需要记录一个字节就行,所以5毛钱的24c02就行了。
24c02芯片在1.8v-5.5v都可以正常工作,所以跟单片机用同一个稳压就行了,或者电池供电都行。24c02可以进行100w次擦写,假设一天写入100次,也够用到机器报废那天

要掌握芯片使用,先看管脚。A0-A2是地址管脚,这个自己随便设置地址,SCL是时钟,SDA是数据,掌握了SCL与SDA的配合也就掌握了芯片使用。




SCL与SDA的配合就要看时序图了



相信很多小白看到时序图立马就懵了,这里有个诀窍,简单一步马上清晰----那就是画线。按照关键点来划线,瞬间清晰明了。
关键点就是 start,send SDA ,ACK,stop。 说白了就是SCL与SDA电平变化启动器件,发送数据,结束。
好了,我们一起来看看 程序真么写。

现写start
根据电平变化,咱们来定义
先初始化电平
SCL=1;           
SDA=1;、
给一个延时
I2Cdelay() ;
然后按照电平要求继续写
SDA=0;
I2Cdelay();
SCL=0;


好了start完成

然后进行写入操作
一个字节是8位,因此要循环8次
咱们就写一个循环程序
for(temp=0x80;temp!=0;temp>>=1)        
   {
使用一个判断语句给SDA
   if((temp&dat)==0)  
  SDA=0;
  else SDA=1;
  I2Cdelay();         
  SCL=1;                  
  I2Cdelay();
  SCL=0;        

每写一个数据就要求从机给一个应答,因此再写个应答程序(ack)

   SDA=1;  
  I2Cdelay();  
   SCL=1;
   ack=SDA;
   I2Cdelay();
   SCL=0;


最后是stop,数据写完了,但是从机不知道,因此需要主机主动停止发出停止信号

          SCL=0;         
          SDA=0;
          I2Cdelay();
          SCL=1;
          I2Cdelay();
          SDA=1;
          I2Cdelay();


底层I2C协议搞定,再来搞24c02操作程序。24c02简单,就是读与写的操作

先进行读操作,
I2Cstart();           
I2Cwritebyte(IC_Addr<<1);
I2Cwritebyte(addr);
I2Cstart();      
I2Cwritebyte((IC_Addr<<1)|0x01);
dat= I2Creadbyte();
sendack(1);      
I2Cstop();
return (dat);


再进行写操作
I2Cstart();           
I2Cwritebyte(IC_Addr<<1);
  I2Cwritebyte(addr);
  I2Cwritebyte(dat);  
  I2Cstop();


搞定,这里自作控制器只需要再原有的基础上增加一个24c02就行了。先画图,当然是仿真图啦





这里我使用的是2个单独的数码管,毕竟这种数码管还有一箱子4个Led模拟信道开关控制,4位不同的组合变换16个信道
程序搞定,proteus验证没问题。


视频:





开始画PCB





基本上简单东西proteus通过了就没啥问题了,好了上固件。固件是16信道控制板的(不带断电保存数据),个人使用没问题。带断电保存数据的暂时不开源,不然那几个不要脸的HAM又开始在咸鱼上卖了。

电路图参考proteus仿真图,去掉I2C部分就行了。当然也可以下载附件里的打样文件,不过还是建议大家自己动手,使用EDA半个小时就搞定了
最后说一句,附件为收费附件,拒绝伸手党。虚拟货币,再论坛上发发帖子就有了,如果都是伸手党,论坛哪还有发展?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 10家元 +187 收起 理由
萧错 + 20
kkdkj + 20 謝謝分享
newnet1234 + 20 謝謝分享
2n3055 + 20
玛德陛下 + 20 認真發帖
佳维 + 20 謝謝分享
kaixi_ants + 20
jf201006 + 20 原創內容
qrut + 20
keye + 7 謝謝分享

查看全部打赏

本帖被以下淘专辑推荐:

 楼主| 发表于 2022-5-29 00:24:18 | 显示全部楼层
R15,16,17,18,19-22  是10k

其他电阻是500欧




从新设计信道显示控制板PCB,满足朋友低高度要求
https://www.mydigit.cn/thread-316014-1-1.html

回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-29 16:19:17 来自手机浏览器 | 显示全部楼层
yanjian 发表于 2022-5-29 15:43
把手台频道开关拆了换单片机输出8421码?

对            
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-29 20:54:25 | 显示全部楼层

所有16信道的手台都可以,包括12引脚的剑舞机器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-2 22:13:14 来自手机浏览器 | 显示全部楼层
zns1025 发表于 2022-6-2 18:47
羡慕会单片机的,我只会用74逻辑器件做这个电路,相比你的单片机电路复杂多了而且功能固定。

请教楼主,建 ...

信道变化其实就是电平变化,假设建武的信道有12个引脚,就是12个引脚的高低电平。用万用表测量16个信道对应的引脚电平变化,控制引脚高低电平变化与原编码器一致就可以更改信道了。无论是用数字逻辑门还是单片机控制原理都是一样,单片机好处就是io够多。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-21 21:55 , Processed in 0.390000 second(s), 16 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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