📄 ts12864a.lst
字号:
C51 COMPILER V8.02 TS12864A 04/04/2008 19:55:17 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TS12864A
OBJECT MODULE PLACED IN TS12864A.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TS12864A.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*===============================================================*/
2 /*函数名称: TS12864A.c */
3 /*函数功能: 液晶显示启动 */
4 /*入口参数: P2---------------------------------------液晶数据传输
5 P3----------------------------------------液晶控制脚*/
6 /*有无返回: 无 */
7 /*修改记录: 无修改记录 */
8 /*编写作者: t483-4-19chenyong */
9 /*编写日期: 2007-4-06 */
10 /*===============================================================*/
11 #include "common.h"
12 #include "TS12864A.h"
13 #include "String_pixel.h"
14 /*===============================================================*/
15 /*判断状态 */
16 /*===============================================================*/
17 void LCD_Busy(void)
18 {
19 1 LCD_RS=0; // 状态标志位和地址计数读入DB7和DB6-DB0
20 1 LCD_RW=1;
21 1 LCD_DATA=0xff; //初始化
22 1 while (1)
23 1 {
24 2 LCD_EN=1;
25 2 if (LCD_DATA<0x80)break;//判断是否忙
26 2 LCD_EN=0;
27 2 }
28 1 LCD_EN=0;
29 1 }
30
31 /*===============================================================*/
32 /*写数据 */
33 /*===============================================================*/
34 void LCD_Write_Data(uchar ddata)
35 {
36 1 LCD_Busy(); //检测是否处于忙的状态
37 1 LCD_RS = 1;
38 1 LCD_RW = 0;
39 1 LCD_DATA = ddata;
40 1 LCD_EN = 1;
41 1 LCD_EN = 0;
42 1 }
43 /*===============================================================*/
44 /*写命令 */
45 /*===============================================================*/
46
47 void LCD_Write_Command(uchar command)
48 {
49 1 LCD_Busy(); //检测是否处于忙的状态
50 1 LCD_RS = 0;
51 1 LCD_RW = 0;
52 1 LCD_DATA = command;
53 1 LCD_EN = 1;
54 1 LCD_EN = 0;
55 1 }
C51 COMPILER V8.02 TS12864A 04/04/2008 19:55:17 PAGE 2
56
57 void CleanScreen(void)
58 {
59 1 uchar i, j, k;
60 1
61 1 for (i=0;i<8;i++)
62 1 {
63 2 LCD_CSA = 1;
64 2 LCD_CSB = 1;
65 2 LCD_Write_Command(0x40); //设置列地址
66 2 LCD_Write_Command(0xb8+i); //设置页地址
67 2 LCD_CSA = 1;
68 2 LCD_CSB = 0;
69 2 for(j=0;j<128;j++)
70 2 LCD_Write_Data(0x00);
71 2 LCD_CSA = 0;
72 2 LCD_CSB = 1;
73 2 for(k=64;k<128;k++)
74 2 LCD_Write_Data(0x00);
75 2 }
76 1 }
77
78 /*===============================================================*/
79 /* 清屏
80
81 y ------------------------------------------------------纵轴位置
82 yy------------按LCD显示4行字来计算,0,代表第一行,3,代表第四行;
83 mod---------------------------清屏方式,
84 0-------------------------------------------------------按行清屏;
85 1-------------------------------------------------------全部清屏;
86 */
87 /*===============================================================*/
88 /*void LCD_Cls_xy(uchar mod, uchar yy)
89 {
90 uchar x, y;
91 uchar value_temp = 0;
92 value_temp = 2*yy;
93 switch(mod)
94 {
95 case 0: //按行清屏
96 {
97 for (y=value_temp;y<value_temp+1;y++)
98 for(x=0;x<128;x++)
99 Dis_Play(x,y,0);
100 }
101
102 case 1: //全部清屏
103 {
104 for (y=0;y<8;y++) //清屏
105 {
106 for(x=0;x<128;x++)
107 Dis_Play(x,y,0);
108 }
109
110 }
111 }
112
113 }*/
114 /*===============================================================*/
115 /*设置x,y位置 */
116 /*===============================================================*/
117 void LCD_Set_xy(unsigned char x,unsigned char y)
C51 COMPILER V8.02 TS12864A 04/04/2008 19:55:17 PAGE 3
118 {
119 1
120 1 LCD_CSA = 1;
121 1 LCD_CSB = 1;
122 1
123 1 LCD_Write_Command(0x40|x);
124 1 LCD_Write_Command(0xb8|y);
125 1
126 1 if (x>=64) //判断是否显示半面,如果大于64则全屏显示
127 1 {
128 2 LCD_CSA=0;
129 2 LCD_CSB=1;
130 2 }
131 1 else //小于64则半屏显示
132 1 {
133 2 LCD_CSA=1;
134 2 LCD_CSB=0;
135 2 }
136 1 LCD_DATA=0xff; //IO口将电平拉高
137 1 }
138 /*===============================================================*/
139 /*函数名称: Dis_Play.c */
140 /*函数功能: 显示汉字,fb==1:反白显示 */
141 /*函数说明: 具体说明如下:
142 x---------------------------------------------横轴位置
143 y---------------------------------------------纵轴位置
144 n-------------------------------------数据在表中的位置
145 dis_value-----------------------------待显示汉字的代码
146 */
147 /*修改记录: 无修改记录 */
148 /*编写日期: 2007-3-17 */
149 /*===============================================================*/
150 void Dis_Play(unsigned char x,unsigned char y,unsigned char dis_value)
151 {
152 1 LCD_Set_xy(x,y);
153 1 LCD_Write_Data(dis_value);
154 1 }
155
156 void LCD_Init(void)
157 {
158 1
159 1 LCD_CSA = 1;
160 1 LCD_CSB = 1; //控制器全开
161 1 LCD_Write_Command(0x3f); //开显示
162 1 LCD_Write_Command(0xc0); //设置起始地址
163 1
164 1 }
165
166 /*===============================================================*/
167 /*函数名称: Display_Character.c */
168 /*函数功能: 显示汉字,fb==1:反白显示 */
169 /*函数说明: 具体说明如下:
170 x---------------------------------------------横轴位置
171 y---------------------------------------------纵轴位置
172 n-------------------------------------数据在表中的位置
173 dis_table-----------------------------待显示数据代码表
174 dis_value-----------------------------待显示汉字的代码
175 */
176 /*修改记录: 无修改记录 */
177 /*编写日期: 2007-3-17 */
178 /*===============================================================*/
179 void Display_Character(unsigned char x,unsigned char y,unsigned char n)
C51 COMPILER V8.02 TS12864A 04/04/2008 19:55:17 PAGE 4
180 {
181 1 unsigned char i,dis_value;
182 1 for(i=0;i<16;i++)
183 1 {
184 2 switch(y)
185 2 {
186 3 case 1: dis_value=dis_table[i+n*32]; //确定显示的值,上半部分
187 3 Dis_Play(x*8+i,1,dis_value);
188 3 dis_value=dis_table[i+n*32+16]; //确定显示的值,上半部分
189 3 Dis_Play(x*8+i,2,dis_value);
190 3 break;
191 3 case 3: dis_value=dis_table[i+n*32]; //确定显示的值,上半部分
192 3 Dis_Play(x*8+i,3,dis_value);
193 3 dis_value=dis_table[i+n*32+16]; //确定显示的值,上半部分
194 3 Dis_Play(x*8+i,4,dis_value);
195 3 break;
196 3 case 5: dis_value=dis_table[i+n*32]; //确定显示的值,上半部分
197 3 Dis_Play(x*8+i,5,dis_value);
198 3 dis_value=dis_table[i+n*32+16]; //确定显示的值,上半部分
199 3 Dis_Play(x*8+i,6,dis_value);
200 3 break;
201 3 default:break;
202 3 }
203 2 }
204 1 }
205
206 /*===============================================================*/
207 /*函数名称: Display_Char.c */
208 /*函数功能: 显示字符,fb==1:反白显示 */
209 /*函数说明: 具体说明如下:
210 x---------------------------------------------横轴位置
211 y---------------------------------------------纵轴位置
212 n-------------------------------------数据在表中的位置
213 dis_table-----------------------------待显示数据代码表
214 dis_value-----------------------------待显示汉字的代码
215 */
216 /*修改记录: 无修改记录 */
217 /*编写日期: 2007-3-17 */
218 /*===============================================================*/
219 void Display_Char(unsigned char x,unsigned char y,unsigned char n)
220 {
221 1 unsigned char i,dis_value;
222 1 for (i=0;i<8;i++)
223 1 {
224 2 dis_value=shuzi_table[i+n*16];
225 2 Dis_Play(x*8+i+1,y,dis_value);
226 2 dis_value=shuzi_table[i+n*16+8];
227 2 Dis_Play(x*8+i+1,y+1,dis_value);
228 2 }
229 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 481 ----
CONSTANT SIZE = 1856 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -