📄 1621_driver.lst
字号:
C51 COMPILER V7.10 1621_DRIVER 05/07/2006 12:13:31 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE 1621_DRIVER
OBJECT MODULE PLACED IN 1621_driver.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1621_driver.c ROM(SMALL) OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*HT1621 for KM3009/KM3005/KM3004 */
2 #include <reg2051.h> /* 8051 寄存器定义 */
3 #define null 0
4
5 typedef unsigned char uchar;
6 typedef unsigned int uint;
7
8 sfr PIM0 = 0X91;
9 sfr PIM1 = 0X92;
10 sfr P3M0 = 0XB1;
11 sfr P3M1 = 0XB2;
12
13 uchar d[16];
14 extern void intinit (void);
15 void ShowLCD(uchar signal,uchar battery,bit clr,bit in,bit out,bit lose,bit sign,uchar addr,uchar *str,uch
-ar unit);
16 //extern void ShowLCD(uchar *str);
17
18 // sbit _CS =P3^1;
19 // sbit _WR =P3^0;
20 // sbit _DAT=P1^1;
21 sbit _CS = P3^7;
22 sbit _WR = P1^0;
23 sbit _DAT= P3^2;
24 /*the codes for 0~9 AbcdEF */
25 uchar code
26 TAB1[]={0xd7,0x50,0xe3,0xf1,0x74,0xb5,0xb7,0xd0,0xf7,0xf5,0xf6,0x37,0x23,0x73,0xa7,0xa6};
27
28 DELAY(int t) /**/
29 {
30 1 int i,j;
31 1 for (i=0;i<t;i++)
32 1 for (j=0;j<t;j++);
33 1 }
34 WRITE_COM(uchar com) /*Write a command to LCD*/
35 {
36 1 uchar i;
37 1 bit Cy;
38 1 _CS = 0;
39 1 /*Write CMD code:100*/
40 1 _WR=0;
41 1 DELAY(10);
42 1 _DAT=1;
43 1 DELAY(10);
44 1 _WR=1;
45 1 DELAY(10);
46 1
47 1 _WR=0;
48 1 DELAY(10);
49 1 _DAT=0;
50 1 DELAY(10);
51 1 _WR=1;
52 1 DELAY(10);
53 1
54 1 _WR=0;
C51 COMPILER V7.10 1621_DRIVER 05/07/2006 12:13:31 PAGE 2
55 1 DELAY(10);
56 1 _DAT=0;
57 1 DELAY(10);
58 1 _WR=1;
59 1 DELAY(10);
60 1 for(i=0;i<8;i++) /*Write CMD */
61 1 {
62 2 Cy=com&0x80;
63 2 _WR=0;
64 2 DELAY(10);
65 2 _DAT=Cy;
66 2 DELAY(10);
67 2 _WR=1;
68 2 DELAY(10);
69 2 com=com<<1;
70 2 }
71 1 _WR=0;
72 1 _DAT=1;
73 1 _WR=1;
74 1 _CS=1;
75 1 }
76 /*------------------*/
77 WRITE_DAT(uchar addr,uchar dat) /*Write display data to LCD*/
78 {
79 1 uchar i;
80 1 bit Cy;
81 1 _CS = 0;
82 1 /*Write CMD code:101*/
83 1 _WR=0;
84 1 DELAY(10);
85 1 _DAT=1;
86 1 DELAY(10);
87 1 _WR=1;
88 1
89 1 DELAY(10);
90 1 _WR=0;
91 1 DELAY(10);
92 1 _DAT=0;
93 1 DELAY(10);
94 1 _WR=1;
95 1
96 1 DELAY(10);
97 1 _WR=0;
98 1 DELAY(10);
99 1 _DAT=1;
100 1 DELAY(10);
101 1 _WR=1;
102 1 DELAY(10);
103 1 addr=addr<<2;
104 1 for(i=0;i<6;i++) /*Write RAM address: xxA5~A0*/
105 1 {
106 2 Cy=addr&0x80;
107 2 _WR=0;
108 2 DELAY(10);
109 2 _DAT=Cy;
110 2 DELAY(10);
111 2 _WR=1;
112 2 DELAY(10);
113 2 addr=addr<<1;
114 2 }
115 1 for(i=0;i<4;i++) /*Write Display data :xxxxC0~C3*/
116 1 {
C51 COMPILER V7.10 1621_DRIVER 05/07/2006 12:13:31 PAGE 3
117 2 Cy=dat&0x80;
118 2 _WR=0;
119 2 DELAY(10);
120 2 _DAT=Cy;
121 2 DELAY(10);
122 2 _WR=1;
123 2 DELAY(10);
124 2 dat=dat<<1;
125 2 }
126 1 _CS=1;
127 1 }
128
129 DIS(uchar dat){
130 1 uchar i;
131 1 for(i=0;i<32;i++)
132 1 WRITE_DAT(i,dat);
133 1 }
134 SETUP_LCD(void)
135 {
136 1 DELAY(1000);
137 1 WRITE_COM(0x01); /*Enable system*/
138 1 WRITE_COM(0x18); /*CLOCK SOURCE IS 256kRC ON CHIP*/
139 1 WRITE_COM(0x29); /*BIAS=1/3 DUTY=1/4*/
140 1 WRITE_COM(0x03); /*Display on*/
141 1 DIS(0x00); /*Clear LCD*/
142 1 DELAY(200);
143 1 }
144 main()
145 {
146 1 // PIM0 = 0;
147 1 // PIM1 = 0X02;
148 1 // P3M0 = 0;
149 1 // P3M1 = 0X84;
150 1 while(1)
151 1 {
152 2 uchar i,j;
153 2 // DELAY(100);
154 2 SETUP_LCD();
155 2
156 2 DIS(0xf0); //full lcd
157 2 DELAY(200); //
158 2 DIS(0x00); //clean lcd
159 2 DELAY(10);
160 2 for(i=1;i<33;i=i+2){
161 3 WRITE_DAT(i,0x80);
162 3 DELAY(100);
163 3 }
164 2
165 2 for (i = 11;i < 15;i+=2){
166 3 WRITE_DAT(9,0x80);
167 3 DELAY(200);
168 3 }
169 2 DELAY(200);
170 2 DIS(0x00);
171 2 j=0;
172 2 for (i=0;i<16;i++){
173 3 WRITE_DAT(j,TAB1[i]);
174 3 WRITE_DAT(j+1,TAB1[i]<<4);
175 3 j=j+2;
176 3 DELAY(100);
177 3 }
178 2 DELAY(200);DELAY(200);
C51 COMPILER V7.10 1621_DRIVER 05/07/2006 12:13:31 PAGE 4
179 2 // DIS(0x00);DELAY(200);
180 2 // DIS(0x10);DELAY(200);
181 2 // DIS(0x20);DELAY(200);
182 2 // DIS(0x40);DELAY(200);
183 2 /*
184 2 d[0] = 0;
185 2 d[1] = 1;
186 2 d[2] = 2;
187 2 d[3] = 3;
188 2 d[4] = 4;
189 2 d[5] = 5;
190 2 d[6] = 6;
191 2 d[7] = 7;
192 2 d[8] = 8;
193 2 ShowLCD(3,2,1,1,1,null,1,5,&d[5],1);
194 2 while(1);
195 2 */ }
196 1 }
197 /*
198 addr 1,3,5,7 is battery 1,2,3,外壳
199 addr 9 is 未接
200 addr 17 is 呼入
201 addr 11 is 呼出
202 addr 19 is :
203 addr 23,25,27,29,31 is signal 4 3 2 1 天线
204 */
205 void ShowLCD(uchar signal,uchar battery,bit clr,bit in,bit out,bit lose,bit sign,uchar addr,uchar *str,uch
-ar unit){
206 1 uchar i;
207 1 if (clr)
208 1 DIS(0x00); //clean lcd
209 1 if (in)
210 1 WRITE_DAT(17,0x80); //show 呼入
211 1 if (out)
212 1 WRITE_DAT(11,0x80); //show 呼出
213 1 if (lose)
214 1 WRITE_DAT( 9,0x80); //show 未接
215 1 if (sign)
216 1 WRITE_DAT(19,0x80); //show :
217 1
218 1 if (signal > 4){
219 2 signal = 0;
220 2 }
221 1 i = 29;
222 1 WRITE_DAT(31,0x80); //clean l
223 1 while (signal){
224 2 WRITE_DAT(i,0x80); //clean l
225 2 i -= 2;
226 2 signal--;
227 2 }
228 1
229 1
230 1 if (battery > 3)
231 1 battery = 0;
232 1
233 1 i = 1;
234 1 WRITE_DAT(7,0x80);
235 1 while (battery){
236 2 WRITE_DAT(i,0x80); //clean l
237 2 i += 2;
238 2 battery--;
239 2 }
C51 COMPILER V7.10 1621_DRIVER 05/07/2006 12:13:31 PAGE 5
240 1
241 1
242 1 addr *= 2; //Show the nuber at the 0-0x0f
243 1 while (unit){
244 2 WRITE_DAT(addr, TAB1[*str]);
245 2 WRITE_DAT(addr+1, TAB1[*str] << 4);
246 2 addr += 2;
247 2 str++;
248 2 unit--;
249 2 // DELAY(100);
250 2 }
251 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 655 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 15
IDATA SIZE = ---- ----
BIT SIZE = ---- 7
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -