📄 lcd.lst
字号:
C51 COMPILER V6.12 LCD 07/25/2007 15:28:44 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\lcd.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE .\lcd.c DEBUG OBJECTEXTEND
stmt level source
1 /*--------------------------------------------------------------------------------------------------------
-----*-
2
3 lcd.c(v1.00)
4
5 --------------------------------------------------------------------------------------------------------
-----
6
7 -these rountine are used for driving FYD12864-0402B LCD module.
8
9 -*-------------------------------------------------------------------------------------------------------
-----*/
10
11 //简单的LCD显示驱动程序,用于驱动FYD12864-0402B液晶显示模块。
12
13 //fosc=11.0592MHz
14 //硬件连接:
15 //LCD上的VSS[1]连接到地
16 //LCD上的VCC[2]连接到+5V
17 //LCD上的VOUT[18]串联10K电位器连接到VO
18 //LCD上的PSB[15]可选择VCC或GND(须加限流电阻100欧)
19 //LCD上的/RESET[17]接复位电路
20 //LCD上的A[19]连接VCC
21 //LCD上的K[20]连接GND
22
23 #include <AT89X52.H>
24 #include"port.h"
25 #include"lcd.h"
26
27 //端口定义应放在端口头文件PORT.H中
28 //#define Lcd_Bus P1
29
30 //sbit RS=P2^1; //数据指令选择信号
31 //sbit RW=P2^2; //读写控制信号
32 //sbit E=P2^3; //使能信号
33
34 #define FIRST_ADDR 0 //定义字符/汉字显示起始位置
35
36 //检查忙位
37 void chk_busy()
38 {
39 1 RS=0;
40 1 RW=1;
41 1 E=1;
42 1 Lcd_Bus=0xff;
43 1 while((Lcd_Bus&0x80)==0x80);
44 1 E=0;
45 1 }
46
47 //延时子程序
48 void delay(unsigned int t)
49 {
50 1 unsigned int i,j;
51 1 for(i=0;i<t;i++)
52 1 for(j=0;j<10;j++)
C51 COMPILER V6.12 LCD 07/25/2007 15:28:44 PAGE 2
53 1 ;
54 1 }
55
56 //写命令到LCD
57 void write_com(unsigned char cmdcode)
58 {
59 1 chk_busy();
60 1 RS=0;
61 1 RW=0;
62 1 E=1;
63 1 Lcd_Bus=cmdcode;
64 1 delay(5);//在数据写入的时候加入适当的延时
65 1 E=0;
66 1 delay(5);
67 1 }
68
69 //写数据到LCD
70 void write_data(unsigned char Dispdata)
71 {
72 1 chk_busy();
73 1 RS=1;
74 1 RW=0;
75 1 E=1;
76 1 Lcd_Bus=Dispdata;
77 1 delay(5);//在数据写入的时候加入适当的延时
78 1 E=0;
79 1 delay(5);
80 1 }
81
82 //初始化LCD显示屏
83 void lcdreset()
84 {
85 1 delay(2000);
86 1 write_com(0x30);
87 1 delay(10); //选择基本指令集
88 1 write_com(0x30); //选择8bit数据流
89 1 delay(5);
90 1 write_com(0x0c); //开显示(无游标、不反白)
91 1 delay(10);
92 1 write_com(0x01); //清除显示,并且设定地址指针为00H
93 1 delay(500);
94 1 write_com(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
95 1 delay(0);
96 1 }
97
98 //清屏命令
99 void clrscreen()
100 {
101 1 write_com(0x01);
102 1 delay(10);
103 1 }
104
105 //显示字符串
106 void hzkdis(unsigned char code *s)
107 {
108 1 while(*s>0)
109 1 { write_data(*s);
110 2 s++;
111 2 delay(50);
112 2 }
113 1 }
114
C51 COMPILER V6.12 LCD 07/25/2007 15:28:44 PAGE 3
115 /*该函数只在测试时使用*/
116 //测试屏幕显示
117 void ceshi()
118 {
119 1 write_com(0x01);//清除显示,并且设定地址指针为00H
120 1 delay(5);
121 1
122 1 write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
123 1 hzkdis("乐山师院物电系制");
124 1
125 1 write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
126 1 hzkdis("LCD12864点阵液晶");
127 1
128 1 write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
129 1 hzkdis("----测试程序----");
130 1
131 1 write_com(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)
132 1 hzkdis("----------黄华彬");
133 1 }
134
135 /*--------------------------------------------------------------------------------------------------------
-----*-
136
137 ---------------------------------------THE END OF FILE--------------------------------------------------
-----
138
139 -*--------------------------------------------------------------------------------------------------------
-----*/
140
141
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 254 ----
CONSTANT SIZE = 68 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
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 + -