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

📄 text1.lst

📁 单片机控制的AD对正弦波信号采样后用12864的液晶显示出来
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   TEXT1                                                                 10/31/2008 13:44:40 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\anzhuagweizhi\Uision\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1                                                                                                                                   /***********************************************
   2          TCM12864J液晶显示屏驱动程序
   3          驱动芯片:KS0107
   4          MCU:AT89S52
   5          
   6          日期:08-09-05
   7          
   8          P11--RS         RS=1,表示DB7~DB0 为显示数据
   9                                  RS=0”,表示DB7~DB0 为显示指令数据
  10          P12--RW         R/W=1”,E=“H”,数据被读到DB7~DB0
  11                                  R/W=0”,E=“H→L”, DB7~DB0 的数据被写到IR 或DR
  12          P13--E          使能信号:      R/W=“L”,E 信号下降沿锁存DB7~DB0
  13                                                          R/W=“H”,E=“H” DRAM数据读到DB7~DB0
  14          P14--CSA        H:选择芯片(右半屏)信号
  15          P15--CSB        H:选择芯片(左半屏)信号
  16          P0---DB0~7
  17          ***********************************************/
  18          
  19          #include <reg51.h>
  20          #include <absacc.h>
  21          #include <intrins.h>
  22          #include <stdio.h>
  23          
  24          sbit P0_0 = P0^0;
  25          sbit P0_1= P0^1;
  26          sbit P0_2 = P0^2;
  27          sbit P0_3 = P0^3;
  28          sbit P0_4 = P0^4;
  29          sbit P0_5 = P0^5;
  30          sbit P0_6 = P0^6;
  31          sbit P0_7 = P0^7;
  32          
  33          
  34          sbit p_RS = P1^1;
  35          sbit p_RW = P1^2;
  36          sbit p_E = P1^3;
  37          sbit p_CSA = P1^4;
  38          sbit p_CSB = P1^5;
  39          sbit EOC = P1^0;
  40          sbit ST = P2^6;
  41          sbit OE = P2^7;
  42           unsigned char  ad_value; 
  43             unsigned char   data_value; 
  44          #define DATA P3
  45          
  46                  
  47          
  48          void DelayMs(unsigned int count1);
  49          void lcd_busy(void);
  50          void lcd_init(void);
  51          void lcd_setxy(unsigned char x,unsigned char y);
  52          unsigned  char lcd_AD(void)     ;
  53          
  54          
  55          void lcd_clear(void);
C51 COMPILER V8.08   TEXT1                                                                 10/31/2008 13:44:40 PAGE 2   

  56          void lcd_writepoint(unsigned char i,unsigned char j);
  57          unsigned char lcd_readdata(unsigned char x,unsigned char y);
  58                           
  59          void main(void)                                                                 //主函数
  60          {
  61   1              int y=0;
  62   1              unsigned char data1,data2; 
  63   1                 
  64   1          lcd_init();
  65   1          lcd_clear();
  66   1              
  67   1              while(1)   
  68   1              {
  69   2              lcd_AD();
  70   2                {     
  71   3                    ad_value=0x00;
  72   3                      if(data_value&0x80) ad_value=ad_value+0x01;
  73   3                      if(data_value&0x40) ad_value=ad_value+0x02;
  74   3                      if(data_value&0x20) ad_value=ad_value+0x04;
  75   3                      if(data_value&0x10) ad_value=ad_value+0x08;
  76   3                      if(data_value&0x08) ad_value=ad_value+0x10;
  77   3                      if(data_value&0x04) ad_value=ad_value+0x20;
  78   3                      if(data_value&0x02) ad_value=ad_value+0x40;
  79   3                      if(data_value&0x01) ad_value=ad_value+0x80;      
  80   3                       }
  81   2                              
  82   2                      data1= ad_value;
  83   2                 
  84   2              data2=data1>>2;
  85   2                      lcd_writepoint(data2,y);  
  86   2                              DelayMs(25) ;
  87   2                      y++;
  88   2                       
  89   2              if(y>=128) {  lcd_clear();   y=0;        }
  90   2              
  91   2              
  92   2              
  93   2              }       
  94   1       
  95   1      }       
  96          
  97                  /*******************延迟***************/
  98          
  99          void DelayMs(unsigned int count1)
 100          {
 101   1              while (count1--)
 102   1              {
 103   2                      unsigned char count2 = 0;
 104   2                      for (; count2<30; count2++);
 105   2              }
 106   1      }                                       
 107                           /**************************************AD转换函数******************/
 108          
 109          
 110           
 111          
 112          unsigned  char lcd_AD(void)     
 113          {       
 114   1              unsigned char   data_AD; 
 115   1              
 116   1              P2 = 0xc2;
 117   1              ST=0;
C51 COMPILER V8.08   TEXT1                                                                 10/31/2008 13:44:40 PAGE 3   

 118   1          
 119   1      
 120   1              ST=1;
 121   1              ST=0;
 122   1      
 123   1              while(EOC ==0)  ;
 124   1              OE=1;    
 125   1              data_value=P0;
 126   1                        
 127   1              _nop_();
 128   1                      _nop_();  
 129   1                              _nop_();
 130   1      
 131   1              _nop_();
 132   1              OE=0;
 133   1              return data_value;
 134   1      
 135   1      }
*** WARNING C280 IN LINE 114 OF TEXT1.C: 'data_AD': unreferenced local variable
 136          /***********************************************
 137          查询LCD是否忙碌,如果忙碌,则等待,直到不忙碌,
 138          跳出该函数,顺序执行下面程序
 139          ************************************************/
 140          void lcd_busy(void)
 141          {
 142   1              p_RS=0;                                         //CMD
 143   1              p_RW=1;                                         //READ
 144   1              while(1)
 145   1              {
 146   2                      p_E=1;
 147   2                      if(DATA<0x80)break;             //BUSY(DB7) = 0
 148   2                      p_E=0;
 149   2              }
 150   1              p_E=0;
 151   1      }
 152          
 153          /**********************************************
 154          初始化
 155          ***********************************************/
 156          void lcd_init(void)
 157          {
 158   1              //开显示
 159   1              p_RS=0;                                         //CMD
 160   1              p_RW=0;                                         //Write
 161   1              DATA=0x3f;                                      //Display ON
 162   1              
 163   1              p_CSA=1;
 164   1              p_CSB=0;
 165   1      
 166   1              p_E=1;
 167   1              p_E=0;
 168   1      
 169   1              p_CSA=0;
 170   1              p_CSB=1;
 171   1      
 172   1              p_E=1;
 173   1              p_E=0;
 174   1      
 175   1              //0行显示
 176   1              lcd_busy();
 177   1              
 178   1              //P15=0;
C51 COMPILER V8.08   TEXT1                                                                 10/31/2008 13:44:40 PAGE 4   

 179   1      
 180   1              DATA=0xc0;              //0行开始
 181   1              
 182   1              p_CSA=1;
 183   1              p_CSB=0;
 184   1      
 185   1              p_E=1;
 186   1              p_E=0;
 187   1      
 188   1              p_CSA=0;
 189   1              p_CSB=1;

⌨️ 快捷键说明

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