📄 text1.lst
字号:
C51 COMPILER V7.06 TEXT1 12/17/2008 10:18:35 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN .\Text1.obj
COMPILER INVOKED BY: F:\Hardware Develop\Develop Tools\Keil uVision v2.0\KEIL\C51\BIN\C51.EXE C:\Documents and Settings\
-Administrator\桌面\Text1.C BROWSE DEBUG OBJECTEXTEND PRINT(.\Text1.lst) OBJECT(.\Text1.obj)
stmt level source
1 //带中文字库的12864LCD显示程序
2 #include <reg52.H>
3 #include <intrins.H>
4 #define uchar unsigned char
5 #define uint unsigned int
6 //SCM12864-05端口定义
7 #define LCD_DATA P1 //数据口
8 sbit RS = P3^2; //并行的指令/数据选择信号, H数据, L命令
9 sbit RW = P3^3; //并行读写选择信号, H读, L写
10 sbit E = P3^4; //并行使能端, H有效, L无效
11 sbit PSB = P3^5; //并/串接口选择, H并,L串
12 sbit RET = P3^6; //复位, L有效
13 uchar code datas1[] = {" 平板显示 "};
14 uchar code datas2[] = {" 机电工程学院 "};
15 uchar code datas3[] = {"05电子科学与技术"};
16 uchar code datas4[] = {" 张敏 051203082 "};
17 //延时约2us
18 void delayUs()
19 {
20 1 _nop_();_nop_();
21 1 }
22 //延时 a * 1ms
23 void delayMs(uint a)
24 {
25 1 uint i, j;
26 1 for(i = a; i > 0; i--)
27 1 for(j = 100; j > 0; j--);
28 1 }
29 //检测LCD是否处于忙状态, 若忙返回1, 空闲返回0
30 bit checkBusy()
31 {
32 1 bit busy;
33 1 RS = 0;
34 1 RW = 1;
35 1 E = 1;
36 1 delayUs();
37 1 busy = (bit)(LCD_DATA&0x80);
38 1 E = 0;
39 1 return busy;
40 1 }
41
42
43
44 //等待LCD到空闲
45 void wait()
46 {
47 1 while(checkBusy());
48 1 }
49 //写命令
50 void writeCmd(uchar cmd)
51 {
52 1 wait();
53 1 RS = 0;
54 1 RW = 0;
C51 COMPILER V7.06 TEXT1 12/17/2008 10:18:35 PAGE 2
55 1 E = 0;
56 1 delayUs();
57 1 LCD_DATA = cmd;
58 1 delayUs();
59 1 E = 1;
60 1 delayUs();
61 1 E = 0;
62 1 }
63 //写数据
64 void writeData(uchar dat)
65 {
66 1 wait();
67 1 RS = 1;
68 1 RW = 0;
69 1 E = 0;
70 1 delayUs();
71 1 LCD_DATA = dat;
72 1 delayUs();
73 1 E = 1;
74 1 delayUs();
75 1 E = 0;
76 1 }
77 //初始化LCD
78 void init()
79 {
80 1 PSB = 1; //并口方式
81 1 writeCmd(0x30); //基本指令, 扩充指令为34H
82 1 delayMs(10);
83 1 writeCmd(0x0c); //显示开, 关光标
84 1 delayMs(10);
85 1
86 1
87 1
88 1 writeCmd(0x01); //清屏
89 1 delayMs(10);
90 1 }
91 void setPosition(uchar x, uchar y)
92 {
93 1 uchar p;
94 1 switch(x%4)
95 1 {
96 2 case 0: p = 0x80; break; //第一行开始地址
97 2 case 1: p = 0x90; break; //第二行
98 2 case 2: p = 0x88; break; //第三行
99 2 case 3: p = 0x98; break; //第四行
100 2 }
101 1 p += y;
102 1 writeCmd(p);
103 1 }
104 void writeString(uchar * str)
105 {
106 1 uchar i = 0;
107 1 while(str[i] != '\0')
108 1 {
109 2 writeData(str[i++]);
110 2 }
111 1 }
112 /**********************LCD12864*****************************/
113 void main()
114 {
115 1 init();
116 1 setPosition(0, 0);
C51 COMPILER V7.06 TEXT1 12/17/2008 10:18:35 PAGE 3
117 1 writeString(datas1);
118 1 setPosition(1, 0);
119 1 writeString(datas2);
120 1 setPosition(2, 0);
121 1 writeString(datas3);
122 1 setPosition(3, 0);
123 1 writeString(datas4);
124 1 while(1);
125 1 }
126
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 272 ----
CONSTANT SIZE = 68 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -