📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 06/03/2005 14:38: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 #include <reg51.h>
2 #define LCD_PORT P0
3
4 sbit RS = P1^1;
5 sbit EN = P1^0;
6 sbit BF = P0^0;
7
8 LCD_Disp_Buf[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
9 int i;
10
11 #define uchar unsigned char
12 #define uint unsigned int
13
14 void Delay(unsigned int j);
15 void LCD_Display(void);
16 unsigned char Right_Shift(unsigned char datas);
17 void Wait_Until_Ready(void);
18 void En_Toggle(void);
19 void Write_Command(unsigned char command);
20 void Write_Data(unsigned char datas);
21 void Goto_Positionxy(unsigned char x, unsigned char y);
22 void LCD_clear(void);
23 void init_LCD(void);
24
25 main()
26 {
27 1 unsigned char i = 0;
28 1 init_LCD();
29 1 Delay(20000);
30 1 while(1);
31 1 {
32 2 LCD_Display();
33 2 Delay(20000);
34 2 }//end of while(1);
35 1 }//end of main()
36
37
38
39 void Delay(unsigned int j)
40 {
41 1 while(j-->0);
42 1 }
43
44
45 void LCD_Display(void)
46 {
47 1 Goto_Positionxy(0,0);
48 1 for(i = 0; i <= 15; i++)
49 1 {
50 2 Write_Data(LCD_Disp_Buf[i]);
51 2 }
52 1 Goto_Positionxy(0,1);
53 1 for(i = 0; i <= 15; i++)
54 1 {
55 2 Write_Data(LCD_Disp_Buf[i]);
C51 COMPILER V7.50 LCD 06/03/2005 14:38:11 PAGE 2
56 2 }
57 1 }
58
59
60 unsigned char Right_Shift(unsigned char datas)
61 {
62 1 unsigned char temp[8], temp1 = 0x00;
63 1 unsigned char i;
64 1 for(i = 0; i < 8; i++)
65 1 {
66 2 temp[i] = ((datas>>i)&0x01);
67 2 }
68 1 for(i = 0; i < 8; i++)
69 1 {
70 2 if(temp[i] == 0x01) temp1=((temp1 << 1) | 0x01);
71 2 else temp1 = (temp1 << 1);
72 2 }
73 1 return(temp1);
74 1 }
75
76
77 void Wait_Until_Ready(void)
78 {
79 1 RS = 0;
80 1 P0 = 0;
81 1 EN = 1;
82 1 Delay(10);
83 1 while(BF == 1);
84 1 EN = 0;
85 1 }
86
87 void En_Toggle(void)
88 {
89 1 EN = 1;
90 1 Delay(10);
91 1 EN = 0;
92 1 Delay(10);
93 1 }
94
95 void Write_Command(unsigned char command)
96 {
97 1 RS = 0;
98 1 P0 = Right_Shift(command);
99 1 En_Toggle();
100 1 Wait_Until_Ready();
101 1 Delay(1000);
102 1 }
103
104 void Write_Data(unsigned char datas)
105 {
106 1 RS = 1;
107 1 P0 = Right_Shift(datas);
108 1 En_Toggle();
109 1 Wait_Until_Ready();
110 1 Delay(1000);
111 1 }
112
113 void Goto_Positionxy(unsigned char x, unsigned char y)
114 {
115 1 unsigned char p;
116 1 if(y == 0)
117 1 {
C51 COMPILER V7.50 LCD 06/03/2005 14:38:11 PAGE 3
118 2 p = 0x80 + x - 1;
119 2 Write_Command(p);
120 2 }
121 1 else
122 1 {
123 2 if(y == 1)
124 2 {
125 3 p = 0xc0 + x - 1;
126 3 Write_Command(p);
127 3 }
128 2 else
129 2 {
130 3 return;
131 3 }
132 2 }
133 1 }
134
135 void LCD_clear(void)
136 {
137 1 Write_Command(0x01);
138 1 Delay(1000);
139 1 }
140
141
142 void init_LCD(void)
143 {
144 1 Write_Command(0x38);
145 1 Write_Command(0x36);
146 1 Write_Command(0x0C);
147 1 LCD_clear();
148 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 293 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 9
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 + -