📄 pinlvji4.lst
字号:
C51 COMPILER V7.50 PINLVJI4 10/26/2008 13:11:34 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PINLVJI4
OBJECT MODULE PLACED IN pinlvji4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pinlvji4.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 //液晶1602子程序,文件名:1602.c
3 /**************************************************
4 ;连线图:
5 ; DB0---DPROT.0 DB4---DPROT.4 RS-------------P3.5
6 ; DB1---DPROT.1 DB5---DPROT.5 RW-------------P3.6
7 ; DB2---DPROT.2 DB6---DPROT.6 E--------------P3.7
8 ; DB3---DPROT.3 DB7---DPROT.7 VLCD接10K可调电阻到GND*
9 ; 需要11根单片机口线
10 ;80C51的晶振频率为12MHz
11 ;液晶显示程序
12 ;**************************************************/
13 #include <reg52.h>
14 #include <intrins.h>
15 #define uint unsigned int
16 #define uchar unsigned char
17
18 sbit RS = P3^7;
19 sbit RW = P3^6;
20 sbit EN = P3^5;
21 sbit KEY= P1^0;
22
23 #define DPORT P2
24
25 void LcdPos(uchar,uchar); //确定光标位置
26 void LcdWd(uchar); //写字符
27 void LcdWc(uchar); //送控制字(检测忙信号)
28 void LcdWcn(uchar ); //送控制字子程序(不检测忙信号)
29 void mDelay(uchar ); //延时,毫秒数由j决定
30 void WaitIdle(); //正常读写操作之前检测LCD控制器状态
31
32 //在指定的行与列显示指定的字符,xpos:行,ypos:列,c:待显示字符
33 void WriteChar(uchar c,uchar xPos,uchar yPos)
34 {
35 1 LcdPos(xPos,yPos);
36 1 LcdWd(c);
37 1 }
38
39 void WriteString(uchar *s,uchar xPos,uchar yPos)
40 { uchar i;
41 1 if(*s==0) //遇到字符串结束
42 1 return;
43 1 for(i=0;;i++)
44 1 {
45 2 if(*(s+i)==0)
46 2 break;
47 2 WriteChar(*(s+i),xPos,yPos);
48 2 xPos++;
49 2 if(xPos>=15) //如果XPOS中的值未到15(可显示的最多位)
50 2 break;
51 2
52 2 }
53 1 }
54 void SetCur(uchar Para) //设置光标
55 { mDelay(2);
C51 COMPILER V7.50 PINLVJI4 10/26/2008 13:11:34 PAGE 2
56 1 switch(Para)
57 1 { case 0:
58 2 { LcdWc(0x08); //关显示
59 3 break;
60 3 }
61 2 case 1:
62 2 { LcdWc(0x0c); //开显示但无光标
63 3 break;
64 3 }
65 2 case 2:
66 2 { LcdWc(0x0e); //开显示有光标但不闪烁
67 3 break;
68 3 }
69 2 case 3:
70 2 { LcdWc(0x0f); //开显示有光标且闪烁
71 3 break;
72 3 }
73 2 default:
74 2 break;
75 2 }
76 1 }
77
78 void ClrLcd() //清屏命令
79 { LcdWc(0x01);
80 1 }
81
82 // 正常读写操作之前检测LCD控制器状态
83 void WaitIdle()
84 { uchar tmp;
85 1 RS=0;
86 1 RW=1;
87 1 EN=1;
88 1 _nop_();
89 1 for(;;)
90 1 { tmp=DPORT;
91 2 tmp&=0x80;
92 2 if( tmp==0)
93 2 break;
94 2 }
95 1 EN=0;
96 1 }
97
98 void LcdWd(uchar c) //写字符子程序
99 { WaitIdle();
100 1 RS=1;
101 1 RW=0;
102 1 DPORT=c; //将待写数据送到数据端口
103 1 EN=1;
104 1 _nop_();
105 1 _nop_();
106 1 EN=0;
107 1 }
108 void LcdWc(uchar c) //送控制字子程序(检测忙信号)
109 { WaitIdle();
110 1 LcdWcn(c);
111 1 }
112
113 void LcdWcn(uchar c) //送控制字子程序(不检测忙信号)
114 { RS=0;
115 1 RW=0;
116 1 DPORT=c;
117 1 EN=1;
C51 COMPILER V7.50 PINLVJI4 10/26/2008 13:11:34 PAGE 3
118 1 _nop_();
119 1 EN=0;
120 1 }
121 void LcdPos(uchar xPos,uchar yPos) //设置第(xPos,yPos)个字符的DDRAM地址
122 { unsigned char tmp;
123 1 xPos&=0x0f; //x位置范围是0~15
124 1 yPos&=0x01; //y位置范围是0~1
125 1 if(yPos==0) //显示第一行
126 1 tmp=xPos;
127 1 else
128 1 tmp=xPos+0x40;
129 1 tmp|=0x80;
130 1 LcdWc(tmp);
131 1 }
132
133 void RstLcd() //复位LCD控制器
134 { mDelay(15); //如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30
135 1 LcdWc(0x38); //显示模式设置
136 1 LcdWc(0x08); //显示关闭
137 1 LcdWc(0x01); //显示清屏
138 1 LcdWc(0x06); //显示光标移动位置
139 1 LcdWc(0x0c); //显示开及光标设置
140 1 }
141
142 void mDelay(uchar j) //延时,毫秒数由j决定
143 { uint i=0;
144 1 for(;j>0;j--)
145 1 { for(i=0;i<124;i++)
146 2 {;}
147 2 }
148 1 }
149
150
151 //主函数:
152
153
154 //;==================================================================================
155
156 //;主程序开始
157 //;==================================================================================
158
159
160
161 unsigned char code table1[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0123456789
162
163 //unsigned char code table2[]={0x41,0x42,0x43,0x44,0x45,0x46};//abcdef
164 uchar *h=" CYMOMETER";
165 uchar *s1=" FREQ: Hz ";
166 uchar *s2=" over range ";
167
168
169 uchar T0count; //从T0的计数单元中读取计数的数值
170 uint timecount; //
171 uchar mark=1;
172 bit flag; //标志位
173 unsigned long x;
174 uchar xPos,yPos;
175 uchar i;
176
177
178 void main(void)
179 {
C51 COMPILER V7.50 PINLVJI4 10/26/2008 13:11:34 PAGE 4
180 1
181 1
182 1 RstLcd(); //初始化LCD
183 1 ClrLcd(); //清屏
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -