📄 ts12864a.lst
字号:
C51 COMPILER V8.02 TS12864A 05/25/2008 15:06:02 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 LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************************************/
2 /*****************************************************************/
3 /*函数名称: TS12864A.c */
4 /*函数功能: 液晶显示启动 */
5 /*入口参数: P6---------------------------------------液晶数据传输
6 P3----------------------------------------液晶控制脚*/
7 /*有无返回: 无 */
8 /*修改记录: 无修改记录 */
9 /*编写作者: t483-4-19chenyong */
10 /*编写日期: 2007-4-06 */
11 /*****************************************************************/
12
13 #include "common.h"
*** WARNING C318 IN LINE 15 OF common.h: can't open file 'conio.h'
14 #include "TS12864A.h"
15 #include "ziku.h"
16 #include "delay.h"
17 unsigned char temp;
18
19 /*****************************************************************/
20 /*判断状态 */
21 /*****************************************************************/
22 void LCD_Busy(void)
23 {
24 1 SFRPAGE=0x0f;
25 1 LCD_RS=0; // 状态标志位和地址计数读入DB7和DB6-DB0
26 1 delay_17us();
27 1 LCD_RW=1;
28 1 delay_17us();
29 1 LCD_DATA=0xff; //初始化
30 1 while (1)
31 1 {
32 2 LCD_EN=1;
33 2 delay_17us();
34 2 if (LCD_DATA<0x80)break;//判断是否忙
35 2 LCD_EN=0;
36 2 delay_17us();
37 2 }
38 1 LCD_EN=0;
39 1 delay_17us();
40 1 }
41
42 /*****************************************************************/
43 /*写数据 */
44 /*****************************************************************/
45 void LCD_Write_Data(uchar ddata)
46 {
47 1 LCD_Busy(); //检测是否处于忙的状态
48 1 LCD_RS = 1;
49 1 delay_17us();
50 1 LCD_RW = 0;
51 1 delay_17us();
52 1 temp=ddata;
53 1 SFRPAGE=0x0f;
54 1 LCD_DATA=temp;
C51 COMPILER V8.02 TS12864A 05/25/2008 15:06:02 PAGE 2
55 1 LCD_EN = 1;
56 1 delay_17us();
57 1 LCD_EN = 0;
58 1 delay_17us();
59 1 }
60 /*****************************************************************/
61 /*写命令 */
62 /*****************************************************************/
63
64 void LCD_Write_Command(uchar command)
65 {
66 1 LCD_Busy(); //检测是否处于忙的状态
67 1 LCD_RS = 0;
68 1 delay_17us();
69 1 LCD_RW = 0;
70 1 delay_17us();
71 1 temp=command;
72 1 SFRPAGE=0x0f;
73 1 LCD_DATA=temp;
74 1 LCD_EN = 1;
75 1 delay_17us();
76 1 LCD_EN = 0;
77 1 delay_17us();
78 1 }
79
80 void CleanScreen(void)
81 {
82 1 uchar i, j, k;
83 1
84 1 for (i=0;i<8;i++)
85 1 {
86 2 LCD_CSA = 1;
87 2 delay_17us();
88 2 LCD_CSB = 1;
89 2 delay_17us();
90 2 LCD_Write_Command(0x40); //设置列地址
91 2 delay_17us();
92 2 LCD_Write_Command(0xb8+i); //设置页地址
93 2 delay_17us();
94 2 LCD_CSA = 1;
95 2 delay_17us();
96 2 LCD_CSB = 0;
97 2 delay_17us();
98 2 for(j=0;j<128;j++)
99 2 LCD_Write_Data(0x00);
100 2 delay_17us();
101 2 LCD_CSA = 0;
102 2 delay_17us();
103 2 LCD_CSB = 1;
104 2 delay_17us();
105 2 for(k=64;k<128;k++)
106 2 LCD_Write_Data(0x00);
107 2 delay_17us();
108 2 }
109 1 }
110
111 /*****************************************************************/
112 /* 清屏
113
114 y ------------------------------------------------------纵轴位置
115 yy------------按LCD显示4行字来计算,0,代表第一行,3,代表第四行;
116 mod---------------------------清屏方式,
C51 COMPILER V8.02 TS12864A 05/25/2008 15:06:02 PAGE 3
117 0-------------------------------------------------------按行清屏;
118 1-------------------------------------------------------全部清屏;
119 */
120 /*****************************************************************/
121 /*void LCD_Cls_xy(uchar mod, uchar yy)
122 {
123 uchar x, y;
124 uchar value_temp = 0;
125 value_temp = 2*yy;
126 switch(mod)
127 {
128 case 0: //按行清屏
129 {
130 for (y=value_temp;y<value_temp+1;y++)
131 for(x=0;x<128;x++)
132 Dis_Play(x,y,0);
133 }
134
135 case 1: //全部清屏
136 {
137 for (y=0;y<8;y++) //清屏
138 {
139 for(x=0;x<128;x++)
140 Dis_Play(x,y,0);
141 }
142
143 }
144 }
145
146 }
147 */
148 /*****************************************************************/
149 /*设置x,y位置 */
150 /*****************************************************************/
151 void LCD_Set_xy(unsigned char x,unsigned char y)
152 {
153 1
154 1 LCD_CSA = 1;
155 1 delay_17us();
156 1 LCD_CSB = 1;
157 1 delay_17us();
158 1
159 1 LCD_Write_Command(0x40|x);
160 1 delay_17us();
161 1 LCD_Write_Command(0xb8|y);
162 1 delay_17us();
163 1
164 1 if (x>=64) //判断是否显示半面,如果大于64则全屏显示
165 1 {
166 2 LCD_CSA=0;
167 2 delay_17us();
168 2 LCD_CSB=1;
169 2 delay_17us();
170 2 }
171 1 else //小于64则半屏显示
172 1 {
173 2 LCD_CSA=1;
174 2 delay_17us();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -