tlc549lcd.lst

来自「一些51单片机基础模块的程序」· LST 代码 · 共 380 行 · 第 1/2 页

LST
380
字号
 177          
 178          /********************************************************************
C51 COMPILER V7.50   TLC549LCD                                                             04/10/2009 22:39:34 PAGE 4   

 179          * 名称 : Main()
 180          * 功能 : 主函数
 181          * 输入 : 无
 182          * 输出 : 无
 183          ***********************************************************************/
 184          void Test_TLC549(void)
 185          {
 186   1              uint i = 0,temp;        
 187   1              uint j;
 188   1              P2 = 0x00;
 189   1              for(i=0; i<100; i++) delay();
 190   1              delay();
 191   1              L1602_init();
 192   1              L1602_string(1,1,"AD(TLC549) TEST ");
 193   1              L1602_string(2,1,"     0.00V      ");
 194   1              P2 = 0x00;
 195   1              P1 = 0xff;       
 196   1              for(i=0; i<500; i++)
 197   1              {
 198   2                      temp = AD_Change();
 199   2                      j = temp * 2;   //这里取的是一个大概的值。真实电压应为 temp * 5 / 256, 得出的数为 "x.xx"。
 200   2                      L1602_char(2,6,j/100%10+48);
 201   2                      L1602_char(2,8,j/10%10+48);                
 202   2                      L1602_char(2,9,j%10+48);
 203   2                      delay();
 204   2              }
 205   1              enable(0x01);   
 206   1      }
 207          
 208          #define jump_ROM 0xCC
 209          #define start 0x44
 210          #define read_EEROM 0xBE
 211          
 212          sbit DQ = P3^4; 
 213          unsigned char TMPH,TMPL; 
 214          
 215          
 216          /********************************************************************
 217          * 名称 : delay()
 218          * 功能 : 延时函数
 219          * 输入 : 无
 220          * 输出 : 无
 221          ***********************************************************************/
 222          void delay_11(uint N)
 223          {
 224   1              int i;
 225   1              for(i=0; i<N; i++)
 226   1              ;
 227   1      }
 228          
 229          /********************************************************************
 230          * 名称 : Reset()
 231          * 功能 : 复位DS18B20
 232          * 输入 : 无
 233          * 输出 : 无
 234          ***********************************************************************/
 235          uchar Reset(void)
 236          {
 237   1              uchar deceive_ready;
 238   1              DQ = 0;
 239   1              delay_11(29);
 240   1              DQ = 1;
C51 COMPILER V7.50   TLC549LCD                                                             04/10/2009 22:39:34 PAGE 5   

 241   1              delay_11(3);
 242   1              deceive_ready = DQ;
 243   1              delay_11(25);
 244   1              return(deceive_ready);
 245   1      }
 246          
 247          /********************************************************************
 248          * 名称 : read_bit()
 249          * 功能 : 从DS18B20读一个位值
 250          * 输入 : 无
 251          * 输出 : 从DS18B20读出的一个位值
 252          ***********************************************************************/
 253          uchar read_bit(void)
 254          {
 255   1              uchar i;
 256   1              DQ = 0;
 257   1              DQ = 1;
 258   1              for(i=0; i<3; i++);
 259   1              return(DQ);
 260   1      }
 261          
 262          /********************************************************************
 263          * 名称 : write_bit()
 264          * 功能 : 向DS18B20写一位
 265          * 输入 : bitval(要对DS18B20写入的位值)
 266          * 输出 : 无
 267          ***********************************************************************/
 268          void write_bit(uchar bitval)
 269          {
 270   1      DQ=0;if(bitval==1)
 271   1      DQ=1;
 272   1      delay_11(5);
 273   1      DQ=1;
 274   1      }
 275          
 276          /********************************************************************
 277          * 名称 : read_byte()
 278          * 功能 : 从DS18B20读一个字节
 279          * 输入 : 无
 280          * 输出 : 从DS18B20读到的值
 281          ***********************************************************************/
 282          uchar read_byte(void)
 283          {
 284   1              uchar i,m,receive_data;
 285   1              m = 1;
 286   1              receive_data = 0;
 287   1              for(i=0; i<8; i++)
 288   1              {
 289   2                      if(read_bit())
 290   2                      {
 291   3                              receive_data = receive_data + (m << i);
 292   3                      }
 293   2                      delay_11(6);
 294   2              }
 295   1              return(receive_data);
 296   1      }
 297          
 298          /********************************************************************
 299          * 名称 : write_byte()
 300          * 功能 : 向DS18B20写一个字节
 301          * 输入 : val(要对DS18B20写入的命令值)
 302          * 输出 : 无
C51 COMPILER V7.50   TLC549LCD                                                             04/10/2009 22:39:34 PAGE 6   

 303          ***********************************************************************/
 304          void write_byte(uchar val)
 305          {
 306   1              uchar i,temp;
 307   1              for(i=0; i<8; i++)
 308   1              {
 309   2                      temp = val >> i;
 310   2                      temp = temp & 0x01;
 311   2                      write_bit(temp);
 312   2                      delay_11(5);
 313   2              }
 314   1      }
 315          
 316          void Test_DS18B20()
 317          {
 318   1              float tt, i;
 319   1              uint temp;
 320   1              P2 = 0x00;
 321   1              for(i=0; i<100; i++) delay();
 322   1              L1602_init();
 323   1              L1602_string(1,1,"  DS18B20 TEST  ");
 324   1              L1602_string(2,1,"Temperature:00`C");
 325   1              for(i=0; i<300; i++)
 326   1              {
 327   2                      Reset();
 328   2                      write_byte(jump_ROM);
 329   2                      write_byte(start);
 330   2                      Reset();
 331   2                      write_byte(jump_ROM);
 332   2                      write_byte(read_EEROM);
 333   2                      TMPL = read_byte();
 334   2                      TMPH = read_byte();
 335   2                      temp = TMPH;
 336   2                      temp <<= 8;       
 337   2                      temp = temp | TMPL;
 338   2                      tt = TMPL * 0.0625;
 339   2                      temp = TMPL / 16 + TMPH * 16;
 340   2                      L1602_char(2,13,temp/10%10 + 48);
 341   2                      L1602_char(2,14,temp%10 + 48);
 342   2              }
 343   1              enable(0x01);   
 344   1      }
 345          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    890    ----
   CONSTANT SIZE    =     68    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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