📄 ts12864a.lst
字号:
C51 COMPILER V8.02 TS12864A 03/29/2008 22:13:16 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 SFRPAGE=0x0f;
20 1 LCD_RS=0; // 状态标志位和地址计数读入DB7和DB6-DB0
21 1 delay_17us();
22 1 LCD_RW=1;
23 1 delay_17us();
24 1 LCD_DATA=0xff; //初始化
25 1 while (1)
26 1 {
27 2 LCD_EN=1;
28 2 delay_17us();
29 2 if (LCD_DATA<0x80)break;//判断是否忙
30 2 LCD_EN=0;
31 2 delay_17us();
32 2 }
33 1 LCD_EN=0;
34 1 delay_17us();
35 1 }
36
37 /*===============================================================*/
38 /*写数据 */
39 /*===============================================================*/
40 void LCD_Write_Data(uchar ddata)
41 {
42 1 uchar temp=0;
43 1 LCD_Busy(); //检测是否处于忙的状态
44 1 LCD_RS = 1;
45 1 delay_17us();
46 1 LCD_RW = 0;
47 1 delay_17us();
48 1 temp=ddata;
49 1 SFRPAGE=0x0f;
50 1 LCD_DATA = temp;
51 1 LCD_EN = 1;
52 1 delay_17us();
53 1 LCD_EN = 0;
54 1 delay_17us();
55 1 }
C51 COMPILER V8.02 TS12864A 03/29/2008 22:13:16 PAGE 2
56 /*===============================================================*/
57 /*写命令 */
58 /*===============================================================*/
59
60 void LCD_Write_Command(uchar command)
61 {
62 1 uchar temp=0;
63 1 LCD_Busy(); //检测是否处于忙的状态
64 1 LCD_RS = 0;
65 1 delay_17us();
66 1 LCD_RW = 0;
67 1 delay_17us();
68 1 temp=command;
69 1 SFRPAGE=0x0f;
70 1 LCD_DATA = temp;
71 1 LCD_EN = 1;
72 1 delay_17us();
73 1 LCD_EN = 0;
74 1 delay_17us();
75 1 }
76
77 void CleanScreen(void)
78 {
79 1 uchar i, j, k;
80 1
81 1 for (i=0;i<8;i++)
82 1 {
83 2 LCD_CSA = 1;
84 2 delay_17us();
85 2 LCD_CSB = 1;
86 2 delay_17us();
87 2 LCD_Write_Command(0x40); //设置列地址
88 2 delay_17us();
89 2 LCD_Write_Command(0xb8+i); //设置页地址
90 2 delay_17us();
91 2 LCD_CSA = 1;
92 2 delay_17us();
93 2 LCD_CSB = 0;
94 2 for(j=0;j<128;j++)
95 2 LCD_Write_Data(0x00);
96 2 delay_17us();
97 2 LCD_CSA = 0;
98 2 delay_17us();
99 2 LCD_CSB = 1;
100 2 delay_17us();
101 2 for(k=64;k<128;k++)
102 2 LCD_Write_Data(0x00);
103 2 delay_17us();
104 2 }
105 1 }
106
107 /*===============================================================*/
108 /* 清屏
109
110 y ------------------------------------------------------纵轴位置
111 yy------------按LCD显示4行字来计算,0,代表第一行,3,代表第四行;
112 mod---------------------------清屏方式,
113 0-------------------------------------------------------按行清屏;
114 1-------------------------------------------------------全部清屏;
115 */
116 /*===============================================================*/
117 /*void LCD_Cls_xy(uchar mod, uchar yy)
C51 COMPILER V8.02 TS12864A 03/29/2008 22:13:16 PAGE 3
118 {
119 uchar x, y;
120 uchar value_temp = 0;
121 value_temp = 2*yy;
122 switch(mod)
123 {
124 case 0: //按行清屏
125 {
126 for (y=value_temp;y<value_temp+1;y++)
127 for(x=0;x<128;x++)
128 Dis_Play(x,y,0);
129 }
130
131 case 1: //全部清屏
132 {
133 for (y=0;y<8;y++) //清屏
134 {
135 for(x=0;x<128;x++)
136 Dis_Play(x,y,0);
137 }
138
139 }
140 }
141
142 } */
143 /*===============================================================*/
144 /*设置x,y位置 */
145 /*===============================================================*/
146 void LCD_Set_xy(unsigned char x,unsigned char y)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -