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

📄 text.lst

📁 语音温度智能报警系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   TEXT                                                                  04/04/2007 18:33:49 PAGE 1   


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

line level    source

   1          /******************************************************************
   2                        基于isd1420语音芯片的温度报警
   3          
   4          功能:利用ds18b20检测当前温度,通过和设定参数的比较,给ISD1420发出
   5                    报警脉冲,通过功率放大器LM386 驱动喇叭报警。
   6          日期:2007.3.20
   7                    
   8          注:  isd1420的报警采用延时方式(isd1420的延时报警取决于录音时间的长短)
   9          
  10          问题:1.isd1420会偶然的触发非正常的报警?
  11                2.系统在上电时偶尔会进入非正常的状态?
  12                    3.由于proteus软件中没有isd1420这个模型,故给出一个可以代替仿真的图纸。
  13          
  14          作者:王蔚   陕西理工学院电工电子实验中心创新试验室  qq :284997953
  15          
  16          ********************************************************************/
  17          
  18          #include<reg51.h>
  19          #include<intrins.h>
  20          #include <absacc.h>
  21          
  22          #define uchar unsigned char
  23          #define uint   unsigned int
  24          #define PLAYE_ADDR XBYTE[0XBFFF] //语音报警地址
  25          
  26          #define BUSY  0x80              //lcd忙检测标志
  27          #define DATAPORT P0             
  28          
  29          sbit P1_0=P1^4;                 //时钟调整
  30          sbit P1_1=P1^5;                 //时钟加
  31          sbit P1_2=P1^6;                 //时钟减
  32          
  33          sbit RED_ALARM=P1^0;            //红色指示灯
  34          sbit WRITE_ALARM=P1^1;          //白色指示灯
  35          sbit GREEN_ALARM=P1^2;          //绿色指示灯
  36          
  37          sbit DQ = P3^7;                 //定义ds18b20通信端口 
  38          sbit LCM_RS=P2^0;                               //数据/命令端
  39          sbit LCM_RW=P2^1;                               //读/写选择端
  40          sbit LCM_EN=P2^2;               //LCD使能信号
  41          sbit RECLED_EOC=P3^5;           //ISD1420放音结束查询标志
  42          
  43                                                          
  44          unsigned char seconde=0;                 //定义并初始化时钟变量
  45          unsigned char minite=0;
  46          unsigned char hour=12;
  47          unsigned char mstcnt=0;
  48          unsigned char temp1,temp2,temp3;
  49          unsigned char runtime;                   //系统运行总时间
  50          unsigned char t;
  51          unsigned int temp;
  52          
  53          uchar code str0[]={"---  :  :  ---of"};
  54          uchar code str1[]={"temp:  . C------"};
  55          
C51 COMPILER V8.02   TEXT                                                                  04/04/2007 18:33:49 PAGE 2   

  56          void delay_LCM(uint);                                                                                                   //LCD延时子程序
  57          void initLCM( void);                                                                                                    //LCD初始化子程序
  58          void lcd_wait(void);                                                                                                    //LCD检测忙子程序
  59          void WriteCommandLCM(uchar WCLCM,uchar BusyC);                              //写指令到ICM子函数
  60          void WriteDataLCM(uchar WDLCM);                                             //写数据到LCM子函数
  61          void DisplayOneChar(uchar X,uchar Y,uchar DData);                           //显示指定坐标的一个字符子函数
  62          void DisplayListChar(uchar X,uchar Y,uchar code *DData);                    //显示指定坐标的一串字符子函数
  63          
  64          void init_timer0(void);                                                                                         //定时器初始化
  65          void displayfun1(void);
  66          
  67          void delay_18B20(unsigned int i);
  68          void Init_DS18B20(void) ;
  69          uchar ReadOneChar(void);
  70          void WriteOneChar(unsigned char dat);
  71          void ReadTemperature(void);
  72          void playalarm(void);
  73          
  74          /*********延时K*1ms,12.000mhz**********/
  75          
  76          void delay_LCM(uint k)
  77          {
  78   1          uint i,j;
  79   1          for(i=0;i<k;i++)
  80   1          {
  81   2              for(j=0;j<60;j++)
  82   2                      {;}
  83   2          }
  84   1      }   
  85          /**********写指令到ICM子函数************/
  86          
  87          void WriteCommandLCM(uchar WCLCM,uchar BusyC)
  88          {
  89   1          if(BusyC)lcd_wait();
  90   1              DATAPORT=WCLCM;
  91   1          LCM_RS=0;                   // 选中指令寄存器
  92   1          LCM_RW=0;                   // 写模式       
  93   1          LCM_EN=1;    
  94   1              _nop_();   
  95   1              _nop_();
  96   1              _nop_(); 
  97   1          LCM_EN=0;  
  98   1      }
  99          
 100          /**********写数据到LCM子函数************/
 101          
 102          void WriteDataLCM(uchar WDLCM)
 103          { 
 104   1          lcd_wait( );            //检测忙信号    
 105   1              DATAPORT=WDLCM;
 106   1          LCM_RS=1;               // 选中数据寄存器
 107   1          LCM_RW=0;                   // 写模式
 108   1          LCM_EN=1;
 109   1          _nop_();
 110   1              _nop_();
 111   1              _nop_();
 112   1          LCM_EN=0;
 113   1      }
 114          
 115          /***********lcm内部等待函数*************/
 116          
 117          void lcd_wait(void)
C51 COMPILER V8.02   TEXT                                                                  04/04/2007 18:33:49 PAGE 3   

 118          {
 119   1          DATAPORT=0xff;           
 120   1              LCM_EN=1;
 121   1          LCM_RS=0;                           
 122   1          LCM_RW=1;                           
 123   1          _nop_();
 124   1          _nop_();
 125   1              _nop_();
 126   1          while(DATAPORT&BUSY)
 127   1              {
 128   2                      LCM_EN=0;
 129   2                 _nop_();
 130   2                 _nop_();
 131   2                 LCM_EN=1;
 132   2                 _nop_();
 133   2                 _nop_();
 134   2              }
 135   1              LCM_EN=0;
 136   1              
 137   1      }
 138          
 139          /**********LCM初始化子函数***********/
 140          
 141          void initLCM( )
 142          {   
 143   1              DATAPORT=0;     
 144   1              delay_LCM(15);
 145   1              WriteCommandLCM(0x38,0);    //三次显示模式设置,不检测忙信号
 146   1          delay_LCM(5); 
 147   1          WriteCommandLCM(0x38,0);
 148   1          delay_LCM(5); 
 149   1          WriteCommandLCM(0x38,0);
 150   1          delay_LCM(5); 
 151   1      
 152   1          WriteCommandLCM(0x38,1);    //8bit数据传送,2行显示,5*7字型,检测忙信号
 153   1          WriteCommandLCM(0x08,1);    //关闭显示,检测忙信号
 154   1          WriteCommandLCM(0x01,1);    //清屏,检测忙信号
 155   1          WriteCommandLCM(0x06,1);    //显示光标右移设置,检测忙信号
 156   1          WriteCommandLCM(0x0c,1);    //显示屏打开,光标不显示,不闪烁,检测忙信号
 157   1      }
 158          
 159          /****************显示指定坐标的一个字符子函数*************/
 160          
 161          void DisplayOneChar(uchar X,uchar Y,uchar DData)
 162          {
 163   1          Y&=1;
 164   1          X&=15;
 165   1          if(Y)X|=0x40;               //若y为1(显示第二行),地址码+0X40
 166   1          X|=0x80;                    //指令码为地址码+0X80
 167   1          WriteCommandLCM(X,0);
 168   1          WriteDataLCM(DData);
 169   1      }
 170          
 171          /***********显示指定坐标的一串字符子函数***********/
 172          
 173          void DisplayListChar(uchar X,uchar Y,uchar code *DData)
 174          {
 175   1          uchar ListLength=0;
 176   1          Y&=0x01;
 177   1          X&=0x0f;
 178   1          while(X<16)
 179   1          {
C51 COMPILER V8.02   TEXT                                                                  04/04/2007 18:33:49 PAGE 4   

 180   2              DisplayOneChar(X,Y,DData[ListLength]);
 181   2              ListLength++;
 182   2              X++;
 183   2          }
 184   1      }
 185          
 186          /***********ds18b20延迟子函数(晶振12MHz )*******/ 
 187          
 188          void delay_18B20(unsigned int i)
 189          {
 190   1              while(i--);
 191   1      }
 192          
 193          /**********ds18b20初始化函数**********************/
 194          

⌨️ 快捷键说明

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