📄 lcd_driver_user.lst
字号:
C51 COMPILER V8.08 LCD_DRIVER_USER 11/02/2007 15:16:56 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCD_DRIVER_USER
OBJECT MODULE PLACED IN LCD_Driver_User.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Driver\LCD_Driver\LCD_Driver_User.c BROWSE DEBUG OBJECTEXTEND PRINT(.\LCD_D
-river_User.lst) OBJECT(LCD_Driver_User.obj)
line level source
1 //========================================================================
2 // 文件名: LCD_Driver_User.c
3 // 作 者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
4 // www.Mzdesign.com.cn
5 // 日 期: 2007/02/25
6 // 描 述: 底层接口驱动扩展程序集
7 //
8 // 参 考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
9 // 层接口驱动程序,以及LCD的初始化代码
10 // 版 本:
11 // 2007/02/25 First version Mz Design
12 // 注 意:
13 // 该驱动程序当中有很多已经被屏蔽掉的子程序,用户可根据自己的应用
14 // 取消屏障并作一定的修改(如果可能的话)
15 //========================================================================
16 #include "LCD_Config.h"
17 #include "LCD_PortConfig.h"
18
19 //========================================================================
20 // 函数: void LCD_DataWrite(unsigned char Data)
21 // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
22 // 参数: Data 写入的数据
23 // 返回: 无
24 // 备注: 无
25 // 版本:
26 // 2007/01/09 First version
27 //========================================================================
28 void LCD_DataWrite(unsigned char Dat)//,_Fill_Dot_LCD
29 {
30 1 // *DAT_W_ADDR = Dat;
31 1
32 1 LCD_A0 = 1;
33 1 // _nop_();
34 1 LCD_RW = 0;
35 1 // _nop_();
36 1 LCD_EP = 0;
37 1 LCD_CS = 0;
38 1 // _nop_();
39 1 DAT_PORT = Dat;
40 1
41 1 // _nop_();
42 1 LCD_EP = 1;
43 1 // _nop_();
44 1 LCD_CS = 1;
45 1 // _nop_();
46 1 // LCD_RW = 1;
47 1 }
48 //========================================================================
49 // 函数: unsigned char LCD_DataRead(void)
50 // 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
51 // 参数: 无
52 // 返回: 读出的数据,
53 // 备注:
54 // 版本:
C51 COMPILER V8.08 LCD_DRIVER_USER 11/02/2007 15:16:56 PAGE 2
55 // 2007/01/09 First version
56 // 注意:
57 //========================================================================
58 unsigned char LCD_DataRead(void)
59 {
60 1 unsigned char Read_Data;
61 1 DAT_PORT = 0xff;
62 1 LCD_A0 = 1;
63 1 LCD_RW = 1;
64 1 LCD_EP = 0;
65 1 LCD_CS = 0;
66 1 // LCD_EP = 0;
67 1 // _nop_();
68 1 LCD_EP = 1;
69 1 LCD_EP = 0;
70 1 Read_Data = DAT_PORT;//
71 1 LCD_CS = 1;
72 1 return Read_Data;
73 1 }
74 //========================================================================
75 // 函数: void LCD_RegWrite(unsigned char Command)
76 // 描述: 写一个字节的数据至LCD中的控制寄存器当中
77 // 参数: Command 写入的数据,低八位有效(byte)
78 // 返回: 无
79 // 备注:
80 // 版本:
81 // 2007/01/09 First version
82 //========================================================================
83 void LCD_RegWrite(unsigned char Command)
84 {
85 1 // *COM_W_ADDR = Command;
86 1
87 1 LCD_A0 = 0;
88 1 // _nop_();
89 1 LCD_RW = 0;
90 1 // _nop_();
91 1 LCD_EP = 0;
92 1 LCD_CS = 0;
93 1 DAT_PORT = Command;
94 1
95 1 // _nop_();
96 1 LCD_EP = 1;
97 1 // _nop_();
98 1 LCD_CS = 1;
99 1 // _nop_();
100 1 // LCD_A0 = 1;
101 1 // _nop_();
102 1 // LCD_RW = 1;
103 1 }
104 //========================================================================
105 // 函数: void Write_Dot_LCD(unsigned char x,unsigned char y,unsigned char i)
106 // 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
107 // 参数: x X轴坐标
108 // y Y轴坐标
109 // i 要填充的点的颜色
110 // 返回: 无
111 // 备注:
112 // 版本:
113 // 2006/10/15 First version
114 // 2007/01/09 V1.2
115 //========================================================================
116 void Write_Dot_LCD(unsigned char x,unsigned char y,unsigned char i)
C51 COMPILER V8.08 LCD_DRIVER_USER 11/02/2007 15:16:56 PAGE 3
117 {
118 1 unsigned char x_low,x_hight; //定义列地址的高低位指令
119 1 unsigned char Dot_Mask_Buf=0x01;
120 1 unsigned char y_Page; //用于存放要画点的位置所在的byte数据位置
121 1 x = x+1;
122 1 x_low = (x&0x0f); //定位列地址设置的低位指令
123 1 x_hight = ((x>>4)&0x0f)+0x10; //定位列地址设置的高位指令
124 1 // y_Page = y&0x07; //取低三位
125 1 switch(y&0x07)
126 1 {
127 2 case 0: Dot_Mask_Buf = 0x01;break;
128 2 case 1: Dot_Mask_Buf = 0x02;break;
129 2 case 2: Dot_Mask_Buf = 0x04;break;
130 2 case 3: Dot_Mask_Buf = 0x08;break;
131 2 case 4: Dot_Mask_Buf = 0x10;break;
132 2 case 5: Dot_Mask_Buf = 0x20;break;
133 2 case 6: Dot_Mask_Buf = 0x40;break;
134 2 case 7: Dot_Mask_Buf = 0x80;break;
135 2 }
136 1 y_Page = (y>>3)+0xb0; //Get the page of the byte
137 1 LCD_RegWrite(y_Page);
138 1 LCD_RegWrite(x_low);
139 1 LCD_RegWrite(x_hight);
140 1 // LCD_RegWrite(0xe0); //设置为读写改模式
141 1 y_Page = LCD_DataRead(); //
142 1 if(i) y_Page |= Dot_Mask_Buf;
143 1 else y_Page &= ~Dot_Mask_Buf;
144 1 LCD_DataWrite(y_Page); //
145 1 // LCD_RegWrite(0xee); //读写改模式结束
146 1 }
147 /*
148 //========================================================================
149 // 函数: void Clear_Dot_LCD(int x,int y)
150 // 描述: 清除在LCD的真实坐标系上的X、Y点
151 // 参数: x X轴坐标
152 // y Y轴坐标
153 // 返回: 无
154 // 备注: 暂不使用该函数
155 // 版本:
156 // 2006/10/15 First version
157 //========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -