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

📄 lesson 8_9.lst

📁 有51单片机C语言基础后在较短时间内学会51单片机C。
💻 LST
字号:
C51 COMPILER V8.05a   LESSON_8_9                                                           02/04/2009 22:45:08 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE LESSON_8_9
OBJECT MODULE PLACED IN lesson 8_9.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lesson 8_9.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit lcdrs=P3^0;
   5          sbit lcden=P3^1;
   6          sbit sda=P3^7;
   7          sbit sck=P3^6;
   8          uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
   9          void write_cmd(uchar cmd);         //还要声明 
  10          void write_data(uchar data1);
  11          void sda_0() {sda=0;;;;}
  12          void sda_1() {sda=1;;;;}
  13          void sck_0() {sck=0;;;;}
  14          void sck_1() {sck=1;;;;}
  15          void delay1() {;;;}
  16          void delay(uint z)
  17          {
  18   1              uint x,y;
  19   1              for(x=z;x>0;x--)
  20   1                      for(y=110;y>0;y--);
  21   1      }
  22          
  23          void init()
  24          {
  25   1              sda_1();
  26   1              sck_1();
  27   1      }
  28          //+++++++++++I2C子程序++++++++++++++++
  29          
  30          void start()  //开始信号
  31          {       
  32   1              sda_1();
  33   1              sck_1();
  34   1              sda_0();
  35   1      }
  36          
  37          void stop()   //停止
  38          {
  39   1              sda_0();
  40   1              sck_1();
  41   1              sda_1();
  42   1      }
  43          
  44          void response()  //应答
  45          {
  46   1              uchar i;
  47   1              sck_1();
  48   1              while((sda==1)&&(i<250))i++;
  49   1              sck_0();
  50   1      }
  51          
  52          void write_byte(uchar date)
  53          {
  54   1              uchar i,temp;
  55   1              temp=date;
C51 COMPILER V8.05a   LESSON_8_9                                                           02/04/2009 22:45:08 PAGE 2   

  56   1      
  57   1      
  58   1              for(i=0;i<8;i++)
  59   1              {
  60   2                      temp=temp<<1;
  61   2                      sck_0();
  62   2                      sda=CY; delay1();
  63   2                      sck_1();
  64   2              }
  65   1              sck_0();
  66   1              sda_1();
  67   1      
  68   1              response();
  69   1      }
  70          
  71          uchar read_byte()
  72          {
  73   1              uchar i,temp;
  74   1              sck_0();
  75   1              sda_1();
  76   1              for(i=0;i<8;i++)
  77   1              {
  78   2                      sck_1();        
  79   2                      temp=(temp<<1)|sda;
  80   2                      sck_0();        
  81   2              }
  82   1              response();
  83   1              return temp;
  84   1      }
  85          
  86          
  87          void write_add(uchar address,uchar data1)
  88          {
  89   1              start();
  90   1              write_byte(0xa0);       
  91   1              write_byte(address);
  92   1              write_byte(data1);      
  93   1              stop();
  94   1      }
  95          
  96          uchar read_add(uchar address)
  97          {
  98   1              uchar data1;
  99   1              start();
 100   1              write_byte(0xa0);       
 101   1              write_byte(address);
 102   1      
 103   1              start();
 104   1              write_byte(0xa1);       
 105   1              data1=read_byte();
 106   1              stop();
 107   1              return data1;
 108   1      }
 109          //------------I2C子程序-----------------
 110          
 111          //+++++++++++1602显示子程序++++++++++++++++
 112          void display(uint k)
 113          {
 114   1          uchar bai,shi,ge,temp;
 115   1              temp=k;
 116   1              bai=temp/100;
 117   1              shi=temp%100/10;
C51 COMPILER V8.05a   LESSON_8_9                                                           02/04/2009 22:45:08 PAGE 3   

 118   1              ge=temp%10;
 119   1              write_cmd(0x86);
 120   1              write_data(table[bai]);
 121   1              write_cmd(0x87);
 122   1              write_data(table[shi]);
 123   1              write_cmd(0x88);
 124   1              write_data(table[ge]);  
 125   1      }
 126          
 127          void initial_LCD()
 128          {
 129   1              lcden=0;
 130   1              write_cmd(0x38);        // 16X2 5X8显示
 131   1              write_cmd(0x0c);        //开显示 光标 闪烁
 132   1              write_cmd(0x06);        //地址指针自动加一,不移动
 133   1              write_cmd(0x01);        //清屏
 134   1              write_cmd(0x80);    //数据指针设置
 135   1      }
 136          
 137          void write_cmd(uchar cmd)
 138          {
 139   1              lcdrs=0;
 140   1              P2=cmd;
 141   1              delay(2);
 142   1              lcden=1;
 143   1              delay(5);
 144   1              lcden=0;
 145   1      }
 146          
 147          void write_data(uchar data1)
 148          {
 149   1              lcdrs=1;
 150   1              P2=data1;
 151   1              delay(2);
 152   1              lcden=1;
 153   1              delay(5);
 154   1              lcden=0;
 155   1      }
 156          //---------------1602显示子程序--------------
 157          void main()
 158          {
 159   1          uchar i,j;
 160   1              init();
 161   1              initial_LCD();
 162   1              for(i=0,j=0;i<255;i++,j++)
 163   1              {
 164   2              write_add(i,j);
 165   2              }
 166   1      
 167   1              delay(10); 
 168   1      
 169   1              for(i=0,j=0;i<255;i++,j++)
 170   1              {
 171   2              P1=read_add(i); 
 172   2              display(i);
 173   2              delay(50);              
 174   2              }
 175   1              while(1);
 176   1      }
 177          
 178          

C51 COMPILER V8.05a   LESSON_8_9                                                           02/04/2009 22:45:08 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    412    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       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 + -