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

📄 zh.lst

📁 基于单片机的步进电机课程设计(基于2803驱动芯片)
💻 LST
📖 第 1 页 / 共 3 页
字号:
 536   3                                                                        temp=temp-1;  //星期数减1
 537   3                                        down_flag=1;
 538   3                                                                        if(temp==0)
 539   3                                                                        temp=0x7;;
 540   3                                                                        break;
 541   3                                                 case 5:
 542   3                                        temp=Read1302(DS1302_DAY);  //读取日数
 543   3                                                                        temp=temp-1;  //日数减1
 544   3                                        down_flag=1;
 545   3                                                                        if(temp==0)
 546   3                                                                        temp=31;
 547   3                                                                        break;
C51 COMPILER V6.23a  ZH                                                                    04/27/2008 20:51:21 PAGE 10  

 548   3                                                 case 6:
 549   3                                        temp=Read1302(DS1302_MONTH);  //读取月数
 550   3                                                                        temp=temp-1;  //月数减1
 551   3                                        down_flag=1;
 552   3                                                                        if(temp==0)
 553   3                                                                        temp=12;
 554   3                                                                        break;
 555   3                                                 case 7:
 556   3                                        temp=Read1302(DS1302_YEAR);  //读取年数
 557   3                                                                        temp=temp-1;  //年数减1
 558   3                                        down_flag=1;
 559   3                                                                        if(temp==-1)
 560   3                                                                        temp=0x85;
 561   3                                                                        break;
 562   3                                                    default:break;
 563   3                                               }
 564   2                                               
 565   2                                         while(Down==0);
 566   2                                         while(wireless_3==1);
 567   2                                        }
 568   1      }
 569          
 570          void Setkey()//模式选择按键
 571          {
 572   1                      Set=1;
 573   1                      if(Set==0||wireless_4==1)
 574   1                  {
 575   2                 mdelay(8);
 576   2                 count=count+1;        //Setkey按一次,count就加1
 577   2                         done=1;                       //进入调整模式
 578   2                 while(Set==0);
 579   2                 while(wireless_4==1);
 580   2                       }
 581   1      
 582   1      }
 583          
 584          void keydone()//按键功能执行
 585          {        uchar Second;
 586   1                       if(flag==0)    //关闭时钟,停止计时
 587   1               { Write1302(0x8e,0x00); //写入允许
 588   2                 temp=Read1302(0x80);
 589   2                 Write1302(0x80,temp|0x80);
 590   2                     Write1302(0x8e,0x80); //禁止写入
 591   2                 flag=1;
 592   2               }
 593   1               Setkey();                                          //扫描模式切换按键
 594   1                       switch(count)
 595   1                       {case 1:do                                             //count=1,调整秒
 596   2                                {
 597   3                         outkey();                       //扫描跳出按钮
 598   3                                         Upkey();                //扫描加按钮
 599   3                                         Downkey();              //扫描减按钮
 600   3                                         if(up_flag==1||down_flag==1)  //数据更新,重新写入新的数据
 601   3                                         {
 602   4                                         Write1302(0x8e,0x00); //写入允许
 603   4                                         Write1302(0x80,temp|0x80); //写入新的秒数
 604   4                                         Write1302(0x8e,0x80); //禁止写入
 605   4                                         up_flag=0;
 606   4                                         down_flag=0;
 607   4                                         }
 608   3      
 609   3                                         hide_sec++;          //位闪计数
C51 COMPILER V6.23a  ZH                                                                    04/27/2008 20:51:21 PAGE 11  

 610   3                                         if(hide_sec>3)
 611   3                                           hide_sec=0;
 612   3                         show_time();         //液晶显示数据
 613   3                                        }while(count==2);break;  
 614   2                        case 2:do                                             //count=2,调整分
 615   2                                {
 616   3                                         hide_sec=0;
 617   3                                         outkey();
 618   3                                         Upkey();
 619   3                                         Downkey();
 620   3                                         if(temp>0x60)
 621   3                                           temp=0;
 622   3                                         if(up_flag==1||down_flag==1)
 623   3                                         {
 624   4                                         Write1302(0x8e,0x00); //写入允许
 625   4                                         Write1302(0x82,temp); //写入新的分数
 626   4                                         Write1302(0x8e,0x80); //禁止写入
 627   4                                         up_flag=0;
 628   4                                         down_flag=0;
 629   4                                         }
 630   3                                         hide_min++;
 631   3                                         if(hide_min>3)
 632   3                                           hide_min=0;
 633   3                         show_time();
 634   3                                        }while(count==3);break;
 635   2                        case 3:do                                             //count=3,调整小时
 636   2                                {
 637   3                         hide_min=0; 
 638   3                                         outkey();
 639   3                                         Upkey();
 640   3                                         Downkey();
 641   3                                         if(up_flag==1||down_flag==1)
 642   3                                         {
 643   4                                         Write1302(0x8e,0x00); //写入允许
 644   4                                         Write1302(0x84,temp); //写入新的小时数
 645   4                                         Write1302(0x8e,0x80); //禁止写入
 646   4                                         up_flag=0;
 647   4                                         down_flag=0;
 648   4                                         }
 649   3                                         hide_hour++;
 650   3                                         if(hide_hour>3)
 651   3                                           hide_hour=0;
 652   3                         show_time();
 653   3                                        }while(count==4);break;
 654   2                        case 4:do                                             //count=4,调整星期
 655   2                                {
 656   3                         hide_hour=0; 
 657   3                                         outkey();
 658   3                                         Upkey();
 659   3                                         Downkey();
 660   3                                         if(up_flag==1||down_flag==1)
 661   3                                         {
 662   4                                         Write1302(0x8e,0x00); //写入允许
 663   4                                         Write1302(0x8a,temp); //写入新的星期数
 664   4                                         Write1302(0x8e,0x80); //禁止写入
 665   4                                         up_flag=0;
 666   4                                         down_flag=0;
 667   4                                         }
 668   3                                         hide_week++;
 669   3                                         if(hide_week>3)
 670   3                                           hide_week=0;
 671   3                         show_time();
C51 COMPILER V6.23a  ZH                                                                    04/27/2008 20:51:21 PAGE 12  

 672   3                                        }while(count==5);break;
 673   2                        case 5:do                                             //count=5,调整日
 674   2                                {
 675   3                                         hide_week=0; 
 676   3                                         outkey();
 677   3                                         Upkey();
 678   3                                         Downkey();
 679   3                                         if(up_flag==1||down_flag==1)
 680   3                                         {
 681   4                                         Write1302(0x8e,0x00); //写入允许
 682   4                                         Write1302(0x86,temp); //写入新的日数
 683   4                                         Write1302(0x8e,0x80); //禁止写入
 684   4                                         up_flag=0;
 685   4                                         down_flag=0;
 686   4                                         }
 687   3                                         hide_day++;
 688   3                                         if(hide_day>3)
 689   3                                           hide_day=0;
 690   3                         show_time();
 691   3                                        }while(count==6);break;
 692   2                        case 6:do                                             //count=6,调整月
 693   2                                {
 694   3                         hide_day=0; 
 695   3                                         outkey();
 696   3                                         Upkey();
 697   3                                         Downkey();
 698   3                                         if(up_flag==1||down_flag==1)
 699   3                                         {
 700   4                                         Write1302(0x8e,0x00); //写入允许
 701   4                                         Write1302(0x88,temp); //写入新的月数
 702   4                                         Write1302(0x8e,0x80); //禁止写入
 703   4                                         up_flag=0;
 704   4                                         down_flag=0;
 705   4                                         }
 706   3                                         hide_month++;
 707   3                                         if(hide_month>3)
 708   3                                           hide_month=0;
 709   3                         show_time();
 710   3                                        }while(count==7);break;
 711   2                        case 7:do                                             //count=7,调整年
 712   2                                {
 713   3                         hide_month=0; 
 714   3                                         outkey();
 715   3                                         Upkey();
 716   3                                         Downkey();
 717   3                                         if(up_flag==1||down_flag==1)
 718   3                                         {
 719   4                                         Write1302(0x8e,0x00); //写入允许
 720   4                                         Write1302(0x8c,temp); //写入新的年数
 721   4                                         Write1302(0x8e,0x80); //禁止写入
 722   4                                         up_flag=0;
 723   4                                         down_flag=0;
 724   4                                         }
 725   3                                         hide_year++;
 726   3                                         if(hide_year>3)
 727   3                                           hide_year=0;
 728   3                         show_time();
 729   3                                        }while(count==8);break;
 730   2                        case 8: count=0;hide_year=0;  //count8, 跳出调整模式,返回默认显示状态
 731   2                            Second=Read1302(DS1302_SECOND);
 732   2                        Write1302(0x8e,0x00); //写入允许
 733   2                            Write1302(0x80,Second&0x7f);
C51 COMPILER V6.23a  ZH                                                                    04/27/2008 20:51:21 PAGE 13  

 734   2                            Write1302(0x8E,0x80);          //禁止写入
 735   2                                        done=0;
 736   2                        break; //count=7,开启中断,标志位置0并退出
 737   2                        default:break;
 738   2      
 739   2                       }
 740   1      
 741   1      }
 742          
 743          
 744          void show_time()   //液晶显示程序
 745          {
 746   1        DS1302_GetTime(&CurrentTime);  //获取时钟芯片的时间数据
 747   1        TimeToStr(&CurrentTime);       //时间数据转换液晶字符
 748   1        DateToStr(&CurrentTime);       //日期数据转换液晶字符
 749   1        ReadTemp();                    //开启温度采集程序
 750   1        temp_to_str();                 //温度数据转换成液晶字符
 751   1        GotoXY(12,1);                  //液晶字符显示位置
 752   1        Print(TempBuffer);             //显示温度
 753   1        GotoXY(0,1);
 754   1        Print(CurrentTime.TimeString); //显示时间
 755   1        GotoXY(0,0);
 756   1        Print(CurrentTime.DateString); //显示日期
 757   1        GotoXY(15,0);
 758   1        Print(week_value);             //显示星期
 759   1        GotoXY(11,0);
 760   1        Print("Week");        //在液晶上显示 字母 week
 761   1        Delay1ms(400);                 //扫描延时
 762   1      }
 763          
 764          
 765          
 766          void main()
 767          {
 768   1          flag=1;           //时钟停止标志
 769   1              LCD_Initial();    //液晶初始化
 770   1              Init_DS18B20( ) ;      //DS18B20初始化
 771   1              Initial_DS1302(); //时钟芯片初始化
 772   1              up_flag=0;
 773   1              down_flag=0;
 774   1              done=0;           //进入默认液晶显示
 775   1              wireless_1=0;
 776   1              wireless_2=0;
 777   1              wireless_3=0;
 778   1              wireless_4=0;
 779   1              while(1)
 780   1              {   
 781   2              while(done==1)
 782   2                keydone();    //进入调整模式
 783   2                      while(done==0)
 784   2                  {  
 785   3                  show_time();                //液晶显示数据
 786   3                  flag=0;                  
 787   3                          Setkey();                            //扫描各功能键
 788   3                      }
 789   2              }
 790   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2292    ----
   CONSTANT SIZE    =      5    ----
C51 COMPILER V6.23a  ZH                                                                    04/27/2008 20:51:21 PAGE 14  

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     48       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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