📄 text1.lst
字号:
C51 COMPILER V8.08 TEXT1 10/31/2008 13:44:40 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\anzhuagweizhi\Uision\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************************
2 TCM12864J液晶显示屏驱动程序
3 驱动芯片:KS0107
4 MCU:AT89S52
5
6 日期:08-09-05
7
8 P11--RS RS=1,表示DB7~DB0 为显示数据
9 RS=0”,表示DB7~DB0 为显示指令数据
10 P12--RW R/W=1”,E=“H”,数据被读到DB7~DB0
11 R/W=0”,E=“H→L”, DB7~DB0 的数据被写到IR 或DR
12 P13--E 使能信号: R/W=“L”,E 信号下降沿锁存DB7~DB0
13 R/W=“H”,E=“H” DRAM数据读到DB7~DB0
14 P14--CSA H:选择芯片(右半屏)信号
15 P15--CSB H:选择芯片(左半屏)信号
16 P0---DB0~7
17 ***********************************************/
18
19 #include <reg51.h>
20 #include <absacc.h>
21 #include <intrins.h>
22 #include <stdio.h>
23
24 sbit P0_0 = P0^0;
25 sbit P0_1= P0^1;
26 sbit P0_2 = P0^2;
27 sbit P0_3 = P0^3;
28 sbit P0_4 = P0^4;
29 sbit P0_5 = P0^5;
30 sbit P0_6 = P0^6;
31 sbit P0_7 = P0^7;
32
33
34 sbit p_RS = P1^1;
35 sbit p_RW = P1^2;
36 sbit p_E = P1^3;
37 sbit p_CSA = P1^4;
38 sbit p_CSB = P1^5;
39 sbit EOC = P1^0;
40 sbit ST = P2^6;
41 sbit OE = P2^7;
42 unsigned char ad_value;
43 unsigned char data_value;
44 #define DATA P3
45
46
47
48 void DelayMs(unsigned int count1);
49 void lcd_busy(void);
50 void lcd_init(void);
51 void lcd_setxy(unsigned char x,unsigned char y);
52 unsigned char lcd_AD(void) ;
53
54
55 void lcd_clear(void);
C51 COMPILER V8.08 TEXT1 10/31/2008 13:44:40 PAGE 2
56 void lcd_writepoint(unsigned char i,unsigned char j);
57 unsigned char lcd_readdata(unsigned char x,unsigned char y);
58
59 void main(void) //主函数
60 {
61 1 int y=0;
62 1 unsigned char data1,data2;
63 1
64 1 lcd_init();
65 1 lcd_clear();
66 1
67 1 while(1)
68 1 {
69 2 lcd_AD();
70 2 {
71 3 ad_value=0x00;
72 3 if(data_value&0x80) ad_value=ad_value+0x01;
73 3 if(data_value&0x40) ad_value=ad_value+0x02;
74 3 if(data_value&0x20) ad_value=ad_value+0x04;
75 3 if(data_value&0x10) ad_value=ad_value+0x08;
76 3 if(data_value&0x08) ad_value=ad_value+0x10;
77 3 if(data_value&0x04) ad_value=ad_value+0x20;
78 3 if(data_value&0x02) ad_value=ad_value+0x40;
79 3 if(data_value&0x01) ad_value=ad_value+0x80;
80 3 }
81 2
82 2 data1= ad_value;
83 2
84 2 data2=data1>>2;
85 2 lcd_writepoint(data2,y);
86 2 DelayMs(25) ;
87 2 y++;
88 2
89 2 if(y>=128) { lcd_clear(); y=0; }
90 2
91 2
92 2
93 2 }
94 1
95 1 }
96
97 /*******************延迟***************/
98
99 void DelayMs(unsigned int count1)
100 {
101 1 while (count1--)
102 1 {
103 2 unsigned char count2 = 0;
104 2 for (; count2<30; count2++);
105 2 }
106 1 }
107 /**************************************AD转换函数******************/
108
109
110
111
112 unsigned char lcd_AD(void)
113 {
114 1 unsigned char data_AD;
115 1
116 1 P2 = 0xc2;
117 1 ST=0;
C51 COMPILER V8.08 TEXT1 10/31/2008 13:44:40 PAGE 3
118 1
119 1
120 1 ST=1;
121 1 ST=0;
122 1
123 1 while(EOC ==0) ;
124 1 OE=1;
125 1 data_value=P0;
126 1
127 1 _nop_();
128 1 _nop_();
129 1 _nop_();
130 1
131 1 _nop_();
132 1 OE=0;
133 1 return data_value;
134 1
135 1 }
*** WARNING C280 IN LINE 114 OF TEXT1.C: 'data_AD': unreferenced local variable
136 /***********************************************
137 查询LCD是否忙碌,如果忙碌,则等待,直到不忙碌,
138 跳出该函数,顺序执行下面程序
139 ************************************************/
140 void lcd_busy(void)
141 {
142 1 p_RS=0; //CMD
143 1 p_RW=1; //READ
144 1 while(1)
145 1 {
146 2 p_E=1;
147 2 if(DATA<0x80)break; //BUSY(DB7) = 0
148 2 p_E=0;
149 2 }
150 1 p_E=0;
151 1 }
152
153 /**********************************************
154 初始化
155 ***********************************************/
156 void lcd_init(void)
157 {
158 1 //开显示
159 1 p_RS=0; //CMD
160 1 p_RW=0; //Write
161 1 DATA=0x3f; //Display ON
162 1
163 1 p_CSA=1;
164 1 p_CSB=0;
165 1
166 1 p_E=1;
167 1 p_E=0;
168 1
169 1 p_CSA=0;
170 1 p_CSB=1;
171 1
172 1 p_E=1;
173 1 p_E=0;
174 1
175 1 //0行显示
176 1 lcd_busy();
177 1
178 1 //P15=0;
C51 COMPILER V8.08 TEXT1 10/31/2008 13:44:40 PAGE 4
179 1
180 1 DATA=0xc0; //0行开始
181 1
182 1 p_CSA=1;
183 1 p_CSB=0;
184 1
185 1 p_E=1;
186 1 p_E=0;
187 1
188 1 p_CSA=0;
189 1 p_CSB=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -