找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5312|回复: 7
打印 上一主题 下一主题
收起左侧

做一个VFD驱动板,没有电路图,直接Layout6.0画图

[复制链接]
跳转到指定楼层
楼主
ID:436165 发表于 2018-11-29 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
6315版本,测试电路升压没问题,但是6315驱动不成功

595版本容易驱动,但是595输出端接地的4.7K电阻发热比较大

都有缺点,正在学习绕指变压器版本

002.JPG (582.72 KB, 下载次数: 142)

PT6315版本

PT6315版本

595.JPG (498.34 KB, 下载次数: 140)

6B595版本

6B595版本

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:436165 发表于 2018-11-29 23:34 | 只看该作者

VFD驱动板电路图修改 + 代码

RTC实时时钟 使用的是 NXP的 PCA2129 芯片
6B595 是  UN2003 + 595芯片的组合体
以下是代码:
  1. #include <reg51.H>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit DIN=P3^4; //数据输入/输出         SERIN
  6. sbit RCLK=P3^5; //移位寄存器时钟         SRCK
  7. sbit STB=P3^7; //使能信号线                 G
  8. sbit CLK=P3^6; //寄存器时钟         RCK
  9. sbit CLR=P2^0; //使能信号                 SRCLR

  10. sbit CE=P2^6; //使能(低电平有效)
  11. sbit SDO=P2^5; //SPI总线的串行数据输出
  12. sbit SDI=P2^4; //SPI总线的串行数据输入
  13. sbit SCL=P2^3; //串行时钟输入


  14. code uchar duan[]=
  15. {
  16.   0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,  // 0-9
  17.   0x77,0x7c,0x39,0x5e,0x79,0x71                       // A-F
  18. };                                                    // 共阴字码表
  19. code uchar wei[8]={
  20. 0x01,0x02,0x04,0x08,
  21. 0x10,0x20,0x40,0x80};
  22. void Write_PT6312(uchar dat,uchar dat2)           //duan   wei  操作595
  23. //wei输入 ~wei[2]  则 2 位显示         wei输入  wei[2]  则除 2 外都显示
  24. {  uchar i;          // CLR=1;  CLR=0;   CLR=1;
  25. for(i=0;i<8;i++)
  26.    {  CLK=0;       DIN=dat&0x80;              dat<<=1;              CLK=1;           }   
  27. for(i=0;i<8;i++)
  28.    {  CLK=0;       DIN=dat2&0x80;                     dat2<<=1;              CLK=1;           }   
  29.    RCLK=0; _nop_(); RCLK=1; //Delay_ms(2);         //16个数据后,一个高电平跳变更新
  30. }

  31. uchar RW_RTC(uint RW,uchar addr,uchar dat)//操作2129         
  32. //2129 读写数据  RW=1读 addr为地址
  33. //               RW=0写 addr为地址,dat为数据
  34. {  uchar i,j=0;            CE=1;   CE=0;  
  35.   
  36.   if(RW==0)  {//写         
  37.    addr=addr | 0x20;
  38.    for(i=0;i<8;i++)   {
  39.           SCL=0;   if(addr&0x80)         SDI=1;         else  SDI=0;
  40.            SCL=1;           addr<<=1;  }
  41.         for(i=0;i<8;i++)   {
  42.           SCL=0;   if(dat&0x80)         SDI=1;         else  SDI=0;
  43.            SCL=1;  dat<<=1;                    }
  44.          CE=1; }          
  45.   else  if(RW==1)  {//读         
  46.   addr=addr |0xa0;        //前三位101 + 地址
  47.   for(i=0;i<8;i++)   {            
  48.          SCL=0;   if(addr&0x80)         SDI=1;         else  SDI=0;
  49.            SCL=1;           addr<<=1;          }
  50.   for(i=0;i<8;i++)   {
  51.                 SCL=0; if(SDO)         j=0x01|j;         else  j=j&0xfe;            SCL=1;          
  52.                 if(i!=7)        j<<=1;          }
  53.                 CE=1;                   }           return j;       
  54. }
  55. void RTC_int()         //RTC初始化 ,设置时间数据
  56. {
  57. RW_RTC(0,0x00,0x08);   
  58. //RW_RTC(0,0x01,0x00);
  59. //RW_RTC(0,0x02,0x00);
  60. RW_RTC(0,0x03,0x00); //03h seconds        秒        1XXX XXXX  5   9
  61. RW_RTC(0,0x04,0x07); //04h minutes 分        -XXX XXXX  5   9
  62. RW_RTC(0,0x05,0x23); //05h hours   时        --XX XXXX  2   9
  63. RW_RTC(0,0x06,0x25); //06h         days   日        --XX XXXX  3   9
  64. RW_RTC(0,0x07,0x06); //07h weekdays星期 ---- -XXX  0   6    00=Sunday
  65. RW_RTC(0,0x08,0x11); //08h  months  月        ---X XXXX  1   9
  66. RW_RTC(0,0x09,0x18); //09h         years   年        XXXX XXXX  9   9

  67. }
  68. void Display(uint x,uint ad)  //双位数字转换及显示函数
  69. {           uint dat=0;
  70.              if(x==3){dat=RW_RTC(1,x,0)&0x7f;}//判断为秒,取真值
  71.         else if(x==4){dat=RW_RTC(1,x,0)&0x7f;}//判断为分,取真值
  72.         else if(x==5){dat=RW_RTC(1,x,0)&0x3f;}//判断为时,取真值
  73.         else if(x==6){dat=RW_RTC(1,x,0)&0x3f;}//判断为日,取真值
  74.         else if(x==8){dat=RW_RTC(1,x,0)&0x1f;}//判断为月,取真值
  75.         else if(x==9){dat=RW_RTC(1,x,0)&0xff;}//判断为年,取真值
  76.         else if(x==7){dat=RW_RTC(1,x,0)&0x07;//判断为星期,取真值
  77.         if(dat==0)dat=7;Write_PT6312(~duan[dat],~wei[ad]);return ;}

  78.         dat=dat/16*10+dat%16;
  79.         Write_PT6312(~duan[dat/10],~wei[ad]);
  80.         Write_PT6312(~duan[dat%10],~wei[ad+1]);
  81. }
  82. void dis_2()        //第一屏显示 18-11-24  年-月-日
  83. //第二屏显示 18-11 24  时-分 秒
  84. {        uchar i,j;
  85.     for(i=0;i<104;i++)
  86.         for(j=0;j<20;j++)   {
  87.     Display(5,0);
  88.         Write_PT6312(~0x40,~wei[2]);
  89.         Display(4,3);
  90.         Display(3,6); }        /*  */


  91.         for(i=0;i<100;i++)
  92.         for(j=0;j<8;j++)        {
  93.         Display(9,0);
  94.         Write_PT6312(~0x40,~wei[2]);
  95.         Display(8,3);
  96.         Write_PT6312(~0x40,~wei[5]);
  97.         Display(6,6);  /* */
  98.                                                    }
  99. }

  100. void main (void)        //Delay_ms(uint i)
  101. {  
  102. RTC_int();
  103.   RCLK=0;    STB=0;           // RTC_int();
  104.   while(1)
  105.   {       
  106. dis_2();
  107.         }
  108. }

复制代码



6B595-VFD.JPG (656.65 KB, 下载次数: 132)

这个比较准确

这个比较准确

评分

参与人数 1黑币 +80 收起 理由
admin + 80 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:436165 发表于 2018-12-1 10:28 | 只看该作者
6B595驱动VFD  电路板

使用Layout 6.0  制作的

下载后热转印直接使用

6B595驱动VFD.zip

65.29 KB, 下载次数: 33, 下载积分: 黑币 -5

6B595驱动VFD

回复

使用道具 举报

地板
ID:922838 发表于 2021-7-28 16:32 | 只看该作者
有没有595驱动的原理图,我也想做一个,但电路没看懂
回复

使用道具 举报

5#
ID:1088882 发表于 2024-3-28 12:14 | 只看该作者
最近也买了几片VFD,感谢分享!
回复

使用道具 举报

6#
ID:237471 发表于 2024-3-29 10:54 | 只看该作者
这板画的真好看,赏心悦目
回复

使用道具 举报

7#
ID:651494 发表于 2024-3-29 11:54 | 只看该作者
/********************************************************************************
;*  标题:  TOPAV-2008单片机开发系统演示程序                                     *
;*  硬件: TOPAV-2008                                                           *
;*  文件:  MA016.C                                                              *
;*  日期:  2007-5-1                                                             *
;*  版本:  1.0                                                                  *
;*  作者:  单片机音响技术网 - zhangshaobin                                      *
;********************************************************************************
;*  描述:                                                                       *
;*        PT6312VFD屏演示(频谱花式,HELLO字符显示,按键扫描)                      *
;*                                                                              *
;********************************************************************************
;*  跳线设置:                                                                  *
;*  矩阵键盘上方跳线组(短接STB,CLK,DATA)                                        *
;*  安装好6312VFD模块(注意丝印对应且全部脚插入)VFD为真空玻璃注意爱护            *
;*  特别注意保护VFD屏左边真空抽气孔(小凸起部分不可破裂                          *
;********************************************************************************
;* 【版权】 Copyright(C)单片机音响技术网All Rights Reserved   *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
;*******************************************************************************/

//来,一起玩转VFD屏及PT6312驱动

#include "reg51.h"
typedef bit                      BIT;
typedef unsigned char            BYTE;
typedef unsigned int             WORD;

sbit PT6312_STB = P2^3;
sbit PT6312_CLK =  P2^4;
sbit PT6312_DATA =  P2^5;
BYTE DISP_ARRAY[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
//BYTE code DISP_CHAR1[] = {4,192,55,118,91,58}; //TUNER
BYTE code DISP_CHAR1[] = {1,62,91,19,19,119};  //HELLO
//BYTE code DISP_CHAR1[] = {4,0,125,127,93,247}; //98.50

BYTE code DISP_KEY01[] = {0,0,119,119,119,36};
BYTE code DISP_KEY02[] = {0,0,119,119,119,107};
BYTE code DISP_KEY03[] = {0,0,119,119,119,109};
BYTE code DISP_KEY04[] = {0,0,119,119,119,60};
BYTE code DISP_KEY05[] = {0,0,119,119,119,93};
BYTE code DISP_KEY06[] = {0,0,119,119,119,95};
BYTE code DISP_KEY07[] = {0,0,119,119,119,100};  
BYTE code DISP_KEY08[] = {0,0,119,119,119,127};
BYTE code DISP_KEY09[] = {0,0,119,119,119,125};  
BYTE code DISP_KEY10[] = {0,0,119,119,36,119};
BYTE code DISP_KEY11[] = {0,0,119,119,36,36};  
BYTE code DISP_KEY12[] = {0,0,119,119,36,107};

BIT    NEW_KEY_FLAG=0;   
BIT    OLD_KEY_FLAG=0;
BYTE    bKEY;
BYTE    oldKEY;  

BYTE code DISP_FREQ1[] = {1,3,7,15,31,63,127,255};               //频谱上升
BYTE code DISP_FREQ2[] = {1,2,4,8,16,32,64,128};                 //频谱下降
BYTE code DISP_FREQ3[] = {128,192,224,240,248,252,254,255};      //频谱中间跳动

BYTE SEC_TIME;
BYTE DISC_RUN_TIME;
BYTE FREQ_TIME;
BYTE FREQ_SEC_TIME;
BYTE FREQ_ST_TIME;

BYTE FREQ_RANGE[4];                  //手动设置的频谱,没有音频取样,假频谱... :)
BYTE KEY_BUF[3];
#define  VFD_DISP_MODE  0x02         // 设置段位为 6d/16s
#define  VFD_DIM_QUANTITY  0x8f      //占空比14/16,显示为开
#define  VFD_DATWR_MODE  0x40        //正常写入后地址加1
#define  VFD_ADDSET_COMD  0xC0       //PT6312片内RAM从OOH~15H,6段使用00H~0BH共12BYTE每段16BIT两个RAM
#define  VFD_SPH  0x00
#define  MS20H          0xb1               //定时器0初值
#define  MS20L    0xe0               //12M 20MS;45536=B1E0H   65536-45536=20000US=20MS
               
void Write_A_ByteTo_VFD(BYTE);       //一些函数声明,如果带行参变量,编译器会忽略
void Init_vfd();
void Light_all_Write();
void Write_GID6(BYTE *);
BYTE RD_A_Bytefrom_VFD();
void KEY_Scan_Save();
BYTE Get_KEYVAL();
void KEY_Process();
void disp_Chag_disc();
void Write_GID4(BYTE *,BYTE *);
void freqrange_to_disp();
void disp_Chag_freq();              //以上函数做了申明,主程序可以写在最前面

void main()
{
        
        TMOD = 0x11;                  //TMOD = 0x01,定时器0方式设置
        IE = 0X82;                          //开总中断允许,开定时器0允许
        Init_vfd();                   //DISP_ARRAY数组初始化全部为0所以显示无内容,只是设置了段位,允许VFD显示
        TH0 = MS20H;                  //定时器初值设定
  TL0 = MS20L;
        TR0 = 1;                      //开定时器0
        Write_GID6(&DISP_CHAR1);      //显示HELLO
        while(1)
        {
                disp_Chag_freq();          //调用频谱条变化
                disp_Chag_disc();          //调用DVD转盘旋转
                KEY_Process();             //按键按下显示按键值
                Light_all_Write();         //PT6312数据更新
        }               
}
/*************************************************************************************************/
void Init_vfd()                 //PT6312初始化
{
        PT6312_STB = 1;
        
        PT6312_STB = 0;
        Write_A_ByteTo_VFD(VFD_DISP_MODE);           //0x02 6d/16s根据显示VFD的段位设置
        PT6312_STB = 1;
        
        PT6312_STB = 0;
        Write_A_ByteTo_VFD(0x8f);           //占空比14/16,显示为开
        PT6312_STB = 1;
               
  Light_all_Write();            //写入所有数据到PT6312
}


void Write_A_ByteTo_VFD(BYTE vfd_data)   //写一个字节数据到PT6312
{
   BYTE wr_temp;
         PT6312_CLK = 1;
   for(wr_temp = 0;wr_temp < 8;wr_temp++)
   {      
      PT6312_CLK = 0;
                  if (vfd_data & 0x01)
                           PT6312_DATA = 1;
                  else
                           PT6312_DATA = 0;
                  vfd_data >>= 1;
                  PT6312_CLK = 1;
          }
}

void KEY_Process(void)
{
          KEY_Scan_Save();                  
                   bKEY = Get_KEYVAL();
                   oldKEY = bKEY;
          if ((bKEY == oldKEY) && (FREQ_SEC_TIME == 0))
       Write_GID6(&DISP_CHAR1);

          switch(bKEY)
          {
                  case 1:
                                  Write_GID6(&DISP_KEY01);
                                  break;
                  case 2:
                                  Write_GID6(&DISP_KEY02);
                                  break;
                  case 3:
                                  Write_GID6(&DISP_KEY03);
                                  break;
                  case 4:
                                  Write_GID6(&DISP_KEY04);
                                  break;
                  case 5:
                                  Write_GID6(&DISP_KEY05);
                                  break;
            case 6:
                                  Write_GID6(&DISP_KEY06);
                                  break;
                  case 7:
                                  Write_GID6(&DISP_KEY07);
                                  break;
                  case 8:
                                  Write_GID6(&DISP_KEY08);
                                  break;
                  case 9:
                                  Write_GID6(&DISP_KEY09);
                                  break;
                  case 10:
                                  Write_GID6(&DISP_KEY10);
                                  break;
                  case 11:
                                  Write_GID6(&DISP_KEY11);
                                  break;
                  case 12:
                                  Write_GID6(&DISP_KEY12);
                                  break;
                                 
//                  default:
//                            Write_GID6(&DISP_CHAR1);
//         break;        
    }
  
}        
                                                                  
                          
BYTE Get_KEYVAL(void)
{
        BYTE keyval;
        if (KEY_BUF[0])
        {
                while (KEY_BUF[0])     //按键在KEY_BUF[0],如: 0001 0000,keyval == 5
                {
            keyval++;
            KEY_BUF[0] >>= 1;
          };
        };
        if (KEY_BUF[1])
                {
                        keyval = 8;
                 while (KEY_BUF[1])     //按键在KEY_BUF[1],如: 0001 0000,keyval == 13
                 {
            keyval++;
            KEY_BUF[1] >>= 1;
           };
         };
               
        if (KEY_BUF[2])
                   {
                            keyval = 16;
                     while (KEY_BUF[2])     //按键在KEY_BUF[2],如: 0000 1000,keyval == 20
                     {
                  keyval++;
                  KEY_BUF[2] >>= 1;
               };
             };

        return(keyval);
}
         
        
void KEY_Scan_Save(void)
{
        BYTE keybuf_number;
        PT6312_STB = 0;
        Write_A_ByteTo_VFD(0x76);
        for (keybuf_number = 0 ;keybuf_number < 3;keybuf_number++)
        {
               
                KEY_BUF[keybuf_number] = RD_A_Bytefrom_VFD() ;
        }
        PT6312_STB = 1;        
}

        
BYTE RD_A_Bytefrom_VFD(void)
{
      BIT rd_temp_flag;
      BYTE key_data;
      BYTE rd_temp,rd_temp_keydata;
      
            PT6312_CLK = 1;
      PT6312_DATA = 1;
      key_data = 0;
      
      for(rd_temp = 0;rd_temp < 8;rd_temp++)
      {     
            PT6312_CLK = 0;
            rd_temp_flag = PT6312_DATA;     
            if (rd_temp_flag)
            {     
                rd_temp_keydata = 0x80;
                rd_temp_keydata >>= (7-rd_temp);
                key_data |= rd_temp_keydata;
            }
            PT6312_CLK = 1;
      }
      return(key_data);
}
      

void Light_all_Write(void)   //显示数据暂存数组的所有要显示的内容写入到PT6312
{     
        BYTE fill_temp;
        PT6312_STB = 1;
        
        PT6312_STB = 0;
        Write_A_ByteTo_VFD(0x40);       //数据写入到PT6312后其内部地址自动+1
        PT6312_STB = 1;
        
  for (fill_temp=0;fill_temp<12;fill_temp++)
  {
     PT6312_STB = 0;
     Write_A_ByteTo_VFD(0xC0+(11-fill_temp));
     Write_A_ByteTo_VFD(DISP_ARRAY[fill_temp]); //暂存显示数据的数组和PT6312内部地址一一对应
     PT6312_STB = 1;
   }
}
/*************************************************************************************************/                                
void Write_GID6(BYTE *charp)
{
        BYTE char_temp;
        for( char_temp = 2;char_temp < 8;char_temp++)  //DISP_ARRAY数组DISP_ARRAY[2]~DISP_ARRAY[7]主显示内容更新
        {
                DISP_ARRAY[char_temp] = *charp;
                charp++;                                     //指针++指象实参数组下一个元素
        }
}
/*************************************************************************************************/
void disp_Chag_disc()                          //DISC图标动画
{

        DISP_ARRAY[0] = 0x50;                        //点亮其他一些图标"ALL","播放"
               
        switch(DISC_RUN_TIME)
        {
                case 0:
                        {
                                DISP_ARRAY[1] = 0x5f;  //01011111      //图标可以单独给个位变量来"与"&
                                break;
                        }
          case 1:
                        {
                                DISP_ARRAY[1] = 0x6f;
                                 break;
                        }
                case 2:
                        {
                                DISP_ARRAY[1] = 0x77;
                                 break;
                        }
          case 3:
                        {
                                DISP_ARRAY[1] = 0x7b;
                                 break;
                        }
          case 4:
                        {
                                DISP_ARRAY[1] = 0x7d;
                                 break;
                        }
                case 5:
                        {
                                DISP_ARRAY[1] = 0x7e;
                                 break;
                        }        
        }
}

/*************************************************************************************************/
void freqrange_to_disp()             //显示频谱
{

        switch(FREQ_TIME)                  //模拟的一些频谱幅度,后续根据这个幅度取DISP_FREQ1~3数组的值
                                           //如果有动态的音频取样只需要取样值变化再取显示点亮的格数值
        {
                case 0:
                        {
                                FREQ_RANGE[0] = 2;
                                FREQ_RANGE[1] = 4;
                                FREQ_RANGE[2] = 1;
                                FREQ_RANGE[3] = 1;
                                break;
                        }
          case 1:
                        {
                                FREQ_RANGE[0] = 1;
                                FREQ_RANGE[1] = 6;
                                FREQ_RANGE[2] = 1;
                                FREQ_RANGE[3] = 2;
                                break;
                        }
                case 2:
                        {
                                FREQ_RANGE[0] = 4;
                                FREQ_RANGE[1] = 7;
                                FREQ_RANGE[2] = 3;
                                FREQ_RANGE[3] = 4;
                                break;
                        }
          case 3:
                        {
                                FREQ_RANGE[0] = 3;
                                FREQ_RANGE[1] = 4;
                                FREQ_RANGE[2] = 5;
                                FREQ_RANGE[3] = 2;
                                break;
                        }
          case 4:
                        {
                                FREQ_RANGE[0] = 6;
                                FREQ_RANGE[1] = 5;
                                FREQ_RANGE[2] = 7;
                                FREQ_RANGE[3] = 5;
                                break;
                        }
                case 5:
                        {
        FREQ_RANGE[0] = 6;
                                FREQ_RANGE[1] = 1;
                                FREQ_RANGE[2] = 3;
                                FREQ_RANGE[3] = 1;
                                break;
                        }        
                case 6:
                        {
        FREQ_RANGE[0] = 3;
                                FREQ_RANGE[1] = 2;
                                FREQ_RANGE[2] = 1;
                                FREQ_RANGE[3] = 2;
                                break;
                        }        
                case 7:
                        {
        FREQ_RANGE[0] = 7;
                                FREQ_RANGE[1] = 6;
                                FREQ_RANGE[2] = 4;
                                FREQ_RANGE[3] = 3;
                                break;
                        }        
                case 8:
                        {
        FREQ_RANGE[0] = 2;
                                FREQ_RANGE[1] = 4;
                                FREQ_RANGE[2] = 5;
                                FREQ_RANGE[3] = 1;
                                break;
                        }        
                case 9:                                            //十种变化
                        {
        FREQ_RANGE[0] = 5;
                                FREQ_RANGE[1] = 7;
                                FREQ_RANGE[2] = 6;
                                FREQ_RANGE[3] = 7;
                                break;
                        }        
        }
}
        
void disp_Chag_freq()                       
{
                freqrange_to_disp();
                switch(FREQ_ST_TIME)
        {
                case 0:
                        {
                                Write_GID4(&DISP_FREQ1,&FREQ_RANGE);
                                break;
                        }
          case 1:
                        {
                                Write_GID4(&DISP_FREQ2,&FREQ_RANGE);
                                 break;
                        }
                case 2:
                        {
                                Write_GID4(&DISP_FREQ3,&FREQ_RANGE);
                                 break;
                        }
                default:
                          Write_GID4(&DISP_FREQ1,&FREQ_RANGE);        
        }
        
}

void Write_GID4(BYTE *freqp,BYTE *freqrp)         //两个指针的应用
{
        BYTE freq_temp;
        for( freq_temp = 8;freq_temp < 12;freq_temp++)
        {
                DISP_ARRAY[freq_temp] = freqp[*freqrp];
                freqrp++;
        }
}

/*************************************************************************************************/
void TR0_Service(void) interrupt 1 using 2 //TR0的定时中断函数,此函数应简单。使用寄存器组2
{
        TH0 = MS20H;                      //重点掌握此定时方式可任意定时
  TL0 = MS20L;
     
  if(!SEC_TIME)                     //基准时间5X20MS = 100ms
  {
            DISC_RUN_TIME++;
            if( DISC_RUN_TIME == 6)       //DVD转盘旋转一圈需要6种状态改变,DISC_RUN_TIME变化就改变一下状态
                      DISC_RUN_TIME = 0;
                  SEC_TIME = 5;                  
                  if(!FREQ_TIME)
            {
                      FREQ_TIME = 10;           //根据FREQ_TIME值可更新10种频谱幅度每100MS变化一次                     
                      if(!FREQ_SEC_TIME)
                      {                              
                               FREQ_SEC_TIME = 15;    //15s   //15s基准                              
                               if(!FREQ_ST_TIME)      //FREQ_ST_TIME赋值则可根据FREQ_ST_TIME值每15S调用更新
                                     {
                                            FREQ_ST_TIME = 3;     //三种主显示内容和频谱模式,他们复用每判断
                                     }                     
                                     else
                                     {
                                      FREQ_ST_TIME--;
                                     }
                            }                                    
                            else
                            {
                                     FREQ_SEC_TIME--;
                            }
            }
            else
            {
                     FREQ_TIME--;
            }                           
  }
  else
  {
          SEC_TIME--;
  }
}        
/*end code   2009/1/7 How to program C!*/

vfd6311.pdf

24.64 KB, 下载次数: 0, 下载积分: 黑币 -5

vfd6312.pdf

24.35 KB, 下载次数: 0, 下载积分: 黑币 -5

回复

使用道具 举报

8#
ID:651494 发表于 2024-3-29 11:59 | 只看该作者
参考以下VFD电源电路和驱动电路,变压器某一个宝有卖的,搜索VFD供电变压器

PT6311.pdf

547.16 KB, 下载次数: 0, 下载积分: 黑币 -5

Sch_Layout 20201205 .pdf

372.75 KB, 下载次数: 0, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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