📄 lcd_24064.lst
字号:
C51 COMPILER V7.50 LCD_24064 08/12/2007 23:57:47 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD_24064
OBJECT MODULE PLACED IN lcd_24064.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE lcd_24064.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***************************************************************\
2 |* 12864LCD显示程序 采用C8051F020控制 *|
3 |* 制作人:熊涛 *|
4 |* 时间:2007年8月12日 *|
5 |* 接口定义:P5接数据 DB7~DB0 *|
6 |* P3.3 P3.5 P3.7 接控制线 *|
7 |* 具体见定义 *|
8 \***************************************************************/
9
10
11 #include "c8051f020.h"
12 #include <string.h>
13 #include "zk.h" //存入CGRAM中的字库 32个汉字
14
15 #define uchar unsigned char
16 #define uint unsigned int
17
18 #define DATA_IO P5 //数据线接P5
19
20 sbit OUT=P1^6;
21 sbit KEY=P3^7;
22
23 //控制线接P3口 数据线接P5口
24 //sbit CE = P3^1; // 读\写使能
25 //CE直接接地
26 sbit RD = P3^3; // 写 控制
27 sbit CD = P3^5; // 数据\指令 选择 1为指令,0为数据
28 sbit WR = P3^7; // 读 控制
29
30
31
32
33 //函数声明
34 void System_Init (void);
35 void Port_Init (void);
36 uchar Read_State (void);
37 void Write_Cmd_Non (uchar cmd);
38 void Write_Cmd_Single (uchar data1,uchar cmd);
39 void Write_Cmd_Double (uchar data1,uchar data2,uchar cmd);
40 void Lcd_Init (void);
41
42
43 //字符的属性
44 uchar code sentence_dat[30]={
45 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
46 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
47 0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0 };
48
49
50 /************************************************\
51 |* 延时子函数 *|
52 |* 入口参数: count 延时时间变量 *|
53 |* 出口参数: 空 *|
54 |* 调用函数: 空 *|
55 |* 说明: 系统时钟使用外部晶振22.1184MHz *|
C51 COMPILER V7.50 LCD_24064 08/12/2007 23:57:47 PAGE 2
56 |* *|
57 \************************************************/
58 void Delay(uchar count)
59 {
60 1 uchar k;
61 1 while(count--)
62 1 for(k=0;k<10;k++);
63 1 }
64
65
66 /************************************************\
67 |* 系统时钟配置子函数 *|
68 |* 入口参数: 空 *|
69 |* 出口参数: 空 *|
70 |* 调用函数: 空 *|
71 |* 说明: 系统时钟使用外部晶振22.1184MHz *|
72 |* 禁用看门狗 *|
73 \************************************************/
74 void System_Init(void)
75 {
76 1 uchar count;
77 1 WDTCN=0xde; //禁用看门狗
78 1 WDTCN=0xad;
79 1 OSCXCN=0x67;
80 1 for ( count=0; count<255; count++ ) ;
81 1 while(!(OSCXCN & 0x80 ) ); //等待晶体振荡器稳定
82 1 OSCICN=0x88; //选择外部时钟源 允许时钟丢失检测 检测到时钟丢失将复位
83 1 CKCON=0x00; //T0 12分频
84 1 }
85
86
87 /************************************************\
88 |* 端口配置子函数 *|
89 |* 入口参数: 空 *|
90 |* 出口参数: 空 *|
91 |* 调用函数: 空 *|
92 |* 说明: *|
93 |* *|
94 \************************************************/
95 void Port_Init (void)
96 {
97 1 XBR0=0x00; //
98 1 XBR1=0x00;
99 1 XBR2=0xc0; //允许交叉开关 禁止弱上拉
100 1
101 1 P0MDOUT=0xff; //1 为推挽 0为漏极开路
102 1 P1MDIN=0xff; //0 配置为模拟输入 1 配置为数字输入
103 1 P1MDOUT=0xff; //1 为推挽 0为漏极开路
104 1 P2MDOUT=0xff; //1 为推挽 0为漏极开路
105 1 P3MDOUT=0xff; //1 为推挽 0为漏极开路
106 1 P3IF=0; //端口3中断标志
107 1 P74OUT=0xff; //P4~P7设置为推挽方式
108 1 }
109
110
111
112 /************************************************\
113 |* 读状态字子函数 *|
114 |* 入口参数: 空 *|
115 |* 出口参数: r_state 当前状态字 *|
116 |* 调用函数: Delay() *|
117 |* 说明: *|
C51 COMPILER V7.50 LCD_24064 08/12/2007 23:57:47 PAGE 3
118 |* *|
119 \************************************************/
120 uchar Read_State (void)
121 {
122 1 uchar r_state;
123 1 DATA_IO=0xff;
124 1 CD=1;
125 1 RD=0;
126 1 WR=1;
127 1 Delay(1); //根据资料,读写信号的建立需要一定的时间(几十纳秒)
128 1 r_state=DATA_IO;
129 1 RD=1;
130 1 return (r_state);
131 1 }
132
133 /************************************************\
134 |* 写数据子函数 *|
135 |* 入口参数: W_data 待写入的数据 *|
136 |* 出口参数: 空 *|
137 |* 调用函数: Read_State () *|
138 |* Delay() *|
139 |* 说明: *|
140 |* *|
141 \************************************************/
142 void Write_Data (uchar W_data)
143 {
144 1 while( ( Read_State () & 0x03 ) != 0x03 ) ; //等待数据指令读写状态准备好
145 1 CD=0;
146 1 WR=0;
147 1 RD=1;
148 1 Delay(1); //根据资料,读写信号的建立需要一定的时间(几十纳秒)
149 1 DATA_IO=W_data;
150 1 Delay(1);
151 1 WR=1;
152 1 CD=1;
153 1 }
154
155
156 /************************************************\
157 |* 写命令子函数1---无参数指令 *|
158 |* 入口参数: cmd 待写入的命令 *|
159 |* 出口参数: 空 *|
160 |* 调用函数: Read_State () *|
161 |* Delay() *|
162 |* 说明: *|
163 |* *|
164 \************************************************/
165 void Write_Cmd_Non (uchar cmd)
166 {
167 1 while( ( Read_State () & 0x03 ) != 0x03 ) ; //等待数据指令读写状态准备好
168 1 CD=1;
169 1 WR=0;
170 1 RD=1;
171 1 Delay(1); //根据资料,读写信号的建立需要一定的时间(几十纳秒)
172 1 DATA_IO=cmd;
173 1 Delay(1);
174 1 WR=1;
175 1 }
176
177 /************************************************\
178 |* 写命令子函数2---单参数指令 *|
179 |* 入口参数: data1 待写入的参数 *|
C51 COMPILER V7.50 LCD_24064 08/12/2007 23:57:47 PAGE 4
180 |* cmd 待写入的命令 *|
181 |* 出口参数: 空 *|
182 |* 调用函数: Write_Data () *|
183 |* Write_Cmd_Non () *|
184 |* 说明: *|
185 |* *|
186 \************************************************/
187 void Write_Cmd_Single (uchar data1,uchar cmd)
188 {
189 1 Write_Data (data1);
190 1 Write_Cmd_Non (cmd);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -