📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 09/13/2006 09:30:07 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //-----------------------------------------------------
2 // copyright by wangmeng 2005.8.22
3 //-----------------------------------------------------
4 #include"reg51.h"
5 sbit di=P3^5; //RS 1数据/0命令选择端
6 sbit rw=P3^4; //WR 1读/0写选择端
7 sbit en=P3^3; //E
8 #define LCMPORT P1 //数据端口
9 //------------------------------------------------------
10 //函数:void checkstate(void)
11 //功能:检测液晶是否处于忙状态
12 //------------------------------------------------------
13 void checkstate(void)
14 {
15 1 unsigned char dat;
16 1 di=0;
17 1 rw=1;
18 1 do
19 1 {
20 2 en=1; dat=LCMPORT; en=0;
21 2 dat=0x80 & dat; //仅当第7位为0时才可操作
22 2 }while(!(dat==0x00));
23 1 }
24 //-----------------------------------------------------
25 //函数:void sendcmd(unsigned char command)
26 //功能:送命令码到液晶
27 //参数:把命令字传送到液晶中
28 //-----------------------------------------------------
29 void sendcmd(unsigned char command)
30 {
31 1 checkstate();
32 1 rw=0;di=0;
33 1 en=1;
34 1 LCMPORT=command;
35 1 en=0;
36 1 }
37 //------------------------------------------------------
38 //函数:void senddata(unsigned char dat)
39 //功能:送数据到液晶
40 //参数:把命数据传送到液晶中
41 //------------------------------------------------------
42 void senddata(unsigned char dat)
43 {
44 1 checkstate();
45 1 rw=0;di=1;
46 1 en=1;
47 1 LCMPORT=dat;
48 1 en=0;
49 1 }
50 //------------------------------------------------------
51 //函数:void Write_char(unsigned char hanzi)
52 //功能:将要显示的汉字输入液晶
53 //参数:向液晶里写入汉字
54 //------------------------------------------------------
55 void Write_char(unsigned char hanzi)
C51 COMPILER V7.50 LCD 09/13/2006 09:30:07 PAGE 2
56 {
57 1 senddata(hanzi);
58 1 }
59 void Write_str(char *str)
60 {
61 1 char *s;
62 1 for(s=str;*s!=0x00;s++)
63 1 Write_char(*s);
64 1 }
65 //------------------------------------------------------
66 //函数:void Lcd_init(void)
67 //功能:初始化LCM
68 //------------------------------------------------------
69 void Lcd_init(void)
70 {
71 1 sendcmd(0x30);//命令格式详见函数SetShowMode()
72 1 sendcmd(0x0d);//指令码00001DCB
73 1 //D控制整体显示的开关1为开显示0为关显示;
74 1 //C控制光标的开与关1为有光标0为无光标;
75 1 //B控制光标是否闪烁1为闪烁0不闪烁。
76 1 sendcmd(0x01);//清除显示内容
77 1 }
78 //----------------------------------------------------------
79 //函数:void Scr_clr(void)
80 //功能:清显示屏幕
81 //----------------------------------------------------------
82 void Scr_clr(void)
83 {
84 1 sendcmd(0x01);
85 1 }
86 //-----------------------------------------------------------
87 //函数:void Set_addr(unsigned char line,unsigned char colum)
88 //功能:在指定地址写入汉字
89 //参数:line写入的行,colum写入的列
90 //-----------------------------------------------------------
91 void Set_addr(unsigned char line,unsigned char colum)
92 {
93 1 unsigned char addr;
94 1 switch(line)
95 1 {
96 2 case 1:
97 2 addr=0x00+(colum-1);break;
98 2 case 2:
99 2 addr=0x10+(colum-1);break;
100 2 case 3:
101 2 addr=0x08+(colum-1);break;
102 2 case 4:
103 2 addr=0x18+(colum-1);break;
104 2 default:
105 2 break;
106 2 }
107 1 addr=addr|0x80; //命令码为10xxxxxx
108 1 sendcmd(addr);
109 1 sendcmd(0x0c); //关闭光标
110 1 }
111 //---------------------------------------------------------
112 //函数原型;void ClearGrap(void)
113 //函数功能;清除绘图显示RAM
114 //函数参数;无
115 //---------------------------------------------------------
116 void Clr_grap(void)
117 {
C51 COMPILER V7.50 LCD 09/13/2006 09:30:07 PAGE 3
118 1 unsigned char x,y;
119 1 sendcmd(0x34); //扩展功能设定
120 1 for(x=0;x<16;x++)
121 1 {
122 2 for(y=0;y<32;y++)
123 2 {
124 3 sendcmd(0x80+y); //先送y的坐标
125 3 sendcmd(0x80+x); //再送x的坐标
126 3 senddata(0x00);senddata(0x00);
127 3 }
128 2 }
129 1 sendcmd(0x30); //基本功能设定
130 1 }
131 //---------------------------------------------------------------
132 //函数:void DrawGrap(uchar x,uchar y,uchar hdata,uchar ldata)
133 //功能:在用户定义的坐标位置画长度为16的点
134 //参数:x,y为坐标;ldata,hdata为要写的数据
135 //---------------------------------------------------------------
136 void Draw_grap(unsigned char x,unsigned char y,unsigned char ldata,unsigned char hdata)
137 {
138 1 sendcmd(0x34); //扩展功能设定
139 1 sendcmd(0x80+y);
140 1 sendcmd(0x80+x);
141 1 senddata(ldata);senddata(hdata);
142 1 sendcmd(0x30); //基本功能设定
143 1 }
144 void Open_grap(void)
145 {
146 1 sendcmd(0x36); //打开绘图RAM
147 1 }
148 //---------------------------------------------------------
149 //函数:void Open_cur(void)
150 //功能:打开光标
151 //---------------------------------------------------------
152 void Open_cur(void)
153 {
154 1 sendcmd(0x0d);
155 1 }
156 //---------------------------------------------------------
157 //函数:void Close_cur(void)
158 //功能:关闭光标
159 //---------------------------------------------------------
160 void Close_cur(void)
161 {
162 1 sendcmd(0x0c);
163 1 }
164
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 236 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -