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

📄 main.lst

📁 用3310显示温度与数字钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  05/11/2008 18:49:25 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*这是一个温度计的源代码,它能实时测量当前温度,并可以根据需要将一段时间的温度
   2          数值保存下来温度数值通过LCD屏幕显示。它还包括一个时钟。用它可以定时测量温度值,
   3          本温度计可用于大篷蔬菜的温度控制中,系统还可以通过需要可以扩展.下面位这一温度计
   4          的源代码。*/
   5          
   6          #include <config.h>
   7          
   8          //外部函数
   9          //-------------------delay.c--------------------------------
  10          extern void delay(unsigned int delay_time);   //延时子程序
  11          //------------------LPH7366.c--------------------------------
  12          #define COM  0  //指令
  13          #define DAT  1  //数据
  14          #define STR  1  //字符
  15          extern void LPH7366_init();  //LPH7366初始化
  16          extern void LPH7366_flash(unsigned int delay_time);  //LPH7366闪屏函数
  17          extern void LPH7366_write(unsigned char type,unsigned char in_data);  //LPH7366写函数
  18          extern void LPH7366_clr();  //显示屏幕清屏
  19          extern void LPH7366_write_str(unsigned char line,unsigned char row,unsigned char str); //LPH7366任意写入字
             -符函数
  20          extern void LPH7366_write_han(unsigned char symbol_line,unsigned char symbol_row,unsigned char han);  //任
             -意写入汉字函数
  21          extern void LPH7366_write_doc(unsigned char symbol_line,unsigned char symbol_row,unsigned char doc);  //任
             -意写入一个字节函数
  22          extern void data_tick(unsigned char i_data);  //数据拆分函数
  23          extern unsigned char row(unsigned char stye,unsigned char i);  //计算屏幕的列地址   类型 
  24          extern unsigned char ge,shi;  //数据拆分
  25          extern bit data_flag;  //是否动态显示数据标志位 0:不动态  1:动态
  26          //------------------------time.c--------------------------------
  27          extern void time_init();  //时间初始化
  28          extern struct time
  29          { 
  30            unsigned char hour;
  31            unsigned char minute;
  32            unsigned char second;
  33          }local_time,alarm_time,temp_time;
  34          extern bit second_flag;   //秒信号标志
  35          //------------------------温度图.c------------------------------
  36          extern void pic_temp();    //温度主画面
  37          extern void pic_temp_face_move();  //脸部表情选择
  38          extern unsigned char face_flag;  //人脸表情标志位 1:笑脸 2:闭嘴 3:苦恼 4:讲话 5:伤心 6:惊讶 7:沉默
  39          //-------------DS18B20.C-------------------
  40          extern void DS18B20_init();  //DS18B20初始化
  41          extern void DS18B20_send(unsigned char in_data); //DS18B20发送数据
  42          extern void ReadTemperature();  //DS18B20读取温度转换好的数据
  43          extern void temp_data_turn(float in_data); //DS18B20读取温度转换
  44          extern bit T_sign;   //温度正负符号
  45          extern float temp;  //转换好的温度数值
  46          extern unsigned char t_bai,t_shi,t_ge,t_feng; //温度转换好的各个位
  47          extern signed char temp_TH,temp_TL;  //温度上下限
  48          //------------DS18B20控制命令-----------------------------
  49          #define T_CONVER 0x44  //开始温度转换
  50          #define T_CONFIG 0x5f  //11位转换
  51          #define T_READ 0xbe    //读暂存器
  52          #define T_WRITE 0x4e   //写暂存器
C51 COMPILER V7.06   MAIN                                                                  05/11/2008 18:49:25 PAGE 2   

  53          #define T_ROM_JMP 0xcc  //忽略64ROM地址
  54          #define T_COPY_E2 0x48  //将温度上下限数值写到E2ROM
  55          #define T_RECALL_E2 0xb8  //将E2中存储的温度上下限数值复制到上下限寄存器中。
  56          #define T_cont  0.0625  //温度转换常数
  57          //---------------keyB.c---------------------------
  58          extern key_main();  //主键盘
  59          //------------------------------------------------
  60          //内部函数
  61          void time_move(); //时间部分动画
  62          void temp_move(); //温度部分动画 
  63          void temp_display(); //温度显示
  64          void temp_bar_move(); //温度条部分动画
  65          void data_clr();  //行33-58清零函数
  66          void tick_time_temp();  //检查设置参数
  67          bit sign_cross=0; //正负符号交叉标志位
  68          bit ring_flag=1;  //闹铃
  69          unsigned char alarm_tick_time=0;  //警报对比次数
  70          sbit LED=P1^5;
  71          sbit SPK=P1^6;
  72          unsigned char temp_bar[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};  //温度条显示
  73          
  74          
  75          /****************************主函数**************************/
  76          /*函数原型:void main()
  77          /*函数功能:程序起始
  78          /*输入参数:无
  79          /*输出参数:无
  80          /*调用模块:LPH7366_init(),LPH7366_clr(),time_init(),pic_temp(),LPH7366_write_str(),LPH7366_write_han(),LPH
             -7366_write_doc()
  81          pic_temp_face_move(),time_move(),temp_bar_move(),key_main()
  82          /*建立时间:2005/11/16
  83          /*作者:丁霄
  84          /************************************************************/
  85          void main()
  86          {
  87   1         LPH7366_init();  //显示屏幕初始化
  88   1         LPH7366_clr();  //屏幕白屏
  89   1         time_init();   //定时器0初始化
  90   1        
  91   1          pic_temp();    //温度主画面
  92   1          
  93   1          LPH7366_write_str(1,4,'D');  //设计标题 DX Temp
  94   1          LPH7366_write_str(1,5,'X');
  95   1          LPH7366_write_str(1,6,' ');
  96   1          LPH7366_write_str(1,7,'T');
  97   1          LPH7366_write_str(1,8,'e');
  98   1          LPH7366_write_str(1,9,'m');
  99   1          LPH7366_write_str(1,10,'p');
 100   1      
 101   1          LPH7366_write_han(2,1,0);   //显示 气温:    C
 102   1          LPH7366_write_han(2,2,1);
 103   1          LPH7366_write_doc(4,25,0x36);  //:
 104   1          LPH7366_write_doc(4,26,0x36);
 105   1      
 106   1          time_init();  //定时器0初始化
 107   1                      
 108   1          while(1)  //温度图动画部分
 109   1         { 
 110   2           data_flag=1;  //动画显示  影响LPH7366_write_str()函数
 111   2      
 112   2               pic_temp_face_move();  //人脸表情
 113   2           
C51 COMPILER V7.06   MAIN                                                                  05/11/2008 18:49:25 PAGE 3   

 114   2               time_move();  //时间部分动画
 115   2      
 116   2               temp_move();  //温度部分动画
 117   2      
 118   2               temp_bar_move();  //温度条部分动画
 119   2      
 120   2               key_main();  //主键盘
 121   2      
 122   2               tick_time_temp();  //查询各个参数是否到了设定数值
 123   2           
 124   2               if(temp_TL<temp&&temp<temp_TH)  //室温在正常范围内
 125   2              { 
 126   3                LED=1;
 127   3            face_flag=1;  //笑脸
 128   3              }
 129   2         }
 130   1      }
 131          
 132          /***********************时间部分动画函数*********************/
 133          /*函数原型:void time_move()
 134          /*函数功能:时间部分动画
 135          /*输入参数:无
 136          /*输出参数:无
 137          /*调用模块:data_tick(),LPH7366_write_str()
 138          /*建立时间:2005/11/16
 139          /*作者:丁霄
 140          /************************************************************/
 141          void time_move()
 142          {
 143   1           data_tick(local_time.hour);
 144   1           LPH7366_write_str(6,1,(shi+16));
 145   1               LPH7366_write_str(6,2,(ge+16));
 146   1      
 147   1           if(second_flag==1)
 148   1           LPH7366_write_str(6,3,26);  //:
 149   1               else
 150   1           LPH7366_write_str(6,3,0);  // 
 151   1      
 152   1           data_tick(local_time.minute);
 153   1           LPH7366_write_str(6,4,(shi+16));
 154   1               LPH7366_write_str(6,5,(ge+16));
 155   1      
 156   1           if(second_flag==1)
 157   1           LPH7366_write_str(6,6,26);  //:
 158   1               else
 159   1           LPH7366_write_str(6,6,0);  // 
 160   1      
 161   1               data_tick(local_time.second);
 162   1           LPH7366_write_str(6,7,(shi+16));
 163   1               LPH7366_write_str(6,8,(ge+16));
 164   1      
 165   1           if(ring_flag==1)
 166   1               {
 167   2                LPH7366_write_str(6,9,0x00);  //显示空格
 168   2            LPH7366_write_str(6,10,10);  //显示*  闹铃标志
 169   2               }
 170   1           else
 171   1               {
 172   2                LPH7366_write_str(6,9,0x00);  //显示空格
 173   2            LPH7366_write_str(6,10,0);  //显示空格 
 174   2               }
 175   1      
C51 COMPILER V7.06   MAIN                                                                  05/11/2008 18:49:25 PAGE 4   

 176   1      }
 177          
 178          /****************************温度部分动画函数*****************/
 179          /*函数原型:void temp_move()
 180          /*函数功能:温度部分动画
 181          /*输入参数:无
 182          /*输出参数:无
 183          /*调用模块:ReadTemperature(),temp_data_turn(),temp_display()
 184          /*建立时间:2005/11/16
 185          /*作者:丁霄
 186          /************************************************************/
 187          void temp_move()  
 188          {
 189   1        data_flag=1;  //动态显示
 190   1      
 191   1        ReadTemperature();  //读温度           
 192   1      
 193   1        temp_data_turn(temp); //转换温度数值
 194   1      
 195   1        temp_display();
 196   1      } 
 197          
 198          /**************************温度显示函数**********************/
 199          /*函数原型:void temp_move()

⌨️ 快捷键说明

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