📄 lcd_driver_user.lst
字号:
C51 COMPILER V8.02 LCD_DRIVER_USER 06/27/2007 01:39:54 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD_DRIVER_USER
OBJECT MODULE PLACED IN LCD_Driver_User.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD_Driver_User.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //========================================================================
2 //========================================================================
3 // 文件名: LCD_Driver_User.c
4 // 作 者: Xinqiang Zhang(email: xinqiang@Mzdesign.com.cn)
5 // 日 期: 2007/04/10
6 // 描 述: MzT24-1 TFT LCD模块底层接口程序集(C语言版本) for C8051F020
7 //
8 //
9 // 参 考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
10 // 层接口驱动程序,以及LCD的初始化代码
11 // 版 本:
12 // 2007/04/10 First version Mz Design
13 //========================================================================
14 #include "LCD_PortConfig.h"
15 #include "LCD_Config.h"
16
17 //========================================================================
18 // 函数: void LCD_DataWrite(unsigned char Data)
19 // 描述: 写一个字的显示数据至LCD中的显示缓冲RAM当中
20 // 参数: Data 写入的数据
21 // 返回: 无
22 // 备注: 无
23 // 版本:
24 // 2007/04/10 First version
25 //========================================================================
26 void LCD_DataWrite(unsigned int Data)
27 {
28 1 // *COM_W_ADDR = 0x00;
29 1 // *COM_W_ADDR = 0x22;
30 1 // *DAT_W_ADDR = (unsigned char)(Data>>8);
31 1 // *DAT_W_ADDR = (unsigned char)(Data&0x00ff);
32 1 LCD_RS = 0;
33 1 LCD_CS = 0;
34 1 LCD_WR = 0;
35 1 P1 = 0;
36 1 LCD_WR = 1;
37 1 LCD_WR = 0;
38 1 P1 = 0x22;
39 1 LCD_WR = 1;
40 1 LCD_RS = 1;
41 1 LCD_WR = 0;
42 1 P1 = Data>>8;
43 1 LCD_WR = 1;
44 1 LCD_WR = 0;
45 1 P1 = (unsigned char)(Data&0x00ff);
46 1 LCD_WR = 1;
47 1 LCD_CS = 1;
48 1 }
49 //========================================================================
50 // 函数: unsigned char LCD_DataRead(void)
51 // 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
52 // 参数: 无
53 // 返回: 读出的数据
54 // 备注: 无
55 // 版本:
C51 COMPILER V8.02 LCD_DRIVER_USER 06/27/2007 01:39:54 PAGE 2
56 // 2007/04/10 First version
57 //========================================================================
58 unsigned int LCD_DataRead(void)
59 {
60 1 unsigned int Read_Data;
61 1 // *COM_W_ADDR = 0x00;
62 1 // *COM_W_ADDR = 0x00;
63 1 // Read_Data = *COM_W_ADDR;//*DAT_R_ADDR;
64 1 // Read_Data = Read_Data<<8;
65 1 // Read_Data |= *COM_W_ADDR;//*DAT_R_ADDR;
66 1 LCD_CS = 0;
67 1 LCD_RS = 0;
68 1 LCD_RD = 0;
69 1 LCD_RD = 1;
70 1 LCD_RD = 0;
71 1 LCD_RD = 1;
72 1 P1 = 0xff;
73 1 LCD_RD = 0;
74 1 _nop_();
75 1 Read_Data = P1;
76 1 Read_Data = Read_Data<<8;
77 1 LCD_RD = 1;
78 1 P1 = 0xff;
79 1 LCD_RD = 0;
80 1 _nop_();
81 1 Read_Data |= P1;
82 1 LCD_RD = 1;
83 1 LCD_CS = 1;
84 1 return Read_Data;
85 1 }
86 //========================================================================
87 // 函数: void LCD_RegWrite(unsigned char Reg_Addr,unsigned int Data)
88 // 描述: 写一个字节的数据至LCD中的控制寄存器当中
89 // 参数: Reg_Addr 寄存器地址
90 // Data 写入的数据
91 // 返回: 无
92 // 备注:
93 // 版本:
94 // 2007/04/10 First version
95 //========================================================================
96 void LCD_RegWrite(unsigned char Reg_Addr,unsigned int Data)
97 {
98 1 // *COM_W_ADDR = 0x00;
99 1 // *COM_W_ADDR = Reg_Addr;
100 1 // *DAT_W_ADDR = Data>>8;
101 1 // *DAT_W_ADDR = (unsigned char)(Data&0x00ff);
102 1 LCD_RS = 0;
103 1 LCD_CS = 0;
104 1 LCD_WR = 0;
105 1 P1 = 0;
106 1 LCD_WR = 1;
107 1 LCD_WR = 0;
108 1 P1 = Reg_Addr;
109 1 LCD_WR = 1;
110 1 LCD_RS = 1;
111 1 LCD_WR = 0;
112 1 P1 = Data>>8;
113 1 LCD_WR = 1;
114 1 LCD_WR = 0;
115 1 P1 = (unsigned char)(Data&0x00ff);
116 1 LCD_WR = 1;
117 1 LCD_CS = 1;
C51 COMPILER V8.02 LCD_DRIVER_USER 06/27/2007 01:39:54 PAGE 3
118 1 }
119 //========================================================================
120 // 函数: void LCD_Reg22(void)
121 // 描述: MzT24-1 LCD模块当中,依据控制器SPFD5408的特性,将操作寄存器指向数
122 // 据寄存器R22h当中,以便于后面的数据连续写操作
123 // 参数:
124 // 返回: 无
125 // 备注:
126 // 版本:
127 // 2007/03/15 First version
128 //========================================================================
129 void LCD_Reg22(void)
130 {
131 1 LCD_RS = 0;
132 1 LCD_CS = 0;
133 1 LCD_WR = 0;
134 1 P1 = 0;
135 1 LCD_WR = 1;
136 1 LCD_WR = 0;
137 1 P1 = 0x22;
138 1 LCD_WR = 1;
139 1 LCD_CS = 1;
140 1 }
141 //========================================================================
142 // 函数: void Fill_Dot_LCD(unsigned int Color)
143 // 描述: 填充一个点到LCD显示缓冲RAM当中,而不管当前要填充的地址如何
144 // 参数: Color 要填充的点的颜色
145 // 返回: 无
146 // 备注:
147 // 版本:
148 // 2007/04/10 First version
149 //========================================================================
150 void Fill_Dot_LCD(unsigned int Color)
151 {
152 1 LCD_RS = 1;
153 1 LCD_CS = 0;
154 1 LCD_WR = 0;
155 1 P1 = Color>>8;
156 1 LCD_WR = 1;
157 1 LCD_WR = 0;
158 1 P1 = (unsigned char)(Color&0x00ff);
159 1 LCD_WR = 1;
160 1 LCD_CS = 1;
161 1 }
162 //========================================================================
163 // 函数: void Write_Dot_LCD(int x,int y,unsigned int i)
164 // 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
165 // 参数: x X轴坐标
166 // y Y轴坐标
167 // i 要填充的点的颜色
168 // 返回: 无
169 // 备注:
170 // 版本:
171 // 2007/04/10 First version
172 //========================================================================
173 void Write_Dot_LCD(unsigned char x,unsigned int y,unsigned int i)
174 {
175 1
176 1 LCD_RegWrite(0x20,x);
177 1 LCD_RegWrite(0x21,y);
178 1 LCD_DataWrite(i);
179 1 }
C51 COMPILER V8.02 LCD_DRIVER_USER 06/27/2007 01:39:54 PAGE 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -