ATmega64程序编译正常,但在PT6302控制芯片驱动VFD屏无法显示

2019-03-24 20:24发布

这是我从能显示的51测试程序中改编成AVR的程序,但烧入芯片后却无法显示,本人是初学者,恳请那位高人指点问题出在哪。
显示模块是淘宝购置 12SS42DA1-VFD屏
#include<iom64v.h>
#include <macros.h>

#define uchar unsigned char
#define uint  unsigned int                           
//////////////变量定义     /////////////
#define cs  PE5
#define clk PE6
#define sda PE7
#define cs_H  PORTE |= BIT(5)
#define cs_L  PORTE &=~BIT(5)
#define clk_H  PORTE |= BIT(6)
#define clk_L  PORTE &=~BIT(6)
#define sda_H  PORTE |= BIT(7)
#define sda_L  PORTE &=~BIT(7)
uchar data_table11[12]="  ver  4.3  ";
uchar data_table12[12]=" TEST OK  ";
void delay();
void delay2();
//void write_6302(uchar w_data);
//void VFD_cmd(uchar command);
//void VFD_addr(uchar addr);
//void VFD_init();
void delay()
{
   int i;
   for(i=0;i<10;i++);
}
void delay2()
{
   int i,j;
   for(i=0;i<500;i++)
       {
         for(j=0;j<10;j++)
       {
   delay();
       }
       }
}
void write_6302(uchar w_data)
{
   unsigned char i;
  
   for(i=0;i<8;i++)
       {
         
   clk_L;
         if( (w_data&0x01) == 0x01)
            {
              sda_H;
            }
       else
            {
              sda_L;
            }
         w_data>>=1;
         delay();
   clk_H;               
         delay();
       }

}
void VFD_cmd(uchar command)
{
     cs_L;
     delay();
     write_6302(command);
     cs_H;
     delay();
}
void VFD_addr(uchar addr)
{
     cs_L;
     delay();
     write_6302(addr);
     delay();
}
void VFD_init()
{
    VFD_cmd(0x64);//设置显示位数
    VFD_cmd(0x70);//启动所有显示位        
    VFD_cmd(0x50);//设置亮度
}
void main()
{        
    uint i;
    //PORTE = 0x00;
    //DDRE  = 0xFF;
    VFD_init();
     do
      {
      
  VFD_addr(0x10);//设置显示位地址
        for(i=0;i<12;i++)
            {
              write_6302(data_table11[i]-0x10);
            }
        delay2();
        cs_H;
        cs_L;
  
        VFD_addr(0x10);
  
        for(i=0;i<12;i++)
           {        
              write_6302(data_table12[i]-0x10);
           }        
        delay2();
        cs_H;
        cs_L;
      }
   while(1);
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
zhoujzd
2019-03-25 07:36
没人答复,自己来回答吧,问题解决了

一周热门 更多>