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

📄 lcd-12864display.lst

📁 采用ks0108或者兼容芯片的128*64点阵液晶屏驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LCD_12864DISPLAY                                                      08/18/2007 09:39:18 PAGE 1   


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

line level    source

   1          /**********************************************************
   2          KXM12864J-3液晶显示器驱动程序    基于SAMSUNG KS0108控制器
   3          ***********************************************************/
   4          #include "absacc.h"
   5          #include "intrins.h"
   6          #include "reg52.h"
   7          
   8          //自定义库
   9          #include "ASCII816.h" //标准ASCII库
  10          #include "HZTable.h" //汉字点阵库
  11          #include "Menu.h" //菜单库
  12          
  13          
  14          // LCD128*64 数据线
  15          #define LCD12864DataPort P0
  16          #define OSC_FREQ (11059200ul)
  17          #define OSC_PER_INST (12)
  18          
  19          #ifdef  TRUE 
              #define FALSE 0
              #define TRUE (!FALSE)
              #endif
  23          
  24          
  25          // LCD128*64 I/O 信号管脚
  26          sbit di = P1^0; // 数据\指令 选择
  27          sbit rw = P1^1; // 读\写 选择
  28          sbit en = P1^4; // 读\写使能
  29          sbit cs1 = P1^3; // 片选1,高有效(前64列)
  30          sbit cs2 = P1^2; // 片选2,高有效(后64列)
  31          sbit reset=P3^4; // 复位
  32          
  33          
  34          //**函数声明列表**
  35          void SetOnOff(unsigned char onoff);
  36          void SelectScreen(unsigned char screen);
  37          void ClearScreen(unsigned char screen);
  38          void Show88(unsigned char lin,unsigned char column,unsigned int address);
  39          void ShowChar(unsigned char lin,unsigned char column,unsigned char character);
  40          void ShowString(unsigned char lin,unsigned char column, unsigned char *string);
  41          void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode);
  42          void ShowPicture(unsigned char startline,unsigned char startcolumn,unsigned char linechar,unsigned char co
             -lumnchar,unsigned int address);
  43          void ShowLine(unsigned char lin,unsigned int lineheadaddr);
  44          void ShowPage(unsigned int pageheadaddr);
  45          void ReverseShow88(unsigned char lin,unsigned char column);
  46          void ReverseShowChar(unsigned char lin,unsigned char column);
  47          ReverseShowHZ(unsigned char lin,unsigned char column);
  48          ReverseShow(unsigned char lin);
  49          void InitLCD();
  50          void Reset();
  51          //**函数声明结束**
  52          
  53          
  54          void main(void)
C51 COMPILER V8.02   LCD_12864DISPLAY                                                      08/18/2007 09:39:18 PAGE 2   

  55          {
  56   1        int i,j,k;
  57   1        InitLCD();          //液晶显示器初始化
  58   1        Lcd12864delay();
*** WARNING C206 IN LINE 58 OF LCD-12864DISPLAY.C: 'Lcd12864delay': missing function-prototype
  59   1        while(1)
  60   1        {  
  61   2         ShowHZ(0,0,18);
  62   2        Lcd12864delay();
  63   2          ShowHZ(0,2,19);
  64   2        Lcd12864delay();
  65   2          ShowHZ(0,4,20);
  66   2        Lcd12864delay();
  67   2          ShowHZ(0,6,21);
  68   2        Lcd12864delay();
  69   2          ShowHZ(0,8,22);
  70   2        Lcd12864delay();
  71   2          ShowHZ(0,10,23);
  72   2        Lcd12864delay();
  73   2          ShowHZ(0,12,24);
  74   2        Lcd12864delay();
  75   2          ShowHZ(0,14,25);
  76   2        Lcd12864delay();  
  77   2          /*ShowPicture(0,0,16,8,ShangBiao_YongTan[0]);
  78   2        Lcd12864delay(); 
  79   2          ShowChar(0,0,104);
  80   2        Lcd12864delay();*/
  81   2        
  82   2        }
  83   1      }
*** WARNING C280 IN LINE 56 OF LCD-12864DISPLAY.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 56 OF LCD-12864DISPLAY.C: 'j': unreferenced local variable
*** WARNING C280 IN LINE 56 OF LCD-12864DISPLAY.C: 'k': unreferenced local variable
  84          /*----------------------------------------------------------------------------------------------------*/
  85          /* ****函数列表****
  86          
  87          //开关显示
  88          void SetOnOff(unsigned char onoff)
  89          
  90          //选择屏幕
  91          //screen: 0-全屏,1-左屏,2-右
  92          void SelectScreen(unsigned char screen)
  93          
  94          //清屏
  95          //screen: 0-全屏,1-左屏,2-右
  96          void ClearScreen(unsigned char screen)
  97          
  98          //显示8*8点阵
  99          //旋转90度:字模被竖着切分
 100          //lin:行(0-7), column: 列(0-15)
 101          //address : 字模区首地址
 102          void Show88(unsigned char lin,unsigned char column,unsigned int address)
 103          
 104          //显示8*16字符
 105          //旋转90度:字模被竖着切分
 106          //lin:行(0-3), column: 列(0-15)
 107          //character:字符代码(标准ASCII码)
 108          void ShowChar(unsigned char lin,unsigned char column,unsigned char character)
 109          
 110          //显示8*16字符串
 111          //!!!只能显示在一行上即: 串长+column <=15
 112          //旋转90度:字模被竖着切分
C51 COMPILER V8.02   LCD_12864DISPLAY                                                      08/18/2007 09:39:18 PAGE 3   

 113          //lin:行(0-3), column: 列(0-15)
 114          //address : 字模区首地址
 115          void ShowString(unsigned char lin,unsigned char column, unsigned char *string)
 116          
 117          //显示一个汉字
 118          //旋转90度:字模被竖着切分
 119          //lin:行(0-3), column: 列(0-15)
 120          //hzcode: 汉字代码(自定义的)
 121          void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
 122          
 123          //显示图片
 124          //旋转90度 :字模被竖着切分
 125          //startline :开始行
 126          //startcolumn:开始列
 127          //linechar :图片行点除8(图片以8*8点阵为单位)
 128          //columnchar :图片列点除8(图片以8*8点阵为单位)
 129          //address : 字模区首地址
 130          void ShowPicture(unsigned char startline,unsigned char startcolumn,unsigned char linechar,unsigned char co
             -lumnchar,unsigned int address)
 131          //!!问题大户
 132          //显示一行汉字
 133          //lin:行
 134          //lineheadaddr: 此行汉字代码区首地址
 135          void ShowLine(unsigned char lin,unsigned int lineheadaddr)
 136          
 137          //显示一屏汉字
 138          //pageheadaddr:此屏汉字代码地址区首地址
 139          void ShowPage(unsigned int pageheadaddr)
 140          
 141          //反显一个8*8字块
 142          //lin:行(0-3), column: 列(0-7)
 143          void ReverseShow88(unsigned char lin,unsigned char column)
 144          
 145          
 146          //反显一个字符
 147          //lin:行(0-4), column: 列(0-15)
 148          void ReverseShowChar(unsigned char lin,unsigned char column)
 149          
 150          
 151          //反显一个汉字
 152          //lin:行(0-3), column: 列(0-7)
 153          ReverseShowHZ(unsigned char lin,unsigned char column)
 154          
 155          //反显一行汉字
 156          //lin:行
 157          ReverseShow(unsigned char lin)
 158          
 159          //初始化LCD
 160          void InitLCD()
 161          
 162          ****函数列表结束**** */
 163          /*----------------------------------------------------------------------------------------------------*/
 164          /*--基本函数源程序------------------------------------------------------------------------------------*/
 165          //延时
 166          Lcd12864delay()
 167          {
 168   1      unsigned int i=500;
 169   1      while(i--) {;}
 170   1      }
 171          /*----------------------------------------------------------------------------------------------------*/
 172          //状态检查
 173          void CheckState()
C51 COMPILER V8.02   LCD_12864DISPLAY                                                      08/18/2007 09:39:18 PAGE 4   

 174          {
 175   1      unsigned char dat;
 176   1      di=0;
 177   1      rw=1;
 178   1      do{
 179   2      LCD12864DataPort=0xff;
 180   2      en=1; 
 181   2      dat=LCD12864DataPort; 
 182   2      en=0;
 183   2      dat=0x90 & dat; //仅当第4,7位为0时才可操作
 184   2      }while(!(dat==0x00));
 185   1      }
 186          /*----------------------------------------------------------------------------------------------------*/
 187          //写显示数据
 188          //dat:显示数据
 189          void WriteByte(unsigned char dat)
 190          {
 191   1      CheckState();    
 192   1      di=1; 
 193   1      rw=0;
 194   1      LCD12864DataPort=dat;
 195   1      en=1; 
 196   1      //_nop_();
 197   1      en=0;
 198   1      }
 199          /*-----------------------------------------------------------------------------------------------------*/
 200          //向LCD发送命令
 201          //command :命令
 202          SendCommandToLCD(unsigned char command)
 203          {
 204   1      di=0;
 205   1      CheckState();
 206   1      rw=0;
 207   1      LCD12864DataPort=command;
 208   1      en=1; 
 209   1      //_nop_();
 210   1      en=0;
 211   1      }
 212          /*----------------------------------------------------------------------------------------------------*/
 213          //设定行地址(页)--X 0-7
 214          void SetLine(unsigned char line)
 215          {
 216   1      line=line & 0x07; // 0<=line<=7
 217   1      line=line|0xb8; //1011 1xxx
 218   1      SendCommandToLCD(line);
 219   1      }
 220          //设定列地址--Y 0-63
 221          void SetColumn(unsigned char column)
 222          {
 223   1      column=column &0x3f; // 0=<column<=63
 224   1      column=column | 0x40; //01xx xxxx
 225   1      SendCommandToLCD(column);
 226   1      }
 227          //设定显示开始行--XX
 228          void SetStartLine(unsigned char startline) //0--63
 229          {
 230   1      startline=startline & 0x07;
 231   1      startline=startline|0xc0; //1100 0000
 232   1      SendCommandToLCD(startline); 
 233   1      }
 234          //开关显示
 235          void SetOnOff(unsigned char onoff)
C51 COMPILER V8.02   LCD_12864DISPLAY                                                      08/18/2007 09:39:18 PAGE 5   

 236          {
 237   1      onoff=0x3e | onoff; //0011 111x
 238   1      SendCommandToLCD(onoff);
 239   1      }
 240          /*---------------------------------------------------------------------------------------------------*/
 241          //选择屏幕
 242          //screen: 0-全屏,1-左屏,2-右屏
 243          void SelectScreen(unsigned char screen)
 244          { //北京显示器:负有效 cs1: 0--右; cs2: 0--左
 245   1      switch(screen)
 246   1      { case 0: cs1=1;//全屏
 247   2      _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 248   2      cs2=1; 

⌨️ 快捷键说明

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