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

📄 lcd_draw.lst

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


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

line level    source

   1          /****************************************************************************************************
   2          * 文件名:       LCD_DRAW.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          
  24          
  25          /*****************************************************************************************************
  26          * 函 数 名:     PlotDot
  27          * 功能描述: 本函数为打点子函数,可以在液晶屏上的任意位置进行打点
  28          *                       第0行第0列的第一个点可以看作是坐标原点,在打一个点的时候,要先读出要清除的那个点的位置
  29          *               所在的字节数据,在打一个点的时候,保持该字节里其他的点不变
  30          * 全局变量: 无
  31          * 入口参数:     x,可以看作是打点的横坐标
  32          *                       y,可以看作是打点的纵坐标
  33          * 出口参数:     无
  34          * 调用模块: WriteData(),SetPos()
  35          * 作   者:     王康
  36          * 日   期:     2008.8.7
  37          * 修 改 人:     王康
  38          * 日   期:
  39          * 版    本:     KEIL uV2
  40          ******************************************************************************************************/
  41          void PlotDot(uchar x, uchar y)
  42          {
  43   1              uchar   rdtmp;                                                                                  //用来存放读到的字节数据
  44   1              SetPos(0, y / 8, x);                                                                    //首先找到要打点的那个位置所在的字节
  45   1              rdtmp = ReadData();                                                                             //读数据
  46   1              rdtmp = ReadData();                                                                             //再次读数据,保证读进来数据的正确性
  47   1              SetPos(0, y / 8, x);                                                                    //找到要打的点所在的字节位置
  48   1              WriteData(rdtmp | (0x01 << (y % 8)));                                   //打点
  49   1      }
  50          
  51          
  52          /*****************************************************************************************************
  53          * 函 数 名:     ClrDot
  54          * 功能描述: 本函数为清除点子函数,可以清除液晶屏上的任意位置原有的点
  55          *                       第0行第0列的第一个点可以看作是坐标原点.在清除一个点的时候,要先读出要清除的那个点的位置
C51 COMPILER V7.50   LCD_DRAW                                                              08/08/2008 00:58:18 PAGE 2   

  56          *               所在的字节数据,只能清除一个点,而要保持其他的点不变
  57          * 全局变量: 无
  58          * 入口参数:     x,可以看作是打点的横坐标
  59          *                       y,可以看作是打点的纵坐标
  60          * 出口参数:     无
  61          * 调用模块: WriteData(),SetPos()
  62          * 作   者:     王康
  63          * 日   期:     2008.8.7
  64          * 修 改 人:     王康
  65          * 日   期:
  66          * 版    本:     KEIL uV2
  67          ******************************************************************************************************/
  68          void ClrDot(uchar x, uchar y)
  69          {
  70   1              uchar   rdtmp;                                                                                  //用来存放读到的字节数据
  71   1              SetPos(0, y / 8, x);                                                                    //首先找到要清除的那个点的位置所在的字节
  72   1              rdtmp = ReadData();                                                                             //读数据
  73   1              rdtmp = ReadData();                                                                             //再次读数据,保证读进来数据的正确性
  74   1              SetPos(0, y / 8, x);                                                                    //找到要清除的点所在的字节位置
  75   1              WriteData((~(0x01 << (y % 8))) & rdtmp);                                //清除要清除的点                                        
  76   1      }
  77          
  78          
  79          /*****************************************************************************************************
  80          * 函 数 名:     DrawLine
  81          * 功能描述: 本函数为画直线子函数,可以在液晶屏上的任意位置画直线
  82          *                       第0行第0列的第一个点可以看作是坐标原点.本函数输入两个点的坐标,可以借助"math.h"库中的
  83          *                       函数,利用两点式求直线方程,由于直线的斜率既可以为正又可以为负,因此将点的坐标定义为char型
  84          * 全局变量: 无
  85          * 入口参数:     X1,Y1,可以看作是第一个点的横纵坐标
  86          *                       X2,Y2,可以看作是第二个点的横纵坐标
  87          * 出口参数:     无
  88          * 调用模块: PlotDot()
  89          * 作   者:     王康
  90          * 日   期:     2008.8.7
  91          * 修 改 人:     王康
  92          * 日   期:
  93          * 版    本:     KEIL uV2
  94          ******************************************************************************************************/
  95          void DrawLine(char X1, char Y1, char X2, char Y2)
  96          {
  97   1              char    X;                                                                                              //定义函数自变量
  98   1              char    Y;                                                                                              //定义函数因变量
  99   1              float   K;                                                                                              //定义直线的斜率
 100   1              K = (Y2 - Y1) * 1.0 / (X2 - X1);                                                //根据数学公式求出直线的斜率
 101   1              for(X = X1; X < X2; X++)
 102   1              {
 103   2                      Y = K * (X - X1) + Y1;                                                          //得出直线方程
 104   2                      PlotDot(X , Y);
 105   2              }
 106   1      }
 107          
 108          
 109          /*****************************************************************************************************
 110          * 函 数 名:     Test1
 111          * 功能描述: 本函数为测试子函数1
 112          *                       实现的功能是从上到下,从左到右,一个一个的打点,点打后不熄灭
 113          * 全局变量: 无
 114          * 入口参数:     无
 115          * 出口参数:     无
 116          * 调用模块: PlotDot()
 117          * 作   者:     王康
C51 COMPILER V7.50   LCD_DRAW                                                              08/08/2008 00:58:18 PAGE 3   

 118          * 日   期:     2008.8.7
 119          * 修 改 人:     王康
 120          * 日   期:
 121          * 版    本:     KEIL uV2
 122          ******************************************************************************************************/
 123          void Test1(void)
 124          {
 125   1              uchar   i;                                                                                              //横坐标
 126   1              uchar   j;                                                                                              //纵坐标        
 127   1              uint    k;                                                                                              //用于延时
 128   1              for(i = 0; i < 128; i++)
 129   1              {
 130   2                      for(j = 0; j < 64; j++)
 131   2                      {
 132   3                              PlotDot(i, j);
 133   3                              for(k = 0; k < 500; k++);
 134   3                      }
 135   2              }
 136   1      }
 137          
 138          
 139          /*****************************************************************************************************
 140          * 函 数 名:     Test2
 141          * 功能描述: 本函数为测试子函数2
 142          *                       实现的功能是从左到右,从上到下,一个一个的打点,点打后不熄灭
 143          * 全局变量: 无
 144          * 入口参数:     无
 145          * 出口参数:     无
 146          * 调用模块: PlotDot()
 147          * 作   者:     王康
 148          * 日   期:     2008.8.7
 149          * 修 改 人:     王康
 150          * 日   期:
 151          * 版    本:     KEIL uV2
 152          ******************************************************************************************************/
 153          void Test2(void)
 154          {
 155   1              uchar   i;
 156   1              uchar   j;
 157   1              uint    k;
 158   1              for(i = 0; i < 64; i++)
 159   1              {
 160   2                      for(j = 0; j < 128; j++)
 161   2                      {
 162   3                              PlotDot(j,i);
 163   3                              for(k = 0; k < 500; k++);
 164   3                      }
 165   2              }
 166   1      }
 167          
 168          
 169          
 170          /*****************************************************************************************************
 171          * 函 数 名:     Test3
 172          * 功能描述: 本函数为测试子函数3
 173          *                       实现的功能是在液晶屏幕上打出一个正弦波
 174          * 全局变量: 无
 175          * 入口参数:     无
 176          * 出口参数:     无
 177          * 调用模块: PlotDot()
 178          * 作   者:     王康
 179          * 日   期:     2008.8.7
C51 COMPILER V7.50   LCD_DRAW                                                              08/08/2008 00:58:18 PAGE 4   

 180          * 修 改 人:     王康
 181          * 日   期:
 182          * 版    本:     KEIL uV2
 183          ******************************************************************************************************/
 184          void Test3(void)
 185          {
 186   1              uchar   x;
 187   1              uint    k;
 188   1              uchar   y;
 189   1              for(x = 0;x < 128; x++)
 190   1              {
 191   2                      y = 30 - 20 * sin(x * 3.14 / 32);
 192   2                      PlotDot(x, y);
 193   2                      for(k = 0; k < 5000; k++);
 194   2              }
 195   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    491    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      21
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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