⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled__.c

📁 基于PT16312的一款VFD控制程序,实现了基本的读写和显示功能..
💻 C
字号:
#include<mega16.h>
	#ifndef __SLEEP_DEFINED__
	#define __SLEEP_DEFINED__
	.EQU __se_bit=0x40
	.EQU __sm_mask=0xB0
	.EQU __sm_powerdown=0x20
	.EQU __sm_powersave=0x30
	.EQU __sm_standby=0xA0
	.EQU __sm_ext_standby=0xB0
	.EQU __sm_adc_noise_red=0x10
	.SET power_ctrl_reg=mcucr
	#endif
#include<delay.h>
#define SPI_CLK   PORTA.0
#define VFD_STB   PORTA.1
#define SPI_data  PORTA.2

  unsigned int command_1=0x02; //00000111  设置显示模式为11位11段
  unsigned int command_2=0x40; //01000000  数据设置为普通模式,地址自增,写数据到显示寄存器
  unsigned int command_3=0xc0; //11000000  设地址为00H
  unsigned int command_4=0x8b; //10001011  设显示控制,显示开,占空比10/16
  unsigned int in_data;
  unsigned char a;

void main()
{

  DDRA=0X07;
  PORTA=0X00;

  in_data=0xf0;
  VFD_STB=1;
  VFD_STB=1;
  VFD_STB=1;
  SPI_CLK=0;
  SPI_CLK=0;
  SPI_CLK=0;
  delay_us(1);
  VFD_STB=0;
  VFD_STB=0;
  delay_us(1);

  for(a=0;a<8;a++)//设置显示模式为11位11段//
    {
     SPI_CLK=0;
     SPI_CLK=0;
     SPI_CLK=0;
     delay_us(1);
      if(command_1&0x01) SPI_data=1;
        else SPI_data=0;
     command_1=(command_1<<1);
     delay_us(1);
     SPI_CLK=1;
     SPI_CLK=1;
     SPI_CLK=1;
    }

delay_us(1);
VFD_STB=1;
VFD_STB=1;
VFD_STB=1;
SPI_CLK=0;
SPI_CLK=0;
SPI_CLK=0;
delay_us(1);
VFD_STB=0;
VFD_STB=0;


for(a=0;a<8;a++)//01000000  数据设置为普通模式,地址自增,写数据到显示寄存器//
{
SPI_CLK=0;
SPI_CLK=0;
SPI_CLK=0;
delay_us(1);
if(command_2&0x01)
   SPI_data=1;
   else
   SPI_data=0;
   command_2=(command_2<<1);
delay_us(1);
  SPI_CLK=1;
  SPI_CLK=1;
  SPI_CLK=1;
  }
  delay_us(1);
VFD_STB=1;
VFD_STB=1;
VFD_STB=1;
delay_us(1);
VFD_STB=0;
delay_us(1);

for(a=0;a<8;a++)//11000000  设地址为00H//
{
SPI_CLK=0;
SPI_CLK=0;
SPI_CLK=0;
delay_us(1);
if(command_3&0x01)
   SPI_data=1;
   else
   SPI_data=0;
   command_3=(command_3<<1);
delay_us(1);
  SPI_CLK=1;
  SPI_CLK=1;
  SPI_CLK=1;
  delay_us(1);
  }

VFD_STB=0;
VFD_STB=0;
in_data=0xf0;
for(a=0;a<8;a++)//输入数据0XFF//
{
delay_us(1);
SPI_CLK=0;
SPI_CLK=0;
SPI_CLK=0;
delay_us(1);
if(in_data&0x01)
   SPI_data=1;
   else
   SPI_data=0;
   in_data=in_data<<1;

 delay_us(1);

   SPI_CLK=1;
   SPI_CLK=1;
   SPI_CLK=1;
   delay_us(1);
}

for(a=0;a<8;a++)//显示输入数据0XFF//
{
delay_us(1);
SPI_CLK=0;
SPI_CLK=0;
SPI_CLK=0;
delay_us(1);
if(command_4&0x01)
   SPI_data=1;
   else
   SPI_data=0;
   command_4=(command_4<<1);
delay_us(1);
  SPI_CLK=1;
  SPI_CLK=1;
  SPI_CLK=1;
  delay_us(1);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -