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

📄 12864lcd显示.lst

📁 LCD12864+18b20+1302串口
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE 12864LCD_允_
OBJECT MODULE PLACED IN 12864LCD显示.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864LCD显示.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //12864LCD显示温度&时钟程序
   2          
   3          
   4          
   5          #include <AT89X52.h>
   6          
   7          sbit Bell_Out  = P1^0;//闹钟管脚输出,低有效
   8          
   9          sbit DQ        = P1^4;//ds1820data//温感数据口
  10          sbit clock_clk = P3^5;//ds1302_clk//时钟同步
  11          sbit clock_dat = P3^6;//ds1302_dat//时钟数据
  12          sbit clock_Rst = P3^7;//ds1302_Rst//时钟复位
  13          
  14          //键盘扫描
  15          sbit Add_Key   = P1^1;//加1键
  16          sbit Dec_Key   = P1^2;//减1键
  17          sbit OK_Key    = P1^3;//确定键
  18          
  19          //引脚定义
  20          sbit   CS    =  P3^0;   //片选 高电平有效 单片LCD使用时可固定高电平
  21          sbit   SID   =  P3^1;   //数据
  22          sbit   SCLK  =  P3^2;   //时钟
  23          
  24          //为了编程方便定义的位变量
  25          sbit a0   = ACC ^ 0;
  26          sbit a1   = ACC ^ 1;
  27          sbit a2   = ACC ^ 2;
  28          sbit a3   = ACC ^ 3;
  29          sbit a4   = ACC ^ 4;
  30          sbit a5   = ACC ^ 5;
  31          sbit a6   = ACC ^ 6;
  32          sbit a7   = ACC ^ 7;
  33          
  34          bit flag, Bell_Swh,Hourb,Minb,Kgb;                      //闹钟调时闪烁标志位
  35          bit sec=0,min=0,hour=0,year=0,mon=0,day=0,weekk=0;      //光标闪烁标志位
  36          unsigned char id;                                       //调时钟闪烁变量
  37          unsigned char id2;                                      //调闹钟闪烁变量
  38          unsigned char d;                                        //温度传送高4位字节
  39          unsigned char e;                                        //温度传送低4位字节
  40          unsigned char S_1302;                                   //读取小时寄存器数据
  41          unsigned char H_1302;                                   //读取分钟寄存器数据
  42          unsigned char H_Bell;                                   //读取闹钟RAM小时数据                   
  43          unsigned char S_Bell;                                   //读取闹钟RAM分钟数据
  44          
  45          
  46          //Function Definition 函数声明 
  47          void Delay(int num);                                    //延迟uM
  48                                                                  
  49          void Init_DS18B20(void);                                //初始化温度感应器
  50          unsigned char ReadOneChar(void);                        //读取温度传感器字节
  51          void WriteOneChar(unsigned char dat);                   //发送指令到温度传感器          
  52          unsigned int ReadTemperature(void);                     //读取温度数据并转换为10进制
  53          
  54          void clock_out(unsigned char dd);                       //1302时钟接收一个字节
  55          unsigned char clock_in(void);                           //1302时钟发送一个字节
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 2   

  56          unsigned char read_clock(unsigned char ord);            //读取1302时钟时间寄存器
  57          void write_clock(unsigned char ord, unsigned char dd);  //写数据或指令到1302
  58          
  59          void Disp(void);                                        //时间界面光标闪烁
  60          void id_case1_key(void);                                //时间界面上下按键判别
  61          void id_case2_key(void);                                //闹钟界面上下按键判别
  62          void Set_time(unsigned char sel,bit sel_1);             //判别时间光标位置,加或减
  63          void Init_1302(void);                                   //初始化时钟IC
  64          void Timer0_Init(void);                                 //TO中断初始化                          
  65          void Set_Bell(unsigned char sel, bit sel_1);            //判别闹钟时间光标位置,家或减
  66          void Bell(void);                                        //驱动蜂鸣器
  67          
  68          //12864函数
  69          void Write_char(bit start, unsigned char ddata);        //写数据或者指令
  70          void Send_byte(unsigned char bbyte);                    //发送一个字节
  71          void Delaynms(unsigned int di);                         //延迟uM
  72          void Lcd_init(void);                                    //初始化LCD屏幕
  73          void Disp_img(unsigned char *img);                      //插入LOGO 128*64
  74          void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s);//指定LCD位置写字符
  75          void LCD_set_xy( unsigned char x, unsigned char y );    //指定LCD位置
  76          
  77          unsigned char code num[]={"0123456789 :."};
  78          unsigned char code yi[]={"一"};
  79          unsigned char code er[]={"二"};
  80          unsigned char code san[]={"三"};
  81          unsigned char code si[]={"四"};
  82          unsigned char code wu[]={"五"};
  83          unsigned char code liu[]={"六"};
  84          unsigned char code ri[]={"日"};
  85          unsigned char code guan[]={"关"};
  86          unsigned char code kai[]={"开"};
  87          unsigned char code bt[]={"电子万年历"};
  88          unsigned char code nian[]={"年"};
  89          unsigned char code yue[]={"月"};
  90          unsigned char code xq[]={"星期"};
  91          unsigned char code sw[]={"室温"};
  92          unsigned char code ssd[]={"℃"};
  93          unsigned char code nzbz []={"ON"};
  94          unsigned char code nzsd []={"闹钟设定"};
  95          unsigned char code colon []={":"};
  96          unsigned char code nzsjd []={"闹钟时候到!"};
  97          unsigned char code xsfz[]={"H : M"};
  98          unsigned char code space_c[]={"  "};
  99          
 100          //插入图片
 101          unsigned char code logo[]={   
 102          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 103          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 104          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 105          0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 106          0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 107          0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 108          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 109          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 110          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
 111          0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
 112          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
 113          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
 114          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
 115          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
 116          0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 117          0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 3   

 118          0x10,0x06,0x00,0x00,0x30,0x00,0x00,0x37,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
 119          0x30,0x06,0x00,0x01,0x20,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 120          0x30,0x06,0x00,0x02,0x60,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 121          0x38,0x06,0x00,0x16,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 122          0x3C,0x06,0x00,0x24,0x00,0x3F,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 123          0x3C,0x0F,0x00,0x64,0x01,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
 124          0x3F,0x1F,0x00,0x60,0x0F,0xFF,0xFC,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
 125          0x17,0xBF,0xE0,0x60,0x3F,0xFF,0xFE,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
 126          0x00,0x7F,0x80,0x80,0xFF,0x00,0x3F,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x01,0x80,0x00,
 127          0x00,0x7E,0x01,0x81,0xF8,0x00,0x0F,0x01,0xE0,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,
 128          0x00,0x0E,0x03,0x43,0xEF,0xFC,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x03,0x7F,0x00,
 129          0x00,0x0E,0x03,0x07,0xCF,0xFE,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x06,0x19,0x80,
 130          0x00,0x0E,0x06,0x0F,0xBF,0xFE,0x0F,0x80,0xC0,0x00,0x3F,0x80,0x00,0x06,0x00,0xC0,
 131          0x60,0x0E,0x06,0x1F,0x3F,0xBE,0x0F,0x00,0xC0,0x00,0xFF,0xC0,0x00,0x04,0x00,0xC0,
 132          0x60,0x0E,0x0E,0x3C,0x7F,0x9E,0x0F,0x10,0xC0,0x81,0x80,0x60,0x01,0x84,0x00,0xC0,
 133          0x60,0x0E,0x0C,0x38,0xFF,0xFE,0x1E,0x10,0xC1,0x83,0x00,0x21,0xC6,0x8C,0x00,0x60,
 134          0x38,0x1E,0x18,0x70,0xFF,0xFE,0x3C,0x30,0xC3,0x0E,0x00,0x63,0x2C,0x8C,0xE0,0x30,
 135          0x7F,0x9E,0x18,0x71,0xFF,0xFC,0x78,0x70,0xC3,0x18,0x00,0x62,0x29,0x8D,0xF8,0x18,
 136          0x3E,0xBF,0x18,0xE1,0xFF,0xFC,0xF0,0x7C,0xC2,0x10,0x01,0xC2,0x25,0xF9,0x1E,0x08,
 137          0x30,0x76,0x18,0xC1,0xFF,0xF1,0xE0,0xEC,0xC0,0x30,0x03,0x02,0x24,0xF9,0x03,0x8C,
 138          0x20,0x66,0x11,0xC0,0xFF,0xE7,0x80,0x82,0x60,0x10,0x02,0x06,0x64,0x19,0x00,0x84,
 139          0x20,0xC6,0x11,0x80,0xFF,0x9F,0x00,0x00,0xF0,0x19,0xC2,0x06,0x64,0x1F,0x10,0xCC,
 140          0x01,0xC4,0x09,0x80,0x7F,0x7C,0x00,0x00,0xF8,0x0F,0x63,0x06,0x2C,0x1E,0x38,0xC8,
 141          0x01,0x84,0x01,0x80,0x00,0xF8,0x0C,0x00,0xD8,0x00,0x23,0x06,0x38,0x12,0x01,0x98,
 142          0x01,0x04,0x01,0x80,0x07,0xE0,0x18,0x00,0xCC,0x00,0x31,0x03,0x19,0xF6,0x01,0xF0,
 143          0x00,0x04,0x01,0x98,0x7F,0x00,0x30,0x00,0x86,0x00,0x11,0x01,0x18,0x37,0x81,0x80,
 144          0x00,0x04,0x01,0xC7,0xFC,0x00,0xE0,0x00,0x87,0x00,0x19,0x81,0x98,0x1D,0x9F,0x00,
 145          0x00,0x04,0x01,0xC0,0x00,0x01,0x80,0x01,0x83,0x80,0x18,0xF0,0x98,0x18,0x03,0x00,
 146          0x03,0x04,0x00,0xE0,0x00,0x07,0x00,0x01,0x01,0xC0,0xF8,0xD8,0x98,0xA8,0x03,0x00,
 147          0x07,0x04,0x00,0xF0,0x00,0x1E,0x00,0x03,0x00,0xE0,0xC0,0x08,0x99,0xEF,0x3E,0x00,
 148          0x0E,0x04,0x00,0x7C,0x00,0x7C,0x00,0x06,0x00,0x60,0xC0,0x08,0x99,0x12,0x36,0x00,
 149          0x1C,0x04,0x00,0x3F,0xCF,0xF0,0x00,0x0C,0x00,0x30,0x40,0x0C,0x99,0x10,0x02,0x00,
 150          0x3C,0x04,0x00,0x0F,0xFF,0xC0,0x00,0x38,0x00,0x18,0x7F,0xF8,0xFF,0x18,0x06,0x00,
 151          0x3C,0x04,0x00,0x03,0xFF,0x00,0x00,0x60,0x00,0x00,0x3F,0xF0,0x66,0x1F,0xFC,0x00,
 152          0x3C,0x04,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 153          0x3C,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 154          0x3C,0x0C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 155          0x3C,0x0C,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 156          0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 157          0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 158          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 159          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 160          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 161          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 162          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 163          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 164          0x00,0x00,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          };
 167          
 168          
 169          void Lcd_init(void)              //初始化LCD    
 170          {
 171   1              Delaynms(10);            //启动等待,等LCD进入工作状态
 172   1              CS=1;
 173   1              Write_char(0,0x30);      //8 位数据,基本指令集
 174   1              Write_char(0,0x0c);      //显示打开,光标关,反白关
 175   1              Write_char(0,0x01);      //清屏,将DDRAM的地址计数器归零  
 176   1      }
 177          
 178          
 179          void Write_char(bit start, unsigned char ddata)         //发送指令或者数据
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 4   

 180          {
 181   1              unsigned char start_data,Hdata,Ldata;
 182   1              if(start==0) 
 183   1                      start_data=0xf8;                        //写指令
 184   1              else    
 185   1                      start_data=0xfa;                        //写数据
 186   1        
 187   1              Hdata=ddata&0xf0;                               //取高四位
 188   1              Ldata=(ddata<<4)&0xf0;                          //取低四位
 189   1              Send_byte(start_data);                          //发送起始信号
 190   1              Delaynms(5);                                    //延时420u秒是必须的
 191   1              Send_byte(Hdata);                               //发送高四位
 192   1              Delaynms(1);                                    //延时72u秒是必须的
 193   1              Send_byte(Ldata);                               //发送低四位
 194   1              Delaynms(1);                                    //延时72u秒是必须的
 195   1      }
 196          
 197          
 198          void Send_byte(unsigned char bbyte)                     //串口发送一个字节(底层函数)
 199          {
 200   1                      unsigned char i;
 201   1                      for(i=0;i<8;i++)                        //循环8位(一个字节)
 202   1              {
 203   2                      SID=bbyte&0x80;                         //取出最高位
 204   2                      SCLK=1;
 205   2                      SCLK=0;
 206   2                      bbyte<<=1;                              //左移1位
 207   2              }  
 208   1      }
 209          
 210          
 211          void Delaynms(unsigned int di)                          
 212          {
 213   1                      unsigned int i,db;
 214   1                      for(i=0;i<di;i++)                       
 215   1                      for(db=0;db<10;db++);                   //延迟72u秒左右以12MHz晶振
 216   1      }
 217          
 218          
 219          
 220          void Disp_img(unsigned char  *img)                      //插入LOGO函数
 221          { 
 222   1                      unsigned char i,j;
 223   1                      unsigned int k = 0;
 224   1      
 225   1                      Write_char(0,0x36);                     //图形方式LCD指令
 226   1                      for(i=0;i<32;i++)                       //循环上半屏填充点                      
 227   1                      { 
 228   2                              Write_char(0,0x80+i);           //指定上半屏横坐标位置
 229   2                              Write_char(0,0x80);             //指定上半屏纵坐标位置
 230   2                         for(j=0;j<16;j++) 
 231   2                         {

⌨️ 快捷键说明

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