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