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

📄 upd6464a.lst

📁 用upd6464 给TV信号 加叠加字符
💻 LST
字号:
C51 COMPILER V7.50   UPD6464A                                                              02/26/2009 08:55:32 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UPD6464A
OBJECT MODULE PLACED IN upd6464a.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\upd6464a.c BROWSE DEBUG OBJECTEXTEND PRINT(.\upd6464a.lst) OBJECT(upd64
                    -64a.obj)

line level    source

   1          //==============================
   2          //FileName=upd6464a.c
   3          //Date=20060518
   4          //==============================
   5          #include"public.h"
*** WARNING C318 IN LINE 5 OF src\upd6464a.c: can't open file 'public.h'
   6          #include"delay_s.h"
*** WARNING C318 IN LINE 6 OF src\upd6464a.c: can't open file 'delay_s.h'
   7          #include"upd6464a.h"
*** WARNING C318 IN LINE 7 OF src\upd6464a.c: can't open file 'upd6464a.h'
   8          #include<ctype.h>
   9          
  10          //内部底层函数的说明
  11          static void upd6464a_send_byte(uchar dat);
*** ERROR C141 IN LINE 11 OF SRC\UPD6464A.C: syntax error near 'dat', expected ')'
  12          static void upd6464a_send_cmd_1byte(uchar s);
*** ERROR C141 IN LINE 12 OF SRC\UPD6464A.C: syntax error near 's', expected ')'
  13          static void upd6464a_send_cmd_2byte(uchar s1, uchar s2);
*** ERROR C141 IN LINE 13 OF SRC\UPD6464A.C: syntax error near 's1', expected ')'
  14          static void upd6464a_send_cmd_continue_2byte(uchar cmd_high, uchar *cmd_low, uchar cmd_len);
*** ERROR C141 IN LINE 14 OF SRC\UPD6464A.C: syntax error near 'cmd_high', expected ')'
  15          
  16          //==============================
  17          //      外部调用函数部分
  18          //==============================
  19          //0)将输入的ASCII码(包含一些自定义的特殊字符)转换为显示码
  20          //注意: 大写字母'O'正常转换后对应的字符是白块!
  21          uchar   upd6464a_get_disp_code(uchar ascii)
*** ERROR C129 IN LINE 21 OF SRC\UPD6464A.C: missing ';' before 'upd6464a_get_disp_code'
  22          {
  23                  if (isdigit(ascii)) return(ascii -'0');
  24                  else if(islower(ascii)) return(ascii -0x10);
  25                  else if(ascii =='O') return(0x5f);              //'O'用'o'来替代显示!
  26                  else if(isupper(ascii)) return(ascii -'0');
  27                  else
  28                  {
  29                          switch(ascii)
  30                          {
  31                                  case ':':
  32                                          return(0x0a);
  33          
  34                                  case '<':
  35                                          return(0x0b);
  36                                  
  37                                  case '>':
  38                                          return(0x0c);
  39                                  
  40                                  case '-':
  41                                          return(0x0d);
  42                                          
  43                                  case '.':
  44                                          return(0x0e);
  45                                  
  46                                  case ',':
C51 COMPILER V7.50   UPD6464A                                                              02/26/2009 08:55:32 PAGE 2   

  47                                          return(0x0f);
  48                                          
  49                                  case ' ':
  50                                          return(0x10);
  51                                          
  52                                  case '?':
  53                                          return(0x50);
  54                                          
  55                                  case ';':
  56                                          return(0x6b);
  57                                          
  58                                  case '/':
  59                                          return(0x6d);
  60          
  61                                  case CHAR_CA:   //'x'
  62                                          return(0x6c);
  63                                  
  64                                  case CHAR_RIGHT:        //以下四个是方向符号
  65                                          return(0x3b);
  66                                          
  67                                  case CHAR_LEFT:
  68                                          return(0x3c);
  69                                          
  70                                  case CHAR_UP:
  71                                          return(0x3d);
  72                                          
  73                                  case CHAR_DOWN: 
  74                                          return(0x3e);                   
  75                                          
  76                                  default:        //异常字符显示为空白
  77                                          return(0x10);
  78                          }
  79                  }
  80          }
  81          
  82          
  83          //1-byte 命令部分
  84          //1-1)清除RAM,执行后需要延时1ms
  85          void upd6464a_video_clr_ram(void)
  86          {
  87                  upd6464a_send_cmd_1byte(UPD6464A_CMD_VIDEO_RAM_CLR);
  88                  delay_x1ms(10);
  89          }
  90          
  91          //1-2)显示控制
  92          //参数依次为: 显示,LC振荡,闪烁的设置
  93          void upd6464A_display_control(uchar disp, uchar lc, uchar blink)
  94          {
  95                  upd6464a_send_cmd_1byte(0x10 | ((disp &0x01)<<3) | ((lc &0x01)<<2) | (blink &0x03) );   
  96          }
  97          
  98          //1-3)内部视频输出时的颜色控制,如果使用外部视频叠加则无效
  99          void upd6464A_internal_color_control(uchar color)
 100          {       //输入大于等于4则只能是white
 101                  upd6464a_send_cmd_1byte(0x20 | (( ((color &0x07)<4) ?(color &0x03) :0x07) <<1) );
 102          }
 103          
 104          //1-4)背景控制
 105          void upd6464A_background_control(uchar select_bg)
 106          {       
 107                  upd6464a_send_cmd_1byte(0x30 | ((select_bg&0x03)<<1) );
 108          }
C51 COMPILER V7.50   UPD6464A                                                              02/26/2009 08:55:32 PAGE 3   

 109          
 110          //1-5)晶振模式控制
 111          void upd6464A_osc_mode_control(uchar osc, uchar vs_mode)
 112          {       
 113                  upd6464a_send_cmd_1byte(0x40 | ((vs_mode &0x01)<<2) | (osc &0x01) );
 114          }
 115          
 116          //1-6)视频分类模式控制
 117          void upd6464A_format_mode_control(uchar format)
 118          {       
 119                  upd6464a_send_cmd_1byte(0x48 | ((format <4) ? (format &0x03) :0x04 ) );
 120          }
 121          
 122          //1-7)OSC振荡方式控制
 123          void upd6464A_osc_method_control(uchar method)
 124          {       
 125                  upd6464a_send_cmd_1byte(0x50 | ((method &0x01) <<1) );
 126          }
 127          
 128          //2-byte命令部分
 129          //2-1)显示位置的控制
 130          //参数:
 131          //      x       水平方向离开左端的位置(0-31)
 132          //      y       垂直方向离开上端的位置(0-31)
 133          void upd6464A_disp_position_control(uchar x, uchar y)
 134          {       
 135                  upd6464a_send_cmd_2byte(0x80 | ((y >>3) &0x03), ((y&0x07)<<5) |(x &0x1f) );
 136          }
 137          
 138          //2-2)写入OSD的RAM地址的控制
 139          //参数:
 140          //      line    垂直方向行的位置(0-11)
 141          //      coloum  水平方向列的位置(0-23)
 142          void upd6464A_write_addr_control(uchar line, uchar coloum)
 143          {       
 144                  upd6464a_send_cmd_2byte(0x88 | ((line >>3) &0x01), ((line <<5) &0xe0) |(coloum &0x1f) );
 145          }
 146          
 147          //2-3)输出信号幅度的控制
 148          //参数:
 149          //      lum     字符控制(0/1 =75/90 I.R.E)
 150          //      level   信号幅度控制(0/1 =1/2v pp)
 151          void upd6464A_output_level_control(uchar lum, uchar level)
 152          {       
 153                  upd6464a_send_cmd_2byte(0x90 | (level &0x01), 0x04 | ( ((lum &0x01)==0) ?0x01 :0x03 ) );
 154          }
 155          
 156          //2-4)显示字符尺寸的控制
 157          //参数:
 158          //      high    字符高度(占的行数: 0...11)
 159          //      dot     线宽控制(0/1 =1/2点线宽)
 160          void upd6464A_character_size_control(uchar high, uchar dot)
 161          {       
 162                  upd6464a_send_cmd_2byte(0x98, ((dot ==0) ?0x00:0x40) | (high %(CONST_UPD6464A_CMD_WRITE_LINE_MAX+1)) );
 163          }
 164          
 165          //2-byte连续命令部分
 166          //3-1)显示字符写入的控制
 167          //参数:
 168          //      blink           =1 字符闪烁
 169          //      dat_str[]       输出的连续字符串
 170          //      len             输出的连续字符串的字节数
C51 COMPILER V7.50   UPD6464A                                                              02/26/2009 08:55:32 PAGE 4   

 171          //执行此命令前必须打开LC振荡!
 172          void upd6464A_character_display_control(uchar blink, uchar *dat_str, uchar len)
 173          {       
 174                  upd6464a_send_cmd_continue_2byte(0xc0 | ((blink &0x01)<<1), dat_str, len);
 175          }
 176          
 177          //==============================
 178          //      底层函数部分
 179          //==============================
 180          //------------------------------
 181          //字节的串行输出,最底层函数
 182          //输入:
 183          //      dat     单字节
 184          //输出:
 185          //      无
 186          //要求进入时的状态: CLK=1,CS=0
 187          //退出时的状态: CLK=1,CS=0
 188          //------------------------------
 189          static void     upd6464a_send_byte(uchar dat)
 190          {
 191          uchar  i;
 192                  for(i=0;i<8;i++)
 193                  {
 194                          CLK_LOW;                //clk为低时送数据,数据高位在前
 195                          if((dat & 0x80) ==0x80)
 196                          {
 197                                  DAT_HIGH;
 198                          }
 199                          else
 200                          {
 201                                  DAT_LOW;
 202                          }
 203                          delay_1ms();
 204                          CLK_HIGH;
 205                          dat <<=1;
 206                  }
 207                  delay_1ms();
 208          }
 209          
 210          //------------------------------
 211          //1-byte 单字节命令的发送
 212          //输入:
 213          //      s       单字节命令
 214          //输出:
 215          //      无
 216          //------------------------------
 217          void upd6464a_send_cmd_1byte(uchar s)
 218          {
 219                  CS_LOW;
 220                  delay_1ms();
 221          
 222                  upd6464a_send_byte(s);
 223                          
 224                  CS_HIGH;
 225                  delay_1ms();
 226                  delay_1ms();
 227          }
 228          
 229          //------------------------------
 230          //2-byte 双字节命令的发送
 231          //输入:
 232          //      s1      双字节命令的高字节
C51 COMPILER V7.50   UPD6464A                                                              02/26/2009 08:55:32 PAGE 5   

 233          //      s2      双字节命令的低字节
 234          //输出:
 235          //      无
 236          //------------------------------
 237          void upd6464a_send_cmd_2byte(uchar s1, uchar s2)
 238          {
 239                  CS_LOW;
 240                  delay_1ms();
 241          
 242                  upd6464a_send_byte(s1);
 243                  upd6464a_send_byte(s2);
 244                  
 245                  CS_HIGH;
 246                  delay_1ms();
 247                  delay_1ms();
 248          }
 249          
 250          
 251          //------------------------------
 252          //2-byte continue 双字节连续命令的发送
 253          //输入:
 254          //      cmd_high        双字节连续命令的起始字节
 255          //      cmd_low[]       双字节连续命令的第二字节串
 256          //      cmd_len         双字节连续命令的第二字节串的字节长度(不包括结束标志字节)
 257          //输出:
 258          //      无
 259          //------------------------------
 260          void upd6464a_send_cmd_continue_2byte(uchar cmd_high, uchar *cmd_low, uchar cmd_len)
 261          {
 262          uchar  j;
 263          
 264                  CS_LOW;
 265                  delay_1ms();
 266          
 267                  upd6464a_send_byte(cmd_high);
 268                  delay_1ms();
 269                  for(j=0; j<cmd_len; j++)
 270                  {       //进行字符值得限制
 271                          upd6464a_send_byte(cmd_low[j] &0x7f);
 272                  }       
 273                  upd6464a_send_byte(CONST_UPD6464A_CMD_CONTINUE_END);
 274                  
 275                  CS_HIGH;
 276                  delay_1ms();
 277                  delay_1ms();
 278          }
 279          
 280          
 281          //End Of File

C51 COMPILATION COMPLETE.  3 WARNING(S),  5 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -