📄 2.4
字号:
C51 COMPILER V9.00 9325TP 09/01/2012 08:49:32 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE 9325TP
OBJECT MODULE PLACED IN 9325TP.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 9325TP.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*----------------------------------------------------------------
2 320x240彩屏液晶驱动程序
3 ----------------------------------------------------------------*/
4 #include"9325tp.h"
5 #include"reg52.h"
6 /*----------------------------------------------------------------
7 全局变量
8 ----------------------------------------------------------------*/
9 #define WINDOW_XADDR_START 0x0050 // Horizontal Start Address Set
10 #define WINDOW_XADDR_END 0x0051 // Horizontal End Address Set
11 #define WINDOW_YADDR_START 0x0052 // Vertical Start Address Set
12 #define WINDOW_YADDR_END 0x0053 // Vertical End Address Set
13 #define GRAM_XADDR 0x0020 // GRAM Horizontal Address Set
14 #define GRAM_YADDR 0x0021 // GRAM Vertical Address Set
15 #define GRAMWR 0x0022 // memory write
16
17 #define DataPort P0 //数据口使用DataPort
18
19 /*----------------------------------------------------------------
20 定义硬件端口
21 ----------------------------------------------------------------*/
22 sbit CS=P2^2; //片选
23 sbit RES=P2^1; //复位
24 sbit RS=P2^4; //数据/命令选择
25 sbit RW=P2^5;
26 /*----------------------------------------------------------------
27 清屏函数
28 输入参数:bColor 清屏所使用的背景色
29 ----------------------------------------------------------------*/
30 void CLR_Screen(unsigned int bColor)
31 {
32 1 unsigned int i,j;
33 1 LCD_SetPos(0,240,0,320);//320x240
34 1 for (i=0;i<320;i++)
35 1 {
36 2
37 2 for (j=0;j<240;j++)
38 2 Write_Data_U16(bColor);
39 2
40 2 }
41 1 }
42 /*----------------------------------------------------------------
43 显示英文字符
44 输入参数:x 横坐标
45 y 纵坐标
46 c 需要显示的字符
47 fColor 字符颜色
48 bColor 字符背景颜色
49 ----------------------------------------------------------------*/
50 #include "8X16.h"
51 void LCD_PutChar8x16(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor)
52 {
53 1 unsigned int i,j;
54 1 LCD_SetPos(x,x+8-1,y,y+16-1);
55 1 for(i=0; i<16;i++) {
C51 COMPILER V9.00 9325TP 09/01/2012 08:49:32 PAGE 2
56 2 unsigned char m=Font8x16[c*16+i];
57 2 for(j=0;j<8;j++) {
58 3 if((m&0x80)==0x80) {
59 4 Write_Data_U16(fColor);
60 4 }
61 3 else {
62 4 Write_Data_U16(bColor);
63 4 }
64 3 m<<=1;
65 3 }
66 2 }
67 1 }
68
69 /*----------------------------------------------------------------
70 显示英文字符
71 输入参数:x 横坐标
72 y 纵坐标
73 c 需要显示的字符
74 fColor 字符颜色
75 bColor 字符背景颜色
76 ----------------------------------------------------------------*/
77 void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor) {
78 1
79 1 LCD_PutChar8x16( x, y, c, fColor, bColor );
80 1 }
81
82 /*----------------------------------------------------------------
83 显示汉字
84 输入参数:x 横坐标
85 y 纵坐标
86 c 需要显示的汉字码
87 fColor 字符颜色
88 bColor 字符背景颜色
89 ----------------------------------------------------------------*/
90 #include "GB1616.h" //16*16汉字字模
91
92 void PutGB1616(unsigned short x, unsigned short y, unsigned char c[2], unsigned int fColor,unsigned int b
-Color){
93 1 unsigned int i,j,k;
94 1
95 1 LCD_SetPos(x, x+16-1,y, y+16-1);
96 1
97 1 for (k=0;k<64;k++) { //64标示自建汉字库中的个数,循环查询内码
98 2 if ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])){
99 3 for(i=0;i<32;i++) {
100 4 unsigned short m=codeGB_16[k].Msk[i];
101 4 for(j=0;j<8;j++) {
102 5 if((m&0x80)==0x80) {
103 6 Write_Data_U16(fColor);
104 6 }
105 5 else {
106 6 Write_Data_U16(bColor);
107 6 }
108 5 m<<=1;
109 5 }
110 4 }
111 3 }
112 2 }
113 1 }
114 /*----------------------------------------------------------------
115 显示字符串
116 可以中英文同时显示
C51 COMPILER V9.00 9325TP 09/01/2012 08:49:32 PAGE 3
117 输入参数:x 横坐标
118 y 纵坐标
119 *s 需要显示的字符串
120 fColor 字符颜色
121 bColor 字符背景颜色
122 ----------------------------------------------------------------*/
123 void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int
- bColor) {
124 1 unsigned char l=0;
125 1 while(*s) {
126 2 if( *s < 0x80)
127 2 {
128 3 LCD_PutChar(x+l*8,y,*s,fColor,bColor);
129 3 s++;l++;
130 3 }
131 2 else
132 2 {
133 3 PutGB1616(x+l*8,y,(unsigned char*)s,fColor,bColor);
134 3 s+=2;l+=2;
135 3 }
136 2 }
137 1 }
138 /*----------------------------------------------------------------
139 显示RGB颜色
140 输入参数:x0,y0 起始坐标
141 x1,y1 结束坐标
142 Color 背景颜色
143 ----------------------------------------------------------------*/
144 void Show_RGB (unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1,unsigned int Color)
145 {
146 1 unsigned int i,j;
147 1 LCD_SetPos(x0,x1,y0,y1);
148 1 for (i=y0;i<=y1;i++)
149 1 {
150 2 for (j=x0;j<=x1;j++)
151 2 Write_Data_U16(Color);
152 2
153 2 }
154 1 }
155 /*----------------------------------------------------------------
156 显示图片
157 图片必须是320x240,否则不能正确识别
158 ----------------------------------------------------------------*/
159 /*void show_photo(void)
160 {
161 unsigned char j;
162 unsigned int i;
163 unsigned long s=0;
164
165 LCD_SetPos(0,240,0,320);//320x240
166
167 for (i=0;i<75;i++)
168 {
169 for (j=0;j<240;j++)
170 Write_Data(0xff,0xff);
171
172 }
173
174 for (i=0;i<170;i++)
175 {
176 for (j=0;j<55;j++)
177 Write_Data(0xff,0xff);
C51 COMPILER V9.00 9325TP 09/01/2012 08:49:32 PAGE 4
178
179 for (j=0;j<130;j++)
180 Write_Data(pic[s++],pic[s++]);
181
182 for (j=0;j<55;j++)
183 Write_Data(0xff,0xff);
184 }
185
186 for (i=0;i<75;i++)
187 {
188 for (j=0;j<240;j++)
189 Write_Data(0xff,0xff);
190
191 }
192 }
193 */
194 /*----------------------------------------------------------------
195 写命令、写数据
196 输入参数:x 需要输入的命令 16位
197 y 需要输入的数据 16位
198 ----------------------------------------------------------------*/
199 void Write_Cmd_Data (unsigned char x,unsigned int y)
200 {
201 1 unsigned char m,n;
202 1 m=y>>8;
203 1 n=y;
204 1 Write_Cmd(0x00,x);
205 1 Write_Data(m,n);
206 1
207 1 }
208
209 /*----------------------------------------------------------------
210 写16位数据
211 ----------------------------------------------------------------*/
212 void Write_Data_U16(unsigned int y)
213 {
214 1 unsigned char m,n;
215 1 m=y>>8;
216 1 n=y;
217 1 Write_Data(m,n);
218 1
219 1 }
220 /*----------------------------------------------------------------
221 写命令
222 ----------------------------------------------------------------*/
223
224 void Write_Cmd(unsigned char DH,unsigned char DL)
225 {
226 1 CS=0;
227 1 RS=0;
228 1
229 1 DataPort=DH;
230 1 RW=0;
231 1 RW=1;
232 1
233 1 DataPort=DL;
234 1
235 1 RW=0;
236 1 RW=1;
237 1 CS=1;
238 1 }
239
C51 COMPILER V9.00 9325TP 09/01/2012 08:49:32 PAGE 5
240 /*----------------------------------------------------------------
241 写数据 双8位
242 ----------------------------------------------------------------*/
243
244 void Write_Data(unsigned char DH,unsigned char DL)
245 {
246 1
247 1 CS=0;
248 1
249 1 RS=1;
250 1 DataPort=DH;
251 1 RW=0;
252 1 RW=1;
253 1
254 1 DataPort=DL;
255 1 RW=0;
256 1 RW=1;
257 1 CS=1;
258 1 }
259 /*----------------------------------------------------------------
260 延时函数
261 ----------------------------------------------------------------*/
262 void delayms(unsigned int count)
263 {
264 1 int i,j;
265 1 for(i=0;i<count;i++)
266 1 {
267 2 for(j=0;j<260;j++);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -