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

📄 lcd_dis.lst

📁 cp2001说明程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LCD_DIS                                                               07/24/2007 00:38:41 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD_DIS
OBJECT MODULE PLACED IN LCD_Dis.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD_Dis.c OPTIMIZE(SIZE) DEBUG OBJECTEXTEND

line level    source

   1          //========================================================================
   2          // 文件名:  LCD_Dis.c
   3          // 作  者: xinqiang Zhang(小丑)  (email: xinqiang@Mzdesign.com.cn)
   4          // 日  期: 2007/07/19
   5          // 描  述: MzLH01-12864 LCD显示模块驱动V1.0版
   6          //                      基本功能接口函数集
   7          //
   8          // 参  考: 无
   9          // 版  本:
  10          //      2007/07/19      First version    Mz Design
  11          //              2007/07/24              V1.2 for MCS51 Keil C
  12          //========================================================================
  13          
  14          #include "LCD_Config.h"
  15          
  16          unsigned char X_Witch=6;
  17          unsigned char Y_Witch=10;
  18          unsigned char X_Witch_cn=16;
  19          unsigned char Y_Witch_cn=16;
  20          unsigned char Dis_Zero=0;
  21          //========================================================================
  22          // 函数: void LCD_Init(void)
  23          // 描述: LCD初始化程序,主要在里面完成端口初始化以及LCD模块的复位
  24          // 参数: 无 
  25          // 返回: 无
  26          // 备注:
  27          // 版本:
  28          //      2007/07/19      First version
  29          //              2007/07/24              V1.2 for MCS51 Keil C
  30          //========================================================================
  31          void TimeDelay(unsigned int Timers)
  32          {
  33   1              unsigned int i;
  34   1              while(Timers)
  35   1              {
  36   2                      Timers--;
  37   2                      for(i=0;i<1000;i++) ;
  38   2              }
  39   1      }
  40          void LCD_Init(void)
  41          {
  42   1              SPI_SS = 1;
  43   1              SPI_SDA = 1;
  44   1              SPI_SCK = 1;
  45   1              SPI_BUSY = 1;
  46   1              
  47   1              SPI_RES = 0;            //复位
  48   1              TimeDelay(20);                                          //保持低电平大概2ms左右
  49   1              SPI_RES = 1;            //恢复高电平
  50   1              TimeDelay(20);                                          //延时大概2ms左右
  51   1      }
  52          //========================================================================
  53          // 函数: void SPI_SSSet(unsigned char Status)
  54          // 描述: 置SS线状态
  55          // 参数: Status   =1则置高电平,=0则置低电平  
C51 COMPILER V8.02   LCD_DIS                                                               07/24/2007 00:38:41 PAGE 2   

  56          // 返回: 无
  57          // 版本:
  58          //      2007/07/17      First version
  59          //              2007/07/24              V1.2 for MCS51 Keil C
  60          //========================================================================
  61          void SPI_SSSet(unsigned int Status)
  62          {
  63   1              while(SPI_BUSY);                                                        //如Busy为高电平,则循环等待
  64   1      //      TimeDelay(1);                                                           //稍稍延一点时间
  65   1              if(Status)                                                                      //判断是要置SS为低还是高电平?
  66   1              {       
  67   2                      SPI_SS = 1;                             //SS置高电平
  68   2              }
  69   1              else 
  70   1                      SPI_SS = 0;                             //SS置低电平
  71   1      }
  72          //========================================================================
  73          // 函数: void SPI_Send(unsigned char Data)
  74          // 描述: 通过串行SPI口输送一个byte的数据置模组
  75          // 参数: Data 要传送的数据 
  76          // 返回: 无
  77          // 版本:
  78          //      2007/07/17      First version
  79          //              2007/07/24              V1.2 for MCS51 Keil C
  80          //========================================================================
  81          void SPI_Send(unsigned int Data)
  82          {
  83   1              unsigned int i=0;
  84   1              while(SPI_BUSY);                                //如Busy为高电平,则循环等待
  85   1              for(i=0;i<8;i++)
  86   1              {
  87   2                      SPI_SCK = 0;                            //SCK置低
  88   2                      if(Data&0x0080)
  89   2                              SPI_SDA = 1;                    
  90   2                      else SPI_SDA = 0;
  91   2                      SPI_SCK = 1;                            //SCK上升沿触发串行数据采样
  92   2                      Data = Data<<1;                                                 //数据左移一位
  93   2              }
  94   1      }
  95          //========================================================================
  96          // 函数: void FontSet(unsigned char Font_NUM,unsigned char Color)
  97          // 描述: ASCII字符字体设置
  98          // 参数: Font_NUM 字体选择,以驱动所带的字库为准
  99          //               Color  文本颜色,仅作用于ASCII字库  
 100          // 返回: 无
 101          // 备注: 
 102          // 版本:
 103          //      2007/07/19      First version
 104          //========================================================================
 105          void FontSet(unsigned char Font_NUM,unsigned char Color)
 106          {
 107   1              unsigned char ucTemp=0;
 108   1              if(Font_NUM)
 109   1              {
 110   2                      X_Witch = 6;
 111   2                      Y_Witch = 10;
 112   2              }
 113   1              else
 114   1              {
 115   2                      X_Witch = 8;
 116   2                      Y_Witch = 16;
 117   2              }
C51 COMPILER V8.02   LCD_DIS                                                               07/24/2007 00:38:41 PAGE 3   

 118   1              ucTemp = (Font_NUM<<4)|Color;
 119   1              //设置ASCII字符的字型
 120   1              SPI_SSSet(0);                                   //SS置低电平                    
 121   1              SPI_Send(0x81);                                 //传送指令0x81
 122   1              SPI_Send(ucTemp);                               //选择8X16的ASCII字体,字符色为黑色
 123   1              SPI_SSSet(1);                                   //完成操作置SS高电平    
 124   1      }
 125          //========================================================================
 126          // 函数: void FontSet_cn(unsigned char Font_NUM,unsigned char Color)
 127          // 描述: 汉字库字符字体设置
 128          // 参数: Font_NUM 字体选择,以驱动所带的字库为准
 129          //               Color  文本颜色,仅作用于汉字库  
 130          // 返回: 无
 131          // 备注: 
 132          // 版本:
 133          //      2007/07/19      First version
 134          //========================================================================
 135          void FontSet_cn(unsigned char Font_NUM,unsigned char Color)
 136          {
 137   1              unsigned char ucTemp=0;
 138   1              if(Font_NUM)
 139   1              {
 140   2                      X_Witch_cn = 12;
 141   2                      Y_Witch_cn = 12;
 142   2              }
 143   1              else
 144   1              {
 145   2                      X_Witch_cn = 16;
 146   2                      Y_Witch_cn = 16;
 147   2              }
 148   1              ucTemp = (Font_NUM<<4)|Color;
 149   1              //设置ASCII字符的字型
 150   1              SPI_SSSet(0);                                   //SS置低电平                    
 151   1              SPI_Send(0x82);                                 //传送指令0x81
 152   1              SPI_Send(ucTemp);                               //选择8X16的ASCII字体,字符色为黑色
 153   1              SPI_SSSet(1);                                   //完成操作置SS高电平    
 154   1      }
 155          //========================================================================
 156          // 函数: void PutChar(unsigned char x,unsigned char y,unsigned char a) 
 157          // 描述: 写入一个标准ASCII字符
 158          // 参数: x  X轴坐标     y  Y轴坐标
 159          //               a  要显示的字符在字库中的偏移量  
 160          // 返回: 无
 161          // 备注: ASCII字符可直接输入ASCII码即可
 162          // 版本:
 163          //      2007/07/19      First version
 164          //========================================================================
 165          void PutChar(unsigned char x,unsigned char y,unsigned char a) 
 166          {
 167   1              //显示ASCII字符
 168   1              SPI_SSSet(0);                                   //SS置低电平    
 169   1              SPI_Send(7);                                    //传送指令0x07
 170   1              SPI_Send(x);                                    //要显示字符的左上角的X轴位置
 171   1              SPI_Send(y);                                    //要显示字符的左上角的Y轴位置
 172   1              SPI_Send(a);                                    //要显示字符ASCII字符的ASCII码值
 173   1              SPI_SSSet(1);                                   //完成操作置SS高电平
 174   1      }
 175          //========================================================================
 176          // 函数: void PutString(int x,int y,char *p)
 177          // 描述: 在x、y为起始坐标处写入一串标准ASCII字符
 178          // 参数: x  X轴坐标     y  Y轴坐标
 179          //               p  要显示的字符串  
C51 COMPILER V8.02   LCD_DIS                                                               07/24/2007 00:38:41 PAGE 4   

 180          // 返回: 无
 181          // 备注: 仅能用于自带的ASCII字符串显示
 182          // 版本:
 183          //      2007/07/19      First version
 184          //========================================================================
 185          void PutString(unsigned char x,unsigned char y,unsigned char *p)
 186          {
 187   1              while(*p!=0)
 188   1              {
 189   2                      PutChar(x,y,*p);
 190   2                      x += X_Witch;
 191   2                      if((x + X_Witch) > Dis_X_MAX)
 192   2                      {
 193   3                              x = Dis_Zero;
 194   3                              if((Dis_Y_MAX - y) < Y_Witch) break;
 195   3                              else y += Y_Witch;
 196   3                      }
 197   2                      p++;
 198   2              }
 199   1      }
 200          //========================================================================
 201          // 函数: void PutChar_cn(unsigned char x,unsigned char y,unsigned short * GB) 
 202          // 描述: 写入一个二级汉字库汉字
 203          // 参数: x  X轴坐标     y  Y轴坐标
 204          //               a  GB码  
 205          // 返回: 无
 206          // 备注: 

⌨️ 快捷键说明

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