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