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

📄 main.lst

📁 nokia3310多功能温度计设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   MAIN                                                                 04/15/2009 22:04:17 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.C BROWSE DEBUG OBJECTEXTEND

line 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 V8.05a   MAIN                                                                 04/15/2009 22:04:17 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          /************************************************************/
  83          void main()
  84          {
  85   1         LPH7366_init();  //显示屏幕初始化
  86   1         LPH7366_clr();  //屏幕白屏
  87   1         time_init();   //定时器0初始化
  88   1        
  89   1          pic_temp();    //温度主画面
  90   1          
  91   1          LPH7366_write_str(1,4,'D');  //设计标题 DX Temp
  92   1          LPH7366_write_str(1,5,'X');
  93   1          LPH7366_write_str(1,6,' ');
  94   1          LPH7366_write_str(1,7,'T');
  95   1          LPH7366_write_str(1,8,'e');
  96   1          LPH7366_write_str(1,9,'m');
  97   1          LPH7366_write_str(1,10,'p');
  98   1      
  99   1          LPH7366_write_han(2,1,0);   //显示 气温:    C
 100   1          LPH7366_write_han(2,2,1);
 101   1          LPH7366_write_doc(4,25,0x36);  //:
 102   1          LPH7366_write_doc(4,26,0x36);
 103   1      
 104   1          time_init();  //定时器0初始化
 105   1                      
 106   1          while(1)  //温度图动画部分
 107   1         { 
 108   2           data_flag=1;  //动画显示  影响LPH7366_write_str()函数
 109   2      
 110   2               pic_temp_face_move();  //人脸表情
 111   2           
 112   2               time_move();  //时间部分动画
 113   2      
C51 COMPILER V8.05a   MAIN                                                                 04/15/2009 22:04:17 PAGE 3   

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

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

⌨️ 快捷键说明

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