📄 1602.lst
字号:
C51 COMPILER V7.50 1602 04/10/2009 22:39:42 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.obj
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE SRC\1602.c BROWSE DEBUG OBJECTEXTEND PRINT(.\1602.lst) OBJECT
-(1602.obj)
line level source
1 /********************************************************************
2 * 文件名 : 液晶1602显示.c
3 * 描述 : 该程序实现了对液晶1602的控制。
4 * 创建人 : 东流,2009年4月10日
5 * 版本号 : 2.0
6 * 技术支持论坛:www.zidh.com/bbs(请进入“赞助商板块”中的“东流电子工作室”)
7 * 感谢“中国自动化资讯网”对本工作室的大力支持。
8 ***********************************************************************/
9 #include<reg52.h>
10 #define uchar unsigned char
11 #define uint unsigned int
12
13 //这三个引脚参考资料
14 sbit E=P2^7; //1602使能引脚
15 sbit RW=P2^6; //1602读写引脚
16 sbit RS=P2^5; //1602数据/命令选择引脚
17
18
19 /********************************************************************
20 * 名称 : delay()
21 * 功能 : 延时,延时时间大概为140US。
22 * 输入 : 无
23 * 输出 : 无
24 ***********************************************************************/
25
26 void delay_22()
27 {
28 1 int i,j;
29 1 for(i=0; i<=10; i++)
30 1 for(j=0; j<=2; j++)
31 1 ;
32 1 }
33
34 /********************************************************************
35 * 名称 : Convert(uchar In_Date)
36 * 功能 : 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。
37 * 输入 : 1602资料上的值
38 * 输出 : 送到1602的值
39 ***********************************************************************/
40 uchar Convert_22(uchar In_Date)
41 {
42 1 uchar i, Out_Date = 0, temp = 0;
43 1 for(i=0; i<8; i++)
44 1 {
45 2 temp = (In_Date >> i) & 0x01;
46 2 Out_Date |= (temp << (7 - i));
47 2 }
48 1 return Out_Date;
49 1 }
50 /********************************************************************
51 * 名称 : enable(uchar del)
52 * 功能 : 1602命令函数
53 * 输入 : 输入的命令值
54 * 输出 : 无
C51 COMPILER V7.50 1602 04/10/2009 22:39:42 PAGE 2
55 ***********************************************************************/
56
57 void enable_22(uchar del)
58 {
59 1 P0 = Convert_22(del);
60 1 RS = 0;
61 1 RW = 0;
62 1 E = 0;
63 1 delay_22();
64 1 E = 1;
65 1 delay_22();
66 1 }
67
68 /********************************************************************
69 * 名称 : write(uchar del)
70 * 功能 : 1602写数据函数
71 * 输入 : 需要写入1602的数据
72 * 输出 : 无
73 ***********************************************************************/
74
75 void write_22(uchar del)
76 {
77 1 P0 = Convert_22(del);
78 1 RS = 1;
79 1 RW = 0;
80 1 E = 0;
81 1 delay_22();
82 1 E = 1;
83 1 delay_22();
84 1 }
85
86 /********************************************************************
87 * 名称 : L1602_init()
88 * 功能 : 1602初始化,请参考1602的资料
89 * 输入 : 无
90 * 输出 : 无
91 ***********************************************************************/
92 void L1602_init_22(void)
93 {
94 1 enable_22(0x01);
95 1 enable_22(0x38);
96 1 enable_22(0x0c);
97 1 enable_22(0x06);
98 1 enable_22(0xd0);
99 1 }
100
101 /********************************************************************
102 * 名称 : L1602_char(uchar hang,uchar lie,char sign)
103 * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下
104 L1602_char(1,5,'b')
105 * 输入 : 行,列,需要输入1602的数据
106 * 输出 : 无
107 ***********************************************************************/
108 void L1602_char_22(uchar hang,uchar lie,char sign)
109 {
110 1 uchar a;
111 1 if(hang == 1) a = 0x80;
112 1 if(hang == 2) a = 0xc0;
113 1 a = a + lie - 1;
114 1 enable_22(a);
115 1 write_22(sign);
116 1 }
C51 COMPILER V7.50 1602 04/10/2009 22:39:42 PAGE 3
117
118 /********************************************************************
119 * 名称 : L1602_string(uchar hang,uchar lie,uchar *p)
120 * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
121 L1602_string(1,5,"ab cd ef;")
122 * 输入 : 行,列,需要输入1602的数据
123 * 输出 : 无
124 ***********************************************************************/
125 void L1602_string_22(uchar hang,uchar lie,uchar *p)
126 {
127 1 uchar a;
128 1 if(hang == 1) a = 0x80;
129 1 if(hang == 2) a = 0xc0;
130 1 a = a + lie - 1;
131 1 enable_22(a);
132 1 while(1)
133 1 {
134 2 if(*p == '\0') break;
135 2 write_22(*p);
136 2 p++;
137 2 }
138 1 }
139
140 /********************************************************************
141 * 名称 : Main()
142 * 功能 : 主函数
143 * 输入 : 无
144 * 输出 : 无
145 ***********************************************************************/
146 void Test_1602(void)
147 {
148 1 uint i;
149 1 L1602_init_22();
150 1 L1602_string_22(1,1," Welcome To The ");
151 1 L1602_string_22(2,1," MCU World ");
152 1 P2 = 0x00;
153 1 P0 = 0xff;
154 1 for(i=0; i<8000; i++) delay_22();
155 1 L1602_init_22();
156 1 L1602_string_22(1,1,"Now,Testing..... ");
157 1 L1602_string_22(2,1," ");
158 1 P2 = 0x00;
159 1 }
160
161 void Test_1602_end(void)
162 {
163 1 P2 = 0x00;
164 1 delay_22();
165 1 L1602_init_22();
166 1 L1602_string_22(1,1,"The Test Is Over");
167 1 L1602_string_22(2,1," QQ : 85536436 ");
168 1 P2 = 0x00;
169 1 P0 = 0xff;
170 1 while(1);
171 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 334 ----
CONSTANT SIZE = 99 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.50 1602 04/10/2009 22:39:42 PAGE 4
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 + -