📄 lcd1602.lst
字号:
C51 COMPILER V7.09 LCD1602 04/28/2006 14:49:32 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN LCD1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD1602.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************
2 * 文件名称: LCD1602.C
3 * 功能描述:
4 ********************************************************/
5
6 #include<reg51.h>
7 #include<intrins.h>
8 //引脚定义
9 sbit RSPIN = P1^5;
10 sbit RWPIN = P1^6;
11 sbit EPIN = P1^7;
12
13 unsigned char XPOS,YPOS;
14 unsigned char DisTab1[] = "TD-NMC+ Xi'an Tang Du Crop. ";
15 unsigned char DisTab2[] = "www.tangdu.com 029-88375025 ";
16
17 void delay(unsigned int t)
18 { unsigned int i,j;
19 1 for(i=0;i<t;i++)
20 1 for(j=0;j<10;j++);
21 1 }
22
23 void lcdwaitidle(void) //忙状态判别
24 { P0=0xff;
25 1 RSPIN=0;
26 1 RWPIN=1;
27 1 EPIN=1;
28 1 while((P0&0x80)==0x80); //读取忙标志BF, 判为1否, 为1等待
29 1 EPIN=0;
30 1 }
31
32 void lcdwcn(unsigned char c) //写指令c
33 { RSPIN=0;
34 1 RWPIN=0;
35 1 P0=c;
36 1 EPIN=1;
37 1 _nop_();
38 1 EPIN=0;
39 1 }
40
41 void lcdwc(unsigned char c) //查询忙标志, 然后写指令c
42 { lcdwaitidle();
43 1 lcdwcn(c);
44 1 }
45
46 void lcdwd(unsigned char d) //查询忙标志, 然后写数据d
47 { lcdwaitidle();
48 1 RSPIN=1;
49 1 RWPIN=0;
50 1 P0=d;
51 1 EPIN=1;
52 1 _nop_();
53 1 EPIN=0;
54 1 }
55
C51 COMPILER V7.09 LCD1602 04/28/2006 14:49:32 PAGE 2
56 void lcdpos(void)
57 {
58 1 XPOS&=0x3f;
59 1 YPOS&=0x03;
60 1 if(YPOS==0x00)
61 1 lcdwc(XPOS|0x80); //DDRAM地址设置(第1行)
62 1 else if(YPOS==0x01)
63 1 lcdwc((XPOS+0x40)|0x80); //DDRAM地址设置(第2行)
64 1 }
65
66 void lcdinit(void) //LCD初始化
67 { delay(150); lcdwcn(0x38); //总线8位, 两行显示, 5*7点阵字符体
68 1 delay(50); lcdwcn(0x38);
69 1 delay(50); lcdwcn(0x38);
70 1 lcdwc(0x38);
71 1 lcdwc(0x08); //关闭显示, 光标消失, 闪烁禁止
72 1 lcdwc(0x01); //清屏
73 1 lcdwc(0x06); //AC加1计数, 禁止滚动
74 1 lcdwc(0x0e); //开显示
75 1 }
76
77 void Display(void) // 显示子程序
78 {
79 1 for(XPOS=0; XPOS<16; XPOS++)
80 1 {
81 2 YPOS=0; lcdpos(); lcdwd(DisTab1[XPOS]);
82 2 YPOS=1; lcdpos(); lcdwd(DisTab2[XPOS]);
83 2 delay(2000);
84 2 }
85 1 for(XPOS=16; XPOS<30; XPOS++)
86 1 {
87 2 lcdwc(0x18); // 滚屏
88 2 YPOS=0; lcdpos(); lcdwd(DisTab1[XPOS]);
89 2 YPOS=1; lcdpos(); lcdwd(DisTab2[XPOS]);
90 2 delay(2000);
91 2 }
92 1 }
93
94 void main(void)
95 {
96 1 EPIN=0;
97 1 lcdinit();
98 1 while(1)
99 1 {
100 2 lcdwc(0x01);
101 2 lcdwc(0x02);
102 2 Display();
103 2 delay(5000);
104 2 }
105 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 260 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 74 ----
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 + -