找回密码
 立即注册

QQ登录

只需一步,快速开始

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

pt6312 VFD屏幕单片机驱动程序

[复制链接]
跳转到指定楼层
楼主
ID:104835 发表于 2016-2-4 03:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*VFD專用IC練習 20111104 顯示問題澄清 全部送0x0f 看是時序問題過快還是字位置 開始的位置從00 開始  另外確認連續位址增加的模式 */
#include<reg52.h>
//--------------------pt6312-----------------------
sbit STB=P3^3; // pt6312 strobe
sbit DIN=P3^4; // pt6312 data        
sbit CLK=P3^5; // pt6312 clock        
unsigned char TempData[12]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0,0xff,0,0,0};//第一步全都沒變
unsigned char adr;
unsigned char cmd1;
unsigned char cmd2;
unsigned char cmd3;
unsigned char cmd4;
bit Dat_flag;//data flag 不需要 stb變為hi
//STB動作
#define STB_CLR        STB=0//电平置低
#define STB_SET        STB=1//电平置高

//DIN 動作
#define DIN_CLR        DIN=0//电平置低
#define DIN_SET        DIN=1//电平置高
//#define IO_R        SDA  //电平读取

// CLK信号
#define CLK_CLR          CLK=0//时钟信号
#define CLK_SET          CLK=1//电平置高


void PT6312_Write(unsigned char qdata)// 適用於命令
{
unsigned char k;
STB_CLR; //初始
for(k=0;k<8;k++)
  {
    CLK_CLR;        
   if(qdata & 0x01)
     {
       DIN_SET;
     }
   else
      {
        DIN_CLR;
       }
    CLK_SET;
   qdata>>=1;
  }

  if (Dat_flag)
  {
   CLK_CLR;
   }
   else
   {
    STB_SET;
        }
         CLK_SET;//5 pulse time delay
          CLK_SET;//5 pulse time delay
           CLK_SET;//5 pulse time delay
            CLK_SET;//5 pulse time delay
                 CLK_SET;//5 pulse time delay
}
/*-------------------------------------------


//----------------------------------------------*/

void PT6312_Init(void)
{
CLK_SET; //初始設為 HI
STB_SET; //初始設為 HI
PT6312_Write (cmd1);//CMD1 設定寫入
}


void main(void)//
{
   unsigned char i;
PT6312_Init();
cmd1=0x02 ;//6 dig 16 segment
cmd2=0x40 ;
Dat_flag=1;//
cmd3=0xc0 ;//start addr 00h
cmd4=0x8a ;//
while(1) //關掉會全亮度power off無效
{
   Dat_flag=0;//
  PT6312_Write (cmd2);//CMD2 每字需變更位址 48 test mode work but only one word [no work 4c..44]
   Dat_flag=1;//
  PT6312_Write (cmd3);//CMD3 start address0x01 改變起始位址家1 [no work c1..c3]
//  Dat_flag=1;//
  for (i=0;i<12;i++)
{

  adr=TempData[ i];
  PT6312_Write (adr);
  }
//-------
  STB_SET;
         CLK_SET;//5 pulse time delay
          CLK_SET;//5 pulse time delay
           CLK_SET;//5 pulse time delay
            CLK_SET;//5 pulse time delay
                 CLK_SET;//5 pulse time delay
//--------
   Dat_flag=0;//
PT6312_Write (cmd1);//CMD1 6dig 16segment [no work02..01]
PT6312_Write (cmd4);//CMD4 6/16 pulse width dim control  8a..83 work
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:106060 发表于 2020-5-29 09:48 | 只看该作者
多谢分享.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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