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

📄 lcd12864.lst

📁 基于MSP430F14X单片机的LCD12864的显示驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   LCD12864                                                              08/08/2008 00:58:17 PAGE 1   


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

line level    source

   1          /****************************************************************************************************
   2          * 文件名:       LCD12864.c                                                                                                                                                              *
   3          * Copyright (c) 2008 *********武汉理工大学信息工程学院电信系                                                                            *
   4          * 创建人:       王康                                                                                                                                                                    *
   5          * 日 期:       2008.8.6实现了液晶屏上任意显示汉字的功能                                                                                                *
   6          * 修改人:       王康                                                                                                                                                                    *
   7          * 日 期:       2008.8.7完成了工程功能的扩充,即在液晶屏的任意位置打点,可以用来波形显示                                  *
   8          * 描 述:       本文件包含了液晶模块的基本函数和显示汉字的所有操作子函数,可共其他的模块进行调用                 *       
   9          * 接口定义:     用的是熊涛那块12864接口板,接口按板上定义                                                                                                *
  10          *                       P1口接DB7 -- DB0                                                                                                                                                *
  11          *                       DI -- P3.7, 数据/指令 选择                                                                                                                              *
  12          *                       RW -- P3.6, 读/写选择                                                                                                                                   *
  13          *                       E -- P3.5, 使能信号                                                                                                                                             *
  14          *                       CS2 -- P3.4, 片选1, 右半片                                                                                                                              *
  15          *                       CS1 -- P3.3, 片选2, 左半片                                                                                                                              *
  16          *                       RST -- P3.2, 复位                                                                                                                                               *
  17          * 版 本:       KEIL uV2                                                                                                                                                                *
  18          ****************************************************************************************************/
  19          
  20          
  21          //头文件
  22          #include "config.h"
  23          #include "ziku.h"
  24          
  25          
  26          //定义结构体数组
  27          struct Word_Buffer
  28          {
  29                  uchar word[2];
  30          };
  31          struct Word_Buffer word_buf[32];                                                        //定义结构体数组来存储待显示的汉字,共32个
  32          
  33          
  34          /*****************************************************************************************************
  35          * 函 数 名:     Initiate
  36          * 功能描述: 本函数为初始化子函数
  37          * 全局变量: 无
  38          * 入口参数:     无
  39          * 出口参数:     无
  40          * 调用模块: 无
  41          * 作   者:     王康
  42          * 日   期:     2008.8.6
  43          * 修 改 人:     王康
  44          * 日   期: 
  45          * 版    本:     KEIL uV2
  46          ******************************************************************************************************/
  47          void Initiate(void)
  48          {
  49   1              WriteCmd(0x3e);                                                                                 //关显示
  50   1              WriteCmd(0x3f);                                                                                 //开显示
  51   1      }
  52          
  53          
  54          /*****************************************************************************************************
  55          * 函 数 名:     CheckBusy
C51 COMPILER V7.50   LCD12864                                                              08/08/2008 00:58:17 PAGE 2   

  56          * 功能描述: 本函数为判断LCD忙子函数,BUSY=1时,为忙;BUSY=0时,为空闲
  57          * 全局变量: 无
  58          * 入口参数:     
  59          * 出口参数:     无
  60          * 调用模块: 无
  61          * 作   者:     王康
  62          * 日   期:     2008.8.6
  63          * 修 改 人:     王康
  64          * 日   期:
  65          * 版    本:     KEIL uV2
  66          ******************************************************************************************************/
  67          void CheckBusy(void)
  68          {
  69   1              DPORT = 0xff;
  70   1              DI = 0;
  71   1              RW = 1;
  72   1              E = 1;
  73   1              while(DPORT & 0x80);                                                                    //BUSY=1时,为忙,则等待;BUSY=0时,为空闲
  74   1              E = 0;
  75   1      }
  76          
  77          
  78          /*****************************************************************************************************
  79          * 函 数 名:     WriteCmd
  80          * 功能描述: 本函数为写指令子函数
  81          * 全局变量: 无
  82          * 入口参数:     cmd -- 要写入的指令
  83          * 出口参数:     无
  84          * 调用模块: CheckBusy()
  85          * 作   者:     王康
  86          * 日   期:     2008.8.6
  87          * 修 改 人:     王康
  88          * 日   期:
  89          * 版    本:     KEIL uV2
  90          ******************************************************************************************************/
  91          void WriteCmd(uchar cmd)                                                                        //写指令子函数
  92          {
  93   1              CheckBusy();
  94   1              DI = 0;
  95   1              RW = 0;
  96   1              DPORT = cmd;
  97   1              E = 1;
  98   1              E = 0;  
  99   1      }
 100          
 101          
 102          /*****************************************************************************************************
 103          * 函 数 名:     WriteData
 104          * 功能描述: 本函数为写数据子函数
 105          * 全局变量: 无
 106          * 入口参数:     data -- 要写入的数据
 107          *                       opp     -- 显示标志位:  为1,显示阳码(点亮为0);为0,显示阴码(点亮为1)
 108          * 出口参数:     无
 109          * 调用模块: CheckBusy()
 110          * 作   者:     王康
 111          * 日   期:     2008.8.6
 112          * 修 改 人:     王康
 113          * 日   期:
 114          * 版    本:     KEIL uV2
 115          ******************************************************************************************************/
 116          void WriteData(uchar dat)                                                                       //写数据子函数
 117          {
C51 COMPILER V7.50   LCD12864                                                              08/08/2008 00:58:17 PAGE 3   

 118   1              CheckBusy();
 119   1              DI = 1;
 120   1              RW = 0;
 121   1              DPORT = dat;
 122   1              E = 1;
 123   1              E = 0;
 124   1      }
 125          
 126          
 127          /*****************************************************************************************************
 128          * 函 数 名:     ReadData
 129          * 功能描述: 本函数为读数据子函数
 130          * 全局变量: 无
 131          * 入口参数:     
 132          * 出口参数:     无
 133          * 调用模块: CheckBusy()
 134          * 作   者:     王康
 135          * 日   期:     2008.8.6
 136          * 修 改 人:     王康
 137          * 日   期:
 138          * 版    本:     KEIL uV2
 139          ******************************************************************************************************/
 140          uchar ReadData(void)
 141          {
 142   1              uchar   rddata;
 143   1              CheckBusy();
 144   1              DI = 1;
 145   1              RW = 1;
 146   1              E = 1;
 147   1              rddata = DPORT;
 148   1              E = 0;
 149   1              return  rddata; 
 150   1      }
 151          
 152          
 153          /*****************************************************************************************************
 154          * 函 数 名:     SetPos
 155          * 功能描述: 本函数为设置显示起始地址(显示行,页地址,Y地址)子函数
 156          * 全局变量: 无
 157          * 入口参数:     st_line -- 液晶显示的起始行,0--63,共64行 
 158          *                       xadd -- 液晶显示的页地址,即为DDRAM的行地址,8行为一页,共8页
 159          *                       yadd -- 液晶显示的Y地址,0--128,在对DDRAM进行读/写操作后,Y地址指针自动加1
 160          * 出口参数:     无
 161          * 调用模块: WriteCmd()
 162          * 作   者:     王康
 163          * 日   期:     2008.8.6
 164          * 修 改 人:     王康
 165          * 日   期:
 166          * 版    本:     KEIL uV2
 167          ******************************************************************************************************/
 168          void SetPos(uchar st_line, uchar x_add, uchar y_add)            //设置显示起始地址子函数
 169          {
 170   1              st_line &= 0x3f;                                                                                //st_line(起始行)的取值范围为0--63
 171   1              x_add &= 0x07;                                                                                  //x_add(页地址)的取值范围为0--7
 172   1              WriteCmd(st_line + 0xc0);                                                               //+ 0xc0根据液晶显示模块指令中设置起始行的格式
 173   1              WriteCmd(x_add + 0xb8);                                                                 //+ 0xb1根据液晶显示模块指令中设置页地址的格式
 174   1              if(y_add < 64)
 175   1              {
 176   2                      RIGHTSIDE
 177   2                      WriteCmd(y_add + 0x40);                                                         //y_add的取值范围为0-63,y_add<64时,右半屏显示
 178   2              }
 179   1              else
C51 COMPILER V7.50   LCD12864                                                              08/08/2008 00:58:17 PAGE 4   

 180   1              {
 181   2                      LEFTSIDE
 182   2                      WriteCmd(y_add);                                                                        //63<y_add<124时,左半屏显示
 183   2              }                                       
 184   1      }

⌨️ 快捷键说明

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