📄 lcd.lst
字号:
C51 COMPILER V8.02 LCD 01/14/2009 21:15:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: D:\单片机\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <c8051f020.h>
2 #include "initial.h"
3 //---------------------------------
4 //#define uchar unsigned char
5 //#define uint unsigned int
6 //--------------------------------
7 //bit bf=0;
8 #define uchar unsigned char
9
10 void Lcd1602_Initial( )
11 {
12 1 Lcd1602_Write_Command(0x38);//显示模式设置
13 1 Lcd1602_Write_Command(0x0c);//开显示,显示光标,光标闪烁
14 1 Lcd1602_Write_Command(0x01);//显示清屏。
15 1 Lcd1602_Write_Command(0x06);//显示光标自动右移,整屏不移动。
16 1
17 1 Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
18 1 Lcd1602_Write_Command(0x02);//数据指针清零
19 1 Lcd1602_Write_Command(0x0c);//开显示,显示光标,光标闪烁
20 1 Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
21 1
22 1 }
23 //===========================
24 //写一个命令字节
25 //===========================
26 void Lcd1602_Write_Command(uchar Command_Code)
27 {
28 1 P4=0x00;
29 1 delay(1); //写指令 RS=0
30 1 P4=0x04;
31 1 P5=Command_Code; //送数据
32 1 delay(1);
33 1 P4=0x00;
34 1 }
35 //===========================
36 //写一个字节数据
37 //===========================
38 void Lcd1602_Write_Data(uchar row,uchar column,uchar digital)
39 {
40 1
41 1 if (row==2)
42 1 column |= 0x40; //当要显示第二行时地址码+0x40;
43 1 column |= 0x80; // 算出指令码
44 1
45 1 Lcd1602_Write_Command(column); //这里不检测忙信号,发送地址码
46 1
47 1 P4=0x01;
48 1 delay(1); //写指令 RS=0
49 1 P4=0x05;
50 1 P5=digital; //送数据
51 1 delay(1);
52 1 P4=0x00;
53 1
54 1 }
55
C51 COMPILER V8.02 LCD 01/14/2009 21:15:27 PAGE 2
56
57 //===========================================
58 //写字符串到LCD,如果一行写不下,则写到下一行,
59 //如果一屏写不下,则只写一屏
60 //row的值从1-2,column的值从1-16,不进行值的
61 //有效性检查,有调用者自己保证
62 //===========================================
63
64 void Lcd1602_Write_String(uchar row,uchar column,uchar *dis_buffer)
65 {
66 1 uchar i=0;
67 1
68 1 while(dis_buffer[i]!='\0')
69 1 {
70 2 Lcd1602_Write_Data(row,column,dis_buffer[i]);
71 2 i++;column++;
72 2 if(column==40)
73 2 {
74 3 column=1;
75 3 row++;
76 3 if(row==2)
77 3 return;
78 3 else
79 3 {
80 4 switch(row) //这种结构保持以后升级到多行显示液晶
81 4 {
82 5 case 1:Lcd1602_Write_Command(0x80);break;
83 5 case 2:Lcd1602_Write_Command(0x80+0x40);break;//重新调整数据地址指针
84 5 default:break;
85 5 }
86 4 }
87 3 }
88 2 }
89 1 }
90
91
92 //==================================================
93 //清除指定的位置的字符,光标返回最左边第一个字符位置
94 //==================================================
95 /*void Lcd1602_Clear_Char(uchar row,uchar column)
96 {
97 Lcd1602_Write_String(row,column," ");
98 }
99
100 //==========================================
101 //清除指定的行,光标返回最左边第一个字符位置
102 //========================================== */
103 void Lcd1602_Clear_Line(uchar line)
104 {
105 1 Lcd1602_Write_String(line,0," ");
106 1 switch(line)//这种结构保持以后升级到多行显示液晶
107 1 {
108 2 case 1:Lcd1602_Write_Command(0x80);break; //将数据地址指针定位到第一行
109 2 case 2:Lcd1602_Write_Command(0x80+0x40);break; //将数据地址指针定位到第二行
110 2 default: break;
111 2 }
112 1 }
113
114 void Lcd1602_Clear_All( )
115 {
116 1 Lcd1602_Write_Command(0x01);//显示清屏。
117 1 Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
C51 COMPILER V8.02 LCD 01/14/2009 21:15:27 PAGE 3
118 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 234 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 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 + -