📄 lcd.lst
字号:
C51 COMPILER V7.06 LCD 09/06/2007 17:33:49 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <at89x51.h>
2 #include <lcd.h>
3 char code int2charLCD[]="0123456789";//感觉code不用的
4 void write_LCD_command(unsigned command)
5 {
6 1 rw=WRITE;
7 1 rs=COMMAND;
8 1 enable=ENABLE;
9 1 P1=command;
10 1 delay100us(20);
11 1 enable=DISABLE;
12 1 rw=1;
13 1 }
14 void write_LCD_data(unsigned LCDdata)
15 {
16 1 rw=WRITE;
17 1 rs=DATA;
18 1 enable=ENABLE;
19 1 P1=LCDdata;//不管输入什么,他直接编译成二进制
20 1 delay100us(20);
21 1 enable=DISABLE;
22 1 rw=1;
23 1 }
24 void init_LCD(void)
25 {
26 1 write_LCD_command(TwoLine_8bit); //0x38
27 1 write_LCD_command(CURSOR_ON); //0x0C
28 1 write_LCD_command(CURSOR_RIGHT); //0x06
29 1 }
30 void clear_LCD()
31 {
32 1 write_LCD_command(CLEAR);
33 1 write_LCD_command(CURSOR_HOME);
34 1 }
35 void display_LCD_string(char *p)
36 {
37 1 while(*p)
38 1 {
39 2 write_LCD_data(*p);
40 2 p++;
41 2 }
42 1 }
43 void display_LCD_number(char number)
44 {
45 1 unsigned char x,y;
46 1 x=number/10;
47 1 y=number-10*x;
48 1 write_LCD_data(int2charLCD[x]);
49 1 write_LCD_data(int2charLCD[y]);
50 1 }
51 void gotoxy(unsigned x,unsigned y)
52 {
53 1 if(x==1)
54 1 write_LCD_command(GOTO_LINE_1+y);
55 1 else
C51 COMPILER V7.06 LCD 09/06/2007 17:33:49 PAGE 2
56 1 write_LCD_command(GOTO_LINE_2+y);
57 1 }
58 void delay100us(unsigned char i)
59 {
60 1 unsigned char j=0;
61 1 /*#pragma asm
62 1 more: mov R3,#48
63 1 djnz R3,$
64 1 djnz R7,more
65 1 #pragma endasm*/
66 1 for(i;i>0;i--)
67 1 for(j=0;j<34;j++);
68 1
69 1 }
70 unsigned char scan()//51>1,61>4.71>7,81>0,54>A,64>a,74>up,84>down,72>left,73>right
71 {
72 1 unsigned char z,j,a,b;
73 1 for(z=1;z<=4;z++)
74 1 {
75 2 switch(z){
76 3 case 1:a=0xfe;break;
77 3
78 3 case 2:a=253;break;
79 3
80 3 case 3:a=0xfb;break;
81 3 case 4:a=0xf7;break;
82 3
83 3 default :break;
84 3 }
85 2 SNPT=a;
86 2 delay100us(1);
87 2 delay100us(1);
88 2 delay100us(1);
89 2 b=SNPT;
90 2 delay100us(10);
91 2 if(b!=SNPT) return 0;
92 2 b=b>>4;
93 2 switch(b){
94 3 case 0x0e:j=50+z;
95 3 break;
96 3 case 13:j=60+z;
97 3 break;
98 3 case 11:j=70+z;
99 3 break;
100 3 case 7:j=80+z;
101 3 break;
102 3 default :j=0;break;}
103 2 if(j!=0) break;
104 2 }
105 1 SNPT=0xff;
106 1 // P3=j;
107 1 return j;
108 1 }
109 unsigned char value(unsigned char i)
110 {
111 1 switch(i){
112 2 case 51: return '3';break;
113 2 case 52: return '2';break;
114 2 case 53: return '1';break;
115 2 case 54: return 'A';break;
116 2 case 61: return '6';break;
117 2 case 62: return '5';break;
C51 COMPILER V7.06 LCD 09/06/2007 17:33:49 PAGE 3
118 2 case 63: return '4';break;
119 2 case 64: return 'V';break;
120 2 case 71: return '9';break;
121 2 case 72: return '8';break;
122 2 case 73: return '7';break;
123 2 case 74: return 'U';break;
124 2 case 81: return 'E';break;
125 2 case 82: return 'B';break;
126 2 case 83: return '0';break;
127 2 case 84: return 'D';break;
128 2 default: return 0;
129 2 }
130 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 424 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
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 + -