找回密码
 注册

微信扫码登录

使用验证码登录

只需一步,快速开始

胜天工科技销售各种数字电视信号调制卡胜天工科技销售各种数字电视信号码流卡

【游客、新手、注册会员的区别】 【积分策略和会员晋级说明】 【发帖和附件上传规则】 【如何下载感兴趣的资料】 【如何获取梦游币】 【侵权资料处理及免责说明】
查看: 2263|回复: 1

VFD驱动代码

[复制链接]
  • TA的每日心情
    擦汗
    2012-7-22 22:21
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2010-1-8 18:20:26 | 显示全部楼层 |阅读模式
    分享到:
    消息来自- 北京
    #include <reg51.h>
    #include "cpu_cfg.h"
    # define INT8U unsigned char
    #define INT16U unsigned int
    VFD应用初探[1]___键盘
    INT16U dd[]={0x069A,0x0280,0x061C,0x0694,0x0286,0x0496,0x049E,0x0680,0x069E,0x0696,0x0000};//0123456789
    INT8U b[8];
    sbit dout = P1^4;
    sbit din = P2^2;
    sbit clk  = P2^0;
    sbit stb = P2^1;
    //-------------------------------------------------------------------------------
    void mdelay(unsigned int delaytime) //延时子程序
    {int j=0;
       for(;delaytime>0;delaytime--)
             {for(j=0;j<125;j++){;}
             }
    }
    void senddata(INT8U dats) //串行传送数据子程序
    {INT8U i;
    for(i = 0; i < 8 ; i++)
            {
             clk = 0;
      din = dats&0x01;
      clk = 1;   //上升沿锁存
      dats = dats >> 1;
             }
    }
    //------------------------------------------------------------------------------
    void vfddisplay(INT8U dress1,INT16U dat)
    { INT8U i;
    INT8U dat1=0x08; //显示模式设定9*19
    INT8U dat2=0x40;//确定地址模式
    //INT8U dat3=0xc9;//地址
    INT8U dat4=0x8f;  //控制开始显示
      stb=1;
      clk=1;
      stb=0;
    senddata(dat1);
    stb=1;
    stb=0;
    senddata(dat2);
    stb=1;
    stb=0;
    senddata(dress1);
    for(i = 0; i < 16 ; i++)
            {
             clk = 0;
      din = dat&0x0001;
      clk = 1;   //上升沿锁存
      dat = dat >> 1;
             }
    stb=1;
    stb=0;
    senddata(dat4);
    stb=1;
    }
    void fdisplay(long fv)
    {
    INT8U n,dress=0xc0;
    INT8U a[9];
    a[0]=(int)(fv/100000000);
    a[1]=(int)((fv%100000000)/10000000);
    a[2]=(int)((fv%10000000)/1000000);
    a[3]=(int)((fv%1000000)/100000);
    a[4]=(int)((fv%100000)/10000);
    a[5]=(int)((fv%10000)/1000);
    a[6]=(int)((fv%1000)/100);
    a[7]=(int)((fv%100)/10);
    a[8]=(int)(fv%10);
    if(fv<100000000) a[0]=10;
       if(fv<10000000) a[0]=a[1]=10;if(fv<1000000) a[0]=a[1]=a[2]=10;
         if(fv<100000) a[0]=a[1]=a[2]=a[3]=10;
           if(fv<10000) a[0]=a[1]=a[2]=a[3]=a[4]=10;
             if(fv<1000)  a[0]=a[1]=a[2]=a[3]=a[4]=a[5]=10;
              if(fv<100)  a[0]=a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=10;
               if(fv<10)  a[0]=a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=10;
                 for(n=0; n < 9 ; n++)  
                   {vfddisplay(dress,dd[a[n]]);
                     dress=dress+3;
       }
    }
    //-------------------------------------------------------------------------------
    void vfdkey(void)          //读键盘数据区子程序
    {INT8U i,j;
    register keydat;
    INT8U keydat1=0x42;   //读keydata 01000010
    stb=1;
    clk=1;
    stb=0;
    senddata(keydat1);
    //mdelay(5);
    for(j=0 ; j < 6 ; j++)
    { stb=0;
    for(i=0;i<8;i++)
       { clk=0;
         keydat=(keydat<<1) din;
         clk=1;
       }
        fdisplay(j);
       mdelay(1000);
      fdisplay(keydat);
      mdelay(1000);
      stb=1;
    }

    stb=1;
    //vfddisplay(0xc3,0x0000);
    // fdisplay(keydat);

    }
    //-----------------------------------------------------------------------------------
    //-----------------------------------------------------------------------------------
    void main()
    {  //register keyvalue;
       //INT16U i=0;
      // for(i=0;i<65536;)
      // {fdisplay(i);i=i+17;}
       fdisplay(541263259);
       //vfddisplay(0xd8,dd[3]);
      while(1)
       {
         vfdkey();

        //mdelay(500);
        //vfddisplay(0xd8,0x0000);
       // mdelay(500);
       // vfddisplay(0xd8,dd[8]);
        }
    }
    踩过的脚印

    该用户从未签到

    发表于 2014-2-26 11:44:05 | 显示全部楼层
    消息来自- 北京
    好文!
    回复

    使用道具 举报

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

    本版积分规则

    QQ|Archiver|手机版|小黑屋|数字电视开发网 ( 京ICP备16008897号-5 )

    GMT+8, 2026-6-2 03:04 , Processed in 0.138036 second(s), 24 queries , Gzip On.

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

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