📄 lcd_driver.lst
字号:
C51 COMPILER V8.02 LCD_DRIVER 07/13/2007 17:09:25 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD_DRIVER
OBJECT MODULE PLACED IN LCD_driver.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD_driver.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <c8051f020.h>
2 #include "lcd_driver.h"
3 #include "delay.h"
4 //#include <intrins.h>
5 //---------------------------------
6 #define uchar unsigned char
7 #define uint unsigned int
8 //--------------------------------
9
10 //-----------------------------------
11 uchar a=0x80;
12 //检查忙信号 -------------------------
13 check_busy(void)
14 {
15 1 uchar i,bf,temp;
16 1 P5=0xff;
17 1 temp=P5;
18 1 temp=temp&0x80;
19 1 bf=0x80&&temp;
20 1 for(i=0;i<5;i++)
21 1 {
22 2 if(bf==0)
23 2 {
24 3 P4 &=~0x04;
25 3 break;
26 3 }
27 2 delay(1,10);
28 2 }
29 1 P4 &=~0x04;
30 1 }
31
32
33 void LCD_data(uchar y)
34 {
35 1 check_busy();
36 1 delay(100,100);
37 1 P4=0x01; /*RS=1,RW=0*/
38 1 P5=y;
39 1 delay(1,1);
40 1 P4 |=0x04; /*EN=1*/
41 1 delay(1,1);
42 1 P4 &=~0x04; /*EN=0*/
43 1 a++;
44 1 dispmove();
45 1 }
46 void LCD_string(uchar row,uchar column,uchar *dis_buffer) //发送一串字符
47 {
48 1 uchar i=0;
49 1 a=(row+1)*0x40+column-0x01;
50 1 LCD_cmd(a);
51 1 while(dis_buffer[i]!='\0')
52 1 {
53 2 LCD_data(dis_buffer[i]);
54 2 i++;
55 2 }
C51 COMPILER V8.02 LCD_DRIVER 07/13/2007 17:09:25 PAGE 2
56 1 }
57
58 void LCD_clear_line(uchar line)
59 {
60 1 uchar i;
61 1 a=(line+1)*0x40;
62 1 LCD_cmd(a);
63 1 for(i=0;i<16;i++)
64 1 LCD_data(0x20);
65 1 }
66 //写控制命令-----------------------------
67 void LCD_cmd(uchar z)
68 {
69 1 check_busy();
70 1 delay(100,100);
71 1 P4=0x00; //RS=0,RW=0
72 1 P5=z;
73 1 delay(10,1);
74 1 P4 |=0x04; //EN=1
75 1 delay(1,1);
76 1 P4 &=~0x04; //EN=0
77 1
78 1 }
79 //换行函数----------------------------
80
81 void dispmove()
82 {
83 1 if(a==0x90) //换到下行
84 1 {
85 2 a=0x0C0;
86 2 LCD_cmd(0xC0);
87 2 }
88 1 if(a==0xd1) //回首行
89 1 {
90 2 a=0x080;
91 2 LCD_cmd(0x01);
92 2 LCD_cmd(0x80); //写首地址
93 2 }
94 1 }
95 //lcd的初始化---------------------------
96 void LCD_Init()
97 {
98 1 LCD_cmd(0x01);
99 1 LCD_cmd(0x38);
100 1 LCD_cmd(0x0c); //显示光标并闪烁
101 1 LCD_cmd(0x01);
102 1 LCD_cmd(0x06);
103 1 LCD_cmd(0x80);
104 1 LCD_cmd(0x02);
105 1
106 1
107 1 }
108 //////////////////////////////////////
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 279 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 9
IDATA SIZE = ---- ----
C51 COMPILER V8.02 LCD_DRIVER 07/13/2007 17:09:25 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 + -