📄 +
字号:
C51 COMPILER V7.50 7920_580B 06/09/2010 21:35:54 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 7920_580B
OBJECT MODULE PLACED IN 7920_580b.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 7920_580b.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /*-----------------------------------------------
3 名称:LCD12864 字库液晶 芯片组st7920
4 修改:无
5 内容:
6 ------------------------------------------------*/
7 #include <stdio.h>
8 #include <math.h>
9 #include <reg52.h>
10 #include <string.h>
11 /******************************************************************/
12 /* 定义数组 */
13 /******************************************************************/
14 unsigned char code IC_DAT[];
15 unsigned char code pic1[];
16 unsigned char code pic2[];
17 unsigned char code pic3[];
18
19 /******************************************************************/
20 /* 定义接口信息 */
21 /******************************************************************/
22 sbit RS =P2^4;
23 sbit WRD=P2^5;
24 sbit E= P2^6;
25 sbit PSB=P2^1;
26 sbit RES=P2^3;
27
28 /******************************************************************/
29 /* 函数声明 */
30 /******************************************************************/
31 void TransferData(char data1,bit DI);
32 void display(void);
33 void display_grapic(void);
34 void delayms(unsigned int n);
35 void DisplayLine(unsigned char line1,unsigned char line2);
36 void DisplayGraphic(unsigned char code *adder);
37 void delay(unsigned int m);
38 void lcd_mesg(unsigned char code *adder1);
39
40
41 unsigned char code IC_DAT[]={
42 "苏州华晴电子科技"
43 "单片机开发板系列"
44 "中文字库测试程序"
45 "恭喜发财身体健康"
46 };
47 unsigned char code IC_DAT2[]={
48 "海纳百川宽容为先"
49 "欲成大业诚信为先"
50 "游弋商海济世为先"
51 "人立于世守法为先"
52 };
53 /******************************************************************/
54 /* 液晶初始化-字库 */
55 /******************************************************************/
C51 COMPILER V7.50 7920_580B 06/09/2010 21:35:54 PAGE 2
56 void initinal(void) //LCD字库初始化程序
57 {
58 1 delay(40); //大于40MS的延时程序
59 1 PSB=1; //设置为8BIT并口工作模式
60 1 delay(1); //延时
61 1 RES=0; //复位
62 1 delay(1); //延时
63 1 RES=1; //复位置高
64 1 delay(10);
65 1 TransferData(0x30,0); //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :grap
-hic display OFF
66 1 delay(100); //大于100uS的延时程序
67 1 TransferData(0x30,0); //Function Set
68 1 delay(37); ////大于37uS的延时程序
69 1 TransferData(0x08,0); //Display on Control
70 1 delay(100); //大于100uS的延时程序
71 1 TransferData(0x10,0); //Cursor Display Control光标设置
72 1 delay(100); //大于100uS的延时程序
73 1 TransferData(0x0C,0); //Display Control,D=1,显示开
74 1 delay(100); //大于100uS的延时程序
75 1 TransferData(0x01,0); //Display Clear
76 1 delay(10); //大于10mS的延时程序
77 1 TransferData(0x06,0); //Enry Mode Set,光标从右向左加1位移动
78 1 delay(100); //大于100uS的延时程序
79 1 }
80
81 /******************************************************************/
82 /* 液晶初始化-图形 */
83 /******************************************************************/
84 void initina2(void) //LCD显示图片(扩展)初始化程序
85 {
86 1 delay(40); //大于40MS的延时程序
87 1 PSB=1; //设置为8BIT并口工作模式
88 1 delay(1); //延时
89 1 RES=0; //复位
90 1 delay(1); //延时
91 1 RES=1; //复位置高
92 1 delay(10);
93 1
94 1 TransferData(0x36,0); //Extended Function Set RE=1: extended instruction
95 1 delay(100); //大于100uS的延时程序
96 1 TransferData(0x36,0); //Extended Function Set:RE=1: extended instruction set
97 1 delay(37); ////大于37uS的延时程序
98 1 TransferData(0x3E,0); //EXFUNCTION(DL=8BITS,RE=1,G=1)
99 1 delay(100); //大于100uS的延时程序
100 1 TransferData(0x01,0); //CLEAR SCREEN
101 1 delay(100); //大于100uS的延时程序
102 1 }
103
104 /******************************************************************/
105 /* 主程序 */
106 /******************************************************************/
107 void main(void)
108 {
109 1
110 1
111 1 initina2(); //调用LCD显示图片(扩展)初始化程序
112 1
113 1 DisplayGraphic(pic2); //显示图片2
114 1 delayms(200);
115 1
116 1 /*DisplayGraphic(pic3); //显示图片3
C51 COMPILER V7.50 7920_580B 06/09/2010 21:35:54 PAGE 3
117 1 delayms(200);
118 1
119 1 initinal(); //调用LCD字库初始化程序
120 1 delay(100); //大于100uS的延时程序
121 1 lcd_mesg(IC_DAT); //显示中文汉字1
122 1 delayms(240);
123 1 delayms(240);
124 1
125 1 initinal(); //调用LCD字库初始化程序
126 1 delay(100); //大于100uS的延时程序
127 1 lcd_mesg(IC_DAT2); //显示中文汉字2
128 1 delayms(240);
129 1 delayms(240);*/
130 1 while(1);
131 1 }
132
133 /******************************************************************/
134 /* 函数声明 */
135 /******************************************************************/
136
137 void lcd_mesg(unsigned char code *adder1)
138 {
139 1 unsigned char i;
140 1 TransferData(0x80,0); //Set Graphic Display RAM Address
141 1 delay(100);
142 1 for(i=0;i<32;i++)
143 1 {
144 2 TransferData(*adder1,1);
145 2 adder1++;
146 2 }
147 1
148 1 TransferData(0x90,0); //Set Graphic Display RAM Address
149 1 delay(100);
150 1 for(i=32;i<64;i++)
151 1 {
152 2 TransferData(*adder1,1);
153 2 adder1++;
154 2 }
155 1 }
156
157
158
159 /******************************************************************/
160 /* 函数声明 */
161 /******************************************************************/
162 void TransferData(char data1,bit DI) //传送数据或者命令,当DI=0是,传送命令,当DI=1,传送数据.
163 {
164 1 WRD=0;
165 1 RS=DI;
166 1 delay(1);
167 1 P0=data1;
168 1 E=1;
169 1 delay(1);
170 1 E=0;
171 1 }
172
173 void delayms(unsigned int n) //延时10×n毫秒程序
174 {
175 1 unsigned int i,j;
176 1 for(i=0;i<n;i++)
177 1 for(j=0;j<2000;j++);
178 1 }
C51 COMPILER V7.50 7920_580B 06/09/2010 21:35:54 PAGE 4
179
180 void delay(unsigned int m) //延时程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -