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

📄 12864.lst

📁 128*64点阵lcd的控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   12864                                                                 03/16/2008 12:44:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 12864
OBJECT MODULE PLACED IN 12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include"delay.h"          //包含延时函数的头文件
   3          /**************************************************************
   4                         iO口宏定义区
   5          ***************************************************************/
   6          sbit CS =P1^0;
   7          sbit SID=P1^1;//r/w
   8          sbit SCK=P1^2;//e
   9          sbit psb=P1^3;//串行并行数据选择端
  10          sbit rst=P1^5;//复位     
  11          /*******************************************************************
  12                        常量声明区
  13          ********************************************************************/
  14          unsigned char code time[]={"0123456789"} ;                  
  15          unsigned char code AC_TABLE[]={                                    //坐标编码
  16          0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
  17          0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
  18          0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
  19          0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
  20          };
  21          /****************************************************************
  22           声明:建议读者先查阅我们提供的12864word文档资料,理解12864定坐标的
  23           方式。                                                                                           
  24                        发送一个字节
  25          *****************************************************************/
  26          void SendByte(unsigned char Dbyte)
  27          {
  28   1              unsigned char i;
  29   1              for(i=0;i<8;i++)
  30   1              {
  31   2                      SCK = 0;
  32   2                      Dbyte=Dbyte<<1;
  33   2                      SID = CY;
  34   2                      SCK = 1;
  35   2                      SCK = 0;
  36   2              }
  37   1      }
  38          /**********************************************************
  39                        接收一个字节
  40          ***********************************************************/
  41          
  42          unsigned char ReceiveByte(void)
  43          {
  44   1              unsigned char i,temp1,temp2;
  45   1              temp1=temp2=0;
  46   1              for(i=0;i<8;i++)
  47   1              {
  48   2                      temp1=temp1<<1;
  49   2                      SCK = 0;
  50   2                      SCK = 1;                
  51   2                      SCK = 0;
  52   2                      if(SID) temp1++;
  53   2              }
  54   1              for(i=0;i<8;i++)
  55   1              {
C51 COMPILER V8.02   12864                                                                 03/16/2008 12:44:12 PAGE 2   

  56   2                      temp2=temp2<<1;
  57   2                      SCK = 0;
  58   2                      SCK = 1;
  59   2                      SCK = 0;
  60   2                      if(SID) temp2++;
  61   2              }
  62   1              return ((0xf0&temp1)+(0x0f&temp2));
  63   1      }
  64          /****************************************************************
  65                                检查忙状态
  66          ******************************************************************/
  67          void CheckBusy( void )
  68          {
  69   1              do SendByte(0xfc);     //11111,RW(1),RS(0),0
  70   1              while(0x80&ReceiveByte());
  71   1      }
  72          
  73          /******************************************************************
  74                     写一个字节的指令
  75          *******************************************************************/
  76          void WriteCommand( unsigned char Cbyte )
  77          {
  78   1              CS = 1;
  79   1              CheckBusy();
  80   1              SendByte(0xf8);          //11111,RW(0),RS(0),0
  81   1              SendByte(0xf0&Cbyte);
  82   1              SendByte(0xf0&Cbyte<<4);
  83   1              CS = 0;
  84   1      }
  85          /*************************************************************
  86                           写一个字节的数据
  87          **************************************************************/
  88          void WriteData( unsigned char Dbyte )
  89          {
  90   1              CS = 1;
  91   1              CheckBusy();
  92   1              SendByte(0xfa);          //11111,RW(0),RS(1),0
  93   1              SendByte(0xf0&Dbyte);
  94   1              SendByte(0xf0&Dbyte<<4);
  95   1              CS = 0;
  96   1      }
  97          
  98          /******************************************************************
  99                                   lcd初始化函数
 100          *******************************************************************/
 101          void LcmInit( void )
 102          {
 103   1           rst=1;
 104   1               psb=0;                         //串行接法
 105   1           WriteCommand(0x30);
 106   1           WriteCommand(0x03);
 107   1           WriteCommand(0x0c);
 108   1           WriteCommand(0x01);
 109   1           WriteCommand(0x06);
 110   1      }
 111          
 112          /*******************************************************************************************************
 113                                           设定光标函数
 114          ********************************************************************************************************/
 115          void Location_xy_12864(unsigned char x,unsigned char y)
 116          {
 117   1              switch(x)
C51 COMPILER V8.02   12864                                                                 03/16/2008 12:44:12 PAGE 3   

 118   1              {
 119   2                      case 0:
 120   2                              x=0x80;break;
 121   2                      case 1:
 122   2                              x=0x90;break;
 123   2                      case 2:
 124   2                              x=0x88;break;
 125   2                      case 3:
 126   2                              x=0x98;break;
 127   2                      default:
 128   2                              x=0x80;
 129   2              }
 130   1              y=y&0x07;
 131   1              WriteCommand(0x30);
 132   1              WriteCommand(y+x);
 133   1              WriteCommand(y+x);
 134   1      
 135   1      }
 136          /***********************************************************************************
 137                            清除文本
 138          ************************************************************************************/
 139          void LcmClearTXT( void )
 140          {
 141   1              unsigned char i;
 142   1              WriteCommand(0x30);
 143   1              WriteCommand(0x80);
 144   1              for(i=0;i<64;i++)
 145   1              WriteData(0x20);
 146   1              Location_xy_12864(0,0);     
 147   1      }
 148          /**************************************************************************************
 149                             清除图片
 150          *****************************************************************************************/
 151          void LcmClearBMP( void )
 152          {
 153   1              unsigned char i,j;

⌨️ 快捷键说明

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