📄 miin.lst
字号:
C51 COMPILER V8.06 MIIN 11/20/2011 16:35:43 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE MIIN
OBJECT MODULE PLACED IN miin.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE miin.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //实验平台:HL-1 V6.1+Keil U3
2 //开发公司:慧净电子WWW.HLMCU.COM
3 //淘宝店铺:http://shop37031453.taobao.com
4 //实验目的:
5 /*-----------------------------------------------
6 名称:LCD1602
7 内容:通过标准程序静态显示字符
8 引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
9 ------------------------------------------------*/
10 #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
11 #include<intrins.h>
12
13 sbit RS = P1^0; //定义端口
14 sbit RW = P1^1;
15 sbit EN = P2^5;
16 sbit DU = P2^0;
17 sbit WE = P2^1;
18 sbit CS88 = P2^2;
19
20 #define RS_CLR RS=0
21 #define RS_SET RS=1
22
23 #define RW_CLR RW=0
24 #define RW_SET RW=1
25
26 #define EN_CLR EN=0
27 #define EN_SET EN=1
28
29 #define DataPort P0
30
31 void cmg88()//关数码管,点阵函数
32 {
33 1 DU=1;
34 1 P0=0X00;
35 1 DU=0;
36 1 }
37 /*------------------------------------------------
38 uS延时函数,含有输入参数 unsigned char t,无返回值
39 unsigned char 是定义无符号字符变量,其值的范围是
40 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
41 长度如下 T=tx2+5 uS
42 ------------------------------------------------*/
43 void DelayUs2x(unsigned char t)
44 {
45 1 while(--t);
46 1 }
47 /*------------------------------------------------
48 mS延时函数,含有输入参数 unsigned char t,无返回值
49 unsigned char 是定义无符号字符变量,其值的范围是
50 0~255 这里使用晶振12M,精确延时请使用汇编
51 ------------------------------------------------*/
52 void DelayMs(unsigned char t)
53 {
54 1
55 1 while(t--)
C51 COMPILER V8.06 MIIN 11/20/2011 16:35:43 PAGE 2
56 1 {
57 2 //大致延时1mS
58 2 DelayUs2x(245);
59 2 DelayUs2x(245);
60 2 }
61 1 }
62 /*------------------------------------------------
63 判忙函数
64 ------------------------------------------------*/
65 bit LCD_Check_Busy(void)
66 {
67 1 DataPort= 0xFF;
68 1 RS_CLR;
69 1 RW_SET;
70 1 EN_CLR;
71 1 _nop_();
72 1 EN_SET;
73 1 return (bit)(DataPort & 0x80);
74 1 }
75 /*------------------------------------------------
76 写入命令函数
77 ------------------------------------------------*/
78 void LCD_Write_Com(unsigned char com)
79 {
80 1 while(LCD_Check_Busy()); //忙则等待
81 1 RS_CLR;
82 1 RW_CLR;
83 1 EN_SET;
84 1 DataPort= com;
85 1 _nop_();
86 1 EN_CLR;
87 1 }
88 /*------------------------------------------------
89 写入数据函数
90 ------------------------------------------------*/
91 void LCD_Write_Data(unsigned char Data)
92 {
93 1 while(LCD_Check_Busy()); //忙则等待
94 1 RS_SET;
95 1 RW_CLR;
96 1 EN_SET;
97 1 DataPort= Data;
98 1 _nop_();
99 1 EN_CLR;
100 1 }
101
102 /*------------------------------------------------
103 清屏函数
104 ------------------------------------------------*/
105 void LCD_Clear(void)
106 {
107 1 LCD_Write_Com(0x01);
108 1 DelayMs(5);
109 1 }
110 /*------------------------------------------------
111 写入字符串函数
112 ------------------------------------------------*/
113 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
114 {
115 1 if (y == 0)
116 1 {
117 2 LCD_Write_Com(0x80 + x); //表示第一行
C51 COMPILER V8.06 MIIN 11/20/2011 16:35:43 PAGE 3
118 2 }
119 1 else
120 1 {
121 2 LCD_Write_Com(0xC0 + x); //表示第二行
122 2 }
123 1 while (*s)
124 1 {
125 2 LCD_Write_Data( *s);
126 2 s ++;
127 2 }
128 1 }
129 /*------------------------------------------------
130 写入字符函数
131 ------------------------------------------------*/
132 void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
133 {
134 1 if (y == 0)
135 1 {
136 2 LCD_Write_Com(0x80 + x);
137 2 }
138 1 else
139 1 {
140 2 LCD_Write_Com(0xC0 + x);
141 2 }
142 1 LCD_Write_Data( Data);
143 1 }
144 /*------------------------------------------------
145 初始化函数
146 ------------------------------------------------*/
147 void LCD_Init(void)
148 {
149 1 LCD_Write_Com(0x38); /*显示模式设置*/
150 1 DelayMs(5);
151 1 LCD_Write_Com(0x38);
152 1 DelayMs(5);
153 1 LCD_Write_Com(0x38);
154 1 DelayMs(5);
155 1 LCD_Write_Com(0x38);
156 1 LCD_Write_Com(0x08); /*显示关闭*/
157 1 LCD_Write_Com(0x01); /*显示清屏*/
158 1 LCD_Write_Com(0x06); /*显示光标移动设置*/
159 1 DelayMs(5);
160 1 LCD_Write_Com(0x0C); /*显示开及光标设置*/
161 1 }
162
163 /*------------------------------------------------
164 主函数
165 ------------------------------------------------*/
166 void main(void)
167 {
168 1 cmg88();//关数码管,点阵函数
169 1 LCD_Init();
170 1 LCD_Clear();//清屏
171 1 while (1)
172 1 {
173 2 LCD_Write_Char(7,0,'o');
174 2 LCD_Write_Char(8,0,'k');
175 2 LCD_Write_String(1,1,"www.hlmcu.com");
176 2 while(1);
177 2 }
178 1 }
179
C51 COMPILER V8.06 MIIN 11/20/2011 16:35:43 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 238 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -