📄 lcd1602.lst
字号:
C51 COMPILER V7.20 LCD1602 07/21/2007 13:48:05 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN .\lcd1602.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\..\桌面\lcd1602\lcd1602.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lcd1602.lst)
- OBJECT(.\lcd1602.obj)
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5 //数据口定义
6 #define lcd1602_bus P0
7
8 //引脚定义
9 sbit rs_1602=P2^5;
10 sbit rw_1602=P2^6;
11 sbit e_1602=P2^7;
12
13 /**********************************lcd1602******************************************/
14 /*********延时子程序**********/
15 void delay(uchar dy)
16 {
17 1 while(--dy);
18 1 }
19
20 /***********忙判断标志,返回一个位BF********************/
21 bit lcd1602_busy(void)
22 {
23 1 uchar busy_flag;
24 1 rs_1602=0;
25 1 rw_1602=1;
26 1 _nop_();
27 1 e_1602=1;
28 1 _nop_();
29 1 lcd1602_bus=0xff;
30 1 busy_flag=lcd1602_bus; //e在高电平时读
31 1 e_1602=0;
32 1 return (bit)(busy_flag&0x80); //BF=1; BUSY 返回一个位
33 1 }
34
35
36 /********写命令,有两个参数,一个是要写的命令控制字,
37 第二个是用来控制是否进行忙标志的判断。
38 busyflag=1;
39 判断: 为0
40 ***************/
41 void lcd1602_wrcmd(unsigned char lcdcmd)
42 {
43 1 while(lcd1602_busy()); //等待空闲
44 1 lcd1602_bus=lcdcmd;
45 1 rs_1602=0;
46 1 rw_1602=0;
47 1 _nop_();
48 1 e_1602=1;
49 1 _nop_();
50 1 _nop_();
51 1 e_1602=0; //产生一个下沿
52 1 }
53
54
C51 COMPILER V7.20 LCD1602 07/21/2007 13:48:05 PAGE 2
55
56 /***************向液晶写数据******************/
57 void lcd1602_wrdata(uchar lcddata)
58 {
59 1 while(lcd1602_busy()); //等待空闲
60 1 lcd1602_bus=lcddata; //在下沿的时候写数据
61 1 rs_1602=1;
62 1 rw_1602=0;
63 1 _nop_();
64 1 e_1602=1;
65 1 _nop_();
66 1 _nop_();
67 1 e_1602=0;
68 1 //lcd_bus=0xff;
69 1 }
70
71
72 /************液晶的清屏************/
73 void lcd1602_clear(void)
74 {
75 1 lcd1602_wrcmd(0x01); //液晶清屏控制字 并延时>40us
76 1 delay(100);
77 1 }
78
79 /***********1602液晶的初始化***************/
80 void lcd1602_init(void)
81 {
82 1 lcd1602_wrcmd(0x38); //功能设置-----8位数据接口,两行显示,5*7点阵字符显示
83 1 delay(100);
84 1 lcd1602_wrcmd(0x0c); //显示开关控制----显示开关开,光标开关关,闪烁开关关
85 1 delay(100);
86 1 lcd1602_wrcmd(0x06); //输入方式设置,AC自增1, S=0;
87 1 delay(100);
88 1 lcd1602_wrcmd(0x01); //清屏
89 1 delay(100);
90 1 }
91
92 void main()
93 {
94 1
95 1 uchar i;
96 1 unsigned char offset=0x80;
97 1 unsigned int j;
98 1 delay(2);
99 1 lcd1602_init();
100 1 j=0x41;
101 1 lcd1602_wrcmd(offset+0x00);
102 1 for(i=0;i<16;i++)
103 1 {
104 2 lcd1602_wrdata(j);
105 2 j++;
106 2 }
107 1 lcd1602_wrcmd(offset+0x00);
108 1 for(i=0;i<10;i++)
109 1 {
110 2
111 2 lcd1602_wrdata(j);
112 2 j++;
113 2 }
114 1 while(1);
115 1 }
C51 COMPILER V7.20 LCD1602 07/21/2007 13:48:05 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 161 ----
CONSTANT SIZE = ---- ----
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 + -