📄 driver_1602.lst
字号:
C51 COMPILER V7.50 DRIVER_1602 10/21/2007 16:20:34 PAGE 1
C51 COMPILER V7.50, 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
42 1 LCDIO=(command & 0xf0);
43 1 SET_LCD(LCDIO);
44 1
45 1 LCD1602_EN=1;
46 1 LCD_delay();
47 1 LCD1602_EN=0;
48 1
49 1 LCDIO=(command & 0x0f)<<4;
50 1 SET_LCD(LCDIO);
51 1
52 1 LCD1602_EN=1;
53 1 LCD_delay();
54 1 LCD1602_EN=0;
55 1 }
C51 COMPILER V7.50 DRIVER_1602 10/21/2007 16:20:34 PAGE 2
56 /********************************************************************/
57 void SET_LCD(unsigned char IO_temp)
58 {
59 1 LCD_DB7=IO_temp&0x80;
60 1
61 1 LCD_DB6=IO_temp&0x40;
62 1
63 1 LCD_DB5=IO_temp&0x20;
64 1
65 1 LCD_DB4=IO_temp&0x10;
66 1
67 1 }
68
69
70
71 void LCD_en_dat(unsigned char dat)
72 {
73 1
74 1 LCD1602_RS=1;
75 1 // LCD1602_RW=0;
76 1 LCD1602_EN=0;
77 1 LCDIO=(dat & 0xf0);
78 1 SET_LCD(LCDIO);
79 1
80 1 LCD1602_EN=1;
81 1 LCD_delay();
82 1 LCD1602_EN=0;
83 1
84 1 LCDIO=(dat & 0x0f)<<4;
85 1 SET_LCD(LCDIO);
86 1 LCD1602_EN=1;
87 1
88 1 LCD_delay();
89 1 LCD1602_EN=0;
90 1 }
91 /********************************************************************/
92 void LCD_set_xy( unsigned char x, unsigned char y )
93 {
94 1 unsigned char address;
95 1 if (y ==0)
96 1 address = 0x80 + x;
97 1 else
98 1 address = 0xC0 + x;
99 1 LCD_en_command(address);
100 1 }
101 /********************************************************************/
102 void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)
103 {
104 1 LCD_set_xy( x, y );
105 1 LCD_en_dat(dat);
106 1 }
107 /********************************************************************/
108 void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
109 {
110 1 LCD_set_xy( X, Y ); //set address
111 1 while (*s) // write character
112 1 {
113 2 LCDIO=*s;
114 2 SET_LCD(LCDIO);
115 2 LCD_en_dat(*s);
116 2 s ++;
117 2 }
C51 COMPILER V7.50 DRIVER_1602 10/21/2007 16:20:34 PAGE 3
118 1 }
119 /********************************************************************/
120 void LCD_init(void)
121 {
122 1 LCD_en_command(0x33); //后加的4bit初始化部分!..宇轩
123 1 delay_nms(20);
124 1 LCD_en_command(0x32);
125 1 delay_nms(20);
126 1
127 1
128 1
129 1 LCD_en_command(0x08);
130 1 delay_nms(5);
131 1 LCD_en_command(0x01);
132 1 delay_nms(5);
133 1 LCD_en_command(0x06);
134 1 delay_nms(5);
135 1 LCD_en_command(0x0c);
136 1 delay_nms(5);
137 1 }
138 /********************************* *********************************/
139 void delay_nms(unsigned int n)
140 {
141 1 unsigned int i=0,j=0;
142 1 for (i=n;i>0;i--)
143 1 for (j=0;j<1140;j++);
144 1 }
145 /********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 278 ----
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 + -