数码之家

 找回密码
 立即注册
搜索
查看: 2660|回复: 34

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

[复制链接]
发表于 2022-5-29 00:20:39 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x
多年前参考无线电论坛一位大神的程序制作过一款手台改车台的信道显示控制板,我记得包括给朋友一起做了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的配合也就掌握了芯片使用。

搜狗截图20220528232753.png


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

搜狗截图20220528233137.png

相信很多小白看到时序图立马就懵了,这里有个诀窍,简单一步马上清晰----那就是画线。按照关键点来划线,瞬间清晰明了。
关键点就是 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就行了。先画图,当然是仿真图啦

搜狗截图20220529000316.png

搜狗截图20220529000343.png

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


视频:
手台信道显示控制板8421编码数据断电保存 - 1.bandicam 2022-05-29 00-09-42-218(Av42.mp4 (2.22 MB, 下载次数: 0)




开始画PCB
搜狗截图20220528230909.png

搜狗截图20220528230927.png


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

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


手台信道显示控制板.rar

90.32 KB, 下载次数: 0, 下载积分: 家元 -55

售价: 500 家元  [记录]  [购买]

打样文件

16信道固件.rar

548 Bytes, 下载次数: 1, 下载积分: 家元 -55

售价: 500 家元  [记录]  [购买]

固件

打赏

参与人数 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 00:43:14 来自手机浏览器 | 显示全部楼层
通俗易懂的教程,不亏是大神!
回复 支持 反对

使用道具 举报

发表于 2022-5-29 02:03:24 | 显示全部楼层
谢谢分享,收藏了,73
回复 支持 反对

使用道具 举报

发表于 2022-5-29 15:43:07 | 显示全部楼层
把手台频道开关拆了换单片机输出8421码?
回复 支持 反对

使用道具 举报

发表于 2022-5-29 15:46:30 | 显示全部楼层
这个项目,好
回复 支持 反对

使用道具 举报

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

对            
回复 支持 反对

使用道具 举报

发表于 2022-5-29 19:23:30 | 显示全部楼层
进来学习一下。
回复 支持 反对

使用道具 举报

发表于 2022-5-29 20:38:57 | 显示全部楼层
GP88/88S专用?
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

发表于 2022-5-29 21:49:14 | 显示全部楼层
高手,一直在关注你的发贴。73。
回复 支持 反对

使用道具 举报

发表于 2022-5-31 09:43:56 | 显示全部楼层

进来学习一下,谢谢楼主分享。
回复 支持 反对

使用道具 举报

发表于 2022-5-31 09:59:12 | 显示全部楼层
楼主厉害!谢谢楼主分享!
回复 支持 反对

使用道具 举报

发表于 2022-5-31 10:05:50 | 显示全部楼层

谢谢分享,收藏了
回复 支持 反对

使用道具 举报

发表于 2022-5-31 10:17:36 | 显示全部楼层
这个固件自己写一个感觉也挺简单的

打赏

参与人数 1家元 +20 收起 理由
jpdd521 + 20 你说说对你来说啥有难度。。我是没发现。。.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2022-5-31 10:19:23 | 显示全部楼层
牛人,虽然我看不懂,但还要膜拜大神
回复 支持 反对

使用道具 举报

发表于 2022-5-31 12:01:31 | 显示全部楼层
z这是个高手
回复 支持 反对

使用道具 举报

发表于 2022-5-31 14:47:31 | 显示全部楼层
2545889167 发表于 2022-5-31 10:17
这个固件自己写一个感觉也挺简单的

你说说对你来说啥有难度。。我是没发现。。
回复 支持 反对

使用道具 举报

发表于 2022-5-31 21:49:56 | 显示全部楼层
哈哈  讲的不是很透彻   懂的人一看就明白   不懂的人估计还是看不明白的  没讲芯片I2C的地址位、芯片内部的寻址及WP的读写保护、数据解析等等  哈哈哈
回复 支持 反对

使用道具 举报

发表于 2022-5-31 22:25:21 | 显示全部楼层
这个可以用贴片元件吧,体积可以更小。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-27 23:21 , Processed in 0.140400 second(s), 17 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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