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