st7920serial.lst

来自「这是TOPWAY公司的LCD驱动程序」· LST 代码 · 共 1,211 行 · 第 1/5 页

LST
1,211
字号
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ST7920SERIAL
OBJECT MODULE PLACED IN st7920serial.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE st7920serial.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************************************
   2          Copyright 2007 普兰工作室
   3          All rights reserved.
   4          
   5          文件名  : st7920serial.c
   6          模块名称:st7920 串行方式驱动12864液晶驱动
   7          功能概要:st7920显示驱动、ds1302驱动、ds18b20驱动 显示时间,温度
   8          
   9          取代版本:0.0.1
  10          修改人  :pulan
  11          完成日期:2007.07.08
  12          升级说明:create
  13          CPU: stc89c58   主频:11.0592M
  14          液晶型号:       生产厂家:        驱动芯片:st7920
  15          ******************************************************************************/
  16          #include <reg52.h>
  17          
  18          sbit Bell_Out  = P1 ^ 0;//闹钟管脚输出,低有效
  19          
  20          sbit DQ        = P1 ^ 4;//ds1820data
  21          sbit clock_clk = P3 ^ 5;//ds1302_clk
  22          sbit clock_dat = P3 ^ 6;//ds1302_dat
  23          sbit clock_Rst = P3 ^ 7;//ds1302_Rst
  24          
  25          //键盘扫描
  26          sbit Add_Key   = P2 ^ 0;//加1键
  27          sbit Dec_Key   = P2 ^ 1;//减1键
  28          sbit OK_Key    = P2 ^ 2;//确定键
  29          
  30          //引脚定义
  31          sbit   CS    =  P2 ^ 1; //片选 高电平有效 单片LCD使用时可固定高电平
  32          sbit   SID   =  P2 ^ 2; //数据
  33          sbit   SCLK  =  P2 ^ 4; //时钟
  34          sbit   psb   =  P2^5;
  35          //为了编程方便定义的位变量
  36          sbit a0   = ACC ^ 0;
  37          sbit a1   = ACC ^ 1;
  38          sbit a2   = ACC ^ 2;
  39          sbit a3   = ACC ^ 3;
  40          sbit a4   = ACC ^ 4;
  41          sbit a5   = ACC ^ 5;
  42          sbit a6   = ACC ^ 6;
  43          sbit a7   = ACC ^ 7;
  44          
  45          bit flag, Bell_Swh,Hourb,Minb,Kgb;//闹钟调时闪烁标志位
  46          bit sec=0,min=0,hour=0,year=0,mon=0,day=0,weekk=0; //闪烁标志位
  47          unsigned char id;
  48          unsigned char id2;
  49          unsigned char d;
  50          unsigned char e;
  51          unsigned char S_1302;
  52          unsigned char H_1302;
  53          unsigned char H_Bell;
  54          unsigned char S_Bell;
  55          //Function Definition 函数声明 
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 2   

  56          void Delay(int num);
  57          void Init_DS18B20(void);
  58          unsigned char ReadOneChar(void);
  59          void WriteOneChar(unsigned char dat);
  60          unsigned int ReadTemperature(void);
  61          void clock_out(unsigned char dd);
  62          unsigned char clock_in(void);
  63          unsigned char read_clock(unsigned char ord);
  64          void write_clock(unsigned char ord, unsigned char dd);
  65          void Disp(void);
  66          void id_case1_key(void);
  67          void id_case2_key(void);
  68          void Set_time(unsigned char sel,bit sel_1);
  69          void Timer0_Init(void);
  70          void Init_1302(void);
  71          void Set_Bell(unsigned char sel, bit sel_1);
  72          void Bell(void);
  73          //12864
  74          void Write_char(bit start, unsigned char ddata);
  75          void Send_byte(unsigned char bbyte);
  76          void Delaynms(unsigned int di);
  77          void Lcd_init(void);
  78          void Disp_img(unsigned char *img);
  79          //void Lcd_img_Cls(void);
  80          void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s);
  81          void LCD_set_xy( unsigned char x, unsigned char y );
  82          
  83          unsigned char code num[]={"0123456789 :."};
  84          unsigned char code yi[]={"一"};
  85          unsigned char code er[]={"二"};
  86          unsigned char code san[]={"三"};
  87          unsigned char code si[]={"四"};
  88          unsigned char code wu[]={"五"};
  89          unsigned char code liu[]={"六"};
  90          unsigned char code ri[]={"日"};
  91          unsigned char code guan[]={"关"};
  92          unsigned char code kai[]={"开"};
  93          unsigned char code bt[]={"电子万年历"};
  94          unsigned char code nian[]={"年"};
  95          unsigned char code yue[]={"月"};
  96          unsigned char code xq[]={"星期"};
  97          unsigned char code sw[]={"室温"};
  98          unsigned char code ssd[]={"℃"};
  99          unsigned char code nzbz []={"ON"};
 100          unsigned char code nzsd []={"闹钟设定"};
 101          unsigned char code colon []={":"};
 102          unsigned char code nzsjd []={"闹钟时候到!"};
 103          unsigned char code xsfz[]={"H : M"};
 104          unsigned char code space_c[]={"  "};
 105          
 106          unsigned char code logo[]={  
 107          /*--  调入了一幅图像:logo.bmp  -- */ 
 108          /*--  宽度x高度=128x64 显示湘灵电子LOGO --*/
 109          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 110          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 111          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 112          0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 113          0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 114          0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 115          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 116          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 117          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 3   

 118          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
 119          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
 120          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
 121          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
 122          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
 123          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 124          0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
 125          0x10,0x06,0x00,0x00,0x30,0x00,0x00,0x37,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
 126          0x30,0x06,0x00,0x01,0x20,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 127          0x30,0x06,0x00,0x02,0x60,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 128          0x38,0x06,0x00,0x16,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 129          0x3C,0x06,0x00,0x24,0x00,0x3F,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 130          0x3C,0x0F,0x00,0x64,0x01,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 131          0x3F,0x1F,0x00,0x60,0x0F,0xFF,0xFC,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
 132          0x17,0xBF,0xE0,0x60,0x3F,0xFF,0xFE,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
 133          0x00,0x7F,0x80,0x80,0xFF,0x00,0x3F,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x01,0x80,0x00,
 134          0x00,0x7E,0x01,0x81,0xF8,0x00,0x0F,0x01,0xE0,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,
 135          0x00,0x0E,0x03,0x43,0xEF,0xFC,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x03,0x7F,0x00,
 136          0x00,0x0E,0x03,0x07,0xCF,0xFE,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x06,0x19,0x80,
 137          0x00,0x0E,0x06,0x0F,0xBF,0xFE,0x0F,0x80,0xC0,0x00,0x3F,0x80,0x00,0x06,0x00,0xC0,
 138          0x60,0x0E,0x06,0x1F,0x3F,0xBE,0x0F,0x00,0xC0,0x00,0xFF,0xC0,0x00,0x04,0x00,0xC0,
 139          0x60,0x0E,0x0E,0x3C,0x7F,0x9E,0x0F,0x10,0xC0,0x81,0x80,0x60,0x01,0x84,0x00,0xC0,
 140          0x60,0x0E,0x0C,0x38,0xFF,0xFE,0x1E,0x10,0xC1,0x83,0x00,0x21,0xC6,0x8C,0x00,0x60,
 141          0x38,0x1E,0x18,0x70,0xFF,0xFE,0x3C,0x30,0xC3,0x0E,0x00,0x63,0x2C,0x8C,0xE0,0x30,
 142          0x7F,0x9E,0x18,0x71,0xFF,0xFC,0x78,0x70,0xC3,0x18,0x00,0x62,0x29,0x8D,0xF8,0x18,
 143          0x3E,0xBF,0x18,0xE1,0xFF,0xFC,0xF0,0x7C,0xC2,0x10,0x01,0xC2,0x25,0xF9,0x1E,0x08,
 144          0x30,0x76,0x18,0xC1,0xFF,0xF1,0xE0,0xEC,0xC0,0x30,0x03,0x02,0x24,0xF9,0x03,0x8C,
 145          0x20,0x66,0x11,0xC0,0xFF,0xE7,0x80,0x82,0x60,0x10,0x02,0x06,0x64,0x19,0x00,0x84,
 146          0x20,0xC6,0x11,0x80,0xFF,0x9F,0x00,0x00,0xF0,0x19,0xC2,0x06,0x64,0x1F,0x10,0xCC,
 147          0x01,0xC4,0x09,0x80,0x7F,0x7C,0x00,0x00,0xF8,0x0F,0x63,0x06,0x2C,0x1E,0x38,0xC8,
 148          0x01,0x84,0x01,0x80,0x00,0xF8,0x0C,0x00,0xD8,0x00,0x23,0x06,0x38,0x12,0x01,0x98,
 149          0x01,0x04,0x01,0x80,0x07,0xE0,0x18,0x00,0xCC,0x00,0x31,0x03,0x19,0xF6,0x01,0xF0,
 150          0x00,0x04,0x01,0x98,0x7F,0x00,0x30,0x00,0x86,0x00,0x11,0x01,0x18,0x37,0x81,0x80,
 151          0x00,0x04,0x01,0xC7,0xFC,0x00,0xE0,0x00,0x87,0x00,0x19,0x81,0x98,0x1D,0x9F,0x00,
 152          0x00,0x04,0x01,0xC0,0x00,0x01,0x80,0x01,0x83,0x80,0x18,0xF0,0x98,0x18,0x03,0x00,
 153          0x03,0x04,0x00,0xE0,0x00,0x07,0x00,0x01,0x01,0xC0,0xF8,0xD8,0x98,0xA8,0x03,0x00,
 154          0x07,0x04,0x00,0xF0,0x00,0x1E,0x00,0x03,0x00,0xE0,0xC0,0x08,0x99,0xEF,0x3E,0x00,
 155          0x0E,0x04,0x00,0x7C,0x00,0x7C,0x00,0x06,0x00,0x60,0xC0,0x08,0x99,0x12,0x36,0x00,
 156          0x1C,0x04,0x00,0x3F,0xCF,0xF0,0x00,0x0C,0x00,0x30,0x40,0x0C,0x99,0x10,0x02,0x00,
 157          0x3C,0x04,0x00,0x0F,0xFF,0xC0,0x00,0x38,0x00,0x18,0x7F,0xF8,0xFF,0x18,0x06,0x00,
 158          0x3C,0x04,0x00,0x03,0xFF,0x00,0x00,0x60,0x00,0x00,0x3F,0xF0,0x66,0x1F,0xFC,0x00,
 159          0x3C,0x04,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 160          0x3C,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 161          0x3C,0x0C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 162          0x3C,0x0C,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 163          0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 164          0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 165          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 166          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 167          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 168          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 169          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 170          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 171          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 172          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 173          };
 174          /******************************************************************************************
 175          * 函数名称    :Delay
 176          * 功能描述    :
 177          * 参数        :  参数名称:    输入/输出?     类型            描述
 178          * 
 179          * 返回值      :
C51 COMPILER V8.02   ST7920SERIAL                                                          07/24/2007 06:45:27 PAGE 4   

 180          * 作者        :
 181          * 创建日期    :2006-12-19
 182          * 全局变量    :
 183          * 全局静态变量:
 184          * 局部静态变量:
 185          *----------------------------------------修改历史------------------------------------------
 186          * 当前版本    :                         修改人:                  修改日期:
 187          * 修改说明    :
 188          ******************************************************************************************/
 189          void Lcd_init(void)     //初始化LCD 
 190          {
 191   1                      Delaynms(10); //启动等待,等LCM讲入工作状态
 192   1              CS=1;
 193   1              Write_char(0,0x30);  //8 位介面,基本指令集
 194   1              Write_char(0,0x0c);  //显示打开,光标关,反白关
 195   1              Write_char(0,0x01);  //清屏,将DDRAM的地址计数器归零  
 196   1      }
 197          
 198          /******************************************************************************************
 199          * 函数名称    :Delay
 200          * 功能描述    :
 201          * 参数        :  参数名称:    输入/输出?     类型            描述
 202          * 
 203          * 返回值      :
 204          * 作者        :
 205          * 创建日期    :2006-12-19
 206          * 全局变量    :
 207          * 全局静态变量:
 208          * 局部静态变量:
 209          *----------------------------------------修改历史------------------------------------------
 210          * 当前版本    :                         修改人:                  修改日期:
 211          * 修改说明    :
 212          ******************************************************************************************/
 213          void Write_char(bit start, unsigned char ddata) //写指令或数据
 214          {
 215   1                      unsigned char start_data,Hdata,Ldata;
 216   1              if(start==0) 
 217   1                              start_data=0xf8;         //写指令
 218   1          else    
 219   1              start_data=0xfa;  //写数据
 220   1        
 221   1              Hdata=ddata&0xf0;                 //取高四位
 222   1              Ldata=(ddata<<4)&0xf0;  //取低四位
 223   1              Send_byte(start_data);    //发送起始信号
 224   1              Delaynms(5); //延时是必须的
 225   1              Send_byte(Hdata);             //发送高四位
 226   1              Delaynms(1);  //延时是必须的
 227   1              Send_byte(Ldata);                 //发送低四位
 228   1              Delaynms(1);  //延时是必须的

⌨️ 快捷键说明

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