📄 lcd_show.lst
字号:
C51 COMPILER V7.50 LCD_SHOW 08/23/2007 13:11:50 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD_SHOW
OBJECT MODULE PLACED IN lcd_show.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE lcd_show.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************/
2 #include <reg51.h>
3 #include <string.h>
4 sbit lcm_rs = P1^2; //寄存器选择
5 sbit lcm_rw = P1^3; //读/写控制
6 sbit lcm_e = P1^4; //读/写使能
7 sbit lcm_blk = P2^4; //背光led 1.off 0.on
8 #define lcm_data P0
9 //函数声明
10 void delay5ms(void);
11 void delay400ms(void);
12 void lcm_write_command(unsigned char wc_lcm,busy_c);
13
14 /***********************************
15 //函数名称: void lcm_ini(void)
16 //传递参数: 无
17 //返 回 值: 无
18 //函数功能: LCM初始化
19 //函数说明:
20 ***********************************/
21 void lcm_ini(void)
22 {
23 1 lcm_data = 0;
24 1 lcm_write_command(0x38,0); //16*2显示,5*7点阵,8位数据接口,不检测忙
25 1 delay5ms();
26 1 lcm_write_command(0x38,0);
27 1 delay5ms();
28 1 lcm_write_command(0x38,0); //三次显示模式, 不检测忙
29 1 delay5ms();
30 1 lcm_write_command(0x38,1); //16*2显示,5*7点阵,8位数据接口,需要检测忙
31 1 lcm_write_command(0x80,1); //关闭显示
32 1 lcm_write_command(0x01,1); //clear显示
33 1 lcm_write_command(0x06,1); //指针和光标+1,不滚屏
34 1 lcm_write_command(0x0c,1); //开显示,不显示光标
35 1 }
36
37 /***********************************
38 //函数名称: unsigned char lcm_read_status(void)
39 //传递参数: 无
40 //返 回 值: unsigned char
41 //函数功能: 读lcm状态,等待lcm空闲
42 //函数说明: DB7=1,忙
43 ***********************************/
44 unsigned char lcm_read_status(void)
45 {
46 1 lcm_data=0xff;
47 1 lcm_rs=0;
48 1 lcm_rw=1;
49 1 lcm_e=0;
50 1 lcm_e=0;
51 1 lcm_e=1;
52 1 while(lcm_data & 0x80);
53 1 return lcm_data;
54 1 }
55
C51 COMPILER V7.50 LCD_SHOW 08/23/2007 13:11:50 PAGE 2
56 /***********************************
57 //函数名称: void lcm_write_data(unsigned char wd_lcm)
58 //传递参数: unsigned char wd_lcm
59 //返 回 值: 无
60 //函数功能: lcm写数据
61 //函数说明:
62 ***********************************/
63 void lcm_write_data(unsigned char wd_lcm)
64 {
65 1 lcm_read_status(); //判断lcm忙标志
66 1 lcm_data = wd_lcm;
67 1 lcm_rs = 1;
68 1 lcm_rw = 0;
69 1 lcm_e = 0;
70 1 lcm_e = 0;
71 1 lcm_e = 1;
72 1 }
73
74 /***********************************
75 //函数名称: void lcm_write_command(unsigned char wc_lcm, busy_c)
76 //传递参数: unsigned char wc_lcm, busy_c
77 //返 回 值: 无
78 //函数功能: lcm写命令
79 //函数说明: busy_c=0是,不用检测忙信号
80 ***********************************/
81 void lcm_write_command(unsigned char wc_lcm, busy_c)
82 {
83 1 if (busy_c)
84 1 lcm_read_status();
85 1 lcm_data = wc_lcm;
86 1 lcm_rs=0;
87 1 lcm_rw = 0;
88 1 lcm_e = 0;
89 1 lcm_e = 0;
90 1 lcm_e = 1;
91 1 }
92
93 /***********************************
94 //函数名称: void disp_one_char(unsigned char x, unsigned char y,unsigned char disp_data)
95 //传递参数: unsigned char x, unsigned char y,unsigned char disp_data
96 //返 回 值: 无
97 //函数功能: 指定位置显示一个字符
98 //函数说明:
99 ***********************************/
100 void disp_one_char(unsigned char x,unsigned char y,unsigned disp_data)
101 {
102 1 y = y&0x01;
103 1 x = x&0x0f; //限制2行,没行15个字
104 1 if (y)
105 1 x =x + 0x40; //算RAM地址
106 1 x = x + 0x80;
107 1 lcm_write_command(x,0);
108 1 lcm_write_data(disp_data);
109 1 }
110
111 /***********************************
112 //函数名称: void disp_one_char(unsigned char x, unsigned char y,unsigned char *disp_data)
113 //传递参数: unsigned char x, unsigned char y,unsigned char *disp_data
114 //返 回 值: 无
115 //函数功能: 指定位置显示一串字符
116 //函数说明:
117 ***********************************/
C51 COMPILER V7.50 LCD_SHOW 08/23/2007 13:11:50 PAGE 3
118 void disp_list_char(unsigned char x,unsigned char y,unsigned char *disp_data)
119 {
120 1 unsigned char char_length,j;
121 1 lcm_write_command(0x01,1); //clear显示
122 1 char_length = strlen(disp_data);
123 1 y = y&0x1;
124 1 x = x&0x0f;
125 1 for (j=0;j<char_length;j++)
126 1 {
127 2 disp_one_char( x,y,disp_data[j]); //显示一个字符
128 2 x++;
129 2 }
130 1 }
131
132 /***********************************
133 //函数名称: void delay5ms(void)
134 //传递参数: 无
135 //返 回 值: 无
136 //函数功能: 延时5MS
137 //函数说明:
138 ***********************************/
139 void delay5ms(void)
140 {
141 1 unsigned int TempCyc = 5552;
142 1 while(TempCyc--);
143 1 }
144 /***********************************
145 //函数名称: void delay400ms(void)
146 //传递参数: 无
147 //返 回 值: 无
148 //函数功能: L延时400MS
149 //函数说明: LCM开机延时
150 ***********************************/
151 void delay400ms(void)
152 {
153 1 unsigned char TempCycA = 5;
154 1 unsigned int TempCycB;
155 1 while(TempCycA--)
156 1 {
157 2 TempCycB=7269;
158 2 while(TempCycB--);
159 2 };
160 1 }
161
162 /*****d******************************
163 //函数名称: void main(void)
164 //传递参数: 无
165 //返 回 值: 无
166 //函数功能: 主函数
167 //函数说明:
168 ************************************/
169 void lcd_disp(void)
170 {
171 1 delay400ms();
172 1 lcm_ini();
173 1 disp_list_char(0,0,"WWW.SPMK.COM");
174 1 delay400ms();
175 1 delay400ms();
176 1 delay400ms();
177 1 delay400ms();
178 1 disp_list_char(0,0,"BY QIANSHAOFENG");
179 1 // while(1);
C51 COMPILER V7.50 LCD_SHOW 08/23/2007 13:11:50 PAGE 4
180 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 323 ----
CONSTANT SIZE = 29 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
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 + -