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

📄 12864lcd显示.lst

📁 LCD12864+18b20+1302串口
💻 LST
📖 第 1 页 / 共 5 页
字号:
 708   2                      if(Bell_Swh == 0)//关
 709   2                                              {
 710   3                                              LCD_Write_string(1,6,guan);
 711   3                                              }
 712   2                                      else
 713   2                                      {
 714   3                                              LCD_Write_string(1,6,kai);
 715   3                                      }
 716   2              }    
 717   1         
 718   1              if(Hourb==1)  //时闪烁标志位
 719   1          {
 720   2              if(flag==1)
 721   2              { 
 722   3                              d=read_clock(0xc3);     //读闹钟小时的数值
 723   3                              e=d;
 724   3                              d=d>>4;
 725   3                              e=e&0x0f;
 726   3                              LCD_set_xy(3,3);
 727   3                              LCD_Write_number(d);
 728   3                              LCD_Write_number(e);   
 729   3              }
 730   2              else
 731   2              {
 732   3                              LCD_set_xy(3,3);
 733   3                              LCD_Write_number(10);   //显示空格
 734   3                              LCD_Write_number(10);    
 735   3              }
 736   2          } 
 737   1              else
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 13  

 738   1              {
 739   2                              d=read_clock(0xc3);     //读闹钟小时的数值
 740   2                              e=d;
 741   2                              d=d>>4;
 742   2                              e=e&0x0f;
 743   2                              LCD_set_xy(3,3);
 744   2                              LCD_Write_number(d);
 745   2                              LCD_Write_number(e);     
 746   2              } 
 747   1      
 748   1                      if(flag == 0)
 749   1                              LCD_Write_number(11);   //显示:构成闪烁壮
 750   1                      else 
 751   1                              LCD_Write_number(10);   //显示空格
 752   1      
 753   1              if(Minb==1)                             //分钟闪烁标志位
 754   1          {
 755   2              if(flag==1)
 756   2              {    
 757   3                              d=read_clock(0xc5);     //读闹钟分钟的数值
 758   3                              e=d;
 759   3                              d=d>>4;
 760   3                              e=e&0x0f;
 761   3                              LCD_Write_number(d);
 762   3                              LCD_Write_number(e);
 763   3              }
 764   2              else
 765   2              {
 766   3                              LCD_Write_number(10);   //显示空格
 767   3                              LCD_Write_number(10);    
 768   3              }
 769   2           } 
 770   1              else
 771   1              { 
 772   2                              d=read_clock(0xc5);     //读闹钟分钟的数值
 773   2                              e=d;
 774   2                              d=d>>4;
 775   2                              e=e&0x0f;
 776   2                              LCD_Write_number(d);
 777   2                              LCD_Write_number(e);
 778   2              }
 779   1      }
 780          
 781          void id_case1_key(void)                         //时间界面上下键判别
 782          {
 783   1                      if(Add_Key == 0)                //增加
 784   1              {
 785   2                      Delay(100);
 786   2              if(Add_Key == 0)
 787   2                              Set_time(id,0);         //调用Set_time函数
 788   2                              while(Add_Key ==0);
 789   2              }
 790   1              if (Dec_Key==0)                         //减少
 791   1              {
 792   2                      Delay(100);
 793   2              if(Dec_Key == 0)
 794   2                              Set_time(id,1);  
 795   2                      while(Dec_Key ==0);
 796   2            }
 797   1      }
 798          
 799          
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 14  

 800          void Set_time(unsigned char sel, bit sel_1)     //设置时间光标位置
 801          {
 802   1              signed char address,item;
 803   1              signed char max,mini;
 804   1              if(sel==7)  
 805   1                      {
 806   2                              address=0x80; 
 807   2                              max=0;
 808   2                              mini=0;
 809   2                      }     //秒
 810   1              if(sel==6)  
 811   1                      {
 812   2                              address=0x82; 
 813   2                              max=59;
 814   2                              mini=0;
 815   2                      }    //分钟
 816   1              if(sel==5)  
 817   1                      {
 818   2                              address=0x84;
 819   2                              max=23;
 820   2                              mini=0;
 821   2                      }    //小时
 822   1              if(sel==3)  
 823   1                      {
 824   2                              address=0x86;
 825   2                              max=31;
 826   2                              mini=1;
 827   2                      }    //日
 828   1              if(sel==2) 
 829   1                      {
 830   2                              address=0x88; 
 831   2                              max=12;
 832   2                              mini=1;
 833   2                      }    //月
 834   1              if(sel==1)  
 835   1                      {
 836   2                              address=0x8c; 
 837   2                              max=99; 
 838   2                              mini=0;
 839   2                      }    //年
 840   1              if(sel==4)  
 841   1                      {
 842   2                              address=0x8a; 
 843   2                              max=7;
 844   2                              mini=1;
 845   2                      }    //星期
 846   1        
 847   1        //读取1302某地址上的数值转换成10进制赋给item 
 848   1              item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
 849   1              if(sel_1==0) 
 850   1                      item++;  
 851   1              else
 852   1                      item--;
 853   1              if(item>max) 
 854   1                      item=mini;   
 855   1              if(item<mini) 
 856   1                      item=max;
 857   1                 
 858   1              write_clock(0x8e,0x00);//允许写操作
 859   1              write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
 860   1              write_clock(0x8e,0x80);//写保护,禁止写操作  
 861   1      }
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 15  

 862          
 863          
 864          void id_case2_key(void)                 //闹钟界面上下键判别
 865          {
 866   1              if(Add_Key == 0)                //增加
 867   1              {
 868   2              Delay(100);
 869   2              if(Add_Key == 0)
 870   2                              Set_Bell(id2,0);//调用Set_time函数
 871   2              while(Add_Key ==0);
 872   2              }
 873   1              if(Dec_Key==0)                  //减少
 874   1              {
 875   2              Delay(100);
 876   2              if(Dec_Key == 0)
 877   2                              Set_Bell(id2,1);  
 878   2              while(Dec_Key ==0);
 879   2            }
 880   1      }
 881          
 882          
 883          void Set_Bell(unsigned char sel, bit sel_1)     //闹钟闪烁位置设置
 884          {
 885   1              signed char address,item;
 886   1              signed char max,mini;
 887   1              if(sel==4)  
 888   1                      {
 889   2                              address=0xc6; 
 890   2                              max=59;
 891   2                              mini=0;
 892   2                      }    //秒
 893   1              if(sel==3)  
 894   1                      {
 895   2                              address=0xc4; 
 896   2                              max=59;
 897   2                              mini=0;
 898   2                      }    //分
 899   1              if(sel==2)  
 900   1                      {
 901   2                              address=0xc2; 
 902   2                              max=23; 
 903   2                              mini=0;
 904   2                      }   //时
 905   1              if(sel==1)                              //标志位
 906   1                      {
 907   2                              address=0xc8;//for read
 908   2                              if(Add_Key ==0 || Dec_Key ==0)
 909   2                              Bell_Swh=~Bell_Swh;
 910   2                              write_clock(address,Bell_Swh);
 911   2                      }                               //开关
 912   1      
 913   1              item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
 914   1              if(sel_1==0) 
 915   1                      item++;  
 916   1              else
 917   1                      item--;
 918   1              if(item>max) 
 919   1                      item=mini;   
 920   1              if(item<mini) 
 921   1                      item=max;
 922   1      
 923   1              write_clock(0x8e,0x00);//允许写操作
C51 COMPILER V7.02b   12864LCD_允_                                                         04/06/2009 00:17:44 PAGE 16  

 924   1              write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
 925   1              write_clock(0x8e,0x80);//写保护,禁止写操作 
 926   1      }
 927          
 928          
 929          void Timer0_Init(void)          //T0初始化
 930          {
 931   1                      TMOD=0x01;
 932   1                      TH0=(65535-50000)/256;
 933   1                      TL0=(65535-50000)%256;
 934   1                      EA=1;
 935   1                      ET0=1; 
 936   1                      TR0=1;
 937   1      }
 938          
 939          
 940          void Timer0(void) interrupt 1 using 1           //TO中断入口,来显示闪烁0.5秒每次
 941          {
 942   1                      static unsigned char timecount = 0;//
 943   1      
 944   1                      TH0=(65535-50000)/256; //50ms定时
 945   1              TL0=(65535-50000)%256;  

⌨️ 快捷键说明

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