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

📄 1302.lst

📁 1302实现时钟定时报警
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   1302                                                                  12/03/2007 08:44:24 PAGE 1   


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

stmt level    source

   1          /********************************************************************************************
   2          Create By: he jia xing
   3          Date:2007/12/1
   4          *********************************************************************************************
   5          Modified By:
   6          Date:
   7          *********************************************************************************************
   8          说明:按K3键进行日期,时间设置
   9                    按下K2使能或取消闹铃功能,闹铃响时按下K2可以消除铃声
  10                    按下K1和K2查看闹铃时间
  11                    按下K1和K4设置闹铃时间
  12          **********************************************************************************************
  13          Email: hejiaxing13@yahoo.com.cn
  14          QQ:752957222
  15          **********************************************************************************************/
  16          
  17          #include<reg51.h>
  18          #include<intrins.h>
  19          sbit LCD_RS = P1^0;             
  20          sbit LCD_RW = P1^1;
  21          sbit LCD_EN = P1^2;
  22          sbit RESET  = P2^3;
  23          sbit CLK        = P2^1;               
  24          sbit DATA   = P2^2;                     
  25          #define uchar unsigned char
  26          #define uint unsigned int
  27          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  28          uchar inter,flag,flag1,inter1,alarm_flag;
  29          uchar alarm_time[6]={0x30,0x37,0x33,0x30,0x30,0x30};
  30          //                                       十时  时  十分 分  十秒 秒     
  31          uchar code str[] = "  /  /    Week: ";
  32          uchar code str1[] ="Time:           ";     
  33          uchar code str2[] =" Set Alarmtime: ";   
  34          uchar code str3[] ="      -  -      "; 
  35          uchar code str4[] =" Alarmtime Is:  ";
  36          uchar code str5[] ="Time Is coming !";              
  37          sbit K1 = P1^3;
  38          sbit K2 = P1^4;
  39          sbit K3 = P1^5;
  40          sbit K4 = P1^6;
  41          sbit  BEEP = P1^7;
  42          
  43          uchar code  init[8] = {0x12,0x10,0x17,0x01,0x12,0x6,0x07};
  44          //                                              秒   分   时   日   月   周    年       
  45          
  46          uchar init1[7] = {0x12,0x10,0x02,0x03,0x01,0x09,0x08};//该数组用于存放读取的时间值
  47          //                                      秒  分   时   日   月   周    年        
  48          
  49          uchar init2[16] = {0x12,0x10,0x02,0x03,0x01,0x09,0x08,0x07,0x12,0x10,0x02,0x03,0x01,0x09,0x08,0x07};
  50          //                                      十秒  秒 十分  分  十时  时  十日  日  十月  月   无  星期  十年 年 
  51          //                                      0    1    2     3   4    5    6    7    8    9    10  11    12   13
  52          //用于存放转换后的时间值
  53          uchar time[2] = {0x00,0x00};
  54          uchar ok,week;
  55          uchar code  tab[8] = {0x01,0x1b,0x1d,0x19,0x1d,0x1b,0x01,0x00};//小喇叭
C51 COMPILER V7.06   1302                                                                  12/03/2007 08:44:24 PAGE 2   

  56          //存放设置过程中的值
  57          
  58          unsigned char n=0;  //n为节拍常数变量 
  59          unsigned char code music_code[] ={
  60          0x7F, 0x16, 0x72 , 0x16, //格式为: 频率常数, 节拍常数, //两只老虎
  61          0x65, 0x16, 0x80 , 0x16,
  62          0x7F, 0x16, 0x72 , 0x16,
  63          0x65, 0x16, 0x80 , 0x16,
  64          
  65          0x65, 0x16, 0x60 , 0x16,
  66          0x55, 0x32, 0x65 , 0x16,
  67          0x60, 0x16, 0x55 , 0x32,
  68          
  69          0x55, 0x10, 0x4c , 0x10,
  70          0x55, 0x10, 0x60 , 0x10,
  71          0x65, 0x16, 0x80 , 0x16,
  72          
  73          0x55, 0x10, 0x4c , 0x10,
  74          0x55, 0x10, 0x60 , 0x10,
  75          0x65, 0x16, 0x80 , 0x16,
  76          
  77          0x72, 0x16, 0xAB , 0x16,
  78          0x80, 0x32, 0x72 , 0x16,
  79          0xAB, 0x16, 0x80 , 0x32,
  80          0x7F, 0x16, 0x72 , 0x16, //格式为: 频率常数, 节拍常数, //两只老虎
  81          0x65, 0x16, 0x80 , 0x16,
  82          0x7F, 0x16, 0x72 , 0x16,
  83          0x65, 0x16, 0x80 , 0x16,
  84          
  85          0x65, 0x16, 0x60 , 0x16,
  86          0x55, 0x32, 0x65 , 0x16,
  87          0x60, 0x16, 0x55 , 0x32,
  88          
  89          0x55, 0x10, 0x4c , 0x10,
  90          0x55, 0x10, 0x60 , 0x10,
  91          0x65, 0x16, 0x80 , 0x16,
  92          
  93          0x55, 0x10, 0x4c , 0x10,
  94          0x55, 0x10, 0x60 , 0x10,
  95          0x65, 0x16, 0x80 , 0x16,
  96          
  97          0x72, 0x16, 0xAB , 0x16,
  98          0x80, 0x32, 0x72 , 0x16,
  99          0xAB, 0x16, 0x80 , 0x32,
 100          0x7F, 0x16, 0x72 , 0x16, //格式为: 频率常数, 节拍常数, //两只老虎
 101          0x65, 0x16, 0x80 , 0x16,
 102          0x7F, 0x16, 0x72 , 0x16,
 103          0x65, 0x16, 0x80 , 0x16,
 104          
 105          0x65, 0x16, 0x60 , 0x16,
 106          0x55, 0x32, 0x65 , 0x16,
 107          0x60, 0x16, 0x55 , 0x32,
 108          
 109          0x55, 0x10, 0x4c , 0x10,
 110          0x55, 0x10, 0x60 , 0x10,
 111          0x65, 0x16, 0x80 , 0x16,
 112          
 113          0x55, 0x10, 0x4c , 0x10,
 114          0x55, 0x10, 0x60 , 0x10,
 115          0x65, 0x16, 0x80 , 0x16,
 116          
 117          0x72, 0x16, 0xAB , 0x16,
C51 COMPILER V7.06   1302                                                                  12/03/2007 08:44:24 PAGE 3   

 118          0x80, 0x32, 0x72 , 0x16,
 119          0xAB, 0x16, 0x80 , 0x32,
 120          0x00
 121          };
 122          
 123          void key_set(uchar row,uchar col,uchar max);
 124          void set_flash(uchar row,uchar col);
 125          void key_set_xq(uchar row,uchar col);
 126          void set_alarm_time();
 127          void flash(uchar row,uchar col);
 128          void see_alarm_time(void);
 129          void time_campare();
 130          
 131          /************************************************************************************
 132          函数描述:延时
 133          入口参数:       ms:延时毫秒数
 134          出口参数:无
 135          *************************************************************************************/
 136          void delay1(int ms)
 137          {
 138   1       unsigned char y;
 139   1        while(ms--)
 140   1       {
 141   2        for(y = 0; y<250; y++)
 142   2        {
 143   3         _nop_();
 144   3         _nop_();
 145   3         _nop_();
 146   3         _nop_();
 147   3        }
 148   2       }
 149   1      }
 150          
 151          /*****************************************************************
 152          函数描述:检查LCD忙状态                                                  
 153          入口参数:无
 154          出口参数:无
 155          说明:向lcd写入指令或代码要进行忙状态检测
 156          *****************************************************************/ 
 157          
 158          bit lcd_busy()
 159           {                          
 160   1          bit result;
 161   1          LCD_RS = 0;
 162   1          LCD_RW = 1;
 163   1          LCD_EN = 1;
 164   1          delayNOP();
 165   1          result = (bit)(P0&0x80);
 166   1          LCD_EN = 0;
 167   1          return(result); 
 168   1       }
 169          
 170          /********************************************************
 171          函数描述:写指令数据到LCD  
 172          入口参数:cmd:指令代码
 173          出口参数:无                                     
 174          *********************************************************/
 175          
 176          void lcd_wcmd(uchar cmd)
 177          {                          
 178   1         while(lcd_busy());
 179   1          LCD_RS = 0;
C51 COMPILER V7.06   1302                                                                  12/03/2007 08:44:24 PAGE 4   

 180   1          LCD_RW = 0;
 181   1          LCD_EN = 0;
 182   1          _nop_();
 183   1          _nop_(); 
 184   1          P0 = cmd;
 185   1          delayNOP();
 186   1          LCD_EN = 1;
 187   1          delayNOP();
 188   1          LCD_EN = 0;  
 189   1      }
 190          
 191          /********************************************************
 192          函数描述:写显示数据到LCD                                                            
 193          入口参数:dat:要写入的数据
 194          出口参数: 无                                                       
 195          *********************************************************/
 196          void lcd_wdat(uchar dat)
 197          {                          
 198   1         while(lcd_busy());
 199   1          LCD_RS = 1;
 200   1          LCD_RW = 0;
 201   1          LCD_EN = 0;
 202   1          P0 = dat;
 203   1          delayNOP();
 204   1          LCD_EN = 1;
 205   1          delayNOP();
 206   1          LCD_EN = 0; 
 207   1      }
 208          
 209          /******************************************************
 210          函数描述:LCD初始化设定                                      
 211          入口参数:无
 212          出口参数:无
 213          说明:lcd显示前,调用该函数                                                      
 214          *********************************************************/
 215          
 216          void init_lcd()
 217          { 
 218   1          delay1(15);   
 219   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 220   1                  
 221   1          lcd_wcmd(0x38);      //16*2显示,5*7点阵,8位数据
 222   1          delay1(5);
 223   1          lcd_wcmd(0x38);         
 224   1          delay1(5);
 225   1          lcd_wcmd(0x38);         
 226   1          delay1(5);
 227   1      
 228   1              lcd_wcmd(0x0c);      //显示开,关光标
 229   1          delay1(5);
 230   1          lcd_wcmd(0x06);      //移动光标
 231   1          delay1(5);
 232   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 233   1          delay1(5);
 234   1      }
 235          /*********************************************************/
 236          /*                                                       */
 237          /*  设定显示位置                                         */
 238          /*                                                       */
 239          /*********************************************************/
 240          void write_position(uchar row,uchar col)
 241           {
C51 COMPILER V7.06   1302                                                                  12/03/2007 08:44:24 PAGE 5   

 242   1         uchar place;
 243   1         if(row==1)
 244   1         {
 245   2           place=0x80+col-1;
 246   2           lcd_wcmd(place);
 247   2         }
 248   1         else
 249   1         {
 250   2           place=0xc0+col-1;
 251   2           lcd_wcmd(place);
 252   2         }
 253   1       }
 254          /*******************************************************
 255          函数描述:写自定义字符到指定位置
 256          入口参数:tab:字符代码起始地址(8个代码一个字符)
 257                    num: 自定义字符代号,(范围1~8,1号存放在40h,2号存放在48h....

⌨️ 快捷键说明

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