📄 12864lcd显示.lst
字号:
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 + -