📄 s1d1335.lst
字号:
C51 COMPILER V7.00 S1D1335 05/22/2007 16:53:19 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE S1D1335
OBJECT MODULE PLACED IN S1D1335.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE S1D1335.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /* 320240简单演示程序(8080时序)
2 硬件连线方式(总线式)
3 LCM -------------- CPU
4 CS -------------- P2.7 A15
5 A0 -------------- P2.6 A8
6 WR -------------- WR
7 RD -------------- RD
8 DB0 ~ 7----------- P0.0 ~ P0.7
9 RST脚采用外部硬件RC电路复位---RST不可少*/
10 //编译环境 Keil V7.0
11 #include <reg52.h>
12 #include <stdlib.h>
13 #include <intrins.h>
14 #include <stdio.h>
15 #include <zk.h>
16 sbit CS_LCD=P2^6;
17 sbit A0_LCD=P2^7;
18 sbit WR_LCD=P3^6;
19 sbit RD_LCD=P3^7;
20 sbit WDT =P1^5;
21 char xdata LcmCmdPort _at_ 0x8000; // P2.7 --- CS P2.0 --- A0
22 char xdata LcmWdataPort _at_ 0x0000;
23 #define uchar unsigned char
24 #define uchar unsigned char
25 #define Uint unsigned int
26 #define uint unsigned int
27 #define ulong unsigned long
28 #define H_BYTE 40 //横向一行的字节数,如128×128的液晶,横向字节数为16
29 #define LcmRdataPort LcmCmdPort
30 #define LcmStatusPort LcmWdataPort
31 #define SystemSet 0x40
32 uchar code ParaSysTable8[]= {
33 0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00 // P1-P8参数
34 };
35 #define Scroll 0x44
36 #define BasePart1 0x00
37 #define BasePart2 0x40
38 #define BasePart3 0x80
39 #define BasePart4 0x00
40 uchar code ParaScrTableA[]= {
41 0x00,BasePart1,0xF0,0x00,BasePart2,0xF0,0x00,BasePart3,0x00,BasePart4
42 };
43 #define SleepIn 0x53
44 #define DispOn 0x59
45 #define DispOff 0x58
46 #define Ovlay 0x5b
47 #define HdotScr 0x5a
48 #define CsrForm 0x5d
49 #define CgramAdr 0x5c
50 #define CsrDirR 0x4c
51 #define CsrDirL 0x4d
52 #define CsrDirU 0x4e
53 #define CsrDirD 0x4f
54 #define CsrW 0x46
55 #define CsrR 0x47
C51 COMPILER V7.00 S1D1335 05/22/2007 16:53:19 PAGE 2
56 #define mWrite 0x42
57 #define mRead 0x43
58 bit wAttrib ;
59 #define Busy 0x40
60 #define paraP9 0x28
61 void LcmInition( void );
62 void WriteData( uchar dataW );
63 uchar ReadData( void );
64 void WriteCommand( uchar CommandByte );
65 void Delay( Uint MS);
66 void LcmClear( void );
67 void Locatexy(uchar x,uchar y);
68 void Displayspeed(uchar col,uchar row,uchar hzcode);//显示流速、预输液量,显示24*16点阵
69 void Displaytime(uchar col,uchar row,uchar hzcode);//显示24*14点阵
70 void DisplayTotal(uchar col,uchar row,uchar hzcode);//显示24*18点阵
71 void DisplayCanShu(uchar col,uchar row,uchar hzcode); //显示参数调节杆
72 void Displayyedichar(uchar col,uchar row,uchar hzcode);//显示点滴计数值
73 void Displayonebmp3(uchar col,uchar row,uchar x,uchar y,uchar *adr);
74 void DisplayClear(uchar col,uchar row,uchar x,uchar y);
75
76 void DisplayOn(uchar x1,uchar y1,uchar x2,uchar y2);
77 void extbmp(uchar x0,uchar y0,uchar *bmp);
78 void Displayonebmp(uchar x,uchar y,uchar *adr);
79 void LcdDrawPoint(int x,int y,bit Point);
80 //========向液晶写入命令===================
81 void WriteCommand( uchar CommandByte )
82 {
83 1 /* EA=0;
84 1 CS_LCD=0;
85 1 A0_LCD=1;
86 1 RD_LCD=1;
87 1 WR_LCD=0;
88 1 P0=CommandByte;
89 1 WR_LCD=1;
90 1 EA=1; */
91 1 LcmCmdPort = CommandByte;
92 1 }
93 //=========向液晶屏写入数据================
94 void WriteData( uchar dataW )
95 {
96 1
97 1 LcmWdataPort = dataW;
98 1 /*
99 1 EA=0;
100 1 CS_LCD=0;
101 1 A0_LCD=0;
102 1 RD_LCD=1;
103 1 WR_LCD=0;
104 1 P0=dataW;
105 1 WR_LCD=1;
106 1 CS_LCD=1;
107 1 EA=1; */
108 1 }
109 //=========读取当前济屏数据=================
110 uchar ReadData( void )
111 {
112 1 uchar Rdata;
113 1 Rdata = LcmCmdPort;
114 1 return Rdata;
115 1 }
116 //========写入当前地址======================*/
117 void Locatexy(uchar x,uchar y)
C51 COMPILER V7.00 S1D1335 05/22/2007 16:53:19 PAGE 3
118 {
119 1 Uint temp;
120 1 temp = (Uint)y*paraP9+x;
121 1 WriteCommand( CsrW );
122 1 WriteData( (uchar)(temp & 0xff) );
123 1 WriteData( (uchar)(temp /256 ) );
124 1 }
125
126 //=====液晶初始化======================
127 void LcmInition( void )
128 {
129 1
130 1 uchar i;
131 1 Delay(30);
132 1 WriteCommand( SystemSet );
133 1 for (i=0;i<8;i++) {
134 2 WriteData( ParaSysTable8[i] );
135 2 }
136 1
137 1 WriteCommand( Scroll );
138 1 for (i=0;i<10;i++) {
139 2 WriteData( ParaScrTableA[i] );
140 2 }
141 1
142 1 WriteCommand( HdotScr );
143 1 WriteData( 0 );
144 1 WriteCommand( Ovlay );
145 1 WriteData( 4 );
146 1 WriteCommand( DispOn );
147 1 WriteData( 0x54 );
148 1 WriteCommand(DispOff);
149 1 LcmClear();
150 1 WriteCommand(DispOn);
151 1 WriteCommand( Ovlay );
152 1 WriteData( 0x0C );
153 1 }
154 /********************************************************************
155 * 名称: void DisplayClear(uchar col,uchar row,uchar x,uchar y)
156 * 功能: col为要擦除的行数,row为要擦除的列(最多240列)x,y为要擦除的起始地址
157 * 调用:
158 * 输入:
159 * 说明:
160 * 返回值:无
161 ***********************************************************************/
162 void DisplayClear(uchar col,uchar row,uchar x,uchar y)
163 {
164 1 uchar i,j;
165 1
166 1 for(i=0;i<row;i++)
167 1 {
168 2 Locatexy(x,y);
169 2 WriteCommand(mWrite);
170 2 for(j=0;j<col;j++)
171 2 {
172 3 WriteData(0);
173 3 }
174 2 y++;
175 2 }
176 1 }
177 /********************************************************************
178 * 名称: void DisplayOn(uchar col,uchar row,uchar x,uchar y)
179 * 功能: 选定区显示黑屏
C51 COMPILER V7.00 S1D1335 05/22/2007 16:53:19 PAGE 4
180 * 调用:
181 * 输入: col,row,x,y.
182 * 说明: col为要写入的行数(一行8位),row为要擦除的列(最多240列)x,y为要擦除的起始地址
183 * 返回值:无
184 ***********************************************************************/
185 void DisplayOn(uchar x1,uchar y1,uchar x2,uchar y2)
186 {
187 1 uchar i,j,row,col;
188 1 row=y2-y1;
189 1 col=x2-x1;
190 1 for(i=0;i<row;i++)
191 1 {
192 2 Locatexy(x1,y1);
193 2 WriteCommand(mWrite);
194 2 for(j=0;j<col;j++)
195 2 {
196 3 WriteData(0xff);
197 3 }
198 2 y1++;
199 2 }
200 1 }
201 /********************************************************************
202 * 名称: void Displayonebmp(uchar col,uchar row,uchar x,uchar y,uchar *adr)
203 * 功能: 显示任意点阵图标
204 * 调用:
205 * 输入:
206 * 说明:
207 * 返回值:无
208 ***********************************************************************/
209 void Displayonebmp3(uchar col,uchar row,uchar x,uchar y,uchar *adr)
210 {
211 1 uchar i,j;
212 1 uchar *p;
213 1 p=adr;
214 1 for(i=0;i<row;i++)
215 1 {
216 2 Locatexy(x,y);
217 2 WriteCommand(mWrite);
218 2 for(j=0;j<col;j++)
219 2 {
220 3 WriteData(*p);
221 3 p++;
222 3 }
223 2 y++;
224 2 }
225 1 }
226
227
228 /********************************************************************
229 * 名称: void Displayyedichar(uchar col,uchar row,uchar hzcode)
230 * 功能: 显示12*16点阵数字
231 * 调用:
232 * 输入:
233 * 说明: 图标位置HZcode
234 * 返回值:
235 ***********************************************************************/
236 void Displayyedichar(uchar col,uchar row,uchar hzcode)
237 {
238 1 uchar i,j;
239 1 Uint x;
240 1 x = 24*hzcode;
241 1 WriteCommand( CsrDirR );
C51 COMPILER V7.00 S1D1335 05/22/2007 16:53:19 PAGE 5
242 1 for(i=0;i<12;i++)
243 1 {
244 2 Locatexy(col,row);
245 2 WriteCommand(mWrite);
246 2 for(j=0;j<2;j++)
247 2 {
248 3 WriteData(yedichar[x]);
249 3 x++;
250 3 }
251 2 row++;
252 2 }
253 1
254 1 }
255
256 /********************************************************************
257 * 名称: DisplayCanShu(uchar col,uchar row,uchar hzcode)
258 * 功能: 显示104*17点阵图标
259 * 调用:
260 * 输入:
261 * 说明:
262 * 返回值:无
263 ***********************************************************************/
264 void DisplayCanShu(uchar col,uchar row,uchar hzcode)
265 {
266 1 uchar i,j;
267 1 Uint x;
268 1 x = 117*hzcode;
269 1 WriteCommand( CsrDirR );
270 1 for(i=0;i<9;i++)
271 1 {
272 2 Locatexy(col,row);
273 2 WriteCommand(mWrite);
274 2 for(j=0;j<13;j++)
275 2 {
276 3 WriteData(canshuico[x]);
277 3 x++;
278 3 }
279 2 row++;
280 2 }
281 1 }
282
283
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -