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

📄 vfd.lst

📁 收音头程序+VFD驱动+遥控接收(LC72130+LA1823)
💻 LST
字号:
C51 COMPILER V7.10   VFD                                                                   03/27/2005 22:39:54 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE VFD
OBJECT MODULE PLACED IN vfd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE vfd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #define uchar unsigned char
   2          #define uint  unsigned int
   3          #define ulong unsigned long
   4          #define cm1 co1.co1
   5          #define cm2 co2.co2
   6          #define cm3 co3.co3
   7          #define cm4 co4.co4
   8          #include <reg52.h>
   9          #include <mylib.h>
  10          #define cmdd 0
  11          #define datt 1
  12          sbit dat=P1^3;
  13          sbit clk=P1^2;
  14          sbit stb=P1^1;
  15          extern uchar remkey;
  16          uchar code dis[10]={0xf7,0xa4,0xeb,0xed,0xbc,0xdd,0xdf,0xe4,0xff,0xfd};
  17          union
  18          {
  19            uchar dat;
  20            struct
  21           {
  22             uchar dms: 3; //选择显示屏硬件的栅和段的位数
  23             uchar dnc: 3; //数据空位
  24             uchar ad1: 2; //此命令的地址值固定为0X00
  25           }co1;
  26          }co1;
  27          union 
  28          {
  29            uchar dat;
  30            struct
  31           {
  32            uchar fru: 2; //功能选择:00:WRITE DATA TO DISRAM 01:WRITE DATA TO LED 02:READ DATA FROM KEY 03:READ
             - DATA FROM SW
  33            uchar mad: 1; //0递增 1指定地址
  34            uchar mst: 1; //0正常 1测试模式
  35            uchar dnc: 2; //数据空位
  36            uchar ad2: 2; //此命令的地址值固定为0X01
  37           }co2;
  38          }co2;
  39          union
  40          {
  41            uchar dat;
  42            struct
  43           {
  44            uchar add: 5; //16312内部DISRAM地址选择
  45            uchar dnc: 1; //数据空位
  46            uchar ad3: 2; //此命令的地址值固定为0X03
  47           }co3;
  48          }co3;
  49          union
  50          {
  51            uchar dat;
  52            struct
  53           {
  54             uchar pwm: 3; //输出点亮时间选择(可以调节亮度)
C51 COMPILER V7.10   VFD                                                                   03/27/2005 22:39:54 PAGE 2   

  55             uchar dis: 1; //0显示关闭
  56             uchar dnc: 2; //数据空位
  57             uchar ad4: 2; //此命令的地址值固定为0X02
  58           }co4;
  59          }co4;
  60          
  61          void wrd(uchar disno,bit lei)  //写一个字节的命令或者数据(由LEI控制是写数据还是写命令)
  62          {
  63   1        uchar a;
  64   1        if(lei)
  65   1        goto s;
  66   1        stb=1;
  67   1        stb=1;
  68   1        stb=0;
  69   1       s:  for(a=0;a<8;a++)
  70   1          {
  71   2           clk=1;
  72   2           clk=1;
  73   2               clk=0;
  74   2           clk=0;
  75   2            if(disno&0x01)
  76   2              dat=1;
  77   2            else
  78   2              dat=0;
  79   2              disno=disno>>1;
  80   2              clk=1;
  81   2              clk=1;
  82   2                      clk=1;
  83   2              clk=1;
  84   2           }
  85   1      }
  86          void inivfd(void)
  87           {
  88   1        cm1.dms=0x01;//设置为5区 16段
  89   1        cm1.ad1=0x00;
  90   1        cm2.mad=0x01;//地址模式为指定地址
  91   1        cm2.mst=0x00;//取消测试
  92   1        cm2.ad2=0x01;
  93   1        cm3.ad3=0x03;
  94   1        cm4.pwm=0x07;//亮度为最亮
  95   1        cm4.dis=0x01;//打开显示
  96   1        cm4.ad4=0x02;
  97   1       }
  98           /////////////////////////////************以下为主程序*************************//////////////////////
  99          void wrvfd(uchar addr,uchar dat) //向VFD指定地址写数据
 100            {
 101   1        inivfd();
 102   1        wrd(co1.dat,cmdd);
 103   1        stb=1;
 104   1        cm2.fru=0x00;
 105   1        wrd(co2.dat,cmdd);
 106   1        stb=1;
 107   1        cm3.add=addr;
 108   1        wrd(co3.dat,cmdd);
 109   1        wrd(dat,datt);
 110   1        stb=1;
 111   1        wrd(co4.dat,cmdd);
 112   1        stb=1;
 113   1        }
 114          void wrled(uchar leddata) //控制16312的四个输出口数据存放在LEDDATA的低四位
 115          {
 116   1        inivfd();
C51 COMPILER V7.10   VFD                                                                   03/27/2005 22:39:54 PAGE 3   

 117   1        cm2.fru=0x01;
 118   1        wrd(co2.dat,cmdd);
 119   1        wrd(leddata,datt);
 120   1        stb=1;
 121   1      }                                                
 122          ulong rdkey()                   //读键盘
 123          {ulong key=0;
 124   1        uchar i;
 125   1        inivfd();
 126   1        cm2.fru=0x02;
 127   1        wrd(co2.dat,cmdd);
 128   1        for(i=0;i<24;i++)
 129   1        {
 130   2         clk=1;
 131   2         clk=1;
 132   2         clk=0;
 133   2         clk=0;
 134   2         clk=0;
 135   2         clk=1;
 136   2         dat=1;
 137   2         if(dat==1)
 138   2         key=(key<<1)+1;
 139   2         else
 140   2         key=(key<<1);
 141   2        }
 142   1        switch(key)
 143   1        {
 144   2        case 0x00800000:remkey=0xc7;break;
 145   2        case 0x00200000:remkey=0x47;break;
 146   2        }
 147   1        return(key);
 148   1      }
 149          
 150          vfddigit(ulong ch)
 151          {       
 152   1              uchar h[5];
 153   1              h[4]=(ch/10000);
 154   1              h[3]=((ch%10000)/1000);
 155   1              h[2]=((ch%1000)/100);
 156   1              h[1]=((ch%100)/10);
 157   1              h[0]=(ch%10);                   //将16进制转换成10进制显示
 158   1              
 159   1              wrvfd(0x00,dis[h[0]]&((dis[h[1]]&0x01)?0xff:0x7f));
 160   1              wrvfd(0x01,dis[h[1]]>>1);
 161   1          wrvfd(0x02,dis[h[2]]&((dis[h[3]]&0x01)?0xff:0x7f));
 162   1              if(h[3])
 163   1              wrvfd(0x03,dis[h[3]]);
 164   1              else
 165   1              wrvfd(0x03,0x00);          //根据供应商提供的VFD资料来写正确显示的算法,否则显示错乱!
 166   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    578    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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