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