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

📄 定时闹钟.lst

📁 课程设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   定时闹钟                                                              06/03/2008 22:08:20 PAGE 1   


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

line level    source

   1          /******************DS18b20,8051和12864液晶接口电路*********************
   2          
   3          8051            LCD
   4          
   5          数据口:
   6          P2.0            DB0
   7          P2.1            DB1     
   8          P2.2                    DB2       
   9          P2.3                    DB3       
  10          P2.4                    DB4     
  11          P2.5                    DB5     
  12          P2.6                    DB6     
  13          P2.7                    DB7
  14          控制字:     
  15          P1.3                    CSA      //低电平有效
  16          P1.4                    CSB      //低电平有效 
  17          P1.2                    RS(DI)   //H:Data , L:Instruction
  18          P1.1                    RW       //H:Read , L:Write
  19          P1.0                    E        //高电平有效 
  20          其他控制接口:
  21          VCC             RST              //低电平复位
  22          VCC             VDD
  23          VCC             BLA
  24          GND             BLK
  25          GND             GND
  26          VEE经10K可变电阻接地,中点接V0 
  27          液晶选用ks0108控制的12864点阵液晶,程序在S52上成功运行,但在S51上运行不了!!
  28          ****************************************************************/
  29          
  30          /**************主程序*****************/
  31          #include "reg51.H"
  32          #include "intrins.h"
  33          #include "DS1302.h"
  34          
  35          SYSTEMTIME  time1;
  36          unsigned char bdata D=0xff;
  37          sbit D_0=D^0;
  38          sbit D_1=D^1;
  39          sbit D_2=D^2;
  40          sbit D_3=D^3;
  41          sbit D_4=D^4;
  42          sbit D_5=D^5;
  43          sbit cs1=P3^3;
  44          sbit cs2=P3^4;
  45          sbit di=P3^2;
  46          sbit rw=P3^1;
  47          sbit e=P3^0;
  48          sbit K0=P1^0;
  49          sbit K1=P1^1;
  50          sbit K2=P1^2;
  51          sbit K3=P1^3;
  52          sbit K4=P1^4;
  53          sbit K5=P1^5;
  54          
  55          unsigned char k=16;
C51 COMPILER V8.02   定时闹钟                                                              06/03/2008 22:08:20 PAGE 2   

  56          
  57          unsigned char REA_time[10]={0,0,0,0,0,0,0,0,0,0};
  58          unsigned char SET_hour[6]={0,0,0,0,0,0};
  59          unsigned char SET_minite[6]={0,0,0,0,0,0};
  60          /**********************延时函数************************/
  61          void delay(unsigned int num)
  62          {
  63   1              while(num--) ;
  64   1      }
  65          
  66          /*************************写LCD函数********************************/
  67          void lw(unsigned char x,unsigned char y,unsigned char dd) 
  68          {
  69   1                      if (x<64) 
  70   1                      {
  71   2                              cs1=cs2=0;
  72   2                              di=rw=0;cs1=1;cs2=0;P0=0xb8|y;e=1;delay(2);e=0;delay(2);
  73   2                              di=rw=0;cs1=1;cs2=0;P0=0x40|x;e=1;delay(2);e=0;delay(2);
  74   2                              di=1;rw=0;cs1=1;cs2=0;P0=dd;e=1;delay(2);e=0;delay(2);  
  75   2                              
  76   2                      }
  77   1                      else 
  78   1                      {
  79   2                              cs1=cs2=0;x=x-64;
  80   2                              di=rw=0;cs1=0;cs2=1;P0=0xb8|y;e=1;delay(2);e=0;delay(2);                        
  81   2                              di=rw=0;cs1=0;cs2=1;P0=0x40|x;e=1;delay(2);e=0;delay(2);
  82   2                              di=1;rw=0;cs1=0;cs2=1;P0=dd;e=1;delay(2);e=0;delay(2);
  83   2                              cs1=cs2=1;
  84   2                      }
  85   1      }
  86          
  87          /************************LCD初始化*************************/
  88          void lcd_init(void) {
  89   1              unsigned char x,y;      
  90   1              e=di=rw=0;
  91   1              cs1=cs2=1;
  92   1              cs1=0;cs2=1;
  93   1              di=rw=0;P0=0x3f;e=1;delay(2);e=0;delay(2);
  94   1              cs1=0;cs2=1;
  95   1              di=rw=0;P0=0xc0;e=1;delay(2);e=0;delay(2);
  96   1              cs1=cs2=0;
  97   1      
  98   1              cs1=1;cs2=0;
  99   1              di=rw=0;P0=0x3f;e=1;delay(2);e=0;delay(2);
 100   1              cs1=1;cs2=0;
 101   1              di=rw=0;P0=0xc0;e=1;delay(2);e=0;delay(2);
 102   1              cs1=cs2=0;
 103   1      
 104   1            for (y=0;y<8;y++) {
 105   2                      for (x=0;x<128;x++) lw(x,y,0); 
 106   2              }
 107   1      }
 108          
 109          /**********************************字符取模********************************************/
 110          
 111          unsigned char code yue[32]={0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x0
             -0,
 112                                                                  0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00};
 113          unsigned char code ri[32]={0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00
             -,
 114                                                                  0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00};
 115          
C51 COMPILER V8.02   定时闹钟                                                              06/03/2008 22:08:20 PAGE 3   

 116          unsigned char code shu[10][16]={{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0
             -F,0x00},
 117                                                                          {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},
 118                                                                          {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},
 119                                                                          {0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},
 120                                                                          {0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},
 121                                                                          {0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},
 122                                                                          {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},
 123                                                                          {0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},
 124                                                                          {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},
 125                                                                          {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00}};
 126          
 127          unsigned char point[16]={0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00};
             -        //冒号
 128          unsigned char kuohao[16]={0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00}
             -;        //半括号
 129          /***************写16*16分辨率汉字************/
 130          void write_chinese(x,y,array)
 131          unsigned char x,y;
 132          unsigned char array[];
 133          {
 134   1              unsigned char j,dd;                     
 135   1              for(j=0;j<32;j++)
 136   1              {
 137   2                      dd=array[j];
 138   2                      if(j<16) lw(x+j,y,dd);
 139   2                       else  lw(x+j-16,y+1,dd);
 140   2              }       
 141   1      }
 142          /***************写8*16分辨率字母,数字**********/
 143          void write_english(x,y,array)
 144          unsigned char x,y;
 145          unsigned char array[];
 146          {
 147   1              unsigned char j,dd;                     
 148   1              for(j=0;j<16;j++)
 149   1              {
 150   2                      dd=array[j];
 151   2                      if(j<8) lw(x+j,y,dd);
 152   2                       else  lw(x+j-8,y+1,dd);
 153   2              }       
 154   1      }                       
 155          /*******************显示函数****************/
 156          void display0(void)                                     //显示现在时间
 157          {
 158   1               write_english(0,0,shu[REA_time[0]]);
 159   1               write_english(8,0,shu[REA_time[1]]);
 160   1               write_chinese(16,0,yue);
 161   1               write_english(32,0,shu[REA_time[2]]);
 162   1               write_english(40,0,shu[REA_time[3]]);
 163   1               write_chinese(48,0,ri);
 164   1               write_english(64,0,shu[REA_time[4]]);
 165   1               write_english(72,0,shu[REA_time[5]]);
 166   1               write_english(80,0,point);
 167   1               write_english(88,0,shu[REA_time[6]]);
 168   1               write_english(96,0,shu[REA_time[7]]);
 169   1               write_english(104,0,point);
 170   1               write_english(112,0,shu[REA_time[8]]);
 171   1               write_english(120,0,shu[REA_time[9]]);
 172   1      }
 173          
 174          void display1(unsigned char x,unsigned char y,unsigned char z)   //显示定时状态x,y为显示屏坐标,z为显示
C51 COMPILER V8.02   定时闹钟                                                              06/03/2008 22:08:20 PAGE 4   

             -序号
 175          {
 176   1               write_english(x,y,shu[z+1]);
 177   1               write_english(x+8,y,kuohao);
 178   1               write_english(x+16,y,shu[SET_hour[z]/10]);
 179   1               write_english(x+24,y,shu[SET_hour[z]%10]);
 180   1               write_english(x+32,y,point);
 181   1               write_english(x+40,y,shu[SET_minite[z]/10]);
 182   1               write_english(x+48,y,shu[SET_minite[z]%10]);
 183   1      }                       
 184          
 185          /**************键盘处理****************/
 186           void Getch (  )
 187          {   unsigned char X,Y,Z;
 188   1              P2=0xff;
 189   1              P2=0x0f;       //先对P3置数  行扫描
 190   1              if(P2!=0x0f)     //判断是否有键按下
 191   1              {delay(10);    //延时,软件去干扰
 192   2               if(P2!=0x0f)   //确认按键按下X = P3;
 193   2              {
 194   3              X=P2;          //保存行扫描时有键按下时状态
 195   3              P2=0xf0;       //列扫描
 196   3              Y=P2;          //保存列扫描时有键按下时状态
 197   3              Z=X|Y;         //取出键值
 198   3              switch ( Z )   //判断键值(那一个键按下)
 199   3              {
 200   4                      case 0xee: k=0; break; //对键值赋值
 201   4                      case 0xde: k=1; break; 
 202   4                      case 0xbe: k=2; break; 
 203   4                      case 0x7e: k=3; break; 

⌨️ 快捷键说明

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