📄 1602动态.lst
字号:
C51 COMPILER V7.06 1602__蘝 06/02/2010 22:38:07 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1602__蘝
OBJECT MODULE PLACED IN 1602动态.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 1602动态.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 /*1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK*/
3
4 /*-----------------------------------------------
5 名称:LCD1602
6 日期:2009.5
7 修改:无
8 内容:通过标准程序动态显示字符
9 ------------------------------------------------*/
10 #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
11
12 sbit RS = P2^4; //定义端口
13 sbit RW = P2^5;
14 sbit EN = P2^6;
15
16 #define RS_CLR RS=0
17 #define RS_SET RS=1
18 #define RW_CLR RW=0
19 #define RW_SET RW=1
20 #define EN_CLR EN=0
21 #define EN_SET EN=1
22 /******************************************************************/
23 /* 微秒延时函数 */
24 /******************************************************************/
25 void delay_us(unsigned int n) //延时 如果需要高精度延时 请嵌入汇编
26 {
27 1 if (n == 0)
28 1 {
29 2 return ;
30 2 }
31 1 while (--n);
32 1 }
33 /******************************************************************/
34 /* 毫秒函数声明 */
35 /******************************************************************/
36 void delay_ms(unsigned char i)
37 {
38 1 unsigned char a, b;
39 1 for (a = 1; a < i; a++)
40 1 {
41 2 for (b = 1; b; b++)
42 2 { ; }
43 2 }
44 1 }
45 /******************************************************************/
46 /* 写入命令函数 */
47 /******************************************************************/
48 void LCD_write_com(unsigned char com)
49 {
50 1 RS_CLR;
51 1 RW_CLR;
52 1 EN_SET;
53 1 P0 = com;
54 1 delay_us(5);
55 1 EN_CLR;
C51 COMPILER V7.06 1602__蘝 06/02/2010 22:38:07 PAGE 2
56 1 }
57 /******************************************************************/
58 /* 写入数据函数 */
59 /******************************************************************/
60 void LCD_write_Data(unsigned char Data)
61 {
62 1 RS_SET;
63 1 RW_CLR;
64 1 EN_SET;
65 1 P0 = Data;
66 1 delay_us(5);
67 1 EN_CLR;
68 1 }
69 /******************************************************************/
70 /* 清屏函数 */
71 /******************************************************************/
72 void LCD_clear(void)
73 {
74 1 LCD_write_com(0x01);
75 1 delay_ms(5);}
76 /******************************************************************/
77 /* 写入字符串函数 */
78 /******************************************************************/
79 void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s)
80 {
81 1 if (y == 0)
82 1 {
83 2 LCD_write_com(0x80 + x);
84 2 }
85 1 else
86 1 {
87 2 LCD_write_com(0xC0 + x);
88 2 }
89 1 while (*s)
90 1 {
91 2 LCD_write_Data( *s);
92 2 s ++;
93 2 }
94 1 }
95 /******************************************************************/
96 /* 写入字节函数 */
97 /******************************************************************/
98 void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data)
99 {
100 1 if (y == 0)
101 1 {
102 2 LCD_write_com(0x80 + x);
103 2 }
104 1 else
105 1 {
106 2 LCD_write_com(0xC0 + x);
107 2 }
108 1 LCD_write_Data( Data);
109 1 }
110 /******************************************************************/
111 /* 初始化函数 */
112 /******************************************************************/
113 void LCD_init(void)
114 {
115 1 LCD_write_com(0x38); /*显示模式设置*/
116 1 delay_ms(5);
117 1 LCD_write_com(0x38);
C51 COMPILER V7.06 1602__蘝 06/02/2010 22:38:07 PAGE 3
118 1 delay_ms(5);
119 1 LCD_write_com(0x38);
120 1 delay_ms(5);
121 1 LCD_write_com(0x38);
122 1 LCD_write_com(0x08); /*显示关闭*/
123 1 LCD_write_com(0x01); /*显示清屏*/
124 1 LCD_write_com(0x06); /*显示光标移动设置*/
125 1 delay_ms(5);
126 1 LCD_write_com(0x0C); /*显示开及光标设置*/
127 1 }
128
129 /******************************************************************/
130 /* 主函数 */
131 /******************************************************************/
132 void main(void)
133 {
134 1 unsigned char i;
135 1 unsigned char *p;
136 1 delay_ms(100);
137 1 LCD_init();
138 1 while (1)
139 1 {
140 2 i = 1;
141 2 p = "haixiang MCU";
142 2 LCD_clear();
143 2 LCD_write_str(2,0,"Welcome to");
144 2 delay_ms(250);
145 2 while (*p)
146 2 {
147 3 LCD_write_char(i,1,*p);
148 3 i ++;
149 3 p ++;
150 3 delay_ms(250);
151 3 }
152 2 delay_ms(250);
153 2 }
154 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 252 ----
CONSTANT SIZE = 24 ----
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 + -