📄 51
字号:
C51 COMPILER V8.02 LCD12864R 07/24/2009 15:01:06 PAGE 1
C51 COMPILER V8.02, 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 =P2^0; //LCD片选端
11 sbit LCD_SID=P2^1; //LCD串行数据输入/输出端
12 sbit LCD_CLK=P2^2; //LCD串行同步时钟,上升沿时读取SID数据.
13 sbit LCD_BC=P2^3;
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_BC=0;
27 1 LCD_WRITE_IR(0x30); //功能设置-基本指令集
28 1 LCD_WRITE_IR(0x0c); //显示打开,光标关,反白显示关
29 1 LCD_WRITE_IR(0x01); //清屏
30 1 LCD_WRITE_IR(0x06); //进入点设定,光标向右移动,AC+1
31 1 }
32 /**********************************************************
33 *写指令到LCD函数
34 *名称:LCD_WRITE_IR
35 *入口参数:LCD_COMMAND (字符型--8位数据)
36 **********************************************************/
37 void LCD_WRITE_IR(unsigned char LCD_COMMAND)
38 {
39 1 unsigned char tData;
40 1 LCD_CS = 0; //拉低片选终止所有数据传送
41 1 //判忙
42 1 do{tData = LCD_READ_BF();}
43 1 while(tData&0x80==0x80);
44 1 LCD_CS = 1; //拉高片选准备传送数据
45 1 LCD_SEND(0xf8); //发送写指令
46 1 tData = LCD_COMMAND;
47 1 tData = tData&0xf0;//屏蔽低4位(取出高4位)
48 1 LCD_SEND(tData); //发送高4位
49 1 tData = LCD_COMMAND;
50 1 tData = tData<<4; //取低4位
51 1 LCD_SEND(tData); //发送低4位
52 1 LCD_CS = 0; //拉低片选终止所有数据传送
53 1 }
54 /**********************************************************
55 *写数据到LCD函数
C51 COMPILER V8.02 LCD12864R 07/24/2009 15:01:06 PAGE 2
56 *名称:LCD_WRITE_DR
57 *入口参数:LCD_DATA (字符型-8位)
58 **********************************************************/
59 void LCD_WRITE_DR(unsigned char LCD_DATA)
60 {
61 1 unsigned char tData=0;
62 1 LCD_CS = 0; //拉低片选终止所有数据传送
63 1 //判忙
64 1 do{tData = LCD_READ_BF();}
65 1 while(tData&0x80==0x80);
66 1 LCD_CS = 1; //拉高片选准备传送数据
67 1 LCD_SEND(0xfa); //发送写数据指令
68 1 tData = LCD_DATA;
69 1 tData = tData&0xf0;//屏蔽低4位(取出高4位)
70 1 LCD_SEND(tData); //发送高4位
71 1 tData = LCD_DATA;
72 1 tData = tData<<4; //取低4位
73 1 LCD_SEND(tData); //发送低4位
74 1 LCD_CS = 0; //拉低片选终止所有数据传送
75 1 }
76 /**********************************************************
77 *读取LCD忙碌标志(BF)和地址计数器(AC)的状态
78 *名称:LCD_READ_BF
79 **********************************************************/
80 unsigned char LCD_READ_BF()
81 {
82 1 unsigned char i,tData=0;
83 1 LCD_CS = 1; //拉高片选准备传送数据
84 1 LCD_SEND(0xfc); //发送读数据指令
85 1 i = LCD_RECEIVE(); //读取数据高4位
86 1 tData = LCD_RECEIVE(); //读取数据低4位
87 1 LCD_CS = 0; //拉低片选终止所有数据传送
88 1 i = i&0xf0; //屏蔽低4位
89 1 tData = tData>>4;
90 1 tData = tData&0x0f;//屏蔽高4位
91 1 tData = tData|i; //组合成完整数据
92 1 return (tData);
93 1 }
94
95 /**********************************************************
96 *LCD发送8BIT的数据(1个字节)
97 *名称:LCD_SEND
98 *入口:
99 **********************************************************/
100 void LCD_SEND(unsigned char sData)
101 {
102 1 unsigned char i;
103 1 for (i=8;i>0;i--)
104 1 {
105 2 LCD_CLK = 0;
106 2 LCD_SID = sData&0x80;//发送一位数据
107 2 LCD_CLK = 1; //拉高串行时钟端,锁存数据
108 2 sData <<= 1;
109 2 }
110 1 }
111 /**********************************************************
112 *LCD接收8BIT数据(1个字节)
113 *名称:LCD_RECEIVE
114 *出口:rData
115 **********************************************************/
116 unsigned char LCD_RECEIVE()
117 {
C51 COMPILER V8.02 LCD12864R 07/24/2009 15:01:06 PAGE 3
118 1 unsigned char i,rData=0;
119 1 for (i=8;i>0;i--)
120 1 {
121 2 LCD_CLK = 0;
122 2 rData <<=1;
123 2 LCD_CLK = 1;
124 2 rData |= LCD_SID;
125 2 }
126 1 return(rData);
127 1 }
128
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 174 ----
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 + -