📄 g19264.lst
字号:
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 17
984 1 {
985 2 cbyte = bigzf[x]; /*取点阵码,rom数组 */
986 2 Wrdata(cbyte); /*写输出一字节 */
987 2 x++;
988 2 col++;
989 2 if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
990 2 if (row>7) row=0; /*如果行越界,返回首行 */
991 2 } /*上半个字符输出结束 */
992 1
993 1 col = bakerx; /*列对齐 */
994 1 row ++;//= bakery+2; /*指向下半个字符行 */
995 1 /*下半个字符输出,8列 */
996 1 for(i=0;i<24;i++)
997 1 {
998 2 cbyte = bigzf[x]; /*取点阵码 */
999 2 Wrdata(cbyte); /*写输出一字节 */
1000 2 x++;
1001 2 col++;
1002 2 if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
1003 2 if (row>7) row=1; /*如果行越界,返回首行 */
1004 2 } /*下半个字符输出结束 */
1005 1
1006 1 col = bakerx; /*列对齐 */
1007 1 row++;// = bakery+4; /*指向下半个字符行 */
1008 1 /*下半个字符输出,8列 */
1009 1 for(i=0;i<24;i++)
1010 1 {
1011 2 cbyte = bigzf[x]; /*取点阵码 */
1012 2 Wrdata(cbyte); /*写输出一字节 */
1013 2 x++;
1014 2 col++;
1015 2 if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
1016 2 if (row>7) row=1; /*如果行越界,返回首行 */
1017 2 } /*下半个字符输出结束 */
1018 1
1019 1 col = bakerx; /*列对齐 */
1020 1 row++;// = bakery+6; /*指向下半个字符行 */
1021 1 /*下半个字符输出,8列 */
1022 1 for(i=0;i<24;i++)
1023 1 {
1024 2 cbyte = bigzf[x]; /*取点阵码 */
1025 2 Wrdata(cbyte); /*写输出一字节 */
1026 2 x++;
1027 2 col++;
1028 2 if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
1029 2 if (row>7) row=1; /*如果行越界,返回首行 */
1030 2 } /*下半个字符输出结束 */
1031 1 col = bakerx; /*列对齐 */
1032 1 row++;// = bakery+8; /*指向下半个字符行 */
1033 1 /*下半个字符输出,8列 */
1034 1 for(i=0;i<24;i++)
1035 1 {
1036 2 cbyte = bigzf[x]; /*取点阵码 */
1037 2 Wrdata(cbyte); /*写输出一字节 */
1038 2 x++;
1039 2 col++;
1040 2 if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
1041 2 if (row>7) row=1; /*如果行越界,返回首行 */
1042 2 } /*下半个字符输出结束 */
1043 1 col = bakerx; /*列对齐 */
1044 1 row++;//= bakery+10; /*指向下半个字符行 */
1045 1 /*下半个字符输出,8列 */
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 18
1046 1 for(i=0;i<24;i++)
1047 1 {
1048 2 cbyte = bigzf[x]; /*取点阵码 */
1049 2 Wrdata(cbyte); /*写输出一字节 */
1050 2 x++;
1051 2 col++;
1052 2 if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
1053 2 if (row>7) row=1; /*如果行越界,返回首行 */
1054 2 } /*下半个字符输出结束 */
1055 1 /*下半个字符输出,8列 */
1056 1
1057 1 row=bakery;
1058 1 } /*整个字符输出结束 */
1059
1060
1061 /****************************************/
1062 /* 全角字符点阵码数据输出 */
1063 /****************************************/
1064 void Putcdot(Uchar Order)
1065 {
1066 1 Uchar i,bakerx,bakery; /*共定义3个局部变量 */
1067 1 int x; /*偏移量,字符量少的可以定义为UCHAR */
1068 1 bakerx = col; /*暂存x,y坐标,已备下半个字符使用 */
1069 1 bakery = row;
1070 1 x=Order * 32; /*每个字符32字节 */
1071 1
1072 1 /*上半个字符输出,16列 */
1073 1 for(i=0;i<16;i++)
1074 1 {
1075 2 Wrdata(HZ[x]); /*写输出一字节 */
1076 2 x++;
1077 2 col++;
1078 2 if (col==LCMLIMIT){ col=0;row=row+2;} /*下一列,如果列越界换行*/
1079 2 if (row>7) row=0; /*如果行越界,返回首行 */
1080 2 } /*上半个字符输出结束 */
1081 1
1082 1 /*下半个字符输出,16列 */
1083 1 col = bakerx;
1084 1 row = bakery+1;
1085 1 for(i=0;i<16;i++) /*下半部分*/
1086 1 {
1087 2 Wrdata(HZ[x]);
1088 2 x++;
1089 2 col++;
1090 2 if (col==LCMLIMIT){col=0;row=row+2;} /*下一列,如果列越界换行*/
1091 2 if (row>7) row=1; /*如果行越界,返回首行 */
1092 2 } /*下半个字符输出结束 */
1093 1 row = bakery;
1094 1 } /*整个字符输出结束 */
1095
1096 /****************************************/
1097 /* 清屏,全屏幕清零 */
1098 /****************************************/
1099 void Lcmcls( void )
1100 {
1101 1 for(row=0;row<8;row++)
1102 1 for(col=0;col<LCMLIMIT;col++) Wrdata(0);
1103 1 }
1104
1105 /****************************************/
1106 /* 从液晶片上读数据,保留在全局变量中 */
1107 /****************************************/
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 19
1108
1109 void Rddata(void)
1110 {
1111 1 Locatexy(); /*坐标定位,返回时保留分区状态不变 */
1112 1 Datalcm=0xFF;
1113 1 Dilcm = 1; /*数据*/
1114 1 Rwlcm = 1; /*读数据*/
1115 1 Elcm = 1; /*读入到LCM*/
1116 1 _nop_();
1117 1 cbyte = Datalcm; /*虚读一次 */
1118 1 Elcm = 0;
1119 1 Locatexy(); /*坐标定位,返回时保留分区状态不变 */
1120 1 Datalcm=0xFF;
1121 1 _nop_();
1122 1 Dilcm = 1; /*数据*/
1123 1 Rwlcm = 1; /*读数据*/
1124 1 Elcm = 1; /*读入到LCM*/
1125 1 _nop_();
1126 1 cbyte = Datalcm; /*从数据口读数据,真读 */
1127 1 Elcm = 0;
1128 1 }
1129
1130 /****************************************/
1131 /* 数据写输出 */
1132 /****************************************/
1133
1134 void Wrdata(Uchar X)
1135 {
1136 1 Locatexy(); /*坐标定位,返回时保留分区状态不变 */
1137 1 wtcom();
1138 1 Dilcm = 1; /*数据输出*/
1139 1 Rwlcm = 0; /*写输出 */
1140 1 Datalcm = X; /*数据输出到数据口 */
1141 1 Elcm = 1; /*读入到LCM*/
1142 1 _nop_();
1143 1 Elcm = 0;
1144 1 }
1145
1146 /********************************/
1147 /* 命令输出到左区控制口 */
1148 /********************************/
1149
1150 void WrcmdL(Uchar X)
1151 {
1152 1 lcdbusyL(); /*确定分区,返回时保留分区状态不变*/
1153 1 Dilcm = 0; /*命令操作 */
1154 1 Rwlcm = 0; /*写输出 */
1155 1 Datalcm = X; /*数据输出到数据口 */
1156 1 Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
1157 1 }
1158
1159 /********************************/
1160 /* 命令输出到中区控制口 */
1161 /********************************/
1162
1163 void WrcmdM(Uchar X)
1164 {
1165 1 lcdbusyM(); /*确定分区,返回时保留分区状态不变*/
1166 1 Dilcm = 0; /*命令操作 */
1167 1 Rwlcm = 0; /*写输出 */
1168 1 Datalcm = X; /*命令输出到数据口 */
1169 1 Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
C51 COMPILER V7.02b G19264 04/19/2008 20:43:15 PAGE 20
1170 1 }
1171
1172 /********************************/
1173 /* 命令输出到右区控制口 */
1174 /********************************/
1175
1176 void WrcmdR(Uchar X)
1177 {
1178 1 lcdbusyR(); /*确定分区,返回时保留分区状态不变 */
1179 1 Dilcm = 0; /*命令操作 */
1180 1 Rwlcm = 0; /*写输出 */
1181 1 Datalcm = X; /*命令输出到数据口 */
1182 1 Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
1183 1 }
1184
1185 /********************************************************/
1186 /* 分区操作允许等待,返回时保留分区选择状态 */
1187 /********************************************************/
1188 void lcdbusyL(void)
1189 {
1190 1 CS1LCM = 0; /*CLR CS1 */
1191 1 CS2LCM = 0; /*SETB CS2 */
1192 1 // CS3LCM = 1; /*SETB CS3 */
1193 1 wtcom(); /* waitting for enable */
1194 1 }
1195
1196 void lcdbusyM(void)
1197 {
1198 1 CS1LCM = 0; /*SETB CS1 */
1199 1 CS2LCM = 1; /*CLR CS2 */
1200 1 //CS3LCM = 1; /*SETB CS3 */
1201 1 wtcom(); /* waitting for enable */
1202 1 }
1203
1204 void lcdbusyR(void)
1205 {
1206 1 CS1LCM = 1; /*SETB CS1 */
1207 1 CS2LCM = 0; /*SETB CS2 */
1208 1 // CS3LCM = 0; /*CLR CS3 */
1209 1 wtcom(); /* waitting for enable */
1210 1 }
1211
1212 void wtcom(void)
1213 {
1214 1 Dilcm = 0; /*CLR DI */
1215 1 Rwlcm = 1; /*SETB RW */
1216 1 Datalcm = 0xFF; /*MOV DATA_LCM,#0FFH */
1217 1 Elcm = 1;_nop_();
1218 1 while(Datalcm & Lcdbusy);//if BF=1;LCM is busy.
1219 1 Elcm = 0;
1220 1 }
1221
1222 /********************************************************/
1223 /*根据设定的坐标数据,定位LCM上的下一个操作单元位置 */
1224 /********************************************************/
1225 void Locatexy(void)
1226 {
1227 1 unsigned char x,y;
1228 1 switch (col&0xc0) /* col.and.0xC0,c0=1100,00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -