📄 z12232a.lst
字号:
C51 COMPILER V7.10 Z12232A 10/31/2007 09:58:23 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE Z12232A
OBJECT MODULE PLACED IN Z12232A.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Z12232A.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 **长沙太阳人电子有限公司SMG12232A总线接口参考程序
3 **电话: 0731-4167806,4167808
4 **E-mail: www@sunman.cn
5 **Create by :谭超 E-mail: tanchao_1@126.com
6 **最后修改 : 2005年4月22日
7 **版本说明: 带显示矩形框、线、点子程序。
8 */
9
10 //[字符图象输出文件=hzk.c]
11 //[字体名称=宋体]
12 //[字体大小=16]
13 //[字节方向=垂直]
14 //[字位顺序=从低到高]
15
16 #include <reg51.h>
17 #include <math.h>
18 #include <hzk.c>
19
20 unsigned char data Lcd_CurrentX,Lcd_CurrentY,Lcd_Mask;
21 unsigned char code LeftMask[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};
22 unsigned char code RightMask[]={0xff,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
23 unsigned char code Mask1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
24 unsigned char code Mask2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
25
26 //前两位由5个口线决定,见SMG12232A说明书 基本操作时序
27 //cs1--p2.2 cs2--p2.1 A0--p2.0
28 unsigned char xdata Lcd_Chip1_Cmd_W_Reg _at_ 0x02ff;
29 unsigned char xdata Lcd_Chip2_Cmd_W_Reg _at_ 0x04ff;
30 unsigned char xdata Lcd_Chip1_Data_W_Reg _at_ 0x03ff;
31 unsigned char xdata Lcd_Chip2_Data_W_Reg _at_ 0x05ff;
32 unsigned char xdata Lcd_Chip1_Data_R_Reg _at_ 0x03ff;
33 unsigned char xdata Lcd_Chip2_Data_R_Reg _at_ 0x05ff;
34 unsigned char xdata Lcd_Chip1_Sta_R_Reg _at_ 0x02ff;
35 unsigned char xdata Lcd_Chip2_Sta_R_Reg _at_ 0x04ff;
36
37 #define LCD_CMD_COL 0X00
38 #define LCD_CMD_PAGE 0XB8
39 #define LCD_LEFT 0
40 #define LCD_TOP 0
41 #define LCD_RIGHT 127
42 #define LCD_BOTTOM 31
43
44 //延时子程序
45 void delay(unsigned int t)
46 { unsigned int i,j;
47 1 for(i=0;i<t;i++)
48 1 for(j=0;j<10;j++)
49 1 ;
50 1 }
51
52 //片1测忙
53 void lcdwaitidle1(void)
54 { while(((Lcd_Chip1_Sta_R_Reg)&0x80)==0x80);
55 1 }
C51 COMPILER V7.10 Z12232A 10/31/2007 09:58:23 PAGE 2
56
57 //片2测忙
58 void lcdwaitidle2(void)
59 { while(((Lcd_Chip2_Sta_R_Reg)&0x80)==0x80);
60 1 }
61
62 //写指令代码到片1
63 void lcdwc1(unsigned char cmdcode)
64 { lcdwaitidle1();
65 1 Lcd_Chip1_Cmd_W_Reg=cmdcode;
66 1 }
67
68 //写指令代码到片2
69 void lcdwc2(unsigned char cmdcode)
70 { lcdwaitidle2();
71 1 Lcd_Chip2_Cmd_W_Reg=cmdcode;
72 1 }
73
74 //写数据到片1
75 void lcdwd1(unsigned char dispdata)
76 { lcdwaitidle1();
77 1 Lcd_Chip1_Data_W_Reg=dispdata;
78 1 }
79
80 //写数据到片2
81 void lcdwd2(unsigned char dispdata)
82 { lcdwaitidle2();
83 1 Lcd_Chip2_Data_W_Reg=dispdata;
84 1 }
85
86 //读片1数据
87 unsigned char lcdrd1(void)
88 { lcdwaitidle1();
89 1 return Lcd_Chip1_Data_R_Reg;
90 1 }
91
92 //读片2数据
93 unsigned char lcdrd2(void)
94 { lcdwaitidle2();
95 1 return Lcd_Chip2_Data_R_Reg;
96 1 }
97
98 //写指令代码
99 void lcdwc(unsigned char cmdcode)
100 { if((Lcd_CurrentX)<61)
101 1 lcdwc1(cmdcode);
102 1 else
103 1 lcdwc2(cmdcode);
104 1 }
105
106 //写数据
107 void lcdwd(unsigned char dispdata)
108 { if(Lcd_CurrentX<61)
109 1 lcdwd1(dispdata);
110 1 else
111 1 lcdwd2(dispdata);
112 1 }
113
114 //内部数据地址指针定位
115 void lcdpos(void)
116 { if(Lcd_CurrentX<61)
117 1 lcdwc(LCD_CMD_COL|(Lcd_CurrentX&0x3f)); //设置地址列指针
C51 COMPILER V7.10 Z12232A 10/31/2007 09:58:23 PAGE 3
118 1 else
119 1 lcdwc(LCD_CMD_COL|((Lcd_CurrentX-61)&0x7f));
120 1 lcdwc(LCD_CMD_PAGE|((Lcd_CurrentY/8)&0x3)); //设置地址页指针
121 1 }
122
123 //读数据
124 unsigned char lcdrd(void)
125 { unsigned char i;
126 1 if(Lcd_CurrentX<61)
127 1 { i=lcdrd1(); //读两次
128 2 i=lcdrd1();
129 2 }
130 1 else
131 1 { i=lcdrd2();
132 2 i=lcdrd2();
133 2 }
134 1 lcdpos();
135 1 return i;
136 1 }
137
138 //当前坐标移动到下一个点
139 void lcdcursornext(void)
140 { Lcd_CurrentX++;
141 1 if(Lcd_CurrentX>LCD_RIGHT)
142 1 { Lcd_CurrentX=LCD_LEFT;
143 2 Lcd_CurrentY+=8;
144 2 if(Lcd_CurrentY>LCD_BOTTOM)
145 2 Lcd_CurrentY=LCD_TOP;
146 2 }
147 1 }
148
149 void displaybyte(unsigned char dispdata)
150 { lcdpos(); //内部数据地址指针定位
151 1 lcdwd(dispdata); //写数据
152 1 lcdcursornext(); //当前坐标移动到下一个点
153 1 }
154
155 //整屏显示
156 void lcdfill(unsigned char FillData)
157 { for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;)
158 1 { displaybyte(FillData);
159 2 if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP))
160 2 break;
161 2 }
162 1 }
163
164 //初始化
165 void lcdreset()
166 { lcdwc1(0xe2); lcdwc2(0xe2); //复位
167 1 lcdwc1(0xc0); lcdwc2(0xc0); //设置显示初始行
168 1 lcdwc1(0xa0); lcdwc2(0xa0); //设置列序方向为正向
169 1 lcdwc1(0xa4); lcdwc2(0xa4); //设置显示模式为正常显示
170 1 lcdwc1(0xa9); lcdwc2(0xa9); //设置占空比为1/32
171 1 lcdwc1(0xaf); lcdwc2(0xaf); //开显示
172 1 }
173
174 #include <display.c>
*** ERROR C279 IN LINE 11 OF BIANLIANG.H: 'LeftMask': multiple initialization
*** ERROR C279 IN LINE 12 OF BIANLIANG.H: 'RightMask': multiple initialization
*** ERROR C279 IN LINE 13 OF BIANLIANG.H: 'Mask1': multiple initialization
*** ERROR C279 IN LINE 14 OF BIANLIANG.H: 'Mask2': multiple initialization
175 #include <point.c>
C51 COMPILER V7.10 Z12232A 10/31/2007 09:58:23 PAGE 4
176
177
178 main()
179 { while(1)
180 1 { lcdreset(); //初始化
181 2 lcdfill(0xff); //整屏显示
182 2 delay(5000);
183 2 lcdfill(0); //清屏
184 2 delay(5000);
185 2 put_str_xy(0,0,"长沙太阳人电子有限公司");
186 2 delay(5000);
187 2 }
188 1 }
189
C51 COMPILATION COMPLETE. 0 WARNING(S), 4 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -