📄 lcd1602.lst
字号:
C51 COMPILER V7.06 LCD1602 09/01/2008 00:04:39 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN lcd1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //#pragma src // 产生汇编文件
2 #include<reg51.h>
3 #include<intrins.h>
4 //========= 变量类型标识的宏定义,通常做法 ==============
5 #define Uchar unsigned char
6 #define Uint unsigned int
7 //======== 定义LCD与MCU的接口,LCD数据线接P2 =============
8 #define LCD_DATA P0
9 sbit LCD_EN=P3^5;
10 sbit LCD_RS=P3^7;
11 sbit LCD_RW=P3^6;
12
13 /*------------------------------------------------
14 Public function prototypes 函数原型
15 -------------------------------------------------*/
16 void LCD_init(void);/*初始化*/
17 void LCD_cmd(Uchar cmd);/*写入控制命令*/
18 void LCD_string(char *s);/*写入要显示的字符串*/
19 void LCD_char(char str);/*写入要显示的字符*/
20 void LCD_setxy(char x,char y);/*设定显示位置,行x=1/2,列y=1~16的任意整数*/
21 void wait_until_ready(void);/*检测忙标志,忙则等待*/
22 void delay(void);
23
24 //函数实现:
25
26
27 sbit bflag=ACC^7;
28 void delay(void) //延时函数
29 {
30 1
31 1
32 1 int i=0;
33 1
34 1
35 1 }
36 /*产生一个使能脉冲*/
37 void En_Toggle(void)
38 {
39 1 LCD_EN=1;
40 1 delay();
41 1 LCD_EN=0;
42 1 delay();
43 1 }
44
45
46 void LCD_clr()
47 {
48 1 LCD_cmd(0x01);
49 1
50 1 }
51
52 void LCD_init(void)
53 {
54 1 LCD_cmd(0x08);/*显示关闭*/
55 1 LCD_cmd(0x38);/*8位数据,2行显示*/
C51 COMPILER V7.06 LCD1602 09/01/2008 00:04:39 PAGE 2
56 1
57 1 LCD_cmd(0x01);/*清屏*/
58 1 /*清屏和光标归位需要较长的时间*/
59 1 LCD_cmd(0x06);/*写入数据后光标右移*/
60 1 LCD_cmd(0x0c);/*显示开,不显示光标*/
61 1 }
62 void LCD_cmd(Uchar cmd)/*写入控制命令*/
63 {
64 1 wait_until_ready();
65 1 LCD_RS=0;
66 1 LCD_RW=0;
67 1 LCD_DATA=cmd;
68 1 En_Toggle();
69 1
70 1 }
71 void LCD_char(char str)/*写入要显示的字符*/
72 {
73 1 wait_until_ready();
74 1 LCD_RS=1;
75 1 LCD_RW=0;
76 1 LCD_DATA=str;
77 1 En_Toggle();
78 1
79 1 }
80 void LCD_setxy(char x,char y) /*设定显示位置,行x=1/2,列y=1~16的任意整数*/
81 {
82 1 char temp;
83 1 if(x==1)
84 1 {temp=0x80+y-1;
85 2 LCD_cmd(temp);
86 2 }
87 1 else
88 1 {temp=0xC0+y-1;
89 2 LCD_cmd(temp);
90 2 }
91 1 }
92 void LCD_string(char *s)
93 {
94 1 for(;*s!='\0';s++)LCD_char(*s);
95 1 }
96 void wait_until_ready(void) /*检测忙标志,忙则等待*/
97 {
98 1 LCD_RS=0;
99 1 LCD_RW=1;
100 1 LCD_DATA=0x0ff;
101 1 LCD_EN=1;
102 1 delay();
103 1 do{ACC=LCD_DATA;}while(bflag==1);
104 1 LCD_EN=0;
105 1 }
106
107
108
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 151 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
C51 COMPILER V7.06 LCD1602 09/01/2008 00:04:39 PAGE 3
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 + -