📄 lcdx1.lst
字号:
958 3 while(TI==0);TI=0;
959 3 }
960 2 }
961 1 bufov=1;
962 1 }
963
964 /*显示横向音量条形图:num范围0_64*/
965 void disp_vol_bar(uchar num)
966 {
967 1 point p1,p2;
968 1 p1.y=1;
969 1 p2.y=6;
970 1 if(vol_bar_num<num)
971 1 {
972 2 p1.x=vol_bar_num+19;
973 2 p2.x=num-1+19;
974 2 draw_srec(p1,p2,0xff);
975 2 }
976 1 else if(vol_bar_num>num)
977 1 {
978 2 p1.x=num+19;
979 2 p2.x=vol_bar_num-1+19;
980 2 draw_srec(p1,p2,0);
981 2 }
982 1 vol_bar_num=num;
983 1 }
984
985 /*显示商标*/
C51 COMPILER V7.07 LCDX1 01/25/2005 13:50:05 PAGE 17
986 void disp_trademark(void)
987 {
988 1 uchar i;
989 1 offlcd();
990 1 onlcd();
991 1 clr_lcd();
992 1 /*显示商标*/
993 1 cursor.x=48;
994 1 cursor.y=0;
995 1 zf_fs=1;
996 1 disp_one_hz(0,16,cctab,1);
997 1 disp_one_hz(1,16,cctab,1);
998 1 cursor.x=48;
999 1 cursor.y+=16;
1000 1 disp_one_hz(2,16,cctab,1);
1001 1 disp_one_hz(3,16,cctab,1);
1002 1 /*显示公司名称*/
1003 1 cursor.x=32;
1004 1 cursor.y=36;
1005 1 for(i=4;i<8;i++) {disp_one_hz(i,16,cctab,1);}
1006 1 /*延迟*/
1007 1 for(i=0;i<8;i++) {delay(0xff);}
1008 1 /*清屏*/
1009 1 clr_lcd();
1010 1 }
1011
1012 /*将选中的频率标识反显*/
1013 void select_fre(uchar fre)
1014 {
1015 1 /*清除上一次选中的频率点*/
1016 1 point p1,p2;
1017 1 uchar a;
1018 1 a=ffpos*21;
1019 1 p1.x=3+a;;
1020 1 p1.y=51;
1021 1 p2.x=19+a;
1022 1 p2.y=62;
1023 1 draw_srec(p1,p2,1);
1024 1 /*选中当前的频率点*/
1025 1 a=fre*21;
1026 1 p1.x=3+a;;
1027 1 p1.y=51;
1028 1 p2.x=19+a;
1029 1 p2.y=62;
1030 1 draw_srec(p1,p2,1);
1031 1 /*保存当前的频率点数值*/
1032 1 ffpos=fre;
1033 1 }
1034
1035 /*开机时由ADUC812发送命令0X94后调用该子程序,选中上一次关机时的频率点*/
1036 void ini_fre(uchar fre)
1037 {
1038 1 point p1,p2;
1039 1 uchar a;
1040 1 a=fre*21;
1041 1 p1.x=3+a;;
1042 1 p1.y=51;
1043 1 p2.x=19+a;
1044 1 p2.y=62;
1045 1 draw_srec(p1,p2,1);
1046 1 ffpos=fre;
1047 1 }
C51 COMPILER V7.07 LCDX1 01/25/2005 13:50:05 PAGE 18
1048
1049
1050 /*初始化LCD屏幕显示内容*/
1051 void ini_displayer(void)
1052 {
1053 1 point p1,p2;
1054 1 uchar i,a;
1055 1 /*显示VOL字母*/
1056 1 cursor.x=0;
1057 1 cursor.y=0;
1058 1 disp_one_hz(21,6,sutab,1);
1059 1 disp_one_hz(14,6,sutab,1);
1060 1 disp_one_hz(11,6,sutab,1);
1061 1 /*显示音量框及初始值0*/
1062 1 p1.x=18;
1063 1 p1.y=0;
1064 1 p2.x=83;
1065 1 p2.y=7;
1066 1 draw_rec(p1,p2,1);
1067 1 disp_vol_bar(vol_bar_num<<1);
1068 1
1069 1 /*显示频率点A B C D E F,以及其方框*/
1070 1 p1.x=0;
1071 1 p1.y=50;
1072 1 p2.x=127;
1073 1 p2.y=63;
1074 1 for(i=0;i<6;i++)
1075 1 {
1076 2 a=i*21;
1077 2 cursor.x=6+a;
1078 2 cursor.y=46+3;
1079 2 disp_one_hz(i,11,tttt,1);
1080 2 p1.x=1+a;
1081 2 p2.x=21+a;
1082 2 draw_rec(p1,p2,1);
1083 2 }
1084 1 p1.x=0;
1085 1 p1.y=50;
1086 1 p2.x=127;
1087 1 p2.y=63;
1088 1 draw_rec(p1,p2,1);
1089 1
1090 1 /*显示横向条形图的初始值0*/
1091 1 cursor.x=lbarnum;
1092 1 cursor.y=33;
1093 1 transfer(lbarnum);
1094 1
1095 1 /*显示电池电量外框*/
1096 1 disp_bat_edge(1);
1097 1 }
1098
1099 void main()
1100 {
1101 1 disp_trademark();
1102 1
1103 1 ini_displayer();
1104 1
1105 1 /**********************************************************/
1106 1
1107 1 /**********************************************************/
1108 1 /*初始化串口*/
1109 1 init();
C51 COMPILER V7.07 LCDX1 01/25/2005 13:50:05 PAGE 19
1110 1
1111 1 /*初始化定时器0*/
1112 1 init0();
1113 1
1114 1 /*主程序循环*/
1115 1 for(;;)
1116 1 {
1117 2 if(bufov==1)
1118 2 {
1119 3 if(buf[0]==0x1b)
1120 3 {
1121 4 switch(buf[1])
1122 4 {
1123 5 case 0x11:
1124 5 /*写入横向条形图的数据*/
1125 5 {
1126 6 disp_lbar(buf[2]);
1127 6 }break;
1128 5 case 0x92:
1129 5 {
1130 6 /*频率点增加程序*/
1131 6 select_fre(buf[2]);
1132 6 }break;
1133 5 case 0x93:
1134 5 {
1135 6 /*频率点下降程序*/
1136 6 select_fre(buf[2]);
1137 6 }break;
1138 5 case 0x94:
1139 5 {
1140 6 /*ADUC812将上一次关机时的频率点数值发送过来,并选中*/
1141 6 ini_fre(buf[2]);
1142 6 }break;
1143 5 case 0xa0:
1144 5 /*设置电池电量*/
1145 5 {
1146 6 disp_bat(buf[2],1);
1147 6 }break;
1148 5 case 0xa1:
1149 5 /*设置电池闪动*/
1150 5 {
1151 6 batf=1;
1152 6 }break;
1153 5 case 0xa2:
1154 5 /*清除电池闪动*/
1155 5 {
1156 6 batf=0;
1157 6 disp_bat(batnum,1);
1158 6 }break;
1159 5 case 0xc0:
1160 5 {
1161 6 /*音量条增加程序*/
1162 6 disp_vol_bar(buf[2]<<1);
1163 6 }break;
1164 5 case 0xc1:
1165 5 {
1166 6 /*音量条减少程序*/
1167 6 disp_vol_bar(buf[2]<<1);
1168 6 }break;
1169 5 }
1170 4 }
1171 3 bufov=0;
C51 COMPILER V7.07 LCDX1 01/25/2005 13:50:05 PAGE 20
1172 3 }
1173 2 flash_func();
1174 2 receive(buf);
1175 2 }
1176 1 }
1177
1178
1179
1180
1181
1182
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 4042 ----
CONSTANT SIZE = 906 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 77
IDATA SIZE = 8 ----
BIT SIZE = 11 6
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -