📄 t6963.lst
字号:
C51 COMPILER V7.07 T6963 01/11/2005 11:05:28 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE T6963
OBJECT MODULE PLACED IN T6963.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE T6963.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <REG52.h>
2 #include "T6963.h"
3 #include "ZK.h"
4 #include <stdarg.h>
5 #include <stdio.h>
6
7 #include <absacc.h>
8
9
10 #define D12_DATA 0xf002
11 #define D12_COMMAND 0xf003
12 #define inportb(X) *((unsigned char xdata *) X)
13 #define outportb(X,Y) *((unsigned char xdata *) X) = Y
14 /**************************************
15 T6963驱动程序
16 *************************************/
17
18 #define LCMDW XBYTE[0x9000] /*定义数据口*/
19 #define LCMCW XBYTE[0x9001] /*定义指令口*/
20
21 // 状态位STA1,STA0判断(读写指令和读写数据)
22 #define RWCheck(){ uchar i; for(i=10;i>0;i--) { if((LCMCW & 0x03) == 0x03) break;}}
23 // 状态位ST2判断(数据自动读状态)
24 #define AutoRCheck(){ uchar i; for(i=10;i>0;i--) { if((LCMCW & 0x04) == 0x04) break;}}
25 // 状态位ST3判断(数据自动写状态)
26 #define AutoWCheck(){ uchar i; for(i=10;i>0;i--) { if((LCMCW & 0x08) == 0x08) break;}}
27
28 /* 控制指令 */
29 #define ctrl(command) { RWCheck(); LCMCW= command; }
30 /* 写数据 */
31 #define write(dat ) { RWCheck(); LCMDW=dat; }
32 /* 自动写 */
33 #define autowrite(dat) { AutoWCheck();LCMDW=dat;}
34
35 /* 显示图形和文本 */
36 void disp(unsigned char d) { /*显示*/
37 1 write(d);ctrl(0xc0);
38 1 }
39 /* 设定图形x,y值*/
40
41 void ag(unsigned char x,unsigned char y) { /*地址*/
42 1 unsigned int xy;
43 1 //xy=y;
44 1 //xy=xy*16+x+256;
45 1 xy=y*30+x;
46 1 write(xy);
47 1 write((unsigned char)(xy>>8));
48 1 ctrl(0x24);
49 1 //write(xy&0xff);write(xy/256);ctrl(0x24);
50 1 }
51
52 /* 点亮一点 */
53
54 void setb(unsigned char d) {
55 1 ctrl(0xf8|d);
C51 COMPILER V7.07 T6963 01/11/2005 11:05:28 PAGE 2
56 1 }
57
58 /* x,y处显示光标 */
59
60 void ab(unsigned char x,unsigned char y) { /*光标*/
61 1 ctrl(0x9f); /*光标开*/
62 1 write(x);write(y);ctrl(0x21);
63 1 }
64 /* 取消光标 */
65
66 void noab(void) {
67 1 ctrl(0x9c);
68 1 }
69
70 /* lcd初始化 */
71 void T6963_init(void) {
72 1 unsigned int i;
73 1 write(0x0);write(0x08);ctrl(0x40); /*文本首址,与图形区域分开*/
74 1 write(16);write(0x0);ctrl(0x41); /*文本区域*/
75 1 write(0x0);write(0x0);ctrl(0x42); /*图形首址*/
76 1 write(30);write(0x0);ctrl(0x43); /*图形区域*/
77 1 ctrl(0x81); /*显示方式*/
78 1 ctrl(0x9f); /*显示开关*/
79 1 ctrl(0xa1); /*光标形状*/
80 1 write(0);write(0);ctrl(0x24);
81 1 ctrl(0xb0); /*自动写方式*/
82 1 //for (i=0;i<((240*64/8)*2);i++)
83 1 for (i=0;i<(0x1000);i++)//清除图形和文本区
84 1 autowrite(0x0);
85 1 ctrl(0xb2);/*结束自动写方式 */
86 1 }
87
88 /* 显示8*12点阵英文字母,反白 */
89 void da(uchar x,uchar y,uchar n,bit un) {
90 1 unsigned char i;
91 1 unsigned char k;
92 1 if(n < 0x20)
93 1 n = 0x1f;// 未找到该字
94 1 k=n-0x1f;
95 1 for (i=0;i<16;i++)
96 1 { ag(x,y*8+i);
97 2 if((i<2)||(i>13))
98 2 { if (un==0) disp(0x00);
99 3 else disp(255-0x00);
100 3 }
101 2 else
102 2 { if (un==0)
103 3 disp(ASC_MSK[k*12+i-2]);
104 3 else
105 3 disp(255-ASC_MSK[k*12+i-2]);
106 3 }
107 2 }
108 1 }
109
110
111 /* 显示8*16点阵数字,反白 */
112 /*void dn(uchar x,uchar y,uchar n,bit un) {
113 unsigned char i;
114 unsigned char k=n;
115 for (i=0;i<16;i++) {
116 ag(x,y*8+i);
117 if (un==0) disp(Num0_9[k*16+i]); else disp(255-Num0_9[k*16+i]);
C51 COMPILER V7.07 T6963 01/11/2005 11:05:28 PAGE 3
118 }
119 if ((++x)>=30) {
120 x=0;
121 y+=2;
122 if (y>=8) y=0;
123 }
124 }
125 */
126 /* 显示8*12点阵数字,反白 */
127 void dn(uchar x,uchar y,uchar n,bit un) {
128 1 unsigned char i;
129 1 unsigned char k=n;
130 1 for (i=0;i<16;i++)
131 1 { ag(x,y*8+i);
132 2 if((i<2)||(i>13))
133 2 { if (un==0) disp(0x00);
134 3 else disp(255-0x00);
135 3 }
136 2 else
137 2 { if (un==0)
138 3 disp(Num0_9[k*12+i-2]);
139 3 else
140 3 disp(255-Num0_9[k*12+i-2]);
141 3 }
142 2 }
143 1
144 1 }
145
146
147
148 //16*16
149 /*void hzx(uchar x,uchar y,uchar n,bit un) {
150 unsigned char i,j;
151 unsigned int k=n;
152 for (i=0;i<16;i++) {
153 for (j=0;j<2;j++) {
154 ag(j+x,y*8+i);
155 if (un==1) disp(hz[k*32+i*2+j]);
156 else disp(255-hz[k*32+i*2+j]);
157 }
158 }
159
160 }*/
161
162
163 //16*12 汉字显示
164 void hzx(uchar x,uchar y,uchar n,bit un) {
165 1 unsigned char i,j;
166 1 unsigned char k=n;
167 1 for (i=0;i<16;i++) {
168 2 for (j=0;j<2;j++) {
169 3 ag(j+x,y*8+i);
170 3 if((i<2)||(i>13))
171 3 { if (un==0) disp(0x00);
172 4 else disp(255-0x00);
173 4 }
174 3 else
175 3 { if (un==0) disp(hz[k*24+i*2+j-4]);
176 4 else disp(255-hz[k*24+i*2+j-4]);
177 4 }
178 3 }
179 2 }
C51 COMPILER V7.07 T6963 01/11/2005 11:05:28 PAGE 4
180 1 }
181 //16*14 //显示特殊符号
182 void hzx1(uchar x,uchar y,uchar n,bit un) {
183 1 unsigned char i,j;
184 1 unsigned char k=n;
185 1 for (i=0;i<16;i++) {
186 2 for (j=0;j<2;j++) {
187 3 ag(j+x,y*8+i);
188 3 if(i<2)
189 3 { if (un==0) disp(0x00);
190 4 else disp(255-0x00);
191 4 }
192 3 else
193 3 {
194 4 if (un==0) disp(fot2[k*28+i*2+j-4]);
195 4 else disp(255-fot2[k*28+i*2+j-4]);
196 4 }
197 3 }
198 2 }
199 1 }
200 void xsch(uchar x,uchar y,uchar n,bit un)
201 { if(n>=1)
202 1 hzx1(x,y,7,un);
203 1 else
204 1 hzx1(x,y,6,un);
205 1 }
206 void xsok(uchar x,uchar y,uchar n,bit un)
207 { if(n>=1)
208 1 hzx1(x,y,4,un);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -