📄 1335c51.lst
字号:
C51 COMPILER V8.15 1335C51 10/29/2008 21:06:48 PAGE 1
C51 COMPILER V8.15, COMPILATION OF MODULE 1335C51
OBJECT MODULE PLACED IN 1335c51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1335c51.c COMPACT BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <stdlib.h>
3 #include <intrins.h>
4 #include <stdio.h>
5 #include "TypeDefines.h"
6 #include "1335c51.h"
7 #include "delay.h"
8
9
10
11
12
13 extern uchar code Cdotlib[][16];
14 extern int idata hight_limit;
15 extern int idata sensitive_limit;
16 extern int idata delay_value; //延时值(ms)
17
18
19
20
21
22
23 //============================ 1335 常用指令列表 ===============================
24
25 //初始化设置。A0=1..写指令/0...读写参数。后续8字节参数串ParaSysTable8[]
26 #define SystemSet 0x40 // 时序要求:/WR=0;/RD=1
27
28 uchar code ParaSysTable8[]= {
29 0x32,0x87,0x07,0x27,0x42,0xf0,0x28,0x00 // P1-P8参数
30 };
31 // 30H,87H,07H,27H,42H,0F0H,30H,00H
32 /*SystemSet初始化设置参数表,共八字节具体定义如下:
33 P1 [ DR | 0 | IV | 1 | W/S | M2 | M1 | M0 ] = 0x30
34 0 0 1 1 0 0 0 0
35
36 DR.... 辅助位移时钟周期的选择位。DR=0为正常运行;DR=1为使用辅助位移时钟周期。
37 通常=0
38 [说明]在控制双屏显示时需要液晶模块一行像素为64的整倍数,如果不是则控制器自
39 动通过填充数据'0'来凑齐64位,此时就需要增加辅助位移时钟周期。
40 IV.... 负向字符显示时屏面边界选择位。=0为首行作为边界;=1则无边界。通常=1
41 [说明]在文本方式下,第一行显示的字符是顶天的,没有天头。所以在制作负向字
42 符显示时的效果就不太理想。此时使用IV参数位在显示控制时制造出一行空行
43 作为天头,以达到理想的显示效果。
44 W/S... 适配驱动系统选择位。改为将选择产生驱动时序信号的类型。0为单屏结构液晶
45 显示驱动系统;1为双屏结构液晶显示驱动系统
46 M2.... 外部字符发生器的字体选择位。0=8*8;1=8*16
47 M1.... 外部字符发生器Cgram代码区选择位。0选择Cgram1字符代码为0x80~0x9f;1选择
48 Cgram1 + Cgram2,字符代码为0x80~9f和0xe0~0xff
49 M0.... 字符发生器选择位. 0为内部字符发生器;1为外部字符发生器。
50 [说明]M2,M1,M0组合设置了字符发生器的结构
51
52 P2 [ WF | 0 | 0 | 0 | 0 | FX ] = 0x87
53 1 0 0 0 0 1 1 1
54
55 WF.... 交流驱动波形选择位。0为C型驱动波形,行翻转驱动波形,交流驱动波形输出
C51 COMPILER V8.15 1335C51 10/29/2008 21:06:48 PAGE 2
56 WF每16行翻转1次;1为B型驱动波形,交流驱动波形输出每一帧翻转1次,通常
57 取1
58 FX.... 字符体宽度设置参数(点列数)。若FX大于实际字符体的宽度,则余出的部分
59 作为空点置于字符体的右侧,形成字符字间距。FX取值在0~7范围内,代表1~8
60 列/字符体。
61
62 P3 [ WF | 0 | 0 | 0 | FY ] = 0x07
63 0 0 0 0 0 1 1 1
64
65 WF.... 同上;
66 FY.... 字符体高度设置参数(点行数)。若FY大于实际字符体的宽度,则余出的部分
67 作为空点置于字符体的下方,形成字符行间距。FY取值在0~0xf之间,代表1-16
68 点行/字符体
69
70 P4 [ C/R ] = 0x27
71
72 C/R... 有效显示窗口宽度设置参数。C/R值设置了显示屏上一行显示所占显示存储器的
73 单元数(字节数)。C/R取值在0~0xef范围内,表示显示屏上一个显示行所占
74 显示存储器的单元数为1~240个字节。
75 [说明]C/R值可以选择得比显示屏的实际长度值小,但是余留部分不能超过64点列
76 =8字节
77
78 P5 [ TC/R ] = 0x42
79
80 TC/R.. 驱动频率的时间常数。TC/R是晶振频率Fosc转换成液晶显示驱动工作频率FR的
81 时间常数。它可以简单地由下式求出:
82 TC/R >= C/R +4
83 [说明] 该参数的设置有时是非常重要的。错误的设置可引起以下几种现象:
84 *行扫描停止且出现高对比度的水平线
85 *显示不稳定,出现闪烁或全亮或全暗
86 *LP信号不足或不存在。
87 在取值时还是允许有一定的选取范围的。
88 TC/R与震荡频率的关系为: Fosc >= 9 * TC/R * L/F * FR
89 TC/R也可以由以上两个公式联合求出。FR为液晶显示帧扫描频率,通常=70Hz.
90 在控制大规模液晶显示模块时,最大震荡频率10MHz下,要满足TC/R取值要求,
91 就要降低液晶显示的帧扫描频率了。
92
93 P6 [ L/F ] = 0xF0
94
95 L/F... 扫描驱动的帧参数。L/F值设置了控制器所要控制的液晶显示驱动系统的扫描数,
96 其倒数为占空比系数。当液晶显示驱动系统为单屏结构时,L/F即为1帧的扫描
97 行数;当液晶显示驱动系统为双屏结构时,L/F为1帧扫描行数的2倍,此时L/F
98 必须为偶数值。L/F取值范围在0~0xff范围内,对应扫描行数为1~256行。
99
100 P7 [ APL ] = 0x30
101 P8 [ APH ] = 0x00
102
103 ap在显示存储器内分配一个显示行的单元数(字节数)。ap为双字节参数,apl为低8位,
104 aph为高8位。通常AP取值为C/R + 1或大于C/R值的整数,以方便计算个显示行的显示存
105 储器地址。
106
107 */
108
109 //显示域设置。A0=1..写指令/0...读写参数。后续10字节参数串ParaScrTableA[]
110
111 #define Scroll 0x44 // 时序要求:/WR=0;/RD=1
112
113 #define BasePart1 0x00
114 #define BasePart2 0x40
115 #define BasePart3 0x80
116 #define BasePart4 0x00
117
C51 COMPILER V8.15 1335C51 10/29/2008 21:06:48 PAGE 3
118 uchar code ParaScrTableA[]= {
119 0x00,BasePart1,0xF0,0x00,BasePart2,0xF0,0x00,BasePart3,0x00,BasePart4
120 };
121
122 /*..............................................................................
123 该指令设置了四个显示区的起始地址SAD合格区所控制的显示行数SL.设置的参数与‘系统
124 设定’指令设置的参数结合将确定显示RAM中的各显示区域范围与有效的显示区域。定时间
125 定量地递增或递减某区的起始地址SAD,将产生显示画面的平滑滚动。该指令有10个参数。
126 部分参数的设置是有效的,但设置的顺序不能改变也不能省略。Scroll初始化设置参数表,
127 共10字节具体定义如下:
128 ................................................................................
129 P1 [ SAD1L ] = 0x00
130 P2 [ SAD1H ] = 0x00
131 SAD1显示1区首地址。SAD1确定了第1显示区的起始地址。他由双字节组成。
132 本区为显示主区间,占用8K空间
133
134 P3 [ SL1 ] = 0xF0
135 SL1显示一区所控制的显示屏上的行数:0~(L/F)
136 ................................................................................
137 P4 [ SAD2L ] = 0x00
138 P5 [ SAD2H ] = 0x40
139 SAD2显示2区首地址。SAD2确定了第2显示区的起始地址。他由双字节组成。
140 本参数表定义这个区占用8K空间
141
142 P6 [ SL2 ] = 0xF0
143 SL2显示2区所控制的显示屏上的行数:0~(L/F)
144 ................................................................................
145 P7 [ SAD3L ] = 0x00
146 P8 [ SAD3H ] = 0x40
147 SAD3显示3区首地址。SAD3确定了第3显示区的起始地址。他由双字节组成。
148 作为文本区定义,占用2K空间
149 ................................................................................
150 P9 [ SAD4L ] = 0x00
151 P10 [ SAD4H ] = 0x00
152 SAD4显示4区首地址。SAD4确定了第4显示区的起始地址。他由双字节组成。
153 作为文本区定义,占用2K空间
154 ................................................................................
155 后面预留空间将作为cgram使用
156 ..............................................................................*/
157
158 //休闲模式设置。A0=1;/WR=0;/RD=1;后续参数:无
159 #define SleepIn 0x53
160
161 /*该指令强制SED1335等进入休闲工作方式。在该指令输入后,SED1335等在扫描最后一行时
162 将列驱动器清零;置YDIS=0,使液晶显示驱动系统关闭显示驱动电源;将显示存储器管理信
163 号/VCE=1,以保护显示数据不被破坏;终止包括振荡器在内的所有内部逻辑电路的运行,但
164 保存原设置的参数,使其进入休闲方式。退出休闲方式需要计算机重新写入'SYSTEM SET'指
165 令的P1参数。该指令无效。
166 */
167
168 //显示状态设置。A0=1..ON/0..OFF;/WR=0;/RD=1.后续参数1字节:
169 #define DispOn 0x59
170 #define DispOff 0x58
171
172 /*代码 [ 0 1 0 1 1 0 0 ON/OFF ]
173 该指令设置了显示的各种状态。他们有显示开关的设置,光标的显示状态的设置和各显示区
174 显示状态的设置。在指令代码中就含有一个参数位:=0关显示;=1开显示。
175 [说明]该参数位控制着显示的总开关状态。
176 后续参数:[ FP5 FP4 FP3 FP2 FP1 FP0 FC1 FC0 ]
177
178 FC1,FC0..光标状态设置位。他们组合设置了光标显示的4种状态:
179 ==========================================
C51 COMPILER V8.15 1335C51 10/29/2008 21:06:48 PAGE 4
180 FC1 FC0 光 标 状 态
181 ==========================================
182 0 0 光标显示关闭
183 0 1 光标显示但不闪烁
184 1 0 光标以 FR/32Hz 的频率闪烁显示
185 1 1 光标以 FR/64Hz 的频率闪烁显示
186 ==========================================
187 [注]光标闪烁的亮与暗占空比为7:3
188
189 FP1,FP0...显示一区状态设置位.他们组合设置了一区显示的4种状态
190 FP3,FP2...显示二、四区状态设置位.他们组合设置了二、四区显示的4种状态
191 FP5,FP4...显示三区状态设置位.他们组合设置了三区显示的4种状态
192 ==========================================
193 FP1 FP0 显示一区显示状态
194 FP3 FP2 显示二、四区显示状态
195 FP5 FP4 显示三区显示状态
196 ==========================================
197 0 0 画面显示关闭
198 0 1 画面显示但不闪烁
199 1 0 画面以 FR/32Hz的频率闪烁显示
200 1 1 画面以 FR/64Hz的频率闪烁显示
201 ==========================================
202 [注]画面闪烁的亮与暗占空比为7:3
203
204 [说明]:这些参数位都是控制着各显示区的显示状态。该状态的实现需要在总开关为开状态
205 时有效。
206 */
207
208 //显示合成方式设置。A0=1..写指令/0...读写参数;/WR=0;/RD=1.后续参数1字节:
209
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -