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

📄 lcd.lst

📁 C8051F040单片机与DM12864液晶接口
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   LCD                                                                   10/23/2008 21:50:55 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe lcd.c DB OE

line level    source

   1          #include "c8051f040.h"
   2          #include <intrins.h>            //      液晶点阵显示试验  -128*64,控制器DM12864I
   3          #define LCD_DATA P7
   4          sbit LCD_RS = P2^0;
   5          sbit LCD_RW = P2^1;
   6          sbit LCD_E = P2^2;
   7          sbit LCD_CS1 = P2^6;
   8          sbit LCD_CS2 = P2^7;
   9          void Delay1us(unsigned char);
  10          void Delay1ms(unsigned char);
  11          void Delay1s(unsigned char T);
  12          char code zero[]={
  13                  0xF8,0xFC,0x04,0xC4,0x24,
  14                          0xFC,0xF8,0x00,0x07,0x0F,
  15                          0x09,0x08,0x08,0x0F,0x07,
  16                          0x00
  17          };
  18          char code one[]={
  19                  0x00,0x10,0x18,0xFC,0xFC,
  20                          0x00,0x00,0x00,0x00,0x08,
  21                          0x08,0x0F,0x0F,0x08,0x08,
  22                          0x00
  23          };
  24          char code two[]={
  25                          0x08,0x0C,0x84,0xC4,0x64,
  26                          0x3C,0x18,0x00,0x0E,0x0F,
  27                          0x09,0x08,0x08,0x0C,0x0C,
  28                          0x00
  29          };
  30          char code three[]={
  31                  0x08,0x0C,0x44,0x44,0x44,
  32                          0xFC,0xB8,0x00,0x04,0x0C,
  33                          0x08,0x08,0x08,0x0F,0x07,
  34                          0x00
  35          };
  36          char code  four[]={
  37                  0xC0,0xE0,0xB0,0x98,0xFC,
  38                          0xFC,0x80,0x00,0x00,0x00,
  39                          0x00,0x08,0x0F,0x0F,0x08,
  40                          0x00
  41          };
  42          char code  five[]={
  43                  0x7C,0x7C,0x44,0x44,0xC4,
  44                          0xC4,0x84,0x00,0x04,0x0C,
  45                          0x08,0x08,0x08,0x0F,0x07,
  46                          0x00
  47          };
  48          char code  six[]={
  49                  0xF0,0xF8,0x4C,0x44,0x44,
  50                          0xC0,0x80,0x00,0x07,0x0F,
  51                          0x08,0x08,0x08,0x0F,0x07,
  52                          0x00
  53          };
  54          char code  seven[]={
  55                  0x0C,0x0C,0x04,0x84,0xC4,
C51 COMPILER V7.09   LCD                                                                   10/23/2008 21:50:55 PAGE 2   

  56                          0x7C,0x3C,0x00,0x00,0x00,
  57                          0x0F,0x0F,0x00,0x00,0x00,
  58                          0x00
  59          };
  60          char code  eight[]={
  61                  0xB8,0xFC,0x44,0x44,0x44,
  62                          0xFC,0xB8,0x00,0x07,0x0F,
  63                          0x08,0x08,0x08,0x0F,0x07,
  64                          0x00
  65          };
  66          char code  nine[]={
  67                  0x38,0x7C,0x44,0x44,0x44,
  68                          0xFC,0xF8,0x00,0x00,0x08,
  69                          0x08,0x08,0x0C,0x07,0x03,
  70                          0x00
  71          };
  72          char code  chen[]={
  73                          0x00, 0xfe, 0x22, 0x5a, 0x86, 0x08, 0x88, 0x48, 0x38, 0x0f, 0xe8, 0x08, 0x88, 0x0c, 0x08, 0x00, 0x00, 0x
             -ff, 0x04, 0x08, 0x07, 0x20, 0x11, 0x0d, 0x41, 0x81, 0x7f, 0x01, 0x05, 0x19, 0x30, 0x00
  74          };
  75          char code  hao[]={0x00, 0x00, 0x80, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbf, 0x82, 0x00, 0x00
             -, 0x00, 0x04, 0x84, 0x84, 0x44, 0x44, 0x24, 0x14, 0x0f, 0x14, 0x24, 0x24, 0x44, 0xc4, 0x46, 0x04, 0x00};
  76          char code  wen[]={
  77                          0x00, 0xfc, 0x01, 0x12, 0x16, 0xf0, 0x52, 0x52, 0x52, 0xf2, 0x1a, 0x12, 0x02, 0xff, 0x02, 0x00, 0x00, 0x
             -ff, 0x00, 0x08, 0x08, 0x0f, 0x09, 0x09, 0x09, 0x7f, 0x08, 0x48, 0x80, 0x7f, 0x00, 0x00
  78          };
  79          char code niao[]={0x00, 0x00, 0x00, 0xfc, 0x04, 0x16, 0x65, 0x04, 0x84, 0x04, 0xfe, 0x04, 0x00, 0x00, 0x00
             -, 0x00, 0x10, 0x10, 0x10, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x5a, 0x92, 0x42, 0x3f, 0x02, 0x00};
  80          char code ren[]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
             - 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x03, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x40, 0xc0, 0x40, 0x00};
  81          #define SELECTCS 1
  82          void LCD_WriteCommand1(char ch) //向LCD控发送控制命令      左半边
  83          {       
  84   1              LCD_CS1=SELECTCS;
  85   1              LCD_CS2=!SELECTCS;
  86   1              LCD_RW=0;
  87   1              LCD_RS=0;
  88   1              LCD_DATA=ch;
  89   1              LCD_E=1;
  90   1              Delay1us(30);
  91   1              LCD_E=0;
  92   1      }
  93          
  94          void LCD_WriteCommand2(char ch) //向LCD控制发送控制命令                 右半边
  95          {
  96   1              LCD_CS2=SELECTCS;
  97   1              LCD_CS1=!SELECTCS;        
  98   1              LCD_RW=0;
  99   1              LCD_RS=0;
 100   1              LCD_DATA=ch;
 101   1              LCD_E=1;
 102   1              Delay1us(30);
 103   1              LCD_E=0;
 104   1      }
 105          
 106          void LCD_WriteData1(char ch)    //发送数据 左半边
 107          {
 108   1              
 109   1              LCD_CS1=SELECTCS;
 110   1              LCD_CS2=!SELECTCS;
 111   1              LCD_RW=0;
 112   1              LCD_RS=1;
C51 COMPILER V7.09   LCD                                                                   10/23/2008 21:50:55 PAGE 3   

 113   1              LCD_DATA=ch;
 114   1              LCD_E=1;
 115   1              Delay1us(30);
 116   1              LCD_E=0;
 117   1      }
 118          
 119          void LCD_WriteData2(char ch)    //发送数据 右半边 
 120          {
 121   1      
 122   1              LCD_CS1=!SELECTCS;
 123   1              LCD_CS2=SELECTCS;
 124   1              LCD_RW=0;
 125   1              LCD_RS=1;                                       
 126   1              LCD_DATA=ch;
 127   1              LCD_E=1;
 128   1              Delay1us(30);
 129   1              LCD_E=0;
 130   1      //      LCD_CS1=!SELECTCS;
 131   1      }
 132          void InitLCD(void)      //初始化LCD
 133          {
 134   1              char i,j;
 135   1              LCD_WriteCommand1(0xc0);        
 136   1              LCD_WriteCommand2(0xc0);
 137   1              LCD_WriteCommand1(0x3f);        //开显示 和设定起始行
 138   1              LCD_WriteCommand2(0x3f);
 139   1              for (j=0;j<8;j++)                       //清屏
 140   1              {
 141   2                      LCD_WriteCommand1(0xB8+j);      //清左半屏
 142   2                      LCD_WriteCommand1(0x40);
 143   2                      for (i=0;i<64;i++)
 144   2                              LCD_WriteData1(0x00);
 145   2      
 146   2                      LCD_WriteCommand2(0xB8+j);      //清右半屏
 147   2                      LCD_WriteCommand2(0x40);
 148   2                      for (i=0;i<64;i++)
 149   2                              LCD_WriteData2(0x00);
 150   2              }
 151   1      }
 152          void LCD_WriteHZ(char x,char y,char *HZ) //显示16*16点阵汉字       x表示起始页,y表示起始列(对于整个液晶来说)
 153          {
 154   1              unsigned char i;
 155   1              Delay1ms(15);
 156   1      
 157   1              for (i=0;i<32;i++)
 158   1              {
 159   2                      if ((y+i%16)<64)                                        //64列以内显示在左半屏
 160   2                      {
 161   3                              LCD_WriteCommand1(0xb8+x+i/16);
 162   3                              LCD_WriteCommand1(0x40+y+i%16);
 163   3                              LCD_WriteData1(HZ[i]);
 164   3                      }
 165   2                      else                                                            //64列以外显示在右半屏
 166   2                      {
 167   3                              LCD_WriteCommand2(0xb8+x+i/16);

⌨️ 快捷键说明

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