📄 lcd12864r.lst
字号:
C51 COMPILER V7.50 LCD12864R 10/04/2007 11:52:12 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD12864R
OBJECT MODULE PLACED IN LCD12864R.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD12864R.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /**********************************************************
2 *描述:YM12864R-3带中文字库图形液晶驱动
3 *版本:V1.0
4 *控制器:ST7920
5 *通讯方式:串行方式
6
7 **********************************************************/
8 #include <at89x52.h>
9 //引脚定义:
10 sbit LCD_CS =P0^0; //LCD片选端
11 sbit LCD_SID=P0^1; //LCD串行数据输入/输出端
12 sbit LCD_CLK=P0^2; //LCD串行同步时钟,上升沿时读取SID数据.
13
14 //函数声明:
15 void LCD_SEND(unsigned char sData);
16 unsigned char LCD_RECEIVE();
17 unsigned char LCD_READ_BF();
18 void LCD_WRITE_IR(unsigned char LCD_COMMAND);
19 void LCD_WRITE_DR(unsigned char LCD_DATA);
20
21 /**********************************************************
22 *LCD初始化函数
23 **********************************************************/
24 void LCD_INIT()
25 {
26 1 LCD_WRITE_IR(0x30); //功能设置-基本指令集
27 1 LCD_WRITE_IR(0x0c); //显示打开,光标关,反白显示关
28 1 LCD_WRITE_IR(0x01); //清屏
29 1 LCD_WRITE_IR(0x06); //进入点设定,光标向右移动,AC+1
30 1 }
31 /**********************************************************
32 *写指令到LCD函数
33 *名称:LCD_WRITE_IR
34 *入口参数:LCD_COMMAND (字符型--8位数据)
35 **********************************************************/
36 void LCD_WRITE_IR(unsigned char LCD_COMMAND)
37 {
38 1 unsigned char tData;
39 1 LCD_CS = 0; //拉低片选终止所有数据传送
40 1 //判忙
41 1 do{tData = LCD_READ_BF();}
42 1 while(tData&0x80==0x80);
43 1 LCD_CS = 1; //拉高片选准备传送数据
44 1 LCD_SEND(0xf8); //发送写指令
45 1 tData = LCD_COMMAND;
46 1 tData = tData&0xf0;//屏蔽低4位(取出高4位)
47 1 LCD_SEND(tData); //发送高4位
48 1 tData = LCD_COMMAND;
49 1 tData = tData<<4; //取低4位
50 1 LCD_SEND(tData); //发送低4位
51 1 LCD_CS = 0; //拉低片选终止所有数据传送
52 1 }
53 /**********************************************************
54 *写数据到LCD函数
55 *名称:LCD_WRITE_DR
C51 COMPILER V7.50 LCD12864R 10/04/2007 11:52:12 PAGE 2
56 *入口参数:LCD_DATA (字符型-8位)
57 **********************************************************/
58 void LCD_WRITE_DR(unsigned char LCD_DATA)
59 {
60 1 unsigned char tData=0;
61 1 LCD_CS = 0; //拉低片选终止所有数据传送
62 1 //判忙
63 1 do{tData = LCD_READ_BF();}
64 1 while(tData&0x80==0x80);
65 1 LCD_CS = 1; //拉高片选准备传送数据
66 1 LCD_SEND(0xfa); //发送写数据指令
67 1 tData = LCD_DATA;
68 1 tData = tData&0xf0;//屏蔽低4位(取出高4位)
69 1 LCD_SEND(tData); //发送高4位
70 1 tData = LCD_DATA;
71 1 tData = tData<<4; //取低4位
72 1 LCD_SEND(tData); //发送低4位
73 1 LCD_CS = 0; //拉低片选终止所有数据传送
74 1 }
75 /**********************************************************
76 *读取LCD忙碌标志(BF)和地址计数器(AC)的状态
77 *名称:LCD_READ_BF
78 **********************************************************/
79 unsigned char LCD_READ_BF()
80 {
81 1 unsigned char i,tData=0;
82 1 LCD_CS = 1; //拉高片选准备传送数据
83 1 LCD_SEND(0xfc); //发送读数据指令
84 1 i = LCD_RECEIVE(); //读取数据高4位
85 1 tData = LCD_RECEIVE(); //读取数据低4位
86 1 LCD_CS = 0; //拉低片选终止所有数据传送
87 1 i = i&0xf0; //屏蔽低4位
88 1 tData = tData>>4;
89 1 tData = tData&0x0f;//屏蔽高4位
90 1 tData = tData|i; //组合成完整数据
91 1 return (tData);
92 1 }
93
94 /**********************************************************
95 *LCD发送8BIT的数据(1个字节)
96 *名称:LCD_SEND
97 *入口:
98 **********************************************************/
99 void LCD_SEND(unsigned char sData)
100 {
101 1 unsigned char i;
102 1 for (i=8;i>0;i--)
103 1 {
104 2 LCD_CLK = 0;
105 2 LCD_SID = sData&0x80;//发送一位数据
106 2 LCD_CLK = 1; //拉高串行时钟端,锁存数据
107 2 sData <<= 1;
108 2 }
109 1 }
110 /**********************************************************
111 *LCD接收8BIT数据(1个字节)
112 *名称:LCD_RECEIVE
113 *出口:rData
114 **********************************************************/
115 unsigned char LCD_RECEIVE()
116 {
117 1 unsigned char i,rData=0;
C51 COMPILER V7.50 LCD12864R 10/04/2007 11:52:12 PAGE 3
118 1 for (i=8;i>0;i--)
119 1 {
120 2 LCD_CLK = 0;
121 2 rData <<=1;
122 2 LCD_CLK = 1;
123 2 rData |= LCD_SID;
124 2 }
125 1 return(rData);
126 1 }
127
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 172 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -