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

📄 e.c

📁 双STF16360EN驱动点阵VFD显示
💻 C
字号:
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
#define cm1 co1.co1
#define cm2 co2.co2
#define cm3 co3.co3
#define cm4 co4.co4
#include <reg52.h>
#define cmdd 0
#define datt 1
sbit dat=P3^2;
sbit ctl=P3^3;
sbit clk=P3^4;
sbit ctl1=P3^5;
sbit clk1=P3^6;


union 
{
  uchar dat;
  struct
 {
  uchar fru:1; //功能选择:00:WRITE DATA TO DISRAM 01:WRITE DATA TO LED 02:READ DATA FROM KEY 03:READ DATA FROM SW
  uchar mad: 1; //0递增 1指定地址
  uchar mst: 1; //0正常 1测试模式
 



 }co2;
}co2;
union
{
  uchar dat;
  struct
 {
  uchar add: 2; //16360内部DISRAM地址选择


 }co3;
}co3;
union
{
  uchar dat;
  struct
 {
   uchar pwm: 3; //输出点亮时间选择(可以调节亮度)
   uchar dis: 1; //0显示关闭


   
 }co4;
}co4;

void wrd(uchar disno,bit lei)  //写一个字节的命令或者数据(由LEI控制是写数据还是写命令)
{
  uchar a;
  if(lei)
  goto s;
  ctl=0;
  ctl=0;
  ctl=1;
 s:  for(a=0;a<8;a++)
    {
     clk=0;
     clk=0;
	  clk=1;
     clk=1;
      if(disno&0x01)
        dat=0;
      else
        dat=1;
        disno=disno>>1;
        clk=0;
        clk=0;
		  clk=0;
        clk=0;
     }
}

void wrd1(uchar disno,bit lei)  //写一个字节的命令或者数据(由LEI控制是写数据还是写命令)
{
  uchar a;
  if(lei)
  goto s;
  ctl1=0;
  ctl1=0;
  ctl1=1;
 s:  for(a=0;a<8;a++)
    {
     clk1=0;
     clk1=0;
	  clk1=1;
     clk=1;
      if(disno&0x01)
        dat=0;
      else
        dat=1;
        disno=disno>>1;
        clk1=0;
        clk1=0;
		  clk1=0;
        clk1=0;
     }
}
void inivfd(void)
 {
  cm2.mad=0x01;//地址模式为指定地址
  cm2.mst=0x00;//取消测试

  cm4.pwm=0x07;//亮度为最亮
  cm4.dis=0x01;//打开显示
 }


 /////////////////////////////************以下为主程序*************************//////////////////////
void wrvfd(uchar addr,uchar dat) //向VFD指定地址写数据
  {
  inivfd();
  wrd(co2.dat,cmdd);
  ctl=0;
  cm3.add=addr;
  wrd(co3.dat,cmdd);
  wrd(dat,datt);
  ctl=0;
  wrd(co4.dat,cmdd);
  ctl=0;
  }
  void wrvfd1(uchar addr,uchar dat) //向VFD指定地址写数据
  {
  inivfd();
  wrd1(co2.dat,cmdd);
  ctl1=0;
  cm3.add=addr;
  wrd(co3.dat,cmdd);
  wrd(dat,datt);
  ctl1=0;
  wrd(co4.dat,cmdd);
  ctl1=0;
  }


						 


main()//                         测试程序
{
uchar i;
for(i=0;i<16;i++)
wrvfd(i,0xff);	   //点亮VFD荧光屏上所有的数据段
wrvfd1(i,0xff);



}


⌨️ 快捷键说明

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