📄 test_osd.lst
字号:
C51 COMPILER V7.50 TEST_OSD 02/26/2009 08:55:32 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEST_OSD
OBJECT MODULE PLACED IN test_osd.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\test_osd.c BROWSE DEBUG OBJECTEXTEND PRINT(.\test_osd.lst) OBJECT(test_
-osd.obj)
line level source
1 //==============================
2 //FileName=test_osd.c
3 //Date=20060518
4 //==============================
5 #include"SST89x5x4.H"
*** WARNING C318 IN LINE 5 OF src\test_osd.c: can't open file 'SST89x5x4.H'
6 #include<string.h>
7 #include"public.h"
*** WARNING C318 IN LINE 7 OF src\test_osd.c: can't open file 'public.h'
8 #include"test_osd.h"
*** WARNING C318 IN LINE 8 OF src\test_osd.c: can't open file 'test_osd.h'
9 #include"delay_s.h"
*** WARNING C318 IN LINE 9 OF src\test_osd.c: can't open file 'delay_s.h'
10 #include"upd6464a.h"
*** WARNING C318 IN LINE 10 OF src\test_osd.c: can't open file 'upd6464a.h'
11 #include"menu.h"
*** WARNING C318 IN LINE 11 OF src\test_osd.c: can't open file 'menu.h'
12
13
14 uchar disp_buff[25];
*** ERROR C129 IN LINE 14 OF SRC\TEST_OSD.C: missing ';' before 'disp_buff'
15 uchar len;
16 uchar tmp;
17 uchar i;
18 uchar j;
19
20 uchar doom_id;
21 uchar protocol;
22 uchar baud;
23 uint s_id;
24 uchar jjj;
25
26
27 void main()
28 {
29
30 jjj =1;
31 if(jjj==0)
32 {
33
34 init_upd6464a();
35
36 tmp =upd6464a_get_disp_code('A');
37 upd6464A_write_addr_control(0,0);
38 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, &tmp, 1);
39 delay_x250ms(4);
40
41
42 tmp =upd6464a_get_disp_code('B');
43 upd6464A_write_addr_control(0,1);
44 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, &tmp, 1);
45 delay_x250ms(4);
46
47 tmp =upd6464a_get_disp_code('Z');
C51 COMPILER V7.50 TEST_OSD 02/26/2009 08:55:32 PAGE 2
48 upd6464A_write_addr_control(0,23);
49 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, &tmp, 1);
50 delay_x250ms(4);
51
52 memset(disp_buff,0,sizeof(disp_buff));
53 memcpy(disp_buff,"123456789012345678901234",CONST_COLUMN_NUMBER_MAX);
54 for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
55 {
56 disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
57 }
58 upd6464A_write_addr_control(0,0);
59 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
60
61 memset(disp_buff,0,sizeof(disp_buff));
62 memcpy(disp_buff,"abcdefghijklmnopqrstuvwx",CONST_COLUMN_NUMBER_MAX);
63 for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
64 {
65 disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
66 }
67 upd6464A_write_addr_control(1,0);
68 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
69
70
71 memset(disp_buff,0,sizeof(disp_buff));
72 memcpy(disp_buff,"yzABCDEFGHIJKLMNOPQRSTUV",CONST_COLUMN_NUMBER_MAX);
73 for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
74 {
75 disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
76 }
77 upd6464A_write_addr_control(2,0);
78 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
79
80
81 memset(disp_buff,0,sizeof(disp_buff));
82 memcpy(disp_buff,"WXYZ><-,. ;/\x80\x81\x82\x83\x84XYYYYYZ",CONST_COLUMN_NUMBER_MAX);
83 for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
84 {
85 disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
86 }
87 upd6464A_write_addr_control(3,0);
88 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
89
90
91 for(j=0; j<7; j++)
92 {
93 memset(disp_buff,0,sizeof(disp_buff));
94 memcpy(disp_buff,"123456789012345678901234",CONST_COLUMN_NUMBER_MAX);
95 for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
96 {
97 disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
98 }
99 upd6464A_write_addr_control(4+j,0);
100 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
101 }
102
103
104 memset(disp_buff,0,sizeof(disp_buff));
105 memcpy(disp_buff,"abcdefghijklmnopqrstuvwx",CONST_COLUMN_NUMBER_MAX);
106 for(i=0; i<CONST_COLUMN_NUMBER_MAX; i++)
107 {
108 disp_buff[i] =upd6464a_get_disp_code(disp_buff[i]);
109 }
C51 COMPILER V7.50 TEST_OSD 02/26/2009 08:55:32 PAGE 3
110 upd6464A_write_addr_control(11,0);
111 upd6464A_character_display_control(UPD6464A_CMD_BLINK_ON, disp_buff, CONST_COLUMN_NUMBER_MAX);
112 //======================================================================================================
113 delay_x250ms(8);
114 upd6464a_video_clr_ram();
115 upd6464A_display_control(UPD6464A_CMD_DISPLAY_DISP_ON, UPD6464A_CMD_DISPLAY_LC_ON, UPD6464A_CMD_DISPLAY_N
-O_BLINK);
116
117 doom_id =1;
118 protocol=0;
119 baud =1;
120 s_id =12345;
121 disp_init_menu();
122
123 delay_x250ms(12);
124 }
125 while(1)
126 {
127 DAT_HIGH;
128 CLK_HIGH;
129 CS_HIGH;
130 delay_x250ms(8);
131 DAT_LOW;
132 CLK_LOW;
133 CS_LOW;
134 delay_x250ms(8);
135
136 }
137 }
138
139
140 //字符芯片的初始化
141 void init_upd6464a(void)
142 {
143 uchar i;
144
145
146 //内部清除,设置显示模式
147 upd6464a_video_clr_ram();
148 upd6464A_display_control(UPD6464A_CMD_DISPLAY_DISP_ON, UPD6464A_CMD_DISPLAY_LC_ON, UPD6464A_CMD_DISPLAY_N
-O_BLINK);
149
150 //设置PAL制
151 //upd6464A_format_mode_control(UPD6464A_CMD_VSM_N);
152 //设置NTSC制:如果选择内同步则输出图象不稳定(无法同步)
153 // 如果选择外同步则输出图象稳定,但是字符显示缺少!
154 //说明芯片外部17.734MHz晶振和LC振荡决定了芯片只能使用PAL制!
155 upd6464A_format_mode_control(UPD6464A_CMD_VSM_NTSC);
156
157 //设置显示字符块的原点
158 //这里的原点需要根据upd6464a外部的晶振以及显示的实际情况进行调试
159 //以所有字符都显示在屏幕的中央为合适!
160 //测试后: x差2大约1个字符的宽度
161 // y差1大约半个字符的高度
162 upd6464A_disp_position_control(8,5);
163
164 //设置视频模式和前景、后景
165 //现在是蓝色背景白色字符显示,芯片产生视频信号
166 //upd6464A_osc_mode_control(UPD6464A_CMD_OSC_ON,UPD6464A_CMD_VS_MODE_INTERNAL);
167 //upd6464A_internal_color_control(UPD6464A_CMD_COLOR_BLUE);
168 //现在是相机图象为背景,黑色字符显示,芯片 不 产生视频信号
169 //本模式下:如果要禁止字符的叠加输出,则通过upd6464A_display_control()将显示关闭即可!
C51 COMPILER V7.50 TEST_OSD 02/26/2009 08:55:32 PAGE 4
170 // 如果不加外部视频,则没有图象输出!
171 upd6464A_osc_mode_control(UPD6464A_CMD_OSC_ON,UPD6464A_CMD_VS_MODE_EXTERNAL);
172 //upd6464A_internal_color_control(UPD6464A_CMD_COLOR_BLUE);
173 upd6464A_internal_color_control(UPD6464A_CMD_COLOR_WHITE);
174
175 //后景蓝色,显示字体是白色(内部视频输出的时候)
176 //后景蓝色,显示字体是黑色(外部视频输出的时候)
177 //upd6464A_background_control(UPD6464A_CMD_BACKGROUND_NO);
178 //字体具有黑色勾边(内部视频输出的时候)
179 //后景外部图象,显示字体是白色的(外部视频输出的时候)
180 upd6464A_background_control(UPD6464A_CMD_BACKGROUND_BLACK_FRAMING);
181 //字体具有黑色背景(内部视频输出的时候)
182 ////后景蓝色,显示字体是黑底白字(外部视频输出的时候)
183 //upd6464A_background_control(UPD6464A_CMD_BACKGROUND_BLACK_FILLING);
184 //除了字符显示区的前景是蓝色外,显示字符是黑底白字(内部视频输出的时候)
185 //显示底色是黑色,导致黑屏(外部视频输出的时候)
186 //upd6464A_background_control(UPD6464A_CMD_BACKGROUND_BLACK_ON_WHITE);
187
188 //外部振荡
189 //upd6464A_osc_method_control(UPD6464A_CMD_OSC_METHOD_Q);
190 //由于硬件和晶振都接上,两者没有明显差异
191 upd6464A_osc_method_control(UPD6464A_CMD_OSC_METHOD_4);
192
193 //视频输出幅度
194 //输出强度太大时,如果使用外部视频信号叠加则可能造成显示字符别扭,同步不稳定!
195 //upd6464A_output_level_control(UPD6464A_CMD_90_IRE,UPD6464A_CMD_2V_PP);
196 //字符颜色的浓度比上面浅一些
197 //1/2Vpp的幅度设置要求和信号输出以及接收者的输入相匹配!
198 upd6464A_output_level_control(UPD6464A_CMD_75_IRE,UPD6464A_CMD_1V_PP);
199
200 //字符尺寸
201 //测试后可知: 设置为UPD6464A_CMD_1_DOT,正好可以全屏显示12行*24列
202 // 说明全屏高度大致可以分为8*12=96(line unit),可以根据实际要显示的行数来设置字体的大小!
203 //字体的大小为UPD6464A_CMD_2_DOT时可以显示6行×14列
204 //芯片设置为PAL制,并且使用外同步后,pal制相机显示正常字符,NTSC制的相机显示的字符略高一些,
205 //所以造成最后一行显示一小半而已,所以做菜单如果兼容两种制式则应将行数限制在10行以下!
206 //补充的方法可以通过调节前面 upd6464A_disp_position_control()的参数完成,所有行的显示!
207 for(i=0; i<CONST_UPD6464A_CMD_WRITE_LINE_MAX+1; i++)
208 {
209 upd6464A_character_size_control(i, UPD6464A_CMD_1_DOT);
210 }
211 }
212
213 //End Of File
C51 COMPILATION COMPLETE. 6 WARNING(S), 1 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -