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

📄 v.lst

📁 基于单片机的设计的电压表源程序 很不错的 希望对大家有帮助
💻 LST
字号:
C51 COMPILER V7.50   V                                                                     04/15/2009 17:14:17 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE V
OBJECT MODULE PLACED IN v.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE v.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include"absacc.h"
   3          #define lcd_1602_DW  XBYTE[0xfdff]
   4          #define lcd_1602_CW  XBYTE[0xfcff]
   5          #define lcd_1602_CR  XBYTE[0xfeff]
   6          #define lcd_1602_DR  XBYTE[0xffff]
   7          #define lcd_line_1                              0x00
   8          #define lcd_line_2                              0x40
   9          #define LCD_ClEAR_SCREEN                0x01    //清屏
  10          #define LCD_AC_UP                           0x06        //地址计数器自动+1
  11          #define LCD_SET_7                           0x38    //8位接口,双行显示,5*7字符
  12          #define LCD_SHOW                            0x0c    //显示开
  13          #define uchar unsigned char
  14          #define uint unsigned int
  15          sbit  key0 = P3^3;
  16          sbit  key1 = P3^2;
  17          sbit  SD0 = P1^0;
  18          sbit  CS = P1^2;
  19          sbit  CLK = P1^3;
  20          sbit  DIN = P1^1;
  21           sbit d = P3^4;
  22          unsigned long temperature;
  23          unsigned long  tmp;//数据类型要注意
  24          
  25          void WHILE_BUSY(void)
  26          {
  27   1              while((bit)(lcd_1602_CR & 0x80)) ;
  28   1      }
  29            void delay(uint x)
  30           {
  31   1          while(--x);
  32   1       }
  33          //通过LCD1602内部ROM显示字符
  34           void print0(uchar line,uchar column,uchar n)
  35           {
  36   1              WHILE_BUSY();
  37   1              switch(line)
  38   1              {
  39   2               case 1:
  40   2              lcd_1602_CW = 0x80 + column;//光标定位
  41   2              delay(10);
  42   2                  lcd_1602_DW =0x30+n;
  43   2                  break;
  44   2               case 2:
  45   2              lcd_1602_CW = 0xc0 + column;//光标定位
  46   2              delay(10);
  47   2                  lcd_1602_DW =0x30+n;//指针加一,光标前移
  48   2                      break;
  49   2               default: break;
  50   2            }
  51   1       }
  52          void Print(uchar *str,uchar addr)
  53          {
  54   1       
  55   1        WHILE_BUSY();
C51 COMPILER V7.50   V                                                                     04/15/2009 17:14:17 PAGE 2   

  56   1        lcd_1602_CW = 0x80|addr;
  57   1        while(*str!='\0')
  58   1       {
  59   2         WHILE_BUSY();
  60   2         lcd_1602_DW = *str;//直接针对外部地址些 movx指令  
  61   2         str++;
  62   2         delay(50);
  63   2       }
  64   1      }
  65          void lcd_1602_Init(void)
  66          { 
  67   1        WHILE_BUSY();
  68   1        lcd_1602_CW =  LCD_SET_7;
  69   1        WHILE_BUSY();
  70   1        lcd_1602_CW  =  LCD_ClEAR_SCREEN;
  71   1        WHILE_BUSY();
  72   1        lcd_1602_CW = LCD_AC_UP;
  73   1         WHILE_BUSY();
  74   1        lcd_1602_CW = LCD_SHOW;
  75   1      }
  76          
  77          
  78          uint TLC_1543_addr(uchar addr) 
  79          {
  80   1      
  81   1      uint date_out=0;
  82   1      uchar k;
  83   1      uchar i;
  84   1      uchar j;
  85   1      CLK=0;
  86   1      CS=0;
  87   1      for (i=0;i<4;i++) 
  88   1      {
  89   2      DIN=(bit)(addr&0x08);CLK=1;CLK=0;
  90   2      addr<<=1;
  91   2      }
  92   1      for (j=0;j<6;j++) //填充6 个CLOCK
  93   1      {
  94   2      CLK=1;CLK=0;
  95   2      }
  96   1      CS=1;
  97   1      delay(5);
  98   1      CS=0; //等待AD 转换
  99   1      delay(5);
 100   1      for(k=0;k<10;k++)
 101   1           {
 102   2             SD0 = 1;
 103   2             CLK = 1;
 104   2             date_out<<=1;
 105   2             if(SD0) date_out += 1;
 106   2             CLK = 0;
 107   2           }
 108   1           return(date_out);
 109   1      
 110   1      }
 111          diaplay_TLC_1543(void)
 112          {
 113   1                  unsigned long  tmp;//数据类型要注意
 114   1                      Print("made by ali",lcd_line_1+3);
 115   1                      Print("voltage",lcd_line_2);
 116   1                      print0(2,7, 10);//":"
 117   1                      
C51 COMPILER V7.50   V                                                                     04/15/2009 17:14:17 PAGE 3   

 118   1              while(1)
 119   1               {
 120   2                              
 121   2                       Print("made by ali",lcd_line_1+3);
 122   2                           Print("voltage",lcd_line_2);
 123   2                           print0(2,7, 10);//":"
 124   2                           tmp = TLC_1543_addr(0x00);
 125   2                               tmp=tmp*50000/1024;
 126   2                       print0(2,8, tmp/10000);
 127   2                       print0(2,10,tmp%10000/1000);
 128   2                               print0(2,11,tmp%10000%1000/100);
 129   2                       print0(2,12,tmp%1000%100/10);
 130   2                               print0(2,13,tmp%10);
 131   2                       Print(".",lcd_line_2+9);
 132   2           }
 133   1       }
 134          
 135          void main()
 136          {
 137   1          lcd_1602_Init();
 138   1          diaplay_TLC_1543();
 139   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    526    ----
   CONSTANT SIZE    =     22    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       4
   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 + -