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

📄 quan.lst

📁 用单片机做的数字电子钟
💻 LST
📖 第 1 页 / 共 5 页
字号:
 656   1      }
 657          
 658          /*------------------初始化LCD屏--------------------------*/
 659          void init_lcd()
 660           {
 661   1        CS2=1;
 662   1        CS1=1;
 663   1        delay(100);
 664   1        write_command(Disp_Off);
 665   1        write_command(Page_Add+0);
 666   1        write_command(Start_Line+0);
 667   1        write_command(Col_Add+0);
 668   1        write_command(Disp_On);
 669   1       }
 670          
 671          
 672          /*-------------------------- 开机信息显示------------------------*/
 673          void StartMsg(void)
 674           {
 675   1        Clr_Scr();         // 先清屏 //
C51 COMPILER V8.02   QUAN                                                                  07/29/2008 20:35:20 PAGE 12  

 676   1        CS2=0;CS1=1;
 677   1        hz_disp16(0,0,xian);      //  献
 678   1        delays(200);
 679   1        hz_disp16(0,16,gei);      //  给
 680   1        delays(200);   
 681   1        hz_disp16(0,32,jing);      // 靖
 682   1        delays(200);
 683   1        hz_disp16(0,48,de);       //  的
 684   1        delays(200);
 685   1        CS2=1;CS1=0;  
 686   1        hz_disp16(0,0,shen);      //  生
 687   1        delays(200);
 688   1        hz_disp16(0,16,xq7);      //  日
 689   1        delays(200);  
 690   1        hz_disp16(0,32,li);       //  礼
 691   1         delays(200);
 692   1        hz_disp16(0,48,wu);       //  物
 693   1        delays(200);   
 694   1        CS2=0;CS1=1;
 695   1        hz_disp32(2,0,sheng);         //  生
 696   1        hz_disp32(2,32,ri);       //  日
 697   1        CS2=1;CS1=0;
 698   1        hz_disp32(2,0,kuai);      //  快  
 699   1        hz_disp32(2,32,le);       //  乐
 700   1        delays(500);
 701   1        hz_disp16(6,16,lu);       //  陆
 702   1        delays(200);
 703   1        hz_disp16(6,32,qian);     //  乾
 704   1        delays(200);
 705   1        hz_disp16(6,48,kun);      //  坤
 706   1       }
 707          /*------------------------时钟固定汉字显示-----------------------*/
 708          void ClockMsg(void)
 709           {
 710   1        Clr_Scr();                       //  先清屏 //  
 711   1        CS2=0;CS1=1;                     //  左屏
 712   1        sz_disp16(0,48,shuzi[2]);        //  2
 713   1        sz_disp16(0,56,shuzi[0]);        //  0
 714   1        hz_disp16(2,16,yue);             //  月
 715   1        hz_disp16(2,48,xq7);             //  日
 716   1        sz_disp16(4,16,maohao);              // 冒号
 717   1        sz_disp16(4,40,maohao);
 718   1        CS2=1;CS1=0;                     //  右屏  
 719   1        hz_disp16(2,16,xing);            //  星
 720   1        hz_disp16(2,31,qi);              //  期
 721   1        sz_disp16(4,32,point);                   //  小数点
 722   1        hz_disp16(4,48,du);              //  度  
 723   1       }
 724          
 725          /*------------------------温度传感器部分-------------------------*/
 726          /******************************************************************************/
 727          void Init_DS18B20(void)//初始化ds1820
 728          {
 729   1              unsigned char x=0;
 730   1              DQ = 1;    //DQ复位
 731   1              delay(8);  //稍做延时
 732   1              DQ = 0;    //单片机将DQ拉低
 733   1              delay(80); //精确延时 大于 480us
 734   1              DQ = 1;    //拉高总线
 735   1              delay(14);
 736   1              x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
 737   1              delay(20);
C51 COMPILER V8.02   QUAN                                                                  07/29/2008 20:35:20 PAGE 13  

 738   1      }
 739          /******************************************************************************/
 740          unsigned char ReadOneChar(void)//读一个字节
 741          {
 742   1              unsigned char i=0;
 743   1              unsigned char dat = 0;
 744   1              for (i=8;i>0;i--)
 745   1              {
 746   2                      DQ = 0; // 给脉冲信号
 747   2                      dat>>=1;
 748   2                      DQ = 1; // 给脉冲信号
 749   2                      if(DQ)
 750   2                      dat|=0x80;
 751   2                      delay(4);
 752   2              }
 753   1              return(dat);
 754   1      }
 755          
 756          /******************************************************************************/
 757          void WriteOneChar(unsigned char dat)//写一个字节
 758          {
 759   1              unsigned char i=0;
 760   1              for (i=8; i>0; i--)
 761   1              {
 762   2                      DQ = 0;
 763   2                      DQ = dat&0x01;
 764   2                  delay(5);
 765   2                      DQ = 1;
 766   2                      dat>>=1;
 767   2              }
 768   1      }
 769          /******************************************************************************/
 770          unsigned int ReadTemperature(void)//读取温度
 771          {
 772   1              unsigned char a=0;
 773   1              unsigned char b=0;
 774   1              unsigned int t=0;
 775   1              float tt=0;
 776   1              Init_DS18B20();     //第一次复位,执行温度转换
 777   1          WriteOneChar(0xCC); // 跳过读序号列号的操作
 778   1          WriteOneChar(0x44); // 启动温度转换
 779   1          Init_DS18B20();     // 第二次复位,读数据
 780   1          WriteOneChar(0xCC); //跳过读序号列号的操作
 781   1          WriteOneChar(0xBE); //读取温度寄存器
 782   1          a=ReadOneChar();    //读低8位
 783   1          b=ReadOneChar();    //读高8位
 784   1          t=b;
 785   1          t<<=8;
 786   1          t=t|a;
 787   1          tt=t*0.0625;
 788   1          t= tt*10+0.5;       //放大10倍输出并四舍五入
 789   1          return(t);
 790   1      }
 791          /******************************************************************************/
 792          
 793          
 794          /*-----------------------时钟部分---------------------------*/
 795          
 796          ///////////////////////////////////////////////
 797          ///// 函数名:   写入字节子函数          //////
 798          ///// 函数功能: 写入一个字节到对应地址  //////
 799          ///// 函数参数: 有(写入的字节内容)      //////
C51 COMPILER V8.02   QUAN                                                                  07/29/2008 20:35:20 PAGE 14  

 800          ///// 返回值:   无                      //////
 801          ///////////////////////////////////////////////
 802          
 803          void InputByte(unsigned char dat) 
 804           { 
 805   1        unsigned char i;
 806   1        ACC = dat;
 807   1        for(i=8; i>0; i--)
 808   1         {
 809   2          IO = ACC0;      
 810   2          CLK = 1;          //下降沿写入数据//
 811   2          CLK = 0;
 812   2          ACC = ACC >> 1; 
 813   2         } 
 814   1       }
 815          
 816          /************************************************************************************///*时钟部分*/↓
 817          ///////////////////////////////////////////////
 818          ///// 函数名:   读出字节子函数          //////
 819          ///// 函数功能: 从对应地址读出一个字节  //////
 820          ///// 函数参数: 无                      //////
 821          ///// 返回值:   有(读出的字节内容)      //////
 822          ///////////////////////////////////////////////
 823          OutputByte(void) 
 824           { 
 825   1        unsigned char i;
 826   1        for(i=8; i>0; i--)
 827   1         {
 828   2          ACC = ACC >>1; 
 829   2          ACC7 = IO;
 830   2          CLK = 1;           //上升沿读出数据//
 831   2          CLK = 0;
 832   2         } 
 833   1        return(ACC); 
 834   1       }
 835          /*************************************************************************************************/ 
 836          /////////////////////////////////////////////
 837          ///// 函数名:   写入字节完整子函数    //////
 838          ///// 函数功能: 写入一个字节到DS1302  //////
 839          ///// 调用: InputByte()               //////
 840          ///// 函数参数: 有(写入的地址和数据)  //////
 841          ///// 返回值:   无                    //////
 842          /////////////////////////////////////////////
 843          
 844          void WriteTo1302(unsigned char Addr,unsigned char Date)
 845           {
 846   1        RST2 = 0;
 847   1        CLK = 0;
 848   1        RST2 = 1;
 849   1        InputByte(Addr);       // 先给地址,命令 //
 850   1        InputByte(Date);       // 再写入一字节数据 //
 851   1        CLK = 1;
 852   1        RST2 =0;
 853   1       }
 854           /*************************************************************************************************/ 
 855          /////////////////////////////////////////////
 856          ///// 函数名:   初始化DS1302       //////
 857          ///// 函数功能: 给DS1302设定初始值   //////
 858          ///// 调用: WriteTo1302        //////
 859          ///// 函数参数: 无                    //////
 860          ///// 返回值:   无            //////
 861          /////////////////////////////////////////////
C51 COMPILER V8.02   QUAN                                                                  07/29/2008 20:35:20 PAGE 15  

 862          
 863          /* void Init_1302(void){//(2008年5月5日08时55分55秒星期一)
 864                  WriteTo1302(0x8e,0x00);//允许写操作
 865          
 866                  WriteTo1302(0x8c,0x08);//年
 867                  WriteTo1302(0x8a,0x01);//星期
 868                  WriteTo1302(0x88,0x05);//月
 869                  WriteTo1302(0x86,0x05);//日
 870                  WriteTo1302(0x84,0x08);//小时
 871                  WriteTo1302(0x82,0x55);//分钟
 872                  WriteTo1302(0x80,0x00);//秒
 873                  WriteTo1302(0x90,0xa5);//充电   
 874                  WriteTo1302(0x8e,0x80);//禁止写操作 
 875                  } */                                                    

⌨️ 快捷键说明

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