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

📄 ds1302clock.lst

📁 数字体温计,由单片机控制现实当前的温度
💻 LST
📖 第 1 页 / 共 4 页
字号:
 558          * 全局变量    :
 559          * 全局静态变量:
 560          * 局部静态变量:
 561          *----------------------------------------修改历史------------------------------------------
 562          * 当前版本    :                         修改人:                  修改日期:
 563          * 修改说明    :
 564          ******************************************************************************************/
 565          uchar ReadStatusLCM(void)
 566          {
 567   1              LCM_Data = 0xFF; 
 568   1              LCM_RS = 0;
 569   1              LCM_RW = 1;
 570   1              LCM_E = 0;
 571   1              LCM_E = 0;
 572   1              LCM_E = 1;
 573   1              while (LCM_Data & Busy); //检测忙信号
 574   1              return(LCM_Data);
 575   1      }
 576          
 577          /******************************************************************************************
 578          * 函数名称    :LCMInit
 579          * 功能描述    :LCM初始化
 580          * 参数        :  参数名称:    输入/输出?     类型            描述
 581          * 
 582          * 返回值      :
 583          * 作者        :
 584          * 创建日期    :2006-12-19
 585          * 全局变量    :
 586          * 全局静态变量:
 587          * 局部静态变量:
 588          *----------------------------------------修改历史------------------------------------------
 589          * 当前版本    :                         修改人:                  修改日期:
 590          * 修改说明    :
 591          ******************************************************************************************/
 592          void LCMInit(void) 
 593          {
 594   1              LCM_Data = 0;
 595   1              WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
 596   1              Delay5Ms(); 
 597   1              WriteCommandLCM(0x38,0);
 598   1              Delay5Ms(); 
 599   1              WriteCommandLCM(0x38,0);
 600   1              Delay5Ms(); 
 601   1              WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
 602   1              WriteCommandLCM(0x08,1); //关闭显示
 603   1              WriteCommandLCM(0x01,1); //显示清屏
 604   1              WriteCommandLCM(0x06,1); // 显示光标移动设置
 605   1              WriteCommandLCM(0x0C,1); // 显示开及光标设置
 606   1      }
 607          
 608          /******************************************************************************************
 609          * 函数名称    :DisplayOneChar
 610          * 功能描述    :按指定位置显示一个字符
 611          * 参数        :  参数名称:    输入/输出?     类型            描述
 612          * 
 613          * 返回值      :
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 11  

 614          * 作者        :
 615          * 创建日期    :2006-12-19
 616          * 全局变量    :
 617          * 全局静态变量:
 618          * 局部静态变量:
 619          *----------------------------------------修改历史------------------------------------------
 620          * 当前版本    :                         修改人:                  修改日期:
 621          * 修改说明    :
 622          ******************************************************************************************/
 623          void DisplayOneChar(uchar X, uchar Y, uchar DData)
 624          {
 625   1              Y &= 0x1;
 626   1              X &= 0xF; //限制X不能大于15,Y不能大于1
 627   1              if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
 628   1              X |= 0x80; //算出指令码
 629   1              WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码
 630   1              WriteDataLCM(DData);
 631   1      }
 632          
 633          /******************************************************************************************
 634          * 函数名称    :DisplayListChar
 635          * 功能描述    :按指定位置显示一串字符  ***原来的遇到空格0x20就不显示***
 636          * 参数        :  参数名称:    输入/输出?     类型            描述
 637          * 
 638          * 返回值      :
 639          * 作者        :
 640          * 创建日期    :2006-12-19
 641          * 全局变量    :
 642          * 全局静态变量:
 643          * 局部静态变量:
 644          *----------------------------------------修改历史------------------------------------------
 645          * 当前版本    :                         修改人:                  修改日期:
 646          * 修改说明    :
 647          ******************************************************************************************/
 648          void DisplayListChar(uchar X, uchar Y, uchar code *DData)
 649          {
 650   1              uchar ListLength,j;
 651   1              ListLength = strlen(DData);
 652   1              Y &= 0x1;
 653   1              X &= 0xF; //限制X不能大于15,Y不能大于1
 654   1          if (X <= 0xF) //X坐标应小于0xF
 655   1            { 
 656   2                          for(j=0;j<ListLength;j++)
 657   2                            {
 658   3                   DisplayOneChar(X, Y, DData[j]); //显示单个字符
 659   3                   X++;
 660   3                 }
 661   2             }
 662   1      }
 663          
 664          /******************************************************************************************
 665          * 函数名称    :
 666          * 功能描述    :
 667          * 参数        :  参数名称:    输入/输出?     类型            描述
 668          * 
 669          * 返回值      :
 670          * 作者        :
 671          * 创建日期    :2006-12-19
 672          * 全局变量    :
 673          * 全局静态变量:
 674          * 局部静态变量:
 675          *----------------------------------------修改历史------------------------------------------
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 12  

 676          * 当前版本    :                         修改人:                  修改日期:
 677          * 修改说明    :
 678          ******************************************************************************************/
 679          void Delay5Ms(void)
 680          {
 681   1              uint TempCyc = 5552;
 682   1              while(TempCyc--);
 683   1      }
 684          //400ms延时
 685          /******************************************************************************************
 686          * 函数名称    :
 687          * 功能描述    :
 688          * 参数        :  参数名称:    输入/输出?     类型            描述
 689          * 
 690          * 返回值      :
 691          * 作者        :
 692          * 创建日期    :2006-12-19
 693          * 全局变量    :
 694          * 全局静态变量:
 695          * 局部静态变量:
 696          *----------------------------------------修改历史------------------------------------------
 697          * 当前版本    :                         修改人:                  修改日期:
 698          * 修改说明    :
 699          ******************************************************************************************/
 700          void Delay400Ms(void)
 701          {
 702   1              uchar TempCycA = 5;
 703   1              uint TempCycB;
 704   1              while(TempCycA--)
 705   1              {
 706   2              TempCycB=7269;
 707   2              while(TempCycB--);
 708   2              };
 709   1      }
 710          
 711          /******************************************************************************************
 712          * 函数名称    :RTInputByte
 713          * 功能描述    :
 714          * 参数        :  参数名称:    输入/输出?     类型            描述
 715          * 
 716          * 返回值      :
 717          * 作者        :
 718          * 创建日期    :2006-12-19
 719          * 全局变量    :
 720          * 全局静态变量:
 721          * 局部静态变量:
 722          *----------------------------------------修改历史------------------------------------------
 723          * 当前版本    :                         修改人:                  修改日期:
 724          * 修改说明    :
 725          ******************************************************************************************/
 726          void RTInputByte(uchar d) 
 727          { 
 728   1          uchar i;
 729   1          ACC = d;
 730   1          for(i=8; i>0; i--)
 731   1          {
 732   2              T_IO = ACC0;           /*相当于汇编中的 RRC */
 733   2              T_CLK = 1;
 734   2              T_CLK = 0;
 735   2              ACC = ACC >> 1; 
 736   2          } 
 737   1      }
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 13  

 738          /******************************************************************************************
 739          * 函数名称    :RTOutputByte
 740          * 功能描述    :
 741          * 参数        :  参数名称:    输入/输出?     类型            描述
 742          * 
 743          * 返回值      :
 744          * 作者        :
 745          * 创建日期    :2006-12-19
 746          * 全局变量    :
 747          * 全局静态变量:
 748          * 局部静态变量:
 749          *----------------------------------------修改历史------------------------------------------
 750          * 当前版本    :                         修改人:                  修改日期:
 751          * 修改说明    :
 752          ******************************************************************************************/
 753          uchar RTOutputByte(void) 
 754          { 
 755   1          uchar i;
 756   1          for(i=8; i>0; i--)
 757   1          {
 758   2              ACC = ACC >>1;         /*相当于汇编中的 RRC */
 759   2              ACC7 = T_IO;
 760   2              T_CLK = 1;
 761   2              T_CLK = 0;
 762   2          } 
 763   1          return(ACC); 
 764   1      }
 765          /******************************************************************************************
 766          * 函数名称    :W1302
 767          * 功能描述    :
 768          * 参数        :  参数名称:    输入/输出?     类型            描述
 769          * 
 770          * 返回值      :
 771          * 作者        :
 772          * 创建日期    :2006-12-19
 773          * 全局变量    :
 774          * 全局静态变量:
 775          * 局部静态变量:
 776          *----------------------------------------修改历史------------------------------------------
 777          * 当前版本    :                         修改人:                  修改日期:
 778          * 修改说明    :
 779          ******************************************************************************************/
 780          void W1302(uchar ucAddr, uchar ucDa)
 781          {
 782   1          T_RST = 0;
 783   1          T_CLK = 0;
 784   1          T_RST = 1;
 785   1          RTInputByte(ucAddr);       /* 地址,命令 */
 786   1          RTInputByte(ucDa);       /* 写1Byte数据*/
 787   1          T_CLK = 1;
 788   1          T_RST = 0;
 789   1      }
 790          /******************************************************************************************
 791          * 函数名称    :R1302
 792          * 功能描述    :
 793          * 参数        :  参数名称:    输入/输出?     类型            描述
 794          * 
 795          * 返回值      :
 796          * 作者        :
 797          * 创建日期    :2006-12-19
 798          * 全局变量    :
 799          * 全局静态变量:
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 14  

 800          * 局部静态变量:
 801          *----------------------------------------修改历史------------------------------------------
 802          * 当前版本    :                         修改人:                  修改日期:
 803          * 修改说明    :
 804          ******************************************************************************************/
 805          uchar R1302(uchar ucAddr)
 806          {
 807   1          uchar ucData;
 808   1          T_RST = 0;
 809   1          T_CLK = 0;
 810   1          T_RST = 1;
 811   1          RTInputByte(ucAddr);             /* 地址,命令 */
 812   1          ucData = RTOutputByte();         /* 读1Byte数据 */
 813   1          T_CLK = 1;
 814   1          T_RST = 0;
 815   1          return(ucData);
 816   1      }
 817          
 818          /******************************************************************************************
 819          * 函数名称    :Set1302
 820          * 功能描述    :
 821          * 参数        :  参数名称:    输入/输出?     类型            描述
 822          * 
 823          * 返回值      :
 824          * 作者        :
 825          * 创建日期    :2006-12-19
 826          * 全局变量    :
 827          * 全局静态变量:
 828          * 局部静态变量:
 829          *----------------------------------------修改历史------------------------------------------
 830          * 当前版本    :                         修改人:                  修改日期:
 831          * 修改说明    :
 832          ******************************************************************************************/
 833          void Set1302(uchar *pClock) 
 834          {
 835   1          uchar i;
 836   1          uchar ucAddr = 0x80; 
 837   1          W1302(0x8e,0x00);           /* 控制命令,WP=0,写操作?*/
 838   1          for(i =7; i>0; i--)
 839   1          { 
 840   2              W1302(ucAddr,*pClock);  /* 秒 分 时 日 月 星期 年 */ 
 841   2              pClock++;

⌨️ 快捷键说明

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