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

📄 lcd12864r.lst

📁 该程序通过DS18B20测温度
💻 LST
字号:
C51 COMPILER V7.50   LCD12864R                                                             10/04/2007 11:52:12 PAGE 1   


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

line level    source

   1          /**********************************************************
   2          *描述:YM12864R-3带中文字库图形液晶驱动
   3          *版本:V1.0
   4          *控制器:ST7920
   5          *通讯方式:串行方式
   6          
   7          **********************************************************/
   8          #include <at89x52.h>
   9          //引脚定义:
  10          sbit  LCD_CS =P0^0;     //LCD片选端
  11          sbit  LCD_SID=P0^1;     //LCD串行数据输入/输出端
  12          sbit  LCD_CLK=P0^2;     //LCD串行同步时钟,上升沿时读取SID数据.
  13          
  14          //函数声明:
  15          void LCD_SEND(unsigned char sData);
  16          unsigned char LCD_RECEIVE();
  17          unsigned char LCD_READ_BF();
  18          void LCD_WRITE_IR(unsigned char LCD_COMMAND);
  19          void LCD_WRITE_DR(unsigned char LCD_DATA);
  20           
  21          /**********************************************************
  22          *LCD初始化函数
  23          **********************************************************/
  24          void LCD_INIT()
  25          {
  26   1       LCD_WRITE_IR(0x30); //功能设置-基本指令集
  27   1       LCD_WRITE_IR(0x0c); //显示打开,光标关,反白显示关
  28   1       LCD_WRITE_IR(0x01); //清屏
  29   1       LCD_WRITE_IR(0x06); //进入点设定,光标向右移动,AC+1
  30   1      }
  31          /**********************************************************
  32          *写指令到LCD函数
  33          *名称:LCD_WRITE_IR
  34          *入口参数:LCD_COMMAND (字符型--8位数据)
  35          **********************************************************/
  36          void LCD_WRITE_IR(unsigned char LCD_COMMAND)
  37          {
  38   1       unsigned char tData; 
  39   1       LCD_CS = 0;                            //拉低片选终止所有数据传送
  40   1              //判忙
  41   1       do{tData = LCD_READ_BF();}
  42   1       while(tData&0x80==0x80);
  43   1       LCD_CS = 1;                            //拉高片选准备传送数据
  44   1       LCD_SEND(0xf8);                        //发送写指令
  45   1       tData = LCD_COMMAND;
  46   1       tData = tData&0xf0;//屏蔽低4位(取出高4位) 
  47   1       LCD_SEND(tData);               //发送高4位
  48   1       tData = LCD_COMMAND;
  49   1       tData = tData<<4;      //取低4位
  50   1       LCD_SEND(tData);               //发送低4位
  51   1       LCD_CS = 0;                            //拉低片选终止所有数据传送
  52   1      }
  53          /**********************************************************
  54          *写数据到LCD函数
  55          *名称:LCD_WRITE_DR
C51 COMPILER V7.50   LCD12864R                                                             10/04/2007 11:52:12 PAGE 2   

  56          *入口参数:LCD_DATA (字符型-8位)
  57          **********************************************************/
  58          void LCD_WRITE_DR(unsigned char LCD_DATA)
  59          {
  60   1       unsigned char tData=0;  
  61   1       LCD_CS = 0;                    //拉低片选终止所有数据传送
  62   1              //判忙
  63   1       do{tData = LCD_READ_BF();}
  64   1       while(tData&0x80==0x80);
  65   1       LCD_CS = 1;                    //拉高片选准备传送数据
  66   1       LCD_SEND(0xfa);                //发送写数据指令
  67   1       tData = LCD_DATA;
  68   1       tData = tData&0xf0;//屏蔽低4位(取出高4位) 
  69   1       LCD_SEND(tData);       //发送高4位
  70   1       tData = LCD_DATA;
  71   1       tData = tData<<4;      //取低4位
  72   1       LCD_SEND(tData);               //发送低4位
  73   1       LCD_CS = 0;                    //拉低片选终止所有数据传送
  74   1      }
  75          /**********************************************************
  76          *读取LCD忙碌标志(BF)和地址计数器(AC)的状态
  77          *名称:LCD_READ_BF
  78          **********************************************************/
  79          unsigned char LCD_READ_BF()
  80          {
  81   1       unsigned char i,tData=0; 
  82   1       LCD_CS = 1;                            //拉高片选准备传送数据
  83   1       LCD_SEND(0xfc);                        //发送读数据指令
  84   1       i = LCD_RECEIVE();                     //读取数据高4位
  85   1       tData = LCD_RECEIVE();    //读取数据低4位
  86   1       LCD_CS = 0;                            //拉低片选终止所有数据传送
  87   1       i = i&0xf0;                            //屏蔽低4位
  88   1       tData = tData>>4;
  89   1       tData = tData&0x0f;//屏蔽高4位
  90   1       tData = tData|i;       //组合成完整数据
  91   1       return (tData);
  92   1      }
  93          
  94          /**********************************************************
  95          *LCD发送8BIT的数据(1个字节)
  96          *名称:LCD_SEND
  97          *入口:
  98          **********************************************************/
  99          void LCD_SEND(unsigned char sData)
 100          {
 101   1       unsigned char i;
 102   1       for (i=8;i>0;i--)
 103   1              {
 104   2               LCD_CLK = 0;
 105   2               LCD_SID = sData&0x80;//发送一位数据
 106   2               LCD_CLK = 1;           //拉高串行时钟端,锁存数据
 107   2               sData <<= 1;
 108   2              }
 109   1      }
 110          /**********************************************************
 111          *LCD接收8BIT数据(1个字节)
 112          *名称:LCD_RECEIVE
 113          *出口:rData
 114          **********************************************************/
 115          unsigned char LCD_RECEIVE()
 116          {
 117   1       unsigned char i,rData=0;
C51 COMPILER V7.50   LCD12864R                                                             10/04/2007 11:52:12 PAGE 3   

 118   1       for (i=8;i>0;i--)
 119   1              {
 120   2               LCD_CLK = 0;
 121   2               rData <<=1;
 122   2               LCD_CLK = 1;
 123   2               rData |= LCD_SID;
 124   2              }
 125   1              return(rData);
 126   1      }
 127          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    172    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   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 + -