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

📄 main.lst

📁 uzz9001驱动程序
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  08/30/2011 00:53:05 PAGE 1   


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

line level    source

   1          #include"reg51.h"
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          //LCD端口要根据实际的连接情况分配IO
   5          #define  busy 0x80
   6          sbit RS=P3^7;
   7          sbit RW=P3^6;
   8          sbit E=P3^5;
   9          sfr LCDData=0x80;//0x80--P0,0X90--P1,0xa0--P2,0xb0--P3
  10          sbit da=P1^0;
  11          sbit cs=P1^1;
  12          sbit clk=P1^2;
  13          uchar dis[5];
  14          /************延时函数*/
  15          void Delay(uint i)
  16          {
  17   1        while(i--);
  18   1      }
  19          /*写指令函数*/
  20          void Write_Instruction(uchar x)
  21          {
  22   1       Delay(1000);
  23   1       E=0;
  24   1       RW=0;
  25   1       RS=0;
  26   1       LCDData=x;
  27   1       E=1;
  28   1       Delay(20);
  29   1       E=0;
  30   1       }
  31          /*写单个数据的函数*/
  32          void Write_Data(uchar x)
  33          {
  34   1       Delay(1000);
  35   1       E=0;
  36   1       RW=0;
  37   1       RS=1;
  38   1       E=1;
  39   1       LCDData=x;
  40   1       E=0;
  41   1      }
  42          /*清屏函数*/
  43          void Cls(void)
  44          {
  45   1        Write_Instruction(0x01);
  46   1      }
  47          /*写入一串字符串函数*/
  48          void Write_String(uchar x,uchar *p)
  49          { Write_Instruction(x);
  50   1        while(*p!=0x00)
  51   1       {Write_Data(*p);
  52   2        p++;
  53   2        if (x++==0x8f)
  54   2        {Write_Instruction(0xc0);}
  55   2       }
C51 COMPILER V7.20   MAIN                                                                  08/30/2011 00:53:05 PAGE 2   

  56   1      }
  57          /*初始化函数*/
  58          void InitLCD(void)
  59          {Write_Instruction(0x38);
  60   1       Delay(2000);
  61   1       Write_Instruction(0x0e);
  62   1       Delay(2000);
  63   1       Write_Instruction(0x06);
  64   1       Delay(2000);
  65   1      }
  66          /**************/
  67          void get_angue(void)
  68          {
  69   1       int value=0,value1=0;
  70   1       uchar i;
  71   1       clk=1;
  72   1       cs=1;
  73   1       cs=0;
  74   1       for(i=0;i<16;i++)
  75   1       {
  76   2        value<<=1;
  77   2        clk=0;
  78   2        if(da)
  79   2        {
  80   3         value++;
  81   3        }
  82   2        cs=1;
  83   2        if(!(value&0x4000))
  84   2        {
  85   3         value1=value&0x3f00;
  86   3         value1>>=1;
  87   3         value&=0x007f;
  88   3         value=value+value1;
  89   3        }
  90   2        else
  91   2        {
  92   3        value=0;
  93   3        }
  94   2        value=value*2/10;
  95   2        dis[0]=value/1000+0x30;
  96   2        dis[1]=value%1000/100+0x30;
  97   2        dis[2]=value%100/10+0x30;
  98   2        dis[3]=0x2e;
  99   2        dis[4]=value%10/1+0x30; 
 100   2       }
 101   1      
 102   1       /**/
 103   1      }
 104          uint uzz9001(void)
 105          {
 106   1      uchar i,tem1;
 107   1       uint t;
 108   1       i=16;
 109   1       t=0;
 110   1       
 111   1       clk=1;
 112   1       cs=1;
 113   1       Delay(5);
 114   1       cs=0;
 115   1       Delay(2); 
 116   1       for(i=0;i<16;i++)
 117   1       {
C51 COMPILER V7.20   MAIN                                                                  08/30/2011 00:53:05 PAGE 3   

 118   2        clk=0;
 119   2        Delay(2);
 120   2        clk=1;
 121   2        t=t<<1;
 122   2        if(da)
 123   2         {
 124   3          t=t+1;
 125   3         } 
 126   2        Delay(2);
 127   2       }
 128   1       cs=1;
 129   1       tem1=t;
 130   1       t=((t&0x7f00)>>1)+(tem1&0x7f);
 131   1       return(t);
 132   1      }
 133          void displaybit(uchar addr,uint d)
 134          {
 135   1       uchar i;
 136   1       i=16;
 137   1       Write_Instruction(addr);
 138   1       while(i--)
 139   1       {
 140   2        if(d&0x8000)
 141   2         Write_Data(0x31);
 142   2        else
 143   2        Write_Data(0x30);
 144   2        d=d<<1;
 145   2       }
 146   1      }
 147          /*主函数*/
 148          void main(void)
 149          {
 150   1       uint angle;
 151   1      // uchar j;
 152   1       InitLCD();//初始化液晶屏
 153   1       Write_String(0xc0,"Ang=");
 154   1       while(1)
 155   1       {
 156   2       angle=uzz9001();
 157   2       Write_Instruction(0xc4);
 158   2       Write_Data(angle/10000+0x30);
 159   2       Write_Data(angle%10000/1000+0x30);
 160   2       Write_Data(angle%10000%1000/100+0x30);
 161   2       Write_Data(angle%10000%1000%100/10+0x30);
 162   2       Write_Data(angle%10000%1000%100%10+0x30);
 163   2       Delay(0xffff);
 164   2       Delay(0xffff);
 165   2        Delay(0xffff);
 166   2        displaybit(0x80,angle);
 167   2      /* get_angue();
 168   2       Write_Instruction(0xc4);
 169   2       for(j=0;j<5;j++)
 170   2        {
 171   2          Write_Data(dis[j]); 
 172   2          Delay(20);
 173   2        }*/
 174   2       }
 175   1      }
 176          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.20   MAIN                                                                  08/30/2011 00:53:05 PAGE 4   

   CODE SIZE        =    683    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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