数码之家

 找回密码
 立即注册
搜索
查看: 5483|回复: 14

[工仪] 我升级了一下M8V7,改成12864 VFD显示

[复制链接]
发表于 2019-3-22 13:57:07 | 显示全部楼层 |阅读模式
这个电源用了很长时间了。当时用的是@fish8840的分立件板子,组成的纯线性电源:M8 V7电源 fish8840版套件。后来又买了狗狗的帖片套件做了升级。但后来经常出现不显示的问题,自己还能好。拆开看后发现的用来调对比度10K帖片可调的问题,这种可调电阻经常出问题,换了后过一段时间会又坏掉。所以就干脆不用1604显示了。正好手里有12864 的VFD,用上它还能提一提B格。当然是受efan改头换面的M8V7电源帖子的启发,同时也参考了他的代码。虽然这时G大已公开M8V7的源代码,但是我对AVR是真的一点不懂。当时第一次做的时候用的STC的12C56S2,由于速度不够,经常丢字符。后来买了15W408AS,速度上来了,就一切OK了。
可调电源部分仍然是纯线性的。数码板的供电使用开关电源。同时VFD的显示代电电流有点大,原MCU供电功率不足,同时也因MCU供电是隔离的,所以用手机充电器板子改了一个给VFD专门供电。


下面是过程图片了。





下面分别是正常工作和设置的界面



面板没找到合适的材料,就用原来的改了一下将就用了。



各项的测试:表比较垃圾,但电压档还是用基准校过的。


改好后的内部


送入工作位置


手绘的电路图

本帖子中包含更多资源

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

x

打赏

参与人数 9家元 +142 收起 理由
wmshizheng + 20 優秀文章
cushion + 20 謝謝分享
ha2ying + 20 程序方便分享一下吗?
hongo + 12 優秀文章
xiaoxuanfeng + 20 謝謝分享
zhkrid + 8 以資鼓勵
10655188 + 2 謝謝分享
家睦 + 30
不长叶子的树 + 10

查看全部打赏

发表于 2019-3-22 14:16:44 | 显示全部楼层
高手!高手!高高手!!!

崇拜!会写编码程序的!

回复 支持 反对

使用道具 举报

发表于 2019-3-22 20:56:53 | 显示全部楼层
这是技术活啊
回复 支持 反对

使用道具 举报

发表于 2019-3-23 09:37:11 | 显示全部楼层
这是用C写的??
回复 支持 反对

使用道具 举报

发表于 2019-3-23 22:51:45 来自手机浏览器 | 显示全部楼层
土豪啊!一个电源居然用上了vfd:sweat:
回复 支持 反对

使用道具 举报

发表于 2019-3-24 06:30:34 | 显示全部楼层
高手啊  只能摩拜
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-24 07:49:24 | 显示全部楼层
SNA 发表于 2019-3-23 09:37
这是用C写的??

对,STC的C51
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-24 07:49:53 | 显示全部楼层
触景情伤 发表于 2019-3-23 22:51
土豪啊!一个电源居然用上了vfd

不贵,当时是25一个买的
回复 支持 反对

使用道具 举报

发表于 2019-3-24 10:28:20 来自手机浏览器 | 显示全部楼层
sblinux 发表于 2019-3-24 07:49
不贵,当时是25一个买的

够25片点阵了…还是太奢侈啊…
回复 支持 反对

使用道具 举报

发表于 2019-3-26 11:26:43 | 显示全部楼层
高手高高手。长见识了。谢谢分享!
回复 支持 反对

使用道具 举报

发表于 2019-3-26 21:29:02 | 显示全部楼层
高人哪,前来膜拜一下。
回复 支持 反对

使用道具 举报

发表于 2019-3-27 00:55:34 | 显示全部楼层
兄弟方便把程序分享吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-27 08:20:16 | 显示全部楼层
ha2ying 发表于 2019-3-27 00:55
兄弟方便把程序分享吗?

这个对不起,不方便分亨。因原作者不主张程序的分享。不过您感兴趣的话可以看看原作者提供的程序框架。

  1. uchar sBuffer[80];  //20x4显示缓存+ m2 L; E1 P7 I
  2. uchar sCommand=0x00; //接收到的指令' \& b1 T/ W8 Q6 p
  3. uchar nAddress=0x00; //当前Buff地址,自动+1
  4. //uchar bNewData=0;  //数据是否更新标志* a3 f, i, u0 F
  5. uchar bCmdFirst=1;  //指令高字节标志& ^6 M1 w  l  I2 g: G# k6 b
  6. uchar bDataFirst=1;  //数据高字节标志
  7. uchar bAddValid=0;  //地址有效标志,1-有效,0-无效
  8. uchar nFlashAdd=0x00; //闪烁地址
  9. uchar bFlashFlag=0;  //闪烁标志
  10. uchar bDisBanFlag=0; //光标显示标志
  11. uchar bDisOK=0;   //进入正常状态标志,区分起始logo与正常显示(正常显示包括正常输出和调试)# J2 |! U% ^& D( I" }: ~3 u
  12. uchar nCommdNum[8]={0,0,0,0,0,0,0,0}; //指令的数量,供调测用8 F- D& x8 r5 j0 }* ~9 t

  13. 0 g$ Q" D2 B, J  c" K3 @
  14. //INT0中断
  15. SIGNAL(SIG_INTERRUPT0)- ~; q$ d7 e1 L6 M/ c9 {+ S+ Z& `
  16. {" w$ ?' g4 f- l3 B
  17. //读取E、R/W、RS的电平,以确定要进行的操作  H5 f8 |1 ~+ g5 d7 i
  18. uchar datad=PIND;: I) w7 H% P2 V8 I, Y
  19. 7 l7 b8 e9 T* O8 r9 [url=home.php?mod=space&uid=2222500]@.[/url] b) t
  20. //经测试,没有读操作,因此代码不再写- ~6 ]5 o5 I6 e: J
  21. //此外,中断方式也可以改为下降沿触发,不用再判断电平变化了 1 t/ p4 d/ W* `- g) i7 ^$ }
  22. if(datad&0x01) //RS高电平,写数据& f+ x: r# V; E1 A" K5 L7 N0 z
  23. {
  24.   if(bAddValid)
  25.   {, [) q0 Z! C: n1 N2 O
  26.    //已知为4位接口,因此固定判断
  27.    if(bDataFirst) //首次接收,高4位
  28.    {
  29.     sBuffer[nAddress]=datad&0xf0;& P& Q" I& q6 c2 K7 @) x! B, l4 Z
  30.     bDataFirst=0;1 [& e( Y6 V) |; X7 n
  31.    }; {. a0 E. X+ w% f
  32.    else7 D& h$ [url=home.php?mod=space&uid=2346862]@6[/url] j# I5 E
  33.    {6 _6 R$ s- Q$ a8 _* @
  34.     sBuffer[nAddress]|=(datad>>4)&0x0f;
  35.     bDataFirst=1;! A- J4 @& i7 W4 v9 z( z
  36.     nAddress++; //地址自动+1* e" a* _! M9 A$ y; I6 Q4 F
  37.     if(nAddress>=0x50)
  38.     {5 b8 @$ a3 O/ ?' W8 b7 a$ R) k
  39.      nAddress=0;0 Y, ^1 q* N/ O% Q" u: ?- C& f
  40.      bAddValid=0;1 }9 w# _6 ?: O: p1 e. c4 j) n
  41.     }; W5 l. b( [6 C
  42.    }% l& w# a: k( d( a; D' F
  43.   }
  44.   else  //写数据,但是地址并未准备好,因此可以判断第一次接收到的是数据1 [. l5 C' T+ A
  45.   {1 o& W- \$ _$ Z4 o2 u
  46.    bCmdFirst=1;- D4 |# S) H+ z  H8 X; X7 G
  47.    bDataFirst=1;
  48.   }/ ^: v, f% K4 L0 \+ A
  49. }
  50. else   //RS低电平,写指令
  51. {4 G, P0 ~/ B3 e. g- o# D3 w
  52.   //已知为4位接口,因此固定判断
  53.   if(bCmdFirst) //首次接收,高4位
  54.   {
  55.    sCommand=datad&0xf0;2 n+ Z# G4 M1 o; j* e& g$ x4 E
  56.    bCmdFirst=0;$ Q% u+ ]' O, t9 u4 w6 x8 R
  57.   }
  58.   else, K5 P" a' Y/ w2 q& Q
  59.   {
  60.    sCommand|=(datad>>4)&0x0f;
  61.    bCmdFirst=1;4 D5 j4 O0 p% V* |4 F* g
  62.   }) C1 L, k. X" H' O3 ~- O" W  X
  63.   //解析指令,主要是提取DDRAM地址,以便放置数据到sBuffer中
  64. if(sCommand>=0x80)   //DDRAM地址设置
  65.   {
  66.    nAddress=sCommand&0x7F;
  67.    //判断地址有效性
  68.    bAddValid=1;0 c. T3 c$ }  e9 E# L# [" C
  69.    bDataFirst=1;
  70.    if((nAddress>0x27 && nAddress<0x40) || nAddress>0x67)
  71.     bAddValid=0;
  72.    //将设置地址与sBuffer序号对应起来+ _. Q& L$ \1 `  Y  j- u
  73.    if(nAddress>=0x40)
  74.     nAddress-=0x18;3 ?! b3 n5 g  {; m
  75.    ) s  X; r3 K3 M
  76.    nCommdNum[7]++;7 R' a5 E( {/ {5 E4 J" y
  77.   }
  78.   else if(sCommand>=0x40)  //CGRAM地址设置(用到)
  79.   {
  80.    nCommdNum[6]++;
  81.   }
  82.   else if(sCommand>=0x20)  //功能设置(用到): d, L& T$ `. L
  83.   {6 _1 M. Y% k. L
  84.    nCommdNum[5]++;9 b  c, U6 I8 `8 e9 ~+ V. ^1 }
  85.   }1 Q  |- L* A0 d# J* X
  86.   else if(sCommand>=0x10)  //移位(用到)
  87.   {
  88.    nCommdNum[4]++;: X5 U- o8 `! X6 k" N3 N
  89.   }
  90.   else if(sCommand>=0x08)  //显示开关(用到)
  91.   {
  92.    //显示开关用来显示光标闪烁
  93.    bDisOK=1;      + N* M6 R9 G: E& S* |
  94.    
  95.    if(sCommand&0x01)  //仅判断闪烁标志
  96.    {
  97.     bFlashFlag=1;- l# X6 z: w9 t9 U
  98.     nFlashAdd=nAddress;
  99.    }
  100.    else
  101.     bFlashFlag=0;* q+ r+ r! s1 V* T6 _
  102.    
  103.    nCommdNum[3]++;
  104.   }
  105.   else if(sCommand>=0x04)  //设置输入方式(没用到)
  106.   {
  107.    nCommdNum[2]++;
  108.   }
  109.   else if(sCommand>=0x02)  //光标返回,此处也清屏(用到1次)+ ]7 F+ D! M+ _6 S: y
  110.   {0 T) p% j4 a* C
  111.    uchar i;
  112.    for(i=0;i<80;i++)
  113.     sBuffer[i]=0x20;
  114.    nAddress=0;
  115.    4 O& I/ z" D. H6 P/ D) q
  116.    nCommdNum[1]++;( t1 E9 y; z: A+ v1 ~
  117.   }- B/ G0 J  B7 Q' a# x1 o
  118.   else if(sCommand==0x01)  //清屏(没用到)
  119.   {' z2 G- [  K+ m' {. t" Q$ X
  120.    //Clr_Scr();2 O5 x% r! n- y
  121.    uchar i;5 w( m8 ~! o) E8 ]: u$ h
  122.    for(i=0;i<80;i++)
  123.     sBuffer[i]=0x20;4 M% W; b( H3 Z; I" N2 H
  124.    nAddress=0;
  125.    0 M, p5 U" @. l( B0 ^
  126.    nCommdNum[0]++;6 W5 R4 u( v1 X+ O
  127.   }
  128. }- `) s- _$ E: {. \
  129. 6 l0 k0 |9 V( _2 K6 ^8 O
  130. //固定赋值" Q. D( y" g1 _5 J  M
  131. if(bDisOK). W$ c7 s- H8 W: r+ w* D2 z2 w2 C$ H
  132. {) K5 B- B- ?' |7 a: u7 v& I) z5 y' t
  133.   sBuffer[9]='+';8 R9 A  ]( r) ]3 i
  134.   sBuffer[29]='|';3 Q. x+ H+ r7 F) _+ e: a2 C7 V5 M) s
  135.   sBuffer[49]='|';
  136.   sBuffer[69]='|';+ u- n" Q! ]! {$ Z0 F9 ]
  137. }
  138. // }
  139. //}
  140. }
复制代码


这是原帖地址:https://www.yleee.com.cn/thread-16285-2-1.html
回复 支持 反对

使用道具 举报

发表于 2019-3-27 18:51:07 | 显示全部楼层
sblinux 发表于 2019-3-27 08:20
这个对不起,不方便分亨。因原作者不主张程序的分享。不过您感兴趣的话可以看看原作者提供的程序框架。

...

多谢回复,不会编程,只能干瞪眼了:mad:
回复 支持 反对

使用道具 举报

发表于 2019-3-29 12:09:18 | 显示全部楼层
高手!
屏漂亮,面板顏值不匹配啊。:lol:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-26 13:57 , Processed in 0.140400 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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