📄 disp.lst
字号:
C51 COMPILER V7.50 DISP 12/15/2008 13:48:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN Disp.OBJ
COMPILER INVOKED BY: D:\proteus&keil\keil\C51\BIN\C51.EXE Disp.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 ****************************************************
3
4 显示
5
6 ****************************************************
7 */
8
9 #include <reg52.H>
10 #include "Typedef.H"
11 #include "UserDef.H"
12 #include "Disp.h"
13 #include "Font.H"
14
15
16 /* 端口定义 */
17 #define DISPDATAPORT P0 //数据端口
18 sbit Pin_CS1 = P1^0; //片选
19 sbit Pin_CS2 = P1^1; //片选
20 sbit Pin_RS = P1^4; //指令、数据选择(0=指令;1=数据)
21 sbit Pin_RW = P3^6; //读写选择(0=写,1=读)
22 sbit Pin_E = P1^2; //锁存(下降沿有效)
23 sbit Pin_RST = P1^3; //锁存(下降沿有效)
24
25
26 /* 全局变量 */
27 static INT8U CurRow = 0; //当前行
28 static INT8U CurCol = 0; //当前列
29 static INT8U CurFont = 0; //当前英文字体
30
31 /***************************************
32 LCD忙等待
33 ****************************************/
34 void Busy(void)
35 {
36 1 INT8U bf;
37 1
38 1 Pin_E = 0;
39 1 DISPDATAPORT = 0xFF; //使端口为输入状态
40 1 Pin_RW = 1; //读
41 1 Pin_RS = 0; //指令
42 1
43 1 while (1)
44 1 {
45 2 Pin_E = 1;
46 2 bf = DISPDATAPORT;
47 2 Pin_E = 0;
48 2 if ((bf & 0x80) == 0)
49 2 break;
50 2 }
51 1 }
52
53 /***************************************
54 LCD数据写
55 ****************************************/
C51 COMPILER V7.50 DISP 12/15/2008 13:48:56 PAGE 2
56 void LCD_Data(INT8U Data)
57 {
58 1 Busy();
59 1
60 1 Pin_E = 0;
61 1 Pin_RW = 0; //写
62 1 Pin_RS = 1; //数据
63 1
64 1 Pin_E = 1;
65 1
66 1 DISPDATAPORT = Data;
67 1
68 1 Pin_E = 0;
69 1 }
70
71 /***************************************
72
73 LCD命令写
74
75 ****************************************/
76 void LCD_Cmd(INT8U cmd)
77 {
78 1 Busy();
79 1
80 1 Pin_E = 0;
81 1 Pin_RW = 0; //写
82 1 Pin_RS = 0; //指令
83 1
84 1 Pin_E = 1;
85 1
86 1 DISPDATAPORT = cmd;
87 1
88 1 Pin_E = 0;
89 1 }
90
91 /***************************************
92
93 显示图案
94
95 ****************************************/
96 void LCD_Disp_Pattern(INT8U img,INT8U len)
97 {
98 1 INT8U col;
99 1
100 1 col = CurCol;
101 1 if (col<64)
102 1 Pin_CS1 = 1;
103 1 else
104 1 {
105 2 col -= 64;
106 2 Pin_CS2 = 1;
107 2 }
108 1
109 1 LCD_Cmd(0xB8|CurRow);
110 1 LCD_Cmd(0x40|col);
111 1
112 1 while (len != 0)
113 1 {
114 2 LCD_Data(img);
115 2 len --;
116 2 col ++;
117 2 CurCol ++;
C51 COMPILER V7.50 DISP 12/15/2008 13:48:56 PAGE 3
118 2 if (col>=64)
119 2 {
120 3 Pin_CS1 = 0;
121 3 Pin_CS2 = 1;
122 3 LCD_Cmd(0xB8|CurRow);
123 3 LCD_Cmd(0x40|0);
124 3 col -= 64;
125 3 }
126 2 }
127 1 Pin_CS1 = 0;
128 1 Pin_CS2 = 0;
129 1 }
130
131
132 /***************************************
133
134 显示图片
135
136 ****************************************/
137 void LCD_Disp_Pic(INT8U * img,INT8U len)
138 {
139 1 INT8U col;
140 1
141 1 col =CurCol;
142 1
143 1 if (col<64)
144 1 Pin_CS1 = 1;
145 1 else
146 1 {
147 2 col -= 64;
148 2 Pin_CS2 = 1;
149 2 }
150 1 LCD_Cmd(0xB8|CurRow);
151 1 LCD_Cmd(0x40|col);
152 1
153 1 do
154 1 {
155 2 LCD_Data(*img);
156 2 len --;
157 2 col ++;
158 2 CurCol ++;
159 2 img ++;
160 2 if (col>=64)
161 2 {
162 3 Pin_CS1 = 0;
163 3 Pin_CS2 = 1;
164 3 LCD_Cmd(0xB8|CurRow);
165 3 LCD_Cmd(0x40|0);
166 3 col -= 64;
167 3 }
168 2 }while (len != 0);
169 1 Pin_CS1 = 0;
170 1 Pin_CS2 = 0;
171 1 }
172
173
174
175 /***************************************
176
177 获取整数的长度
178
179 ****************************************/
C51 COMPILER V7.50 DISP 12/15/2008 13:48:56 PAGE 4
180 static INT8U GetIntLen(INT32U val)
181 {
182 1 INT8U len;
183 1
184 1 len = 0;
185 1 while (val != 0)
186 1 {
187 2 val /= 10;
188 2 len ++;
189 2 }
190 1
191 1 if (len == 0)
192 1 len = 1;
193 1
194 1 return len;
195 1 }
196
197
198
199 /***************************************
200
201 显示一个整数
202 入口参数:整数数值,长度
203
204 ****************************************/
205 void DispInt(INT32U val,INT8U len)
206 {
207 1 INT32U n = 1;
208 1 INT8U i;
209 1
210 1 for (i=1;i<len;i++)
211 1 n *= 10;
212 1
213 1 for (i=0;i<len;i++)
214 1 {
215 2 DispChr(val/n +'0');
216 2 val %= n;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -