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

📄 sy.lst

📁 本程序能够实现液晶显示
💻 LST
字号:
C51 COMPILER V7.50   SY                                                                    08/27/2007 09:35:53 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SY
OBJECT MODULE PLACED IN sy.OBJ
COMPILER INVOKED BY: D:\keil uvision3\C51\BIN\C51.EXE sy.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          #include <intrins.h>
   3          #define uchar unsigned char
   4          #define Busy 0x80 //用于检测LCM状态字中的Busy标识
   5          
   6          //****定义引脚********//
   7          sbit LCD_CS=P0^0;     //原来的RS
   8          sbit LCD_DATA=P0^1;  //原来的RW
   9          sbit LCD_CLK=P0^2;  //原来的E
  10          sbit LCD_PS=P0^3;
  11          
  12          uchar show[]="s12864液晶测试程序0123456789ABCDEFGHIJKLMNOPQ";
  13          
  14          /////////延时程序/////////
  15          void delay(second)       //second=1时,延时5ms子程序
  16            unsigned char second;
  17              {
  18   1            unsigned char i,j,k;
  19   1            for(i=second;i>0;i--)
  20   1            for(j=20;j>0;j--)
  21   1            for(k=248;k>0;k--);
  22   1          }
  23          
  24          ////////串口传输3个字节////////
  25          void Send_24bits(uchar com_or_data,uchar DATA)
  26          {
  27   1       uchar bite,command,DIN;
  28   1       if(com_or_data) 
  29   1         command=0xf8;    //写指令到LCD
  30   1       else            
  31   1         command=0xfa;   //写数据到LCD
  32   1       LCD_CS=1;
  33   1       for(bite=8;bite>=1;bite--)
  34   1         {
  35   2          LCD_CLK=0;
  36   2          LCD_DATA=command&0x80;
  37   2          LCD_CLK=1;
  38   2          command<<=1;
  39   2         }
  40   1       DIN=DATA;
  41   1       DIN=DIN&0xf0;
  42   1       for(bite=8;bite>=1;bite--)
  43   1         {
  44   2          LCD_CLK=0;
  45   2          LCD_DATA=DIN&0x80;
  46   2          LCD_CLK=1;
  47   2          DIN<<=1;
  48   2         }
  49   1       DIN=DATA;
  50   1       DIN=DIN&0x0f;
  51   1       DIN<<=4;
  52   1       for(bite=8;bite>=1;bite--)
  53   1         {
  54   2          LCD_CLK=0;
  55   2          LCD_DATA=DIN&0x80;
C51 COMPILER V7.50   SY                                                                    08/27/2007 09:35:53 PAGE 2   

  56   2          LCD_CLK=1;
  57   2          DIN<<=1;
  58   2         }
  59   1       LCD_CS=0;
  60   1      }
  61          
  62          //////////串口读数据/////////////
  63          uchar Read_from_LCD(void)
  64           {
  65   1        uchar bite,command,DIN0,DIN1;
  66   1        uchar DATA;
  67   1        command=0xfe;
  68   1        LCD_CS=1;
  69   1       for(bite=8;bite>=1;bite--)
  70   1         {
  71   2          LCD_CLK=0;
  72   2          LCD_DATA=command&0x80;
  73   2          LCD_CLK=1;
  74   2          command<<=1;
  75   2         }
  76   1       for(bite=8;bite>=1;bite--)
  77   1         {
  78   2          LCD_CLK=0;
  79   2          DIN0|=LCD_DATA;
  80   2          LCD_CLK=1;
  81   2          DIN0<<=1;
  82   2         }
  83   1       for(bite=8;bite>=1;bite--)
  84   1         {
  85   2          LCD_CLK=0;
  86   2          DIN1|=LCD_DATA;
  87   2          LCD_CLK=1;
  88   2          DIN1<<=1;
  89   2         }
  90   1       LCD_CS=0;
  91   1       DIN1>>=4;
  92   1       DATA=DIN0|DIN1;
  93   1       return(DATA);
  94   1       }
  95          ////////读状态////////
  96          void ReadStatusLCD(void)
  97           {
  98   1        uchar LCD_Data;
  99   1        LCD_Data=Read_from_LCD();
 100   1        while (LCD_Data&0x80)   //检测忙信号
 101   1        LCD_DATA=Read_from_LCD(); 
 102   1       }
 103          
 104          ////////写指令////////
 105          void WriteCommandLCD(uchar Command,BuysC) //BuysC为0时忽略忙检测
 106            {
 107   1         if (BuysC) ReadStatusLCD(); //根据需要检测忙
 108   1         Send_24bits(1,Command);
 109   1        }
 110          
 111          ////////写数据////////
 112          void WriteDataLCD(uchar Data,BuysC)
 113            {
 114   1         if (BuysC) ReadStatusLCD(); //根据需要检测忙
 115   1         Send_24bits(0,Data);
 116   1        }
 117          
C51 COMPILER V7.50   SY                                                                    08/27/2007 09:35:53 PAGE 3   

 118          void LCDInit(void) //LCD初始化
 119            {
 120   1         WriteCommandLCD(0x30,1); //基本指令集动作
 121   1         WriteCommandLCD(0x01,1); //清除显示
 122   1         delay(1); 
 123   1         WriteCommandLCD(0x0c,1); //开显示
 124   1         delay(1);
 125   1         WriteCommandLCD(0x03,1); //地址归位
 126   1         //WriteCommandLCD(0x30,1); //基本指令集动作
 127   1         
 128   1        }
 129          
 130          //显示一串汉字
 131          void Display(uchar show[])
 132            {
 133   1         uchar *p,i=0;
 134   1         p=show;
 135   1         WriteCommandLCD(0x80,0);
 136   1         while(*p!='\0')
 137   1          {
 138   2           WriteDataLCD(*p++,0);
 139   2           i++;
 140   2           if(i==16)       WriteCommandLCD(0x90,1);
 141   2           else if(i==32)  WriteCommandLCD(0x88,1);
 142   2           else if(i==48)  WriteCommandLCD(0x98,1);
 143   2          }
 144   1        }
 145          
 146          void main(void)
 147           {
 148   1      //  uchar i;
 149   1        LCD_PS=0;
 150   1        delay(8); //启动等待,等LCM讲入工作状态
 151   1        LCDInit(); //LCM初始化
 152   1       //P2=0xf0;
 153   1      
 154   1        Display(show);
 155   1        /*for(i=0;i<8;i++)        //字符循环左移
 156   1           {
 157   1              WriteCommandLCD(0x18,1);  
 158   1              delay(200);
 159   1              delay(200);
 160   1              delay(200);
 161   1              delay(200);
 162   1          }*/ 
 163   1        while(1);
 164   1       }
 165          
 166          
 167          
 168          
 169          
 170          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    365    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     46       4
   IDATA SIZE       =   ----    ----
C51 COMPILER V7.50   SY                                                                    08/27/2007 09:35:53 PAGE 4   

   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 + -