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

📄 zq9712驱动测试程序.lst

📁 ZQ9712与SC16722的驱动程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V8.02   ZQ9712驱动测试程序                                                    06/03/2008 08:45:01 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ZQ9712驱动测试程序
OBJECT MODULE PLACED IN ZQ9712驱动测试程序.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ZQ9712驱动测试程序.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /*晶振22.1184M,AT89S52*/
   3          /*包含的库文件*/
   4          #pragma small
   5          #pragma CODE DEBUG SYMBOLS OBJECTEXTEND
   6          //#include "..\includes\TypeDef.h"
   7          #include <reg52.h>
   8          #include <stdio.h>
   9          #include <math.h>
  10          #define  uchar  unsigned  char
  11          #define  ulint  unsigned  long int
  12          #define  uint   unsigned  int
  13          /***********************************************/
  14           //uchar code color_data[8]={7,6,5,3,4,2,1,0};//黑,红,绿,蓝,黄,紫,青,白//阳码
  15           uchar code color_data[8]={0,4,2,1,6,5,3,7};//黑,红,绿,蓝,黄,紫,青,白//阳码
  16          /***************************************************/
  17                                    /*定义颜色控制端口*/
  18          sbit   DIN_ZQ9712=P1^3;/*蓝线 ZQ9712的数据输入*/
  19          sbit   CKIN_ZQ9712=P1^2;/*绿线  ZQ9712的时钟*/
  20          sbit   LIN_ZQ9712=P1^1;/*红线  ZQ9712的数据锁存*/
  21          sbit   OEIN_ZQ9712=P1^0;/*黄线  ZQ9712的数据使能*/
  22          uchar te=1;
  23           /*********************延时函数*************
  24          函数原型:void dely(ulint timepara);
  25          功    能:延时等待,参数timepara为延时时间*/
  26          void delay(ulint timepara)
  27          {ulint mpara;
  28   1              mpara=0;
  29   1              do
  30   1          {
  31   2              mpara=mpara+1;
  32   2              }
  33   1              while (mpara!=timepara);
  34   1      }
  35          /*********************延时函数*************
  36          函数原型:void dely(ulint timepara);
  37          功    能:延时等待,参数timepara为延时时间*/
  38          void delays(ulint timepara)
  39          {ulint i;
  40   1              for(i=0;i<timepara;i++)
  41   1              {delay(207);//22.1184M ---207---0.005S=5ms 
  42   2              }
  43   1      }
  44          
  45          sbit   DQX=P2^3;
  46          sbit   CLKX=P2^2;
  47          sbit   STBX=P2^1;
  48          sbit   ENX=P2^0;
  49          
  50          sbit   dig1=P0^3;
  51          sbit   dig2=P0^2;
  52          sbit   dig3=P0^1;
  53          sbit   dig4=P0^0;
  54          uchar code xian_data[13]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C};
  55          /***************************************************/
C51 COMPILER V8.02   ZQ9712驱动测试程序                                                    06/03/2008 08:45:01 PAGE 2   

  56          /*函数原型:void stb_data(void);
  57          功    能:锁存有效*/
  58          void stbx_data(void)
  59          {   STBX=0;
  60   1              STBX=1;
  61   1          delay(5);
  62   1              STBX=0;
  63   1              delay(5);
  64   1      }
  65          /*********************向由低位到高位发送一个像素的数据函数*************
  66          函数原型:send_byte_lsbtomsb(uint8 bt);
  67          功    能:向发送一个像素,参数bt为要发送的数据*/
  68          void sendx( uchar bt1)
  69          {    uint i;
  70   1          for(i=0;i<8;i++)
  71   1               {CLKX = 0;//将时钟线置低
  72   2                DQX =(bt1 & 0x01)?1:0;//判断当前位为1还是为0;当为1时将数据线置高;当为0时将数据线置低;
  73   2                CLKX = 1;//将时钟线置高
  74   2                bt1>>=1;//将当前数据右移一位,准备与0x01进行比较
  75   2           }
  76   1      }
  77          void ledK(int n)    //数码管显示及数据处理程序 
  78          {   sendx(xian_data[n]);
  79   1          stbx_data();
  80   1          ENX=0;
  81   1         dig1=0;dig2=0;dig3=0;dig4=1;
  82   1       }
  83          
  84          
  85          /*********************ZQ9712数据锁存函数*************
  86          函数原型:void stb_data_ZQ9712(void);
  87          功    能:ZQ9712数据锁存*/
  88          void stb_data_ZQ9712(void)
  89          {   uchar i;
  90   1              LIN_ZQ9712=1;
  91   1          for(i=0;i<2;i++);
  92   1              LIN_ZQ9712=0;
  93   1      }
  94          /*********************向由低位到高位ZQ9712发送一个像素的数据函数*************
  95          函数原型:send_byte_lsbtomsb(uint8 bt);
  96          功    能:向ZQ9712发送一个像素,参数bt为要发送的数据*/
  97          void send_3bit_lsbtomsb( uchar bt1,det)
  98          {     uint i;
  99   1               CKIN_ZQ9712 = 0;//将时钟线置低
 100   1               //bt1=7-bt1;
 101   1          for(i=0;i<3;i++)
 102   1               { 
 103   2                       DIN_ZQ9712 =(bt1 & 0x01)?1:0;//判断当前位为1还是为0;当为1时将数据线置高;当为0时将数据线置低;
 104   2                   CKIN_ZQ9712 = 1;//将时钟线置高
 105   2               CKIN_ZQ9712 = 0;//将时钟线置低
 106   2                   bt1>>=1;//将当前数据右移一位,准备与0x01进行比较
 107   2           }
 108   1              if(det==1) 
 109   1              {OEIN_ZQ9712=1;
 110   2              OEIN_ZQ9712=0;}
 111   1      }
 112          /*********************向ZQ9712发送N个某像素的函数*************
 113          函数原型:void send_n_byte(n,bt);
 114          功    能:向ZQ9712发送n个bt字节*/
 115          void send_n_3bit(register uint k,uchar bt1,det)
 116          { 
 117   1       while(k!=0) 
C51 COMPILER V8.02   ZQ9712驱动测试程序                                                    06/03/2008 08:45:01 PAGE 3   

 118   1        {
 119   2         send_3bit_lsbtomsb(bt1,det);
 120   2         k--;
 121   2        }
 122   1      }
 123          
 124          //ZQ9712颜色跳变函数
 125          //i是当前颜色的地址
 126          //num有多少个像素点
 127          tiaobian(uchar i,num,det)
 128          {
 129   1       send_n_3bit(num,color_data[i],1);
 130   1       stb_data_ZQ9712();
 131   1      if(det) delays(500);
 132   1      
 133   1      }
 134          liushui(uchar i,j,num)
 135          {uchar k;
 136   1      for(k=1;k<num+1;k++)
 137   1        {
 138   2         send_n_3bit(k,color_data[i],1);
 139   2         send_n_3bit(num-k,color_data[j],1);
 140   2         stb_data_ZQ9712();
 141   2         delays(100);
 142   2        }
 143   1      }
 144          
 145          /*******************************************渐变程序开始*************************************/
 146          uchar Gradation_Counter =0;//定义当前灰度计数器
 147          #define Gradation_level 16//定义灰度级
 148          uchar Gradation_level_Counter =0;//定义灰度级计数器
 149          #define  Gradation_level_time_Constant  1000//每一级灰度的显示时间常数
 150          ulint Gradation_level_time =0;//每一级灰度的显示时间计数器
 151          bit Process_mark =0;//  (最亮-最暗)与(最暗-最亮)两过程判断标志
 152          bit Cycle_mark =1;//为0时表示经历了(最亮-最暗)到(最暗-最亮)的过程了
 153          jianbian_camp()
 154          {       Gradation_level_Counter++;
 155   1              if(Gradation_level_Counter==0xff)Gradation_level_Counter=0;
 156   1              Gradation_level_time++;
 157   1              if (Gradation_level_time==Gradation_level_time_Constant)
 158   1                      {
 159   2                              if(Process_mark==0)//最暗-最亮
 160   2                                      {
 161   3                                              Gradation_Counter++;
 162   3                                              if(Gradation_Counter==Gradation_level)Process_mark=1;
 163   3                                      }
 164   2                              else    //最亮-最暗
 165   2                                      {
 166   3                                              Gradation_Counter--;
 167   3                                              if(Gradation_Counter==1)
 168   3                                                      {
 169   4                                                              Process_mark=0;
 170   4                                                              Cycle_mark=0;
 171   4                                                      }
 172   3                                      }
 173   2                      Gradation_level_time=0; 
 174   2                      }
 175   1              if(Gradation_level_Counter<Gradation_Counter) OEIN_ZQ9712=0; else  OEIN_ZQ9712=1;
 176   1      }
 177          jianbian()
 178          {uchar i=0;
 179   1      Cycle_mark=0;
C51 COMPILER V8.02   ZQ9712驱动测试程序                                                    06/03/2008 08:45:01 PAGE 4   

 180   1      while(1)
 181   1        {
 182   2              if(Cycle_mark==0)
 183   2                      {
 184   3                              ET0=0;
 185   3                              i++;
 186   3                              if((i==8)) break;
 187   3                      //      if((i==8)||(te==0)) break;
 188   3                              send_n_3bit(3,color_data[i],0);
 189   3                               stb_data_ZQ9712();
 190   3                              Cycle_mark=1;
 191   3                      }
 192   2                //if(te==0) break;
 193   2                jianbian_camp();   
 194   2        }
 195   1      }
 196          uchar  code composecolor_data2[4][3]={
 197                                                                           {4,4,4},             //红               
 198                                                                                   {6,6,6},       
 199                                                                                   {3,3,3},
 200                                                                                   {2,2,2},
 201                                                                                   }; 
 202          uchar  code composecolor_data3[5][2]={
 203                                                                           {4,4},       //红               
 204                                                                                   {1,1},       
 205                                                                                   {5,5},
 206                                                                                   {2,2},
 207                                                                       {6,6},
 208                                                                                   }; 
 209          uchar  length=2;   //       颜色数组 的列数
 210          uchar  width=5;    //           颜色数组 的行数
 211          uint list=80;           //一行有多少个像素;
 212          /******************************方案一***************************/
 213             //  N组多色彩追逐流水,颜色组合通过改变数组来实现
 214          /****************************************************************/
 215          void liushui_composecolor(uchar *p)
 216          {  
 217   1          uint i,j,k; 
 218   1              uchar *m;
 219   1              m=p;
 220   1      for(k=0;k<list;k++)
 221   1       {if(te==1)
 222   2              {
 223   3        for(i=0;i<width;i++)
 224   3         {if(te==1)
 225   4                   {
 226   5               for(j=0;j<5;j++)
 227   5                { if(te==1)
 228   6                   {
 229   7                    p=m+i*length+j%length;
 230   7                        send_n_3bit(1,*p,1);
 231   7                stb_data_ZQ9712();
 232   7                delays(10);
 233   7                        //liangdu(levoe,500,2);
 234   7                       }else break;
 235   6            }}else break;
 236   4          }}else break;
 237   2       }
 238   1      }
 239          
 240          /****主程序*******************/
 241          void  main(void)
C51 COMPILER V8.02   ZQ9712驱动测试程序                                                    06/03/2008 08:45:01 PAGE 5   

 242          {uchar *p,i;
 243   1              //OEIN_ZQ9712=0;//使能ZQ9712
 244   1         OEIN_ZQ9712=1;
 245   1         //OEIN_ZQ9712=0;
 246   1              tiaobian(0,3,0);
 247   1              while(1)
 248   1                      {   i=0;
 249   2                          i++;
 250   2                          ledK(i);
 251   2                          length=2;
 252   2                      width=5;
 253   2                      p=&composecolor_data3[0][0];  
 254   2                  //liushui_composecolor(p); 
 255   2                              i++;
 256   2                          ledK(i);
 257   2                      tiaobian(1,3,1);
 258   2                              i++;
 259   2                          ledK(i);
 260   2                              tiaobian(2,3,1);
 261   2                              i++;
 262   2                          ledK(i);
 263   2                              tiaobian(3,3,1);
 264   2                              i++;
 265   2                          ledK(i);
 266   2                              tiaobian(4,3,1);
 267   2                              i++;
 268   2                          ledK(i);
 269   2                              tiaobian(5,3,1);
 270   2                              i++;
 271   2                          ledK(i);
 272   2                              tiaobian(6,3,1);
 273   2                              i++;
 274   2                          ledK(i);
 275   2                              tiaobian(7,3,1);
 276   2                              /*i++;
 277   2                          ledK(i);
 278   2                              tiaobian(0,3,1);
 279   2                              i++;
 280   2                          ledK(i);
 281   2                              liushui(0,1,3);
 282   2                              i++;
 283   2                          ledK(i);
 284   2                              liushui(0,2,3);
 285   2                              i++;
 286   2                          ledK(i);
 287   2                              liushui(0,3,3);
 288   2                              i++;
 289   2                          ledK(i);
 290   2                              liushui(0,4,3);
 291   2                              i++;
 292   2                          ledK(i);
 293   2                              liushui(0,5,3);
 294   2                              i++;

⌨️ 快捷键说明

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