📄 driver_1602.lst
字号:
C51 COMPILER V8.02 DRIVER_1602 10/05/2006 12:44:43 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DRIVER_1602
OBJECT MODULE PLACED IN driver_1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE driver_1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /************************************************************
2
3 详细内容:LCD1602 4线并口通信源程序
4
5 作者:何昱
6 2006-10-5
7 QQ:262970434
8
9 ***************************************************************/
10
11
12
13
14 #include"DRIVER_1602.h"
15
16
17
18 unsigned char LCDIO;
19
20
21
22 /******************** LCD PART *************************************/
23 void LCD_delay(void)
24 {
25 1 unsigned char i;
26 1 for(i=40;i>0;i--)
27 1 ;
28 1 }
29
30 void LCD_cls(void)
31 {
32 1 LCD_en_command(0x01);
33 1 }
34
35 void LCD_en_command(unsigned char command)
36 {
37 1
38 1 LCD1602_RS=0;
39 1 LCD1602_RW=0;
40 1 LCD1602_EN=0;
41 1 LCDIO=(command & 0xf0);
42 1 SET_LCD(LCDIO);
43 1
44 1 LCD1602_EN=1;
45 1 LCD_delay();
46 1
47 1 LCD1602_EN=0;
48 1
49 1 LCDIO=(command & 0x0f)<<4;
50 1 SET_LCD(LCDIO);
51 1 LCD1602_EN=1;
52 1 LCD_delay();
53 1 LCD1602_EN=0;
54 1 }
55 /********************************************************************/
C51 COMPILER V8.02 DRIVER_1602 10/05/2006 12:44:43 PAGE 2
56 void SET_LCD(unsigned char IO_temp)
57 {
58 1 LCD_DB7=IO_temp&0x80;
59 1
60 1 LCD_DB6=IO_temp&0x40;
61 1
62 1 LCD_DB5=IO_temp&0x20;
63 1
64 1 LCD_DB4=IO_temp&0x10;
65 1
66 1 }
67
68
69
70 void LCD_en_dat(unsigned char dat)
71 {
72 1
73 1 LCD1602_RS=1;
74 1 LCD1602_RW=0;
75 1 LCD1602_EN=0;
76 1 LCDIO=(dat & 0xf0);
77 1 SET_LCD(LCDIO);
78 1
79 1 LCD1602_EN=1;
80 1 LCD_delay();
81 1 LCD1602_EN=0;
82 1
83 1 LCDIO=(dat & 0x0f)<<4;
84 1 SET_LCD(LCDIO);
85 1 LCD1602_EN=1;
86 1
87 1 LCD_delay();
88 1 LCD1602_EN=0;
89 1 }
90 /********************************************************************/
91 void LCD_set_xy( unsigned char x, unsigned char y )
92 {
93 1 unsigned char address;
94 1 if (y ==0)
95 1 address = 0x80 + x;
96 1 else
97 1 address = 0xC0 + x;
98 1 LCD_en_command(address);
99 1 }
100 /********************************************************************/
101 void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
102 {
103 1 LCD_set_xy( x, y );
104 1 LCD_en_dat(dat);
105 1 }
106 /********************************************************************/
107 void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
108 {
109 1 LCD_set_xy( X, Y ); //set address
110 1 while (*s) // write character
111 1 {
112 2 LCDIO=*s;
113 2 SET_LCD(LCDIO);
114 2 LCD_en_dat(*s);
115 2 s ++;
116 2 }
117 1 }
C51 COMPILER V8.02 DRIVER_1602 10/05/2006 12:44:43 PAGE 3
118 /********************************************************************/
119 void LCD_init(void)
120 {
121 1 LCD_en_command(0x33); //后加的4bit初始化部分!..宇轩
122 1 delay_nms(20);
123 1 LCD_en_command(0x32);
124 1 delay_nms(20);
125 1
126 1
127 1
128 1 LCD_en_command(0x08);
129 1 delay_nms(5);
130 1 LCD_en_command(0x01);
131 1 delay_nms(5);
132 1 LCD_en_command(0x06);
133 1 delay_nms(5);
134 1 LCD_en_command(0x0c);
135 1 delay_nms(5);
136 1 }
137 /********************************* *********************************/
138 void delay_nms(unsigned int n)
139 {
140 1 unsigned int i=0,j=0;
141 1 for (i=n;i>0;i--)
142 1 for (j=0;j<1140;j++);
143 1 }
144 /********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 282 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 6
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 + -