|
ATmega64程序编译正常,但在PT6302控制芯片驱动VFD屏无法显示
[复制链接]
这是我从能显示的51测试程序中改编成AVR的程序,但烧入芯片后却无法显示,本人是初学者,恳请那位高人指点问题出在哪。
显示模块是淘宝购置 12SS42DA1-VFD屏
#include
#include
#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);
}
|
|