📄 lcd1602.lst
字号:
C51 COMPILER V7.50 LCD1602 08/04/2008 10:10:51 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN lcd1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602.c DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3
4 /****************************************************************************
5 内存区定义
6 ****************************************************************************/
7 sbit BF=P0^7; //1602状态信号 高电平忙状态,低电平闲状态(可以读写)
8 sbit RS=P2^7; //1602数据指令选择(低电平指令/状态,高电平数据)
9 sbit RW=P1^1; //1602读写选择 (低电平写,高电平读)
10 sbit ENABLE=P1^0; //1602使能信号(写1602的时候用下降沿脉冲)
11 /**************************************************************************
12 数据区定义
13 **************************************************************************/
14 unsigned char outdata[]="Hello World! Hello Mcu!";
15 /**************************************************************************
16 //延时函数
17 **************************************************************************/
18 void delay(int sj)
19 {
20 1 int i,j;
21 1 for (i=0;i<sj;i++);
22 1 for (j=0;j<248;j++);
23 1 }
24 /**************************************************************************
25 //判忙函数
26 **************************************************************************/
27 void busy()
28 {
29 1 do
30 1 {
31 2 P0=0xff;
32 2 RS=0;
33 2 RW=1;
34 2 ENABLE=0;
35 2 delay(1);
36 2 ENABLE=1;
37 2 }while(BF);
38 1 }
39 /**************************************************************************
40 //写操作命令函数
41 **************************************************************************/
42 void write_cmd(unsigned char commandaddr)
43 {
44 1 busy();
45 1 RS=0;
46 1 RW=0;
47 1 ENABLE=1;
48 1 P0=commandaddr;
49 1 ENABLE=0;
50 1 }
51 /**************************************************************************
52 //初始化1602函数
53 **************************************************************************/
54 void init_lcd()
55 {
C51 COMPILER V7.50 LCD1602 08/04/2008 10:10:51 PAGE 2
56 1 write_cmd(0x01); //清显示,指令码01H,光标复位到地址00H位置
57 1 write_cmd(0x38); //功能设置
58 1 write_cmd(0x0c); //显示开关控制
59 1 write_cmd(0x06); //光标和显示模式设置
60 1 }
61
62 /**************************************************************************
63 //写显示数据函数
64 **************************************************************************/
65
66
67 void write_data(unsigned char dataaddr)
68 {
69 1 busy();
70 1 RS=1;
71 1 RW=0;
72 1 ENABLE=1;
73 1 P0=dataaddr;
74 1 delay(1);
75 1 ENABLE=0;
76 1 delay(1);
77 1 }
78 void main(void)
79 {
80 1 int i;
81 1
82 1 init_lcd();
83 1
84 1 write_cmd(0x80);
85 1 while(outdata[i] != '\0')
86 1 {
87 2 write_data(outdata[i]);
88 2 i++;
89 2 if (i==16)
90 2 write_cmd(0xc0);
91 2 }
92 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 166 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 27 2
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 + -