📄 z240128.lst
字号:
C51 COMPILER V8.02 Z240128 07/21/2007 17:31:24 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE Z240128
OBJECT MODULE PLACED IN Z240128.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Z240128.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 **长沙太阳人电子有限公司SMG240128总线接口参考程序(T6963C)
3 ** P0--DB /WR--P3.6 /RD--P3.7 C/D--P2.0 /CE--P2.1
4 ** /RET--5V
5 **电话: 0731-4167806,4167808
6 **E-mail: www@sunman.cn
7 **Create by :谭超 E-mail: tanchao_1@126.com
8 **最后修改 : 2005年4月22日
9 **版本说明: 带显示矩形框、线、点子程序。
10 */
11
12 //[字符图象输出文件=hzk.c]
13 //[字体名称=宋体]
14 //[字体大小=16]
15 //[字节方向=水平]
16 //[字位顺序=从高到低]
17
18 #include <reg51.h>
19 #include <math.h>
20 #include <hzk.c>
21
22 unsigned char xdata Lcd_Cmd_Reg _at_ 0xfdff; // C/D-P2.0 CE-P2.1 p2.0=1 p2.1=0
23 unsigned char xdata Lcd_Data_Reg _at_ 0xfcff; // C/D-P2.0 CE-P2.1 p2.0=0 p2.1=0
24 unsigned char data Lcd_CurrentX,Lcd_CurrentY,Lcd_Mask;
25 unsigned char code LeftMask[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01};
26 unsigned char code RightMask[]={0xff,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
27
28 #define LCD_LEFT 0
29 #define LCD_TOP 0
30 #define LCD_RIGHT 239
31 #define LCD_BOTTOM 127
32
33 //延时子程序
34 void delay(unsigned int t)
35 { unsigned int i,j;
36 1 for(i=0;i<t;i++)
37 1 for(j=0;j<10;j++)
38 1 ;
39 1 }
40
41 //写无参数指令代码
42 void lcdwc(unsigned char cmdcode)
43 { while((Lcd_Cmd_Reg&0x3)!=0x3); //当Lcd_Cmd_Reg低两位不同时为1
44 1 Lcd_Cmd_Reg=cmdcode;
45 1 }
46
47 //写双参数指令代码
48 void lcdwc3(unsigned char cmdcode,unsigned char cmddata,unsigned char cmddata2)
49 { while((Lcd_Cmd_Reg&0x3)!=0x3);
50 1 Lcd_Data_Reg=cmddata;
51 1 while((Lcd_Cmd_Reg&0x3)!=0x3);
52 1 Lcd_Data_Reg=cmddata2;
53 1 while((Lcd_Cmd_Reg&0x3)!=0x3);
54 1 Lcd_Cmd_Reg=cmdcode;
55 1 }
C51 COMPILER V8.02 Z240128 07/21/2007 17:31:24 PAGE 2
56
57 //写数据
58 void lcdwd(unsigned char dispdata)
59 { while((Lcd_Cmd_Reg&0x3)!=0x3);
60 1 Lcd_Data_Reg=dispdata;
61 1 while((Lcd_Cmd_Reg&0x3)!=0x3);
62 1 Lcd_Cmd_Reg=0xc0;
63 1 }
64
65 //读数据
66 unsigned char lcdrdata(void)
67 { while((Lcd_Cmd_Reg&0x3)!=0x3);
68 1 Lcd_Cmd_Reg=0xc5;
69 1 while((Lcd_Cmd_Reg&0x3)!=0x3) ;
70 1 return Lcd_Data_Reg;
71 1 }
72
73 //内部数据地址指针定位
74 void lcdpos(void)
75 { unsigned int CurrentAddress;
76 1 CurrentAddress=Lcd_CurrentY*30;
77 1 CurrentAddress+=Lcd_CurrentX/8;
78 1 lcdwc3(0x24,CurrentAddress&0xff,CurrentAddress/256);
79 1 }
80
81 //读数据
82 unsigned char lcdrd(void)
83 { lcdpos();
84 1 return lcdrdata();
85 1 }
86
87 //当前坐标移动到下一个点
88 void lcdcursornextbyte(void)
89 { Lcd_CurrentX+=8;
90 1 if(Lcd_CurrentX>LCD_RIGHT)
91 1 { Lcd_CurrentX=LCD_LEFT;
92 2 Lcd_CurrentY++;
93 2 if(Lcd_CurrentY>LCD_BOTTOM)
94 2 Lcd_CurrentY=LCD_TOP;
95 2 }
96 1 }
97
98 void displaybyte(unsigned char dispdata)
99 { lcdpos();
100 1 if(Lcd_Mask==0xff)
101 1 lcdwd(dispdata);
102 1 else
103 1 { unsigned char d=lcdrd();
104 2 d&=(~Lcd_Mask);
105 2 d|=(dispdata&Lcd_Mask);
106 2 lcdwd(d);
107 2 }
108 1 lcdcursornextbyte();
109 1 }
110
111 //整屏显示
112 void lcdfill(unsigned char FillData)
113 { Lcd_Mask=0xff;
114 1 for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;)
115 1 { displaybyte(FillData);
116 2 if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP))
117 2 break;
C51 COMPILER V8.02 Z240128 07/21/2007 17:31:24 PAGE 3
118 2 }
119 1 }
120
121 //初始化
122 void lcdreset()
123 { lcdwc(0x80); //设置显示模式为逻辑“或”模式
124 1 lcdwc(0x98); //开显示
125 1 lcdwc3(0x42,0,0); //设置图形显示区首地址
126 1 lcdwc3(0x43,30,0); //设置图形显示区宽度
127 1 }
128
129 #include <display8.c>
130 #include <point8.c>
131
132
133 main()
134 { while(1)
135 1 { lcdreset(); //初始化
136 2 lcdfill(0xff); //整屏显示
137 2 delay(5000);
138 2 lcdfill(0); //清屏
139 2 delay(5000);
140 2 put_str_xy(0,0,"专业人才。。。HELLO");
141 2 delay(5000);
142 2 }
143 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1623 ----
CONSTANT SIZE = 2984 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 29
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -