📄 lcd_dis.lst
字号:
C51 COMPILER V8.02 LCD_DIS 07/24/2007 00:38:41 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD_DIS
OBJECT MODULE PLACED IN LCD_Dis.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD_Dis.c OPTIMIZE(SIZE) DEBUG OBJECTEXTEND
line level source
1 //========================================================================
2 // 文件名: LCD_Dis.c
3 // 作 者: xinqiang Zhang(小丑) (email: xinqiang@Mzdesign.com.cn)
4 // 日 期: 2007/07/19
5 // 描 述: MzLH01-12864 LCD显示模块驱动V1.0版
6 // 基本功能接口函数集
7 //
8 // 参 考: 无
9 // 版 本:
10 // 2007/07/19 First version Mz Design
11 // 2007/07/24 V1.2 for MCS51 Keil C
12 //========================================================================
13
14 #include "LCD_Config.h"
15
16 unsigned char X_Witch=6;
17 unsigned char Y_Witch=10;
18 unsigned char X_Witch_cn=16;
19 unsigned char Y_Witch_cn=16;
20 unsigned char Dis_Zero=0;
21 //========================================================================
22 // 函数: void LCD_Init(void)
23 // 描述: LCD初始化程序,主要在里面完成端口初始化以及LCD模块的复位
24 // 参数: 无
25 // 返回: 无
26 // 备注:
27 // 版本:
28 // 2007/07/19 First version
29 // 2007/07/24 V1.2 for MCS51 Keil C
30 //========================================================================
31 void TimeDelay(unsigned int Timers)
32 {
33 1 unsigned int i;
34 1 while(Timers)
35 1 {
36 2 Timers--;
37 2 for(i=0;i<1000;i++) ;
38 2 }
39 1 }
40 void LCD_Init(void)
41 {
42 1 SPI_SS = 1;
43 1 SPI_SDA = 1;
44 1 SPI_SCK = 1;
45 1 SPI_BUSY = 1;
46 1
47 1 SPI_RES = 0; //复位
48 1 TimeDelay(20); //保持低电平大概2ms左右
49 1 SPI_RES = 1; //恢复高电平
50 1 TimeDelay(20); //延时大概2ms左右
51 1 }
52 //========================================================================
53 // 函数: void SPI_SSSet(unsigned char Status)
54 // 描述: 置SS线状态
55 // 参数: Status =1则置高电平,=0则置低电平
C51 COMPILER V8.02 LCD_DIS 07/24/2007 00:38:41 PAGE 2
56 // 返回: 无
57 // 版本:
58 // 2007/07/17 First version
59 // 2007/07/24 V1.2 for MCS51 Keil C
60 //========================================================================
61 void SPI_SSSet(unsigned int Status)
62 {
63 1 while(SPI_BUSY); //如Busy为高电平,则循环等待
64 1 // TimeDelay(1); //稍稍延一点时间
65 1 if(Status) //判断是要置SS为低还是高电平?
66 1 {
67 2 SPI_SS = 1; //SS置高电平
68 2 }
69 1 else
70 1 SPI_SS = 0; //SS置低电平
71 1 }
72 //========================================================================
73 // 函数: void SPI_Send(unsigned char Data)
74 // 描述: 通过串行SPI口输送一个byte的数据置模组
75 // 参数: Data 要传送的数据
76 // 返回: 无
77 // 版本:
78 // 2007/07/17 First version
79 // 2007/07/24 V1.2 for MCS51 Keil C
80 //========================================================================
81 void SPI_Send(unsigned int Data)
82 {
83 1 unsigned int i=0;
84 1 while(SPI_BUSY); //如Busy为高电平,则循环等待
85 1 for(i=0;i<8;i++)
86 1 {
87 2 SPI_SCK = 0; //SCK置低
88 2 if(Data&0x0080)
89 2 SPI_SDA = 1;
90 2 else SPI_SDA = 0;
91 2 SPI_SCK = 1; //SCK上升沿触发串行数据采样
92 2 Data = Data<<1; //数据左移一位
93 2 }
94 1 }
95 //========================================================================
96 // 函数: void FontSet(unsigned char Font_NUM,unsigned char Color)
97 // 描述: ASCII字符字体设置
98 // 参数: Font_NUM 字体选择,以驱动所带的字库为准
99 // Color 文本颜色,仅作用于ASCII字库
100 // 返回: 无
101 // 备注:
102 // 版本:
103 // 2007/07/19 First version
104 //========================================================================
105 void FontSet(unsigned char Font_NUM,unsigned char Color)
106 {
107 1 unsigned char ucTemp=0;
108 1 if(Font_NUM)
109 1 {
110 2 X_Witch = 6;
111 2 Y_Witch = 10;
112 2 }
113 1 else
114 1 {
115 2 X_Witch = 8;
116 2 Y_Witch = 16;
117 2 }
C51 COMPILER V8.02 LCD_DIS 07/24/2007 00:38:41 PAGE 3
118 1 ucTemp = (Font_NUM<<4)|Color;
119 1 //设置ASCII字符的字型
120 1 SPI_SSSet(0); //SS置低电平
121 1 SPI_Send(0x81); //传送指令0x81
122 1 SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色
123 1 SPI_SSSet(1); //完成操作置SS高电平
124 1 }
125 //========================================================================
126 // 函数: void FontSet_cn(unsigned char Font_NUM,unsigned char Color)
127 // 描述: 汉字库字符字体设置
128 // 参数: Font_NUM 字体选择,以驱动所带的字库为准
129 // Color 文本颜色,仅作用于汉字库
130 // 返回: 无
131 // 备注:
132 // 版本:
133 // 2007/07/19 First version
134 //========================================================================
135 void FontSet_cn(unsigned char Font_NUM,unsigned char Color)
136 {
137 1 unsigned char ucTemp=0;
138 1 if(Font_NUM)
139 1 {
140 2 X_Witch_cn = 12;
141 2 Y_Witch_cn = 12;
142 2 }
143 1 else
144 1 {
145 2 X_Witch_cn = 16;
146 2 Y_Witch_cn = 16;
147 2 }
148 1 ucTemp = (Font_NUM<<4)|Color;
149 1 //设置ASCII字符的字型
150 1 SPI_SSSet(0); //SS置低电平
151 1 SPI_Send(0x82); //传送指令0x81
152 1 SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色
153 1 SPI_SSSet(1); //完成操作置SS高电平
154 1 }
155 //========================================================================
156 // 函数: void PutChar(unsigned char x,unsigned char y,unsigned char a)
157 // 描述: 写入一个标准ASCII字符
158 // 参数: x X轴坐标 y Y轴坐标
159 // a 要显示的字符在字库中的偏移量
160 // 返回: 无
161 // 备注: ASCII字符可直接输入ASCII码即可
162 // 版本:
163 // 2007/07/19 First version
164 //========================================================================
165 void PutChar(unsigned char x,unsigned char y,unsigned char a)
166 {
167 1 //显示ASCII字符
168 1 SPI_SSSet(0); //SS置低电平
169 1 SPI_Send(7); //传送指令0x07
170 1 SPI_Send(x); //要显示字符的左上角的X轴位置
171 1 SPI_Send(y); //要显示字符的左上角的Y轴位置
172 1 SPI_Send(a); //要显示字符ASCII字符的ASCII码值
173 1 SPI_SSSet(1); //完成操作置SS高电平
174 1 }
175 //========================================================================
176 // 函数: void PutString(int x,int y,char *p)
177 // 描述: 在x、y为起始坐标处写入一串标准ASCII字符
178 // 参数: x X轴坐标 y Y轴坐标
179 // p 要显示的字符串
C51 COMPILER V8.02 LCD_DIS 07/24/2007 00:38:41 PAGE 4
180 // 返回: 无
181 // 备注: 仅能用于自带的ASCII字符串显示
182 // 版本:
183 // 2007/07/19 First version
184 //========================================================================
185 void PutString(unsigned char x,unsigned char y,unsigned char *p)
186 {
187 1 while(*p!=0)
188 1 {
189 2 PutChar(x,y,*p);
190 2 x += X_Witch;
191 2 if((x + X_Witch) > Dis_X_MAX)
192 2 {
193 3 x = Dis_Zero;
194 3 if((Dis_Y_MAX - y) < Y_Witch) break;
195 3 else y += Y_Witch;
196 3 }
197 2 p++;
198 2 }
199 1 }
200 //========================================================================
201 // 函数: void PutChar_cn(unsigned char x,unsigned char y,unsigned short * GB)
202 // 描述: 写入一个二级汉字库汉字
203 // 参数: x X轴坐标 y Y轴坐标
204 // a GB码
205 // 返回: 无
206 // 备注:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -