📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 03/30/2009 21:11:18 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 #include <reg51.h>
2
3 sbit LCD_RS=P0^5;
4 sbit LCD_RW=P0^6;
5 sbit LCD_E=P0^7;
6 #define LCD_Data P2
7 #define Busy 0x80
8
9 void delay_ms(unsigned char n)
10 {
11 1 unsigned int i=0,j=0;
12 1 for (i=n;i>0;i--)
13 1 for (j=498;j>0;j--);
14 1 }
15
16
17 /****************************************************************************
18 * 名称:ChkBusy()
19 * 功能:检查总线是否忙
20 ****************************************************************************/
21 void ChkBusy()
22 {
23 1 LCD_Data = 0xFF;
24 1 while(1)
25 1 {
26 2 LCD_RS=0;
27 2 LCD_RW=1;
28 2 LCD_E=1;
29 2 if(!(LCD_Data & Busy))break;
30 2 LCD_E=0;
31 2 }
32 1 }
33
34 /****************************************************************************
35 * 名称:WriteCommandLCD()
36 * 功能:写命令函数
37 ****************************************************************************/
38 void WriteCommandLCD(unsigned char dat)
39 {
40 1 ChkBusy();
41 1 LCD_RS=0; //全部清零
42 1 LCD_RW=0;
43 1 LCD_E=1;
44 1 LCD_Data=dat; //再送数
45 1 LCD_E=0;
46 1 }
47 /****************************************************************************
48 * 名称:WriteDataLCD()
49 * 功能:写数据函数
50 ****************************************************************************/
51 void WriteDataLCD(unsigned char dat)
52 {
53 1 ChkBusy();
54 1 LCD_RS=1;
55 1 LCD_RW=0;
C51 COMPILER V7.50 LCD 03/30/2009 21:11:18 PAGE 2
56 1 LCD_E=1;
57 1 LCD_Data=dat; //再送数
58 1 LCD_E=0;
59 1 }
60 /****************************************************************************
61 * 名称:lcd_init()
62 * 功能:lcd初始化函数
63 ****************************************************************************/
64 void lcd_init(void)
65 {
66 1 WriteCommandLCD(0x38);
67 1 WriteCommandLCD(0x0c); //开显示
68 1 WriteCommandLCD(0x80);
69 1 WriteCommandLCD(0x01);
70 1 delay_ms(100);
71 1 }
72
73
74
75
76
77 /****************************************************************************
78 * //按指定位置显示一个字符
79 ****************************************************************************/
80
81 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
82 {
83 1 Y &= 0x1;
84 1 X &= 0xF; //限制X不能大于15,Y不能大于1
85 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
86 1 X |= 0x80; //算出指令码
87 1 WriteCommandLCD(X); //发送地址码
88 1 WriteDataLCD(DData);
89 1 }
90
91 /****************************************************************************
92 * 名称:DisText()
93 * 功能:显示文本函数
94 ****************************************************************************/
95 void DisText(unsigned char X, unsigned char Y,unsigned char *p)
96 {
97 1 Y &= 0x1;
98 1 X &= 0xF; //限制X不能大于15,Y不能大于1
99 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
100 1 X |= 0x80; //算出指令码
101 1 WriteCommandLCD(X); //发送地址码
102 1 while(*p)
103 1 {
104 2 LCD_Data = *p;
105 2 WriteDataLCD(*p);
106 2 p++;
107 2 }
108 1 }
109
110
111 void main(viod)
112 {
113 1 lcd_init();
114 1
115 1
116 1 DisplayOneChar( 0,1,0x31) ;
117 1 DisplayOneChar( 1,1,0x32) ;
C51 COMPILER V7.50 LCD 03/30/2009 21:11:18 PAGE 3
118 1 DisplayOneChar( 2,1,0x33) ;
119 1 DisText( 0,0,"zhangxiaoxu") ;
120 1
121 1 while(1) ;
122 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 220 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 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 + -