📄 lcd_grf.lst
字号:
C51 COMPILER V7.06 LCD_GRF 05/31/2007 03:15:51 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD_GRF
OBJECT MODULE PLACED IN lcd_grf.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd_grf.c LARGE
stmt level source
1 /***********************************************************************************************
2 ** 文件名称:_LCD_C
3 ** 功能说明:ST7920驱动LCD显示软件包
4 ** 使用说明:软件包用到LPC213x的二个引脚,默认为P1.24,P1.25,如需修改,请修改头文件中的宏定义数据即可
5 (接触一天,时间不足,理解不深,代码有待优化,鉴谅)
6 ***********************************************************************************************/
7 //#include "config.h"
8 #include <REG52.H> /* special function register declarations */
9
10 #include "LCD.h"
11 uint8 h=0,l=0;
12
13 /***********************************************************************************************
14 ** 函数名称:LCD_Init()
15 ** 函数功能:LCD初始化
16 ** 入口参数:无
17 ** 出口参数:无
18 ***********************************************************************************************/
19 void LCD_Init(void)
20 {
21 1 //PIN_INITI;
22 1 PSB = 0;
23 1 RST = 0;
24 1 LCD_Dly(50);
25 1 RST=1;
26 1
27 1 LCD_Dly(50); //启动等待,等LCM讲入工作状态
28 1 LCD_Write(0,0x30); //8 位介面,基本指令集
29 1 LCD_Write(0,0x0c); //显示打开,光标关,反白关
30 1 LCD_Write(0,0x01); //清屏,将DDRAM的地址计数器归零
31 1
32 1 }
33
34 void LCD_InitG()
35 {
36 1 //PIN_INITI;
37 1 PSB = 0;
38 1 RST = 0;
39 1 LCD_Dly(2);
40 1 RST=1;
41 1
42 1 LCD_Dly(2); //启动等待,等LCM讲入工作状态
43 1 LCD_Write(0,0x36); //8 位介面,基本指令集
44 1 // LCD_Write(0,0x0c); //显示打开,光标关,反白关
45 1 //LCD_Write(0,0x01); //清屏,将DDRAM的地址计数器归零
46 1
47 1 }
48
49 /***********************************************************************************************
50 ** 函数名称:LCD_WStr()
51 ** 函数功能:显示字符串
52 ** 入口参数:addr 显示的地址
53 ** ptr 要显示的字符串的首地址
54 ** 出口参数:无
55 ***********************************************************************************************/
C51 COMPILER V7.06 LCD_GRF 05/31/2007 03:15:51 PAGE 2
56 void LCD_WStr(uint8 addr,char *ptr)
57 {
58 1 LCD_Write(WIR,addr);
59 1 //LCD_Dly(1);
60 1 while(*ptr!=0)
61 1 {
62 2 LCD_Write(WDATA,*ptr++);
63 2 // LCD_Dly(1);
64 2 }
65 1 }
66 /***********************************************************************************************
67 ** 函数名称:LCD_Write()
68 ** 函数功能:LCD写指令或数据
69 ** 入口参数:control_flow: 数据控制流,0 为写指令 1 为写数据
70 ddata: 数据
71 ** 出口参数:无
72 ***********************************************************************************************/
73 void LCD_Write(unsigned char control_flow, unsigned char ddata)
74 {
75 1 unsigned char start_data,Hdata,Ldata;
76 1 if(control_flow==0) start_data=0xf8; //写指令
77 1 else start_data=0xfa; //写数据
78 1
79 1 CS=1;
80 1 Hdata=ddata&0xf0; //取高四位
81 1 Ldata=(ddata<<4)&0xf0; //取低四位
82 1 LCD_SendByte(start_data); //发送起始信号
83 1 LCD_Dly(2); //延时是必须的
84 1 LCD_SendByte(Hdata); //发送高四位
85 1 LCD_Dly(2); //延时是必须的
86 1 LCD_SendByte(Ldata); //发送低四位
87 1 LCD_Dly(2); //延时是必须的
88 1 CS=0;
89 1 }
90
91 /***********************************************************************************************
92 ** 函数名称:LCD_SendByte()
93 ** 函数功能:发送一个字节
94 ** 入口参数:bbyte 字节数据
95 ** 出口参数:无
96 ***********************************************************************************************/
97 void LCD_SendByte(unsigned char bbyte)
98 {
99 1 unsigned char i;
100 1
101 1 for(i=0;i<8;i++)
102 1 {
103 2 if( (bbyte&0x80)!=0 ) SID_1;
104 2 else
105 2 {
106 3 SID_0 ; //SID=bbyte&0x80;取出最高位
107 3 }
108 2 SCKL_1; //SCLK=1;
109 2 i=i;
110 2 SCKL_0; //SCLK=0;
111 2 bbyte<<=1; //左移
112 2 }
113 1 }
114 /***********************************************************************************************
115 ** 函数名称:LCD_Dly()
116 ** 函数功能://延时
117 ** 入口参数:dly 延时参数,值越大,延时时间越长
C51 COMPILER V7.06 LCD_GRF 05/31/2007 03:15:51 PAGE 3
118 ** 出口参数:无
119 ***********************************************************************************************/
120 void LCD_Dly(unsigned int dly)
121 {
122 1 unsigned int i,j;
123 1 for(i=dly;i>0;i--)
124 1 for(j=5;j>0;j--);
125 1 }
126
127 /***********************************************************************************************
128 ** 函数名称:LCD_Test()
129 ** 函数功能:图形方式下屏幕全黑
130 ** 入口参数:无
131 ** 出口参数:无
132 ***********************************************************************************************/
133 /*void LCD_Test(void)
134 {
135 unsigned char i,j;
136 for(i=0;i<32;i++)
137 {
138 LCD_Write(0,0x80+i);
139 LCD_Write(0,0x80);
140 for(j=0;j<16;j++)
141 LCD_Write(1,0xff);
142 }
143
144 for(i=0;i<32;i++)
145 {
146 LCD_Write(0,0x80+i);
147 LCD_Write(0,0x88);
148 for(j=0;j<16;j++)
149 LCD_Write(1,0xff);
150 }
151 }
152
153 /***********************************************************************************************
154 ** 函数名称:LCD_GPCLS()
155 ** 函数功能:图形方式下清屏
156 ** 入口参数:无
157 ** 出口参数:无
158 ***********************************************************************************************/
159 void LCD_GPCLS(void)
160 {
161 1 unsigned char i,j;
162 1 LCD_Write(0,0x36);
163 1
164 1 for(i=0;i<32;i++)
165 1 {
166 2 LCD_Write(0,0x80+i);
167 2 LCD_Write(0,0x80);
168 2 for(j=0;j<16;j++)
169 2 LCD_Write(1,0x00);
170 2 }
171 1
172 1 for(i=0;i<32;i++)
173 1 {
174 2 LCD_Write(0,0x80+i);
175 2
176 2 LCD_Write(0,0x88);
177 2
178 2 for(j=0;j<16;j++)
179 2 LCD_Write(1,0x00);
C51 COMPILER V7.06 LCD_GRF 05/31/2007 03:15:51 PAGE 4
180 2 }
181 1 }
182
183 /***********************************************************************************************
184 ** 函数名称:Draw_point()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -