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

📄 控制系统.lst

📁 核心文件,直接烧录
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 縚制系统
OBJECT MODULE PLACED IN 控制系统.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 控制系统.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**************************************************************************************
   2           程序名称:
   3                     时间 温度控制系统(128*64LCD+ds1302+ds18b20)
   4           主要功能:
   5                     温度计 时钟 闹铃 密码锁 篮球器 计算器 温度控制 键盘锁 系统设置等。
   6           主要说明:
   7                     程序全部定义在一个C文件中。
   8           作者:    
   9                     LiJH
  10           时间:   
  11                     2008.6.20
  12           版本:   
  13                     LiJH-V1.0
  14           **************************************************************************************/
  15          
  16          
  17          #include    <at89s53.h>
  18          #include    <intrins.h>         
  19          #define     uchar        unsigned char
  20          #define     uint         unsigned int
  21          #define     time_count   0x3cb0
  22          #define     close        1
  23          #define     open         0
  24          
  25          /*============ 状态控制及温感器总线定义 ==============*/ 
  26           
  27          #define     b20_io       P0_0           // DS18B20总线    
  28          #define     pw_oc        P3_7           // 密码锁开启控制(黄灯)
  29          #define     buzzer       P0_5           // 蜂鸣器
  30          #define     lcd_bl       P0_6           // 背光控制口
  31          #define     als_th       P0_4           // 上限温度警报(红灯)
  32          #define     als_tl       P3_6           // 下限温度警报(绿灯)
  33          #define     keyboard     P1                     // 键盘数据口
  34          
  35          
  36          /*================= ST7920LCD 定义 ===================*/
  37          
  38          #define     comm         0                      // lcd指令
  39          #define     dat          1                      // lcd数据
  40          #define     lcd_rst      P0_7           // lcd复位
  41          #define     lcd_e        P3_0           // lcd使能
  42          #define     lcd_rw       P3_1           // lcd读写
  43          #define     lcd_rs       P3_2           // lcd数据命令
  44          #define     busy         P2_7       // 忙碌位
  45          #define     lcd_data     P2                     // lcd(8bit)数据传输 
  46          
  47            
  48          /*=============== DS1302 寄存器地址定义 ===============*/
  49          
  50          #define         d02_rst      P0_1               // DS1302使能
  51          #define         d02_data     P0_2               // DS1302数据线
  52          #define         d02_sclk     P0_3               // DS1302脉冲
  53          #define     d02_wrc      0x8e           // 1302读写RAM控制(1允许 0禁止)
  54          #define     d02_year     0x8c           // 年
  55          #define     d02_weeks    0x8a           // 星期
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 2   

  56          #define     d02_month    0x88           // 月
  57          #define     d02_day              0x86           // 日
  58          #define     d02_hour     0x84           // 时
  59          #define     d02_minute   0x82           // 分
  60          #define     d02_second   0x80           // 秒
  61          #define     d02_signs    0xc0           // 系统状态(记录设置标记)
  62          #define     d02_passw    0xc2           // 密码寄存器首位(有3位下位地址加2,初始值为:741456)
  63          #define     d02_alm              0xc8           // 闹铃时间小时位(下位为分钟位加2)
  64          #define     d02_temp     0xcc           // 温度上限警报(有两位下位位下限加2)
  65          #define     d02_initsi   0xd4           // 1302初始化标记(为0xb4时,说明已经初始化)
  66          #define     ret_ds1302()    d02_rst=0;d02_sclk=0;d02_rst=1      // 1302读写复位
  67          #define     end_ds1302()    d02_sclk=1;d02_rst=0                        // 1302读写结束
  68          
  69          
  70          
  71          /*================================= 全局变量定义 ==================================*/
  72          
  73          
  74          typedef struct                  // 定义时间类型 
  75          {
  76            uchar hour;
  77            uchar minute;
  78            uchar second;
  79          }time;
  80          
  81          typedef struct                  // 定义日期类型 
  82          {
  83            uchar year;
  84            uchar month;
  85            uchar day;
  86            uchar week;
  87          }date;
  88          
  89          typedef union               // 定义温度类型
  90          {
  91            int temp_data;
  92            uchar t_data[2];
  93          }trdata;
  94          
  95          trdata  bdata  temp;             // 温度警报值暂存      
  96          date    idata  today={'8',1,1,1};        // 日期暂存
  97          time    idata  now={0x12,0,0} , save_time={0x12,0,0}; 
  98                        // 时间暂存(now是读出时间暂存 save_time上一时间暂存)
  99          uchar   idata  time_tick=20,time_tick1=20,alarm_time[2],als_temp[2], 
 100                        // T0中断数,     T1中断数,     闹铃时间,   警报温度
 101                         bl_delay=15,temp_delay=5,opera[2][12],resu[12], 
 102                                    // 背光时间,  温度更新时间, 计算器数据寄存, 结果寄存
 103                                     i,j,save1,temp_min=0; 
 104                                     // 计算器i/j下标,中间暂存,温度更新(分)
 105          
 106          
 107          
 108          uchar  bdata   signs=0;          // 系统标记寄存器
 109            sbit bl1=signs^7;              // bl1,bl0背光选择位(00 延时,01 常开,10 关闭) 
 110            sbit bl0=signs^6;                     
 111            sbit di1=signs^5;                      // di1,di0显示模式(00模式1,01模式2,10模式3)
 112            sbit di0=signs^4;                     
 113            sbit meu=signs^3;                      // 菜单显示方式(0 图片,1 文字)
 114            sbit keb=signs^2;                      // 键盘锁(0 无锁,1加锁)
 115            sbit alm=signs^1;                      // 闹钟启动位(0 关闭,1开启)
 116            sbit als=signs^0;                      // 报警启动位(0 启动,1关闭)
 117          
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 3   

 118          
 119          
 120          uint   bdata   run_signs=0;     // 运行标记寄存器
 121            sbit ds18b20=run_signs^0;             // 温感器存在标记(0不存在,1存在)
 122            sbit temp_pn=run_signs^1;             // 温度正负号标记(0正,1负)
 123            sbit temprun=run_signs^2;             // 温感器运行标记(0否,1启动)
 124            sbit nba_tim=run_signs^3;     // 篮球计时器标记(0关闭,1启动)
 125            sbit adju_si=run_signs^4;             // 数字更改连续标记(1连续)
 126            sbit cal_del=run_signs^5;     // 计算器显示点标记(0没有显示)
 127            sbit cal_run=run_signs^6;         // 计算完毕标记(1有效)
 128            sbit oth_run=run_signs^7;     // 其他标记
 129            sbit alm_run=run_signs^8;     // 闹钟时间到达标记(1有效)
 130            sbit dis_sig=run_signs^9;     // 显示时间标记(1有效)
 131            sbit lock_op=run_signs^10;    // 关锁时间到标记(1有效)
 132            sbit b20time=run_signs^11;    // 温感器重新读温度标记(1有效)
 133            sbit t0_isr =run_signs^12;    // TO中断标记(1有效(1s)
 134            sbit thl_als=run_signs^13;    // 温度警报标记
 135            sbit init_d2=run_signs^14;    // 模式2初始显示
 136            sbit buzstop=run_signs^15;    // 蜂鸣器停止标记
 137          
 138          
 139          
 140          
 141          /*================================= 字体显示代码 ==================================*/ 
 142          
 143          uchar code weeks[7][2]={"一","二","三","四","五","六","日"}; // 星期                            //图片中文
 144          uchar code menu_cn[6][8]={"调    整","工    具","设    置","保    密","版    本","退    出"};
 145          uchar code menu_cn_2[6][6]={"调  整","工  具","设  置","保  密","版  本","退  出"};// 菜单文字
 146          uchar code selected[2][16]={{"进入【      】\x04 "},{"设置【    】\x10 \x04 "}}; // 选框
 147          uchar code secrets_menu[4][6]={"开  锁","更  改","初始化","退  出"};           // 保密菜单中文
 148          uchar code tool_menu[5][6]={"计算器","温度计","闹  铃","篮球器","退  出"};         // 工具菜单中文
 149          uchar code char_num[10]={"0123456789"};  // 数字显示代码                                                         // 每月天数
 150          uchar code dayofmonth[12]={0x31,0x28,0x31,0x30,0x31,0x30,0x31,0x31,0x30,0x31,0x30,0x31}; 
 151          uchar code key_code[]={0xD7,0x7E,0x7D,0x7B,0xBE,0xBD,0xBB,0xDE,0xDD,0xDB,0xB7,0x77,0xEE,0xED,0xEB,0xE7};
 152          uchar code ksp[4]={0x7F,0xBF,0xDF,0xEF};         // 按键扫描代码
 153          uchar code tool_cal[4][2]={"+ ","- ","* ","/ "}; // 运算符号
 154          uchar code alm_sign[2][2]={"关","开"};                   // 闹铃开关
 155          uchar code set_bl_dm[2][3][4]={{"30秒","常开","关闭"},{"模01","模02","模03"}};
 156          uchar code set_mka[3][2][4]={{"图片","文字"},{"解锁","加锁"},{"开启","关闭"}};
 157          uchar code nba_oppo[8][2]={"红","白","蓝","绿","紫","灰","黄","黑"};
 158          uchar code set_menu[6][4]={"背光","显示","菜单","键盘","警报","退出"};
 159          
 160          
 161          uchar code version[10][14]={   // 版本信息
 162                                      {"清远职业技术学"},
 163                                                                  {"  信息科技学院"},
 164                                                          {"08届毕业设计  "},
 165                                                          {"  —05电子02班"},
 166                                                  {"作者:李锦华  "},
 167                                                          {"指导:李祖明  "},
 168                                                          {"版本:LIJH-V1.0"},
 169                                                          {"    2008/06/19"},
 170                                                          {"谢谢你的使用!"},
 171                                                          {"         (ok)\x10"}};
 172          
 173          
 174          uchar code timer_tips[12][16]={ // 篮球器使用说明
 175                                      {"使用方法:      "},
 176                                                                  {"  (+)(-)与(*)(/)"},
 177                                                                  {"分别是两方的分数"},
 178                                                                  {"加与减,(7)键回退"},
 179                                                                  {"一秒,(8)键24秒复"},
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 4   

 180                                                                  {"位,(9)键暂停与开"},
 181                                                                  {"始;暂停状态下:"},
 182                                                                  {"按两次(OK)键可返"},
 183                                                                  {"回时钟模式-2界面"},
 184                                                                  {",(OK)键返回程序"},
 185                                                                  {"界面,(./S)键两次"},
 186                                                                  {"退出程序.      \x1f"}};
 187          
 188          
 189          
 190          /*================================= 操作导航代码 ==================================*/ 
 191          
 192           
 193          typedef struct                  // 定义主菜单操作索引 
 194          {
 195            uchar shaft_num;
 196            uchar left_num;
 197            uchar right_num;
 198          }menu_index;
 199          
 200          typedef struct                  // 定义导航更改索引 
 201          {
 202            uchar lnum;
 203            uchar rnum;
 204          }index;
 205          
 206          menu_index code index_m[6]={{3,5,1},{4,0,2},{5,1,3},{0,2,4},{1,3,5},{2,4,0}}; // 菜单导航
 207          index code index_t[6]={{4,1},{0,2},{1,3},{2,4},{3,0}};       // 工具导航
 208          index code index_p[5]={{3,1},{0,2},{1,3},{2,0}};             // 保密导航
 209          index code index_s[6]={{5,1},{0,2},{1,3},{2,4},{3,5},{4,0}}; // 设置导航
 210          index code index_a[7]={{0x81,0x91},{0x83,0x91},{0x85,0x91},{0x89,0x81},
 211                                          {0x8b,0x81},{0x8d,0x81},{0x8f,0x91}};       // 调整下的坐标
 212          index code index_temp_set[3]={{0x8b,0x81},{0x8b,0x91},{0x8f,0x91}}; // 温度设定下的坐标
 213          index code index_alm[3]={{0x8c,0x81},{0x8e,0x81},{0x8f,0x91}};      // 闹铃更改坐标     
 214          index code index_cal[3]={{0x86,0x90},{0x8e,0x80},{0x8e,0x90}};      // 计算器操作坐标
 215          uchar code index_nba[4]={0x93,0x97,0x8b,0x8f};                                      // 篮球器设置导航
 216          
 217          
 218          
 219          
 220          
 221          /*========================== 菜单图片(宽度x高度=32*24)=============================*/
 222          
 223          uchar code menu_pic[6][96]={ 
 224                  {// 调整 
 225                   0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,
 226                   0x40,0x00,0x00,0x82,0x47,0xFF,0xE1,0xC2,0x47,0xFF,0xF3,0xE2,0x47,0x38,0x68,0x02,
 227                   0x46,0xDF,0x68,0x82,0x46,0xDF,0x69,0xC2,0x46,0xDE,0xE8,0x82,0x46,0xDD,0xE8,0x02,
 228                   0x46,0xDD,0xE8,0x02,0x47,0x3D,0xE8,0x02,0x47,0xFF,0xE8,0x02,0x47,0xFF,0xE9,0xC2,
 229                   0x42,0x00,0x18,0x02,0x41,0xFF,0xF3,0xE2,0x40,0x00,0x01,0xC2,0x40,0x00,0x00,0x82,
 230                   0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00},
 231                  
 232                  {// 工具                                        
 233                   0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x00,0x03,0x82,
 234                   0x41,0xF0,0x07,0xC2,0x43,0xFF,0xCF,0xE2,0x47,0x3F,0xFE,0x02,0x47,0x3F,0xFE,0x02,
 235                   0x43,0xFF,0xCF,0xE2,0x41,0xF0,0x0F,0xC2,0x40,0x00,0x03,0x82,0x40,0x00,0x00,0x02,
 236                   0x40,0x00,0x03,0xC2,0x40,0x00,0x03,0xC2,0x41,0x80,0x01,0x82,0x43,0xFF,0xF3,0xC2,
 237                   0x47,0xFF,0xFF,0xE2,0x47,0xFF,0xFF,0xE2,0x43,0xFF,0xF3,0xC2,0x41,0x80,0x01,0x82,

⌨️ 快捷键说明

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