📄 lcdlib.lst
字号:
C51 COMPILER V8.09 LCDLIB 12/12/2007 14:46:40 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE LCDLIB
OBJECT MODULE PLACED IN Lcdlib.OBJ
COMPILER INVOKED BY: D:\电子软件\Keil\C51\BIN\C51.EXE Lcdlib.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "LCD_320240.h"
2 //#include "uart_lib.h"
3 //#include "44b.h"
4 #include "LCDlib.h"
*** ERROR C141 IN LINE 13 OF LCDLIB.H: syntax error near 'row', expected ')'
*** ERROR C141 IN LINE 14 OF LCDLIB.H: syntax error near 'row', expected ')'
*** ERROR C141 IN LINE 15 OF LCDLIB.H: syntax error near 'rowfirst', expected ')'
5 #include "hanzi.h"
6 #include "GUIbasic.h"
*** ERROR C129 IN LINE 6 OF GUIBASIC.H: missing ';' before 'GUI_Point'
7
8
9
10 #define BIT_A0 (0x1 << 7)
11 #define BIT_nWR (0x1 << 6)
12 #define BIT_nRD (0x1 << 5)
13 #define DELAY_TIME 2
14
15 static const BYTE SYSTAB[8] = {
16 0x30, // 0011 0000 B: 1, W/S: 0, M2: 0, M1: 0, M0: 0
17 0x87, // 1000 0111 WF: 1, FX: 7字符宽度8点阵
18 0x0f, // 0000 1111 FY: 16字符垂直大小16点阵
19 0x27, // 0010 0111 C/R: 39 每行显示的字符数
20 0x36, // 0100 0010 TC/R: 66
21 0xEF, // 1110 1111 L/F: 240
22 0x28, // 0010 1000 APL: 40
23 0x00 // 0000 0000 APH: 0
24 };
25
26 #define BasePart1 0x00//0x0000为第一显示区首地址
27 #define BasePart2 0x40//0x4000为第二显示区首地址
28 #define BasePart3 0x80//0x8000为第三显示区首地址
29 #define BasePart4 0x00
30 static const BYTE SCRTAB[10] = {
31 0x00, // 0000 0000 SAD1L: 0x00
32 BasePart1, // 0000 0000 SAD1H: 0x00
33 0xf0, // 1111 0000 SL1: 240 ;1区显示屏的行数为240
34 0x00, // 0000 0000 SAD2L: 0x00
35 BasePart2, // 0001 0000 SAD2H: 0x10
36 0xf0, // 1111 0000 SL2: 240;1区显示屏的行数为240
37 0x00, // 0000 0000 SAD3L: 0x00
38 BasePart3, // 1000 0000 SAD3H: 0x40
39 0x00, // 0000 0000 SAD4L: 0x00
40 BasePart4 // 0101 0000 SAD4H: 0x50
41 };
42 extern unsigned char ASCII16x8[][16];
43 UINT8 buffer[240][40]; //显示缓冲区
44 UINT8 nanjing[][16]=
45 {
46 /*-- 文字: 南 --*/
47 /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
48 0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x02,0x00,0x3F,0xFC,0x24,0x24,0x22,0x44,
49 0x2F,0xF4,0x21,0x04,0x3F,0xFC,0x21,0x04,0x21,0x04,0x21,0x14,0x21,0x08,0x00,0x00,
50
51 /*-- 文字: 京 --*/
C51 COMPILER V8.09 LCDLIB 12/12/2007 14:46:40 PAGE 2
52 /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
53 0x02,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,
54 0x1F,0xF0,0x01,0x00,0x09,0x30,0x19,0x18,0x31,0x0C,0x41,0x08,0x05,0x00,0x02,0x00,
55 };
56 void LCDturnoff(void)
57 {
58 WLCDCmd(0x58);//off screen
59 WLCDData(0x00);
60 }
61
62 void LCDturnon(void)
63 {
64 WLCDCmd(0x59);//on screen
65 WLCDData(0x55);
66 }
67
68
69 void Delaycicle(U16 i)
70 {
71 int j=0;
72 while(j<i)j++;
73 }
74 void WLCDData(UINT8 data)
75 {
76 /* PORT D GR
77 OUP(I/O OR LCD) */
78 // 00-input 01-output 10-sfr
79
80 /* BIT 7 6 5 4 3 2 1 0 */
81 /* VF VM VLINE VCLK VD3 VD2 VD1 VD0 */
82
83 /* PD 7 6 5 4 3 2 1 0 */
84 /* o o o o o o o o */
85 /* LCD LCD LCD LCD LCD LCD LCD LCD */
86 /* 01 01 01 01 01 01 01 01 */
87
88 rPCOND=0x5555;
89 rPDATC&=~BIT_A0;
90 rPDATC|= BIT_nRD;
91 rPDATC&=~BIT_nWR; // clear nWR
92 rPDATD=data;
93 #if DELAY_TIME > 0
94 Delaycicle(DELAY_TIME); // Delay for SED1335
95 #endif
96 rPDATC|=BIT_nWR;
97 }
98
99 void WLCDCmd(UINT8 cmd)
100 {
101 /* PORT D GROUP(I/O OR LCD) */
102 // 00-input 01-output 10-sfr
103
104 /* BIT 7 6 5 4 3 2 1 0 */
105 /* VF VM VLINE VCLK VD3 VD2 VD1 VD0 */
106
107 /* PD 7 6 5 4 3 2 1 0 */
108 /* o o o o o o o o */
109 /* LCD LCD LCD LCD LCD LCD LCD LCD */
110 /* 01 01 01 01 01 01 01 01 */
111
112 rPCOND=0x5555;
113 rPDATC|=BIT_A0;
C51 COMPILER V8.09 LCDLIB 12/12/2007 14:46:40 PAGE 3
114 rPDATC|=BIT_nRD;
115 rPDATC&=~BIT_nWR; // Set nWR
116 rPDATD=cmd;
117 #if DELAY_TIME > 0
118 Delaycicle(DELAY_TIME); // Delay for SED1335
119 #endif
120 rPDATC|=BIT_nWR;
121 }
122 UINT8 RLCDData()
123 {
124 UINT8 data;
125 /* PORT D GROUP(I/O OR LCD) */
126 // 00-input 01-output 10-sfr
127
128 /* BIT 7 6 5 4 3 2 1 0 */
129 /* VF VM VLINE VCLK VD3 VD2 VD1 VD0 */
130
131 /* PD 7 6 5 4 3 2 1 0 */
132 /* i i i i i i i i */
133 /* LCD LCD LCD LCD LCD LCD LCD LCD */
134 /* 00 00 00 00 00 00 00 00 */
135 rPDATD=0x0;
136 rPCOND=0x0;
137 rPDATC|=BIT_A0;
138 rPDATC&=~BIT_nRD;
139 rPDATC|=BIT_nWR; // Set nWR
140 data=rPDATD;
141 #if DELAY_TIME > 0
142 Delaycicle(DELAY_TIME); // Delay for SED1335
143 #endif
144 rPDATC|=BIT_nRD;
145 return data;
146 }
147 UINT8 RLCDSta()
148 {
149 UINT8 stu;
150 /* PORT D GROUP(I/O OR LCD) */
151 // 00-input 01-output 10-sfr
152
153 /* BIT 7 6 5 4 3 2 1 0 */
154 /* VF VM VLINE VCLK VD3 VD2 VD1 VD0 */
155
156 /* PD 7 6 5 4 3 2 1 0 */
157 /* i i i i i i i i */
158 /* LCD LCD LCD LCD LCD LCD LCD LCD */
159 /* 00 00 00 00 00 00 00 00 */
160 rPDATD=0x0;
161 rPCOND=0x0;
162 rPDATC|=BIT_A0;
163 rPDATC&=~BIT_nRD;
164 rPDATC|=BIT_nWR; // Set nWR
165 stu=rPDATD;
166 #if DELAY_TIME > 0
167 Delaycicle(DELAY_TIME); // Delay for SED1335
168 #endif
169 rPDATC|=BIT_nRD;
170 return stu;
171 }
172 /* 更新指定的显示区域*/
173 void LCDupdata(UINT16 x1,UINT16 y1,UINT16 x2, UINT16 y2)
174 {
175 int i,j;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -