⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_osd.lst

📁 用upd6464 给TV信号 加叠加字符
💻 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 + -