📄 lcd.lst
字号:
C51 COMPILER V7.06 LCD 07/30/2007 16:02:24 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN D:\C\LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\C\LCD.C DB SB OE
stmt level source
1 # include<reg52.h>
2 # include<stdio.h>
3 # include<intrins.h>
4
5 # define uchar unsigned char
6 # define uint unsigned int
7
8 sbit dc=P2^1; //RS
9 sbit rw=P2^2; //RW
10 sbit cs=P2^4; //E
11 sfr lcdbus=0x80;
12 char a[2]={3,5};
13 char b[6]={3,5,2,9,8,7};
14
15 uchar state;
16 uchar cmd;
17
18 void soft_nop(){}
19 /***********12MHZ 提供10MS 软件延时************/
20 void soft_10ms()
21 { register int i;
22 1 for(i=0;i<711;i++);
23 1 }
24 /***********12MHZ 提供20MS 软件延时************/
25 void soft_20ms()
26 { soft_10ms();
27 1 soft_10ms();
28 1 }
29 /****************检查LCD忙*******************/
30 bit lcd_checkbusy() /*检查LCD 忙*/
31 {register lcdstate;
32 1 dc=0; /*dc=1为数据,=0 为命令.*/
33 1 rw=1; /*rw=1为读,=0为写.*/
34 1 cs=1; /*cs=1选通.*/
35 1 soft_nop();
36 1 lcdstate=lcdbus;
37 1 cs=0;
38 1 return((bit)(lcdstate&0x80));
39 1 }
40 /***************写LCD命令*******************/
41 void lcd_wrcmd(uchar lcdcmd)
42 {while(lcd_checkbusy());
43 1 dc=0; /*dc=1为数据,=0 为命令.*/
44 1 rw=0; /*rw=1为读,=0为写.*/
45 1 cs=1; /*cs=1选通.*/
46 1 lcdbus=lcdcmd;
47 1 soft_nop();
48 1 cs=0;
49 1 }
50 /**************在当前显示位置显示数据********************/
51 void lcd_wrdata(char lcddata)
52 {while(lcd_checkbusy());
53 1 dc=1; /*dc=1为数据,=0 为命令.*/
54 1 rw=0; /*rw=1为读,=0为写.*/
55 1 cs=1; /*cs=1选通.*/
C51 COMPILER V7.06 LCD 07/30/2007 16:02:24 PAGE 2
56 1 lcdbus=lcddata;
57 1 soft_nop();
58 1 cs=0;
59 1
60 1 }
61 /*************在当前显示位置显示LCD 字符串***************/
62 void lcd_string(char *strpoint)
63 { register i=0;
64 1 while(strpoint[i]!=0)
65 1 {lcd_wrdata(strpoint[i]);
66 2 i++;
67 2 }
68 1 }
69 /**********************初始化************************/
70 void lcd_init()
71 {lcd_wrcmd(0x38); /*设置8 位格式,2行,5*7*/
72 1 lcd_wrcmd(0x0c); /*整体显示,关光标,不闪烁*/
73 1 lcd_wrcmd(0x06); /*设定输入方式,增量不移位*/
74 1 lcd_wrcmd(0x01); /*清除显示*/
75 1 }
76 /***********************主函数***********************/
77 void main()
78 {uchar i;
79 1 lcd_init();
80 1 soft_20ms();
81 1 state=1;
82 1 cmd=0X20;
83 1
84 1 switch(state) //送模式和单位
85 1 {
86 2 case 1: lcd_string("FREQUENCY");
87 2 lcd_wrcmd(0X8C);
88 2 if(cmd==0X40)
89 2 lcd_string("HZ");
90 2 else if(cmd==0X20)
91 2 lcd_string("KHZ");
92 2 else
93 2 lcd_string("MHZ");
94 2 break;
95 2
96 2 case 2: lcd_string("PERIOD");
97 2 lcd_wrcmd(0X8C);
98 2 if(cmd==0X40)
99 2 lcd_string("S");
100 2 else if(cmd==0X20)
101 2 lcd_string("MS");
102 2 else
103 2 lcd_string("US");
104 2 break;
105 2
106 2 case 3: lcd_string("MAIKUAN");
107 2 lcd_wrcmd(0X8C);
108 2 lcd_string("s");
109 2 break;
110 2 case 4: lcd_string("ZHANKONGBI");
111 2 }
112 1
113 1 lcd_wrcmd(0XC3); //送整数
114 1 for(i=0;i<2;i++)
115 1 {a[i]=a[i]+0X30;
116 2 lcd_wrdata(a[i]);
117 2 }
C51 COMPILER V7.06 LCD 07/30/2007 16:02:24 PAGE 3
118 1
119 1 lcd_wrdata(46); //送小数点
120 1
121 1 for(i=0;i<6;i++) //送小数位
122 1 {b[i]=b[i]+0X30;
123 2 lcd_wrdata(b[i]);
124 2 }
125 1 for(;;);
126 1 }
C51 COMPILER V7.06 LCD 07/30/2007 16:02:24 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
lcdbus . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
_lcd_string. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
strpoint . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
i. . . . . . . . . . . . . . . . . . * REG * DATA INT 0004H 2
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
_lcd_wrcmd . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
lcdcmd . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
state. . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
cmd. . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0001H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
dc . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A1H 1
lcd_init . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cs . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A4H 1
lcd_checkbusy. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
lcdstate . . . . . . . . . . . . . . * REG * DATA INT 0006H 2
a. . . . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0002H 2
soft_10ms. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA INT 0006H 2
b. . . . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0004H 6
soft_20ms. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
rw . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A2H 1
soft_nop . . . . . . . . . . . . . . . PUBLIC CODE PROC 0006H -----
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
_lcd_wrdata. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
lcddata. . . . . . . . . . . . . . . * REG * DATA CHAR 0006H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 339 ----
CONSTANT SIZE = 57 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 3
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 + -