📄 lcd1602-4line.lst
字号:
C51 COMPILER V7.50 LCD1602_4LINE 06/25/2007 18:03:15 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD1602_4LINE
OBJECT MODULE PLACED IN LCD1602-4line.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE LCD1602-4line.c BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 /*
2 LCD1602.c File
3
4 Created by Zhao liang
5 email: zhaoliang_0801@dl.cn
6 May 2006
7
8 */
9
10 #include "LCD1602.h"
11
12
13 void LCD_Read_BF(void)
14 {
15 1
16 1 unsigned char read=0;
17 1
18 1 LCD1602_RW = HIGH; //RW 1
19 1 LCD1602_RS = LOW; //RS 0
20 1 LCD1602_EN = HIGH; //EN 1 Read BF
21 1
22 1 LCDIO = 0xFF;
23 1
24 1 do{
25 2 read = LCDIO;
26 2 }while(read&MSB);
27 1
28 1 LCD1602_EN = LOW;
29 1 }
30
31 void delay_1us(void) //1us延时函数
32 {
33 1 unsigned char i;
34 1 for(i=0;i<1;i++);
35 1 }
36
37 void LCD_en_write(void) //EN端产生一个高电平脉冲,写LCD
38 {
39 1 LCD1602_EN = HIGH;
40 1 delay_1us();
41 1 LCD1602_EN = LOW;
42 1 }
43
44 //*************************************
45 void LCD_en_com(unsigned char command)
46 {
47 1 LCD_Read_BF();
48 1
49 1 LCD1602_RS = LOW; //RS 0
50 1 LCD1602_RW = LOW; //RW 0
51 1
52 1 LCDIO &= 0x0F;
53 1 LCDIO |= command&0xF0;
54 1
55 1 LCD_en_write();
C51 COMPILER V7.50 LCD1602_4LINE 06/25/2007 18:03:15 PAGE 2
56 1
57 1 command = command << 4;
58 1 LCDIO &= 0x0F;
59 1 LCDIO |= command&0xF0;
60 1 LCD_en_write();
61 1 }
62 //*********************************
63 void LCD_en_dat(unsigned char dat)
64 {
65 1 LCD_Read_BF();
66 1
67 1 LCD1602_RS = HIGH; //RS 1
68 1 LCD1602_RW = LOW; //RW 0
69 1
70 1 LCDIO &= 0x0F;
71 1 LCDIO |= dat&0xF0;
72 1
73 1 LCD_en_write();
74 1
75 1 dat = dat << 4;
76 1 LCDIO &= 0x0F;
77 1 LCDIO |= dat&0xF0;
78 1 LCD_en_write();
79 1 }
80 //**********************************************
81 void LCD_set_xy(unsigned char x,unsigned char y)
82 {
83 1 unsigned char address;
84 1 if(x == LINE1)
85 1 address = LINE1_HEAD + y;
86 1 else
87 1 address = LINE2_HEAD + y;
88 1 LCD_en_com(address);
89 1 }
90 //****************************************************************
91 void LCD_write_char(unsigned x,unsigned char y,unsigned char dat)
92 {
93 1 LCD_set_xy(x,y);
94 1 LCDIO = dat;
95 1 LCD_en_dat(dat);
96 1 }
97
98 //*********************************************************************
99 void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)
100 {
101 1 LCD_set_xy(x,y);
102 1 while(*s)
103 1 {
104 2 LCDIO = *s;
105 2 LCD_en_dat(*s);
106 2 s++;
107 2 }
108 1 }
109 //****************/*********************
110 void LCD_init(void)
111 {
112 1 LCD_en_com(DATA_MODE);
113 1 //set 8 bit data transmission mode
114 1 LCD_en_com(OPEN_SCREEN);
115 1 //open display (enable lcd display)
116 1 LCD_en_com(DISPLAY_ADDRESS);
117 1 //set lcd first display address
C51 COMPILER V7.50 LCD1602_4LINE 06/25/2007 18:03:15 PAGE 3
118 1 CLEARSCREEN;
119 1 //clear screen
120 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 165 ----
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 + -