📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 11/24/2007 10:17:11 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //-----------------------------------------------------------------------------
2 //程序描述:
3 // 这个程序可以在该液晶模块上显示字符:" BT F020 V1.0 www.xhl.com.cn"
4 // 此程序用4位数据线来驱动液晶
5 // 液晶接线方法 :1脚接地;2脚接+5V;3脚通过1个10K电阻接+5v,通过1个430欧电阻接地;
6 // 15脚接地;16脚通过1个15R电阻接+5v。液晶别的引脚直接接相应的数据或控制信号线。
7 //作者:ZDP
8 //时间:2005-11-30
9 //版本:V1.0
10 //-----------------------------------------------------------------------------
11 // 头文件包含
12 //-----------------------------------------------------------------------------
13 #include <c8051f020.h>
14
15 //-----------------------------------------------------------------------------
16 //全局变量定义
17 //-----------------------------------------------------------------------------
18 #define sysclk 22118400
19 unsigned char kc;
20 unsigned long x; //"www.xhl.com.cn"
21 unsigned char code Netdata[]={" www.xhl.com.cn "
22 " BT F020 V1.0 "
23 };
24 //0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,
25 // 0x6d,0x2e,0x63,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,
26 // 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
27 // 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
-
28
29 //" BT F020 V1.0 "
30 //unsigned char xdata NCDdata[40]={0x20,0x20,0x42,0x54,0x20,0x46,0x30,0x32,0x30,0x20,
31 // 0x56,0x31,0x2e,0x30,0x20,0x20,0x20,0x20,0x20,0x20,
32 // 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
33 // 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
34
35 //unsigned char *lcdpoint; //指向 lcddata数组的指针
36
37 //-----------------------------------------------------------------------------
38 // 函数定义
39 //-----------------------------------------------------------------------------
40 void SYSCLK_Init (void);
41 void PORT_Init (void);
42 void LCD_Init(void);
43 void delayms(unsigned int ms);
44 //-----------------------------------------------------------------------------
45 // 主程序
46 //-----------------------------------------------------------------------------
47 void main (void)
48 {unsigned int i;
49 1 static unsigned char data1;
50 1 WDTCN = 0xde;
51 1 WDTCN = 0xad; //禁止看门狗定时器
52 1
53 1 PORT_Init (); // 交叉开关和通用I/O口初始化
54 1 kc=0;
C51 COMPILER V7.50 LCD 11/24/2007 10:17:11 PAGE 2
55 1 P2=0x00;
56 1 P3=0x00;
57 1 EA = 0;
58 1 while(1){
59 2 SYSCLK_Init (); // 系统时钟初始化
60 2 delayms(5000);
61 2 if(kc==1)
62 2 { LCD_Init();//LCD初始化
63 3 P2 = 0x00;
64 3 P3 = 0x80;
65 3 P2 = 0x80;
66 3 for(x=0;x<1000;x++);
67 3 P2 = 0x00;
68 3 for(x=0;x<1000;x++);
69 3
70 3 P2 = 0x20; //准备送数据
71 3 for(x=0;x<1000;x++);
72 3 for(i=0;i<40;i++)//显示第一行字符
73 3 {
74 4 data1=*((Netdata+i));
75 4 P3 = data1;
76 4 //-----------------------------------------------------
77 4 P2 = 0xA0; /*原来的LCD程序*/
78 4 P2 = 0x20;
79 4 //-----------------------------------------------------
80 4 // P2 = 0xA0; //修改后的LCD程序
81 4 // P2 = 0x20;
82 4 //------------------------------------------------------/
83 4 // lcdpoint++;
84 4 for(x=0;x<1000;x++);
85 4 }
86 3 P2=0x00;
87 3 P3 = 0xc0;
88 3 P2 = 0x80;
89 3 for(x=0;x<1000;x++);
90 3 P2 = 0x00;
91 3 for(x=0;x<1000;x++);
92 3
93 3
94 3 P2 = 0x20;
95 3 //lcdpoint1=Netdata; //取地址
96 3 for(i=0;i<40;i++)//显示第一行字符
97 3 {
98 4 data1=*((Netdata+i+40)); //读出数据
99 4 P3 = data1; //写数据到端口
100 4 P2 = 0xA0; //修改后的LCD程序
101 4 for(x=0;x<1000;x++);
102 4 P2 = 0x20;
103 4 //lcdpoint1++;
104 4 for(x=0;x<1000;x++);
105 4 }
106 3 kc=0;
107 3
108 3 }
109 2
110 2 }
111 1 }
112
113 //-----------------------------------------------------------------------------
114 //函数名称: SYSCLK_Init ()
115 //函数功能: 系统时钟初始化
116 //入口参数: 无
C51 COMPILER V7.50 LCD 11/24/2007 10:17:11 PAGE 3
117 //出口参数: 无
118 //全局变量引用: 无
119 //调用模块: 无
120 //-----------------------------------------------------------------------------
121 //
122
123 void SYSCLK_Init (void)
124 {
125 1 int i; // delay counter
126 1
127 1 OSCXCN = 0x67; // start external oscillator with
128 1 // 22.1184MHz crystal
129 1
130 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
131 1
132 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
133 1
134 1 OSCICN = 0x88;
135 1
136 1 //OSCICN = 0x05; // 系统时钟初始化为片内的 24.5MHz / 8
-
137 1 }
138
139 //-----------------------------------------------------------------------------
140 //函数名称: PORT_Init ()
141 //函数功能: 通用I/O口及交叉开关初始化
142 //入口参数: 无
143 //出口参数: 无
144 //全局变量引用: 无
145 //调用模块: 无
146 //-----------------------------------------------------------------------------
147
148 void PORT_Init (void)
149 {
150 1
151 1 XBR0 = 0x00; // 没有选择数字外设
152 1 XBR2 = 0x40;
153 1 P2MDOUT = 0xe0; // P2口设为推挽方式
154 1 }
155 //-----------------------------------------------------------------------------
156 //函数名称: LCD_Init ()
157 //函数功能: LCD初始化
158 //入口参数: 无
159 //出口参数: 无
160 //全局变量引用: 无
161 //调用模块: 无
162 //-----------------------------------------------------------------------------
163 void LCD_Init(void)
164 {
165 1 for(x=0;x<50000;x++);
166 1 //P7 = 0x30; /*一行显示*/
167 1
168 1 P2=0x00;
169 1 P3 = 0x38; /*两行显示*/
170 1 P2 = 0X80;
171 1 for(x=0;x<1000;x++);
172 1 P2 = 0X00;//0x08;
173 1 for(x=0;x<1000;x++);
174 1
175 1 P2=0x00;
176 1 P3 = 0x04; //显示开,光标开;不闪
177 1 P2 = 0X80;//0x09;
C51 COMPILER V7.50 LCD 11/24/2007 10:17:11 PAGE 4
178 1 for(x=0;x<1000;x++);
179 1 P2 = 0x00;
180 1 for(x=0;x<1000;x++);
181 1
182 1 P2 = 0x00;
183 1 P3= 0x0c; //增量方式,现不移动
184 1 P2 = 0x80;
185 1 for(x=0;x<1000;x++);
186 1 P2 = 0x00;
187 1 for(x=0;x<1000;x++);
188 1
189 1 P2 = 0x00;
190 1 P3 = 0x01;// 清屏
191 1 P2 = 0x80;
192 1 for(x=0;x<5000;x++);
193 1 P2 = 0x00;
194 1 for(x=0;x<1000;x++);
195 1
196 1 P2 = 0x80;
197 1 OSCICN = 0x05;
198 1 for(x=0;x<5000;x++);
199 1 }
200 void delayms(unsigned int ms)
201 {int i; // 毫秒计数器
202 1 for (i = 0; i < ms; i++) { // 数毫秒
203 2 TR0 = 0; // 停定时器T0
204 2 TH0 = (-sysclk/1000) >> 8; // 设置定时器T0 1ms溢出
205 2 TL0 = -sysclk/1000;
206 2 TR0 = 1; // 启动定时器T0
207 2 while (TF0 == 0); // 等待溢出
208 2 TF0 = 0; // 清除溢出标志
209 2 kc=1;
210 2 }
211 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1216 ----
CONSTANT SIZE = 81 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 2
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 + -