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

📄 text1.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   TEXT1                                                                 08/23/2007 05:01:56 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #include<ziku.h>
   4          #include<string.h>
   5          #include<math.h>
   6          /************************/
   7          
   8          #define uchar unsigned char
   9          #define uint unsigned int
  10          
  11          /********总线以及地址线的定义************/
  12          #define disp_on_12864 0x3f
  13          #define disp_off_12864  0x3e
  14          #define col_12864     0x40
  15          #define row_12864     0xb8
  16          #define start_line_12864   0xc0
  17          
  18          #define lcd_bus_12864  P0
  19          uchar x,z;
  20          uchar y;
  21          
  22          sbit di_12864 =P2^0;
  23          sbit rw_12864 =P2^1;
  24          sbit enable_12864 =P2^2;
  25          sbit cs1_12864=P2^6;
  26          sbit cs2_12864 =P2^7;
  27          
  28          
  29          
  30          
  31          
  32          /************函数声明******************/
  33          void clear_sreen_12864 ();   //清屏(即清除显存)
  34          
  35          void delay_12864 ();         //延时1ms
  36          
  37          void delay(void);      //延时
  38          
  39          void init_lcd_12864 ();   //LCD初始化
  40          
  41          void write_command_12864 (unsigned char cmdcode);        //写指令
  42                      
  43          void write_data_12864 (unsigned char dispdata);     //写数据
  44          
  45          void rddata(void)  ;   //读数据
  46          
  47          
  48          
  49          /**********清除显屏(清除显示内存)***********/
  50          void  clear_screen_12864()
  51          {
  52   1       unsigned char i,j;
  53   1       cs1_12864 =0;cs2_12864=1;    /**清除左屏**/
  54   1       for(i=0;i<8;i++)
  55   1       {
C51 COMPILER V7.20   TEXT1                                                                 08/23/2007 05:01:56 PAGE 2   

  56   2         write_command_12864 (row_12864 +i);
  57   2         write_command_12864 (col_12864 +0);  //列地址0
  58   2         for(j=0;j<64;j++)
  59   2           write_data_12864 (0x00);     //每做一次写操作,列地址加1
  60   2       }
  61   1       cs1_12864 =1;cs2_12864 =0;    /**清除右屏**/
  62   1         for(i=0;i<8;i++)
  63   1       {
  64   2         write_command_12864(row_12864 +i);
  65   2         write_command_12864(col_12864+0);  //列地址0
  66   2         for(j=0;j<64;j++)
  67   2           write_data_12864(0x00);     //每做一次写操作,列地址加1
  68   2       }
  69   1      }
  70          
  71          /***********延时1ms**************/
  72          void delay_12864()
  73          { unsigned int dy=500;
  74   1        while(--dy);
  75   1      }
  76          
  77          /*************初始化LCD屏***************/
  78          void  init_lcd_12864()
  79          {   
  80   1      clear_screen_12864(); 
  81   1      cs1_12864=1;cs2_12864=0;         //右屏
  82   1      delay_12864();
  83   1      write_command_12864(disp_off_12864);
  84   1      write_command_12864(start_line_12864);
  85   1      write_command_12864(disp_on_12864); 
  86   1      cs1_12864=0;cs2_12864=1;      //左屏
  87   1      delay_12864();
  88   1      write_command_12864(disp_off_12864);
  89   1      write_command_12864(start_line_12864);
  90   1      write_command_12864(disp_on_12864);  
  91   1      }
  92          
  93          /*******写指令到LCD*********/
  94          void write_command_12864 (unsigned char cmdcode)
  95          {
  96   1      //lcd_busy();
  97   1      di_12864 =0;
  98   1      rw_12864 =0;
  99   1      lcd_bus_12864 =cmdcode;      //输入控制命令(display on/off,display startline,row,col)
 100   1      enable_12864 =1;
 101   1      _nop_();
 102   1      enable_12864 =0;
 103   1      }
 104          
 105          /***********写显示的数据到LCD***********/
 106          void write_data_12864 (unsigned char dispdata)
 107          {
 108   1      //lcd_busy();
 109   1      di_12864 =1;
 110   1      rw_12864 =0;
 111   1      lcd_bus_12864 =dispdata;
 112   1      enable_12864 =1;
 113   1      _nop_();
 114   1      enable_12864 =0;
 115   1      }
 116          
 117          /*****位置 X 表示行, Y表示列 , Z 表示要亮的点 *********/
C51 COMPILER V7.20   TEXT1                                                                 08/23/2007 05:01:56 PAGE 3   

 118          void write(x,y,uchar c)
 119          {
 120   1      
 121   1       z=c;
 122   1       cs1_12864=0;
 123   1       cs2_12864=1;   //选择左屏幕
 124   1       if (y>64)
 125   1       {
 126   2       y=y-64 ;
 127   2       cs1_12864=1;
 128   2       cs2_12864=0;   //选择右屏幕
 129   2       }
 130   1         write_command_12864(row_12864+x-1);    //8大行位置 X 1到 8
 131   1         write_command_12864(col_12864+y-1);    //128 列位置 y 1 到 128
 132   1         write_data_12864(z);
 133   1       
 134   1      }
 135          
 136          uchar getkey()
 137          
 138          {
 139   1          unsigned char keycode=0xff,temp,i;
 140   1          P1=0x0f;
 141   1          temp=P1&0x0f;
 142   1          if(temp!=0x0f)        //判是否有键按下
 143   1          {
 144   2       //       beep=0;
 145   2              P1=0xef;          //自第0行开始扫描输出,自列读入键值
 146   2              for(i=0;i<4;i++)
 147   2              {
 148   3                  temp=P1&0x0f;
 149   3                  if(temp==0x07)     //判断第0列是否有键按下
 150   3                  {    
 151   4                      keycode=i*4+0;
 152   4                      break;
 153   4                  }
 154   3                  else if(temp==0x0b)//判断第1列是否有键按下
 155   3                  {
 156   4                      keycode=i*4+1;
 157   4                      break;                                                                                    
 158   4                  }
 159   3                  else if(temp==0x0d)//判断第2列是否有键按下
 160   3                  {
 161   4                      keycode=i*4+2;
 162   4                      break;
 163   4                  }
 164   3                  else if(temp==0x0e)//判断第3列是否有键按下
 165   3                  {
 166   4                      keycode=i*4+3;
 167   4                      break;
 168   4                  }
 169   3                  P1=(P1<<1)|0x1;
 170   3              }
 171   2      
 172   2               while((P1&0x0f)!=0x0f)   //等待释放
 173   2               {
 174   3                   P2=0x0f;
 175   3               }
 176   2      //      beep=1;                                             
 177   2              
 178   2           }
 179   1           return keycode;
C51 COMPILER V7.20   TEXT1                                                                 08/23/2007 05:01:56 PAGE 4   

 180   1      }
 181          
 182          
 183          
 184          
 185          void rewrite(uchar c)
 186          {
 187   1      
 188   1      
 189   1        write(x,y,c);
 190   1        y++;
 191   1        if (y==129)  {y=1;x++;}
 192   1        if (x==9)    { x=1;y=1;}
 193   1      
 194   1      }
 195          
 196          
 197          
 198          /******  显示 dl*16(dl是宽,高度为16)的字  l是宽  h是行   dl字长********/
 199          void xianshi(uchar s[],uchar l, uchar h)
 200          {
 201   1      uchar i,j,k;
 202   1      
 203   1      
 204   1            k=y;
 205   1      
 206   1                for(j=0;j<=h-1;j++)
 207   1      

⌨️ 快捷键说明

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