📄 test_mobi2007.lst
字号:
C51 COMPILER V6.12 TEST_MOBI2007 11/01/2005 21:37:04 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE TEST_MOBI2007
OBJECT MODULE PLACED IN .\test_mobi2007.OBJ
COMPILER INVOKED BY: D:\2_soft\C51\BIN\C51.EXE .\test_mobi2007.C DEBUG OBJECTEXTEND
stmt level source
1 //液晶MOBI2007测试程序
2 /*******************************包含的头文件***********************************/
3 #include<at898252.h>
4 #include <intrins.h>
5 /**********************************宏定义**************************************/
6 #define uchar unsigned char
7 #define uint unsigned int
8 /*****************************端口声明******************************/
9 #define RESET P2_0
10 #define SID P2_1
11 #define SCLK P2_2
12 #define RS P2_3
13 //CS为片选
14 //PS为并口与串口的选择
15 /***************************全局变量的定义**************************/
16 uchar bdata command; //液晶控制字存储单元
17 uchar bdata display_data; //液晶显示数据存储单元
18 sbit control_bit=command^7;
19 sbit display_data_bit=display_data^7;
20 uchar page; //页面地址存储单元
21 uchar column; //列地址存储单元
22 uchar page_temp; //页面地址暂存单元
23 uchar column_temp; //列地址暂存单元
24 uchar data_indx;
25 uchar code data_ZIFU[16][8]={0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00,//"0"
26 0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00,//"1"
27 0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00,//"2"
28 0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00,//"3"
29 0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00,//"4"
30 0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,//"5"
31 0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00,//"6"
32 0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00,//"7"
33 0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,//"8"
34 0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00,//"9"
35 0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00,//"A"
36 0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00,//"B"
37 0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00,//"C"
38 0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00,//"D"
39 0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00,//"E"
40 0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00//"F"
41 };
42 uchar code data_HANZI[16][8]={
43 0x82,0x8A,0x92,0xB2,0x02,0xA7,0x92,0x5E,//蓬
44 0x2A,0xAF,0x2A,0x5A,0x4A,0x83,0x82,0x00,
45 0x00,0x80,0x40,0x3F,0x41,0x90,0x95,0x95,
46 0x95,0xFF,0x95,0x95,0x95,0xD0,0x40,0x00,
47 0x80,0x64,0x24,0x24,0x3F,0x24,0xA6,0x64,//勃
48 0x20,0x20,0xFF,0x20,0x20,0xF0,0x20,0x00,
49 0x00,0x08,0x49,0x89,0x7D,0x0B,0x89,0x40,
50 0x30,0x0E,0x41,0x80,0x40,0x3F,0x00,0x00,
51 0x40,0x42,0x44,0xCC,0x00,0x20,0x22,0xE2,//远
52 0x22,0x22,0xE2,0x23,0x32,0x20,0x00,0x00,
53 0x00,0x40,0x20,0x1F,0x20,0x50,0x4C,0x43,
54 0x40,0x40,0x47,0x48,0x48,0x6E,0x20,0x00,
55 0x20,0x20,0x20,0x20,0x20,0x20,0xD1,0x7F,//大
C51 COMPILER V6.12 TEST_MOBI2007 11/01/2005 21:37:04 PAGE 2
56 0xD1,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
57 0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
58 0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00
59 };
60 /****************************函数声明*******************************/
61 void delay_s(uint x); //延时x毫秒子函数
62 void LCD_init(void); //液晶初始化子函数
63 void LCD_order_write(void); //写控制字子函数
64 void LCD_data_write(void); //写数据子函数
65 void LCD_Clear(uchar display_data_temp);
66 void Display_ZIFU(void); //西文字符显示子函数
67 void Display_HANZI(void);
68 void main(void); //主函数
69 /*************************延时X毫秒函数*****************************/
70 //说明:实现功能:软件延时X毫秒
71 //输入:软件延时的时间:xms
72 //输出:无
73 void delay_s(uint x)
74 {
75 1 uint n;
76 1 while(x!=0)
77 1 {
78 2 for(n=0;n<125;n++) //一次延时1ms
79 2 {;}
80 2 x--;
81 2 }
82 1 }
83 /*************************液晶初始化子函数**************************/
84 //说明:完成对液晶的初始化
85 //输入:无
86 //输出:无
87 void LCD_init(void)
88 {
89 1 RESET=0; //复位液晶
90 1 delay_s(250); //延时250毫秒
91 1 RESET=1;
92 1 RS=0; //传送控制字模式
93 1 SID=0; //传送数据置为0
94 1 SCLK=0; //时钟置为低电平
95 1
96 1 command=0x0a3; //显示占空比设置(A2 1/8;A3 1/65DUTY)
97 1 LCD_order_write();
98 1
99 1 command=0x0a1; //ADC SELECT
100 1 LCD_order_write();
101 1
102 1 command=0x2f; //POWER CONTROL
103 1 LCD_order_write();
104 1
105 1 command=0x24; //VOLT REGULATOR RADIO SET
106 1 LCD_order_write();
107 1
108 1 command=0x81; //REFERENCE VOLT MODE set
109 1 LCD_order_write();
110 1
111 1 command=0x18; //REFERENCE VOLT REG set
112 1 LCD_order_write();
113 1
114 1 command=0x0c8; //列地址选择为右移方式
115 1 LCD_order_write();
116 1
117 1 command=0x0af; //显示打开
C51 COMPILER V6.12 TEST_MOBI2007 11/01/2005 21:37:04 PAGE 3
118 1 LCD_order_write();
119 1
120 1 command=0x40; //显示起始行设置
121 1 LCD_order_write();
122 1 }
123 /**********************写控制字子函数*******************************/
124 //说明:通过串行方式写液晶的命令字
125 //输入:无
126 //输出:无
127 void LCD_order_write(void)
128 {
129 1 uchar i;
130 1 RS=0; //传送命令字方式
131 1 for(i=0;i<8;i++)
132 1 {
133 2 SID=control_bit;//按位传送控制字
134 2 SCLK=0; //上升沿开始传送
135 2 delay_s(1);
136 2
137 2 SCLK=1;
138 2 command=command<<1;//命令字左移一位
139 2 }
140 1 SCLK=0;
141 1 }
142 /*************************写数据子函数******************************/
143 //说明:通过串行方式写液晶的显示数据
144 //输入:无
145 //输出:无
146 void LCD_data_write(void)
147 {
148 1 uchar i;
149 1 RS=1; //传送显示数据方式
150 1 for(i=0;i<8;i++)
151 1 {
152 2 SID=display_data_bit;//按位传送显示数据
153 2 SCLK=0; //上升沿开始传送
154 2 delay_s(1);
155 2
156 2 SCLK=1;
157 2 display_data=display_data<<1;//显示数据左移一位
158 2 }
159 1 SCLK=0;
160 1 }
161 /***********************液晶清屏子程序*****************************/
162 //说明:
163 //输入:无
164 //输出:无
165 void LCD_Clear(uchar display_data_temp)
166 {
167 1 uchar page_temp; //页面地址暂存单元
168 1 // uchar column_temp; //列地址暂存单元
169 1 uchar i;
170 1 uchar j;
171 1
172 1 for(j=0;j<8;j++)
173 1 {
174 2 page=j; //页面地址设置为j
175 2 page_temp=page|0x0b0; //"或"页面地址设置代码
176 2 command=page_temp;
177 2 LCD_order_write(); //设置页面地址
178 2
179 2 command=0x10; //列地址自动加1
C51 COMPILER V6.12 TEST_MOBI2007 11/01/2005 21:37:04 PAGE 4
180 2 LCD_order_write();
181 2 column=0x00; //列地址设置为"0"
182 2 command=column;
183 2 LCD_order_write(); //设置列地址
184 2
185 2 for(i=0;i<128;i++)
186 2 {
187 3 display_data=display_data_temp;
188 3 LCD_data_write();
189 3 }
190 2 }
191 1 }
192 /************************西文字符显示子函数************************/
193 //说明:
194 //输入:无
195 //输出:无
196 void Display_ZIFU(void)
197 {
198 1 uchar i;
199 1 // column=0;
200 1 // page=0;
201 1 uchar page_temp1; //页面地址暂存单元
202 1 uchar column_temp1; //列地址暂存单元
203 1
204 1 page_temp1=page_temp; //页面地址设置
205 1 page_temp1=page_temp1|0x0b0; //"或"页面地址设置代码
206 1 command=page_temp1;
207 1 LCD_order_write(); //设置页面地址
208 1
209 1 column_temp1=column_temp/16;
210 1 column_temp1=column_temp1+0x10;
211 1 command=column_temp1;
212 1 LCD_order_write(); //设置列地址高四位
213 1
214 1 column_temp1=column_temp&0x0f;
215 1 command=column_temp1;
216 1 LCD_order_write(); //设置列地址低四位
217 1
218 1 for(i=0;i<8;i++)
219 1 {
220 2 display_data=data_ZIFU[data_indx][i];
221 2 LCD_data_write();
222 2 }
223 1 }
224 /*********************汉字显示子函数*******************************/
225 //说明:
226 //输入:
227 //输出:
228 void Display_HANZI(void)
229 {
230 1 uchar i;
231 1
232 1 uchar page_temp1; //页面地址暂存单元
233 1 uchar column_temp1; //列地址暂存单元
234 1
235 1 page_temp1=page_temp; //页面地址设置
236 1 page_temp1=page_temp1|0x0b0; //"或"页面地址设置代码
237 1 command=page_temp1;
238 1 LCD_order_write(); //设置页面地址
239 1
240 1 column_temp1=column_temp/16;
241 1 column_temp1=column_temp1+0x10;
C51 COMPILER V6.12 TEST_MOBI2007 11/01/2005 21:37:04 PAGE 5
242 1 command=column_temp1;
243 1 LCD_order_write(); //设置列地址高四位
244 1
245 1 column_temp1=column_temp&0x0f;
246 1 command=column_temp1;
247 1 LCD_order_write(); //设置列地址低四位
248 1
249 1 for(i=0;i<8;i++)
250 1 {
251 2 display_data=data_HANZI[data_indx][i];
252 2 LCD_data_write();
253 2 }
254 1 }
255 /***************************主函数*********************************/
256 //说明:
257 //输入:无
258 //输出:无
259 void main(void)
260 {
261 1 uchar i;
262 1 uchar j;
263 1 uchar m;
264 1
265 1 LCD_init(); //液晶初始化
266 1 LCD_Clear(0x55);
267 1 LCD_Clear(0x00); //液晶清屏
268 1
269 1 for(i=0;i<8;i++) //显示西文字符
270 1 {
271 2 for(j=0;j<16;j++)
272 2 {
273 3 page_temp=i; //设置页面地址
274 3 column_temp=8*j;//设置列地址
275 3 data_indx=j;
276 3 Display_ZIFU(); //显示西文字符
277 3 }
278 2 }
279 1 LCD_Clear(0x00); //液晶清屏
280 1
281 1 for(i=0;i<4;i++) //显示汉字
282 1 {
283 2 m=i*4;
284 2 for(j=0;j<4;j++)
285 2 {
286 3 if(j<2)
287 3 {
288 4 page_temp=0x04; //设置页面地址
289 4 column_temp=8*(j+4)+i*16;//设置列地址
290 4 }
291 3 else
292 3 {
293 4 page_temp=0x05; //设置页面地址
294 4 column_temp=8*(j+4-2)+i*16;
295 4 }
296 3 data_indx=m+j;
297 3 Display_HANZI(); //显示西文字符
298 3 }
299 2 }
300 1 while(1);
301 1 }
C51 COMPILER V6.12 TEST_MOBI2007 11/01/2005 21:37:04 PAGE 6
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 448 ----
CONSTANT SIZE = 256 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 3
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 + -