求HT6221的C语言解码程序

求HT6221的C语言解码程序,第1张

你好,很高兴回答你的问题 Ht6221红外遥控C语言解码//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<br/>//★HT6221标准红外C语言解码程序 ★<br/>//★CPU AT89S51 晶振12MHz 接口 P7 ★<br/>//★ht6221 资料: ★<br/>//★Designed by pufan ★<br/>//★日期2006-06-14 ★<br/>//★Email: zicosh@163com ★<br/>//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<br/>#include<reg51h><br/><br/>#define UINT8 unsigned char<br/>#define UINT16 unsigned int<br/>#define UINT32 unsigned long<br/><br/>UINT8 IRCommandData;<br/>UINT8 da[4]={0,0,0,0};<br/><br/>UINT8 table[18]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa7,0x26,0xa1,0xb1,0x34,0xab};<br/><br/>sbit IR=P3^7;<br/><br/>//============主程序====================================================<br/>void delay(UINT16 cnt)<br/>{<br/>while(--cnt);<br/>}<br/><br/>void d870us(void)<br/>{<br/>delay(108);//12M<br/>}<br/><br/>void d1000us(void)<br/>{<br/>delay(125);//12M<br/>}<br/><br/>void d4740us(void)<br/>{<br/>delay(593);//12M<br/>}<br/>//----------------------------------------------------<br/><br/>//-----------------------------------------------<br/>// ht6221解码程序<br/>//-----------------------------------------------<br/>UINT8 IRDecode(void)<br/>{<br/> UINT8 i,m,n;<br/> <br/> for(i=0;i<10;i++)<br/> {<br/> d870us();<br/> if(IR) goto exit;<br/> }<br/> <br/> while(!IR);<br/> d4740us();<br/><br/> //开始解码<br/> for(m=0;m<4;m++){<br/> for(n=0;n<8;n++){<br/> while(!IR);<br/> <br/> d870us();<br/> if(IR)<br/> {<br/> d1000us();<br/> da[m]=da[m]>>1;<br/> da[m]=da[m]|0x80;<br/> }<br/> else<br/> {<br/> da[m]=da[m]>>1;<br/> da[m]=da[m]|0;<br/> }<br/> //while(IR);<br/> //while(!IR);<br/> }<br/> }<br/> if((da[0]==0x0)&&(da[1]==0xFF))<br/> { <br/> if(da[2]==(~da[3]))<br/> return da[2];<br/> }<br/>exit:<br/> return 0; <br/>}<br/><br/>void SendData(UINT8 c)<br/>{<br/> P0=c;<br/>}<br/><br/>void main(void)<br/>{<br/> P2=0xFD;//选通一位数码管<br/> P0=0xff;<br/> <br/> while(1)<br/> {<br/> if(!IR)<br/> {<br/> IRCommandData=IRDecode();<br/> switch(IRCommandData)<br/> { <br/> case 0x10:SendData(table[1]);break;<br/> case 0x03:SendData(table[2]);break;<br/> case 0x01:SendData(table[3]);break;<br/> case 0x06:SendData(table[4]);break;<br/> case 0x09:SendData(table[5]);break;<br/> case 0x1d:SendData(table[6]);break;<br/> case 0x1f:SendData(table[7]);break;<br/> case 0x0d:SendData(table[8]);break;<br/> case 0x19:SendData(table[9]);break; <br/> default:break;<br/> }<br/> }<br/> }<br/>}<br/> 谢谢采纳。

2011年有了这种程序来,到现在市面上有百余种程序。收费模式当然也不同,有的是按提成收费的,有的是按次数收费的,价格不同。建议选择稳定的上家,服务好点的。目的是为了长期合作、稳定,百度下 龙霸装机工作室,他们家的不错,合作好几年了。

我以前做的一个项目,红外遥控开关,解码部分的code,供参考

6121码,外部中断0,at89s52

void int0() interrupt 0 //外部中断1服务函数,红外解码程序

{

static uchar wei; //定义静态变量

static uchar pp; //定义静态变量

if(tt<56&&tt>50) {d2=0; tt=0;pp=0;wei=0;}//起始信号符合,将d2标记为0,各变量清零

if(tt>11)tt=0;

if(d2==0&&tt>=4)

{

buf[pp]>>=1;

if(tt>5) buf[pp]|=0x80; //如果时间大于780us ,则视为收到数据1

wei++;

if(wei==8)

{

pp++;

wei=0;

if(pp==4) { pp=0; d2=1;} //接收满4个字节,标志位清除

} //在 d2为0期间进入中断8次,说明已经收到一个字节数据,字节号加1

}

tt=0;//每次进入中断都清零

}

void timer1() interrupt 3 //红外解码计时

{

tt++;

}

1、G711是一种由国际电信联盟(ITU-T)订定音频编码方式,又称为ITU-T G711目前G711有两个编码方式,A-law以及Mu-lawG711A是其中一种编码方式

2、例程:

/

  g711c

 

  u-law, A-law and linear PCM conversions

 /

#define SIGN_BIT (0x80)  / Sign bit for a A-law byte /

#define QUANT_MASK (0xf)  / Quantization field mask /

#define NSEGS  (8)  / Number of A-law segments /

#define SEG_SHIFT (4)  / Left shift for segment number /

#define SEG_MASK (0x70)  / Segment field mask /

static short seg_end[8] = {0xFF, 0x1FF, 0x3FF, 0x7FF,

       0xFFF, 0x1FFF, 0x3FFF, 0x7FFF};

/ copy from CCITT G711 specifications /

unsigned char _u2a[128] = {   / u- to A-law conversions /

 1, 1, 2, 2, 3, 3, 4, 4,

 5, 5, 6, 6, 7, 7, 8, 8,

 9, 10, 11, 12, 13, 14, 15, 16,

 17, 18, 19, 20, 21, 22, 23, 24,

 25, 27, 29, 31, 33, 34, 35, 36,

 37, 38, 39, 40, 41, 42, 43, 44,

 46, 48, 49, 50, 51, 52, 53, 54,

 55, 56, 57, 58, 59, 60, 61, 62,

 64, 65, 66, 67, 68, 69, 70, 71,

 72, 73, 74, 75, 76, 77, 78, 79,

 81, 82, 83, 84, 85, 86, 87, 88,

 89, 90, 91, 92, 93, 94, 95, 96,

 97, 98, 99, 100, 101, 102, 103, 104,

 105, 106, 107, 108, 109, 110, 111, 112,

 113, 114, 115, 116, 117, 118, 119, 120,

 121, 122, 123, 124, 125, 126, 127, 128};

unsigned char _a2u[128] = {   / A- to u-law conversions /

 1, 3, 5, 7, 9, 11, 13, 15,

 16, 17, 18, 19, 20, 21, 22, 23,

 24, 25, 26, 27, 28, 29, 30, 31,

 32, 32, 33, 33, 34, 34, 35, 35,

 36, 37, 38, 39, 40, 41, 42, 43,

 44, 45, 46, 47, 48, 48, 49, 49,

 50, 51, 52, 53, 54, 55, 56, 57,

 58, 59, 60, 61, 62, 63, 64, 64,

 65, 66, 67, 68, 69, 70, 71, 72,

 73, 74, 75, 76, 77, 78, 79, 79,

 80, 81, 82, 83, 84, 85, 86, 87,

 88, 89, 90, 91, 92, 93, 94, 95,

 96, 97, 98, 99, 100, 101, 102, 103,

 104, 105, 106, 107, 108, 109, 110, 111,

 112, 113, 114, 115, 116, 117, 118, 119,

 120, 121, 122, 123, 124, 125, 126, 127};

static int

search(

 int  val,

 short  table,

 int  size)

{

 int  i;

 for (i = 0; i < size; i++) {

  if (val <= table++)

   return (i);

 }

 return (size);

}

/

  linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law

 

  linear2alaw() accepts an 16-bit integer and encodes it as A-law data

 

   Linear Input Code Compressed Code

  ------------------------ ---------------

  0000000wxyza   000wxyz

  0000001wxyza   001wxyz

  000001wxyzab   010wxyz

  00001wxyzabc   011wxyz

  0001wxyzabcd   100wxyz

  001wxyzabcde   101wxyz

  01wxyzabcdef   110wxyz

  1wxyzabcdefg   111wxyz

 

  For further information see John C Bellamy's Digital Telephony, 1982,

  John Wiley & Sons, pps 98-111 and 472-476

 /

unsigned char

linear2alaw(

 int  pcm_val) / 2's complement (16-bit range) /

{

 int  mask;

 int  seg;

 unsigned char aval;

 if (pcm_val >= 0) {

  mask = 0xD5;  / sign (7th) bit = 1 /

 } else {

  mask = 0x55;  / sign bit = 0 /

  pcm_val = -pcm_val - 8;

 }

 / Convert the scaled magnitude to segment number /

 seg = search(pcm_val, seg_end, 8);

 / Combine the sign, segment, and quantization bits /

 if (seg >= 8)  / out of range, return maximum value /

  return (0x7F ^ mask);

 else {

  aval = seg << SEG_SHIFT;

  if (seg < 2)

   aval |= (pcm_val >> 4) & QUANT_MASK;

  else

   aval |= (pcm_val >> (seg + 3)) & QUANT_MASK;

  return (aval ^ mask);

 }

}

/

  alaw2linear() - Convert an A-law value to 16-bit linear PCM

 

 /

int

alaw2linear(

 unsigned char a_val)

{

 int  t;

 int  seg;

 a_val ^= 0x55;

 t = (a_val & QUANT_MASK) << 4;

 seg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT;

 switch (seg) {

 case 0:

  t += 8;

  break;

 case 1:

  t += 0x108;

  break;

 default:

  t += 0x108;

  t <<= seg - 1;

 }

 return ((a_val & SIGN_BIT)  t : -t);

}

#define BIAS  (0x84)  / Bias for linear code /

/

  linear2ulaw() - Convert a linear PCM value to u-law

 

  In order to simplify the encoding process, the original linear magnitude

  is biased by adding 33 which shifts the encoding range from (0 - 8158) to

  (33 - 8191) The result can be seen in the following encoding table:

 

  Biased Linear Input Code Compressed Code

  ------------------------ ---------------

  00000001wxyza   000wxyz

  0000001wxyzab   001wxyz

  000001wxyzabc   010wxyz

  00001wxyzabcd   011wxyz

  0001wxyzabcde   100wxyz

  001wxyzabcdef   101wxyz

  01wxyzabcdefg   110wxyz

  1wxyzabcdefgh   111wxyz

 

  Each biased linear code has a leading 1 which identifies the segment

  number The value of the segment number is equal to 7 minus the number

  of leading 0's The quantization interval is directly available as the

  four bits wxyz   The trailing bits (a - h) are ignored

 

  Ordinarily the complement of the resulting code word is used for

  transmission, and so the code word is complemented before it is returned

 

  For further information see John C Bellamy's Digital Telephony, 1982,

  John Wiley & Sons, pps 98-111 and 472-476

 /

unsigned char

linear2ulaw(

 int  pcm_val) / 2's complement (16-bit range) /

{

 int  mask;

 int  seg;

 unsigned char uval;

 / Get the sign and the magnitude of the value /

 if (pcm_val < 0) {

  pcm_val = BIAS - pcm_val;

  mask = 0x7F;

 } else {

  pcm_val += BIAS;

  mask = 0xFF;

 }

 / Convert the scaled magnitude to segment number /

 seg = search(pcm_val, seg_end, 8);

 /

   Combine the sign, segment, quantization bits;

   and complement the code word

  /

 if (seg >= 8)  / out of range, return maximum value /

  return (0x7F ^ mask);

 else {

  uval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0xF);

  return (uval ^ mask);

 }

}

/

  ulaw2linear() - Convert a u-law value to 16-bit linear PCM

 

  First, a biased linear code is derived from the code word An unbiased

  output can then be obtained by subtracting 33 from the biased code

 

  Note that this function expects to be passed the complement of the

  original code word This is in keeping with ISDN conventions

 /

int

ulaw2linear(

 unsigned char u_val)

{

 int  t;

 / Complement to obtain normal u-law value /

 u_val = ~u_val;

 /

   Extract and bias the quantization bits Then

   shift up by the segment number and subtract out the bias

  /

 t = ((u_val & QUANT_MASK) << 3) + BIAS;

 t <<= ((unsigned)u_val & SEG_MASK) >> SEG_SHIFT;

 return ((u_val & SIGN_BIT)  (BIAS - t) : (t - BIAS));

}

/ A-law to u-law conversion /

unsigned char

alaw2ulaw(

 unsigned char aval)

{

 aval &= 0xff;

 return ((aval & 0x80)  (0xFF ^ _a2u[aval ^ 0xD5]) :

     (0x7F ^ _a2u[aval ^ 0x55]));

}

/ u-law to A-law conversion /

unsigned char

ulaw2alaw(

 unsigned char uval)

{

 uval &= 0xff;

 return ((uval & 0x80)  (0xD5 ^ (_u2a[0xFF ^ uval] - 1)) :

     (0x55 ^ (_u2a[0x7F ^ uval] - 1)));

}

一、什么是视频解码器

视频编解码器,是指一个能够对数字视频进行压缩或者解压缩的程序或者设备。压缩和可能改变视频内容格式的过程,将模拟源更改为数字源。音频和视频都需要可定制的压缩方法。在压缩方面,目标是减少占用空间。只要是数字视频,就是需要经过视频编码器信号传输,更好地为视频直播提供技术实现。

视频编解码器是通过软件或硬件应用程序完成的视频压缩标准。

视频编码器:就是一个压缩的程序。

视频解码器:就是一个解压缩的程序。

二、视频编解码器的作用

1、视频在没有压缩的情况下,由于正常的连接速度不够,视频内容将使许多人无法通过因特网流式传输内容。特别是与流媒体相关的,视频编码器它通过互联网传输视频变得更加容易。这是因为压缩减少了所需的带宽,同时提供了高质量的体验。

2、视频编码兼容性。有时内容已经被压缩到足够的大小,但仍然需要进行编码以实现兼容性,尽管这通常被更准确地描述为代码转换。

3、对于通过互联网的高质量视频流,H264已经成为一种常见的编解码器,解码器是因为音频视频数据存储要先通过压缩,否则数据量太庞大。

而压缩需要通过一定的编码,才能用最小的容量来存贮质量最高的音频视频数据因此在需要对数据进行播放时要先通过解码器进行解码。

视频编解码器主要作用是对视频信号进行压缩和解压缩,通常这种压缩属于有损数据压缩。编码解码器的压缩率从一般的2:1~100:1不等,使处理大量的视频数据成为可能。

在日常生活中,视频编解码器的应用非常广泛。例如在DVD(MPEG-2)中,在VCD(MPEG-1)中,在各种卫星和陆上电视广播系统中,在互联网上。在线的视频素材通常是使用很多种不同的编解码器进行压缩的,为了能够正确地浏览这些素材,用户需要下载并安装编解码器包--一种为PC准备的编译好的编解码器组件。

随着高科技的快速发展,为了满足了更多领域的需求,高清视频编解码器也应运而生。高清视频编解码器可应用于:视频会议、安防监控、医疗示教、课堂录播、无人值守、庭审系统等各种环境条件下的软硬件配套服务。目前H264是比较符合高度压缩数字视频编解码器标准。高清视频编解码器的优势就是超低延迟(一般可达到40ms),高压缩比(支持 300K-40Mbps 动态码流编码),高清画质、高帧率(1080p/60帧)。

视频解码器分为硬件解码器和软件解码器之分。硬件解码器通常由DSP完成,软件解码器通常由CPU完成。

软件解码器通常用于计算机,处理器等视频视频解码、图像还原等过程,解码的图像直接在浏览器窗口显示,而不像硬件解码器可以输出到监视器上,多分屏显示出来。

硬件解码器可以轻松实现各种网络穿透,即可实现远程监控,还可以实现多分屏显示。硬件解码器可以确保图像高质量;辅码流网络实时传输,轻松解决带宽瓶颈问题。

视频编码器和视频解码器是相辅相成的,视频编解码器是一种通过压缩和解压缩的方式,将模拟视频流经过压缩后转为数字视频流,然后通过网络进行传输的工作方式。编码器:视频压缩设备; 解码器:视频解压缩设备。

音频视频数据存储要先通过压缩,否则数据量太庞大,而压缩需要通过一定的编码,才能用最小的容量来存贮质量最高的视频数据。在需要对数据进行播放时要先通过解码器进行解码。视频解码器工作原理重点包括:压缩格式和传输方式。

以上就是关于求HT6221的C语言解码程序全部的内容,包括:求HT6221的C语言解码程序、鱼机木马程序解码是怎么收费的、关于51单片机红外解码程序,哪位大侠帮我看下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9740482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存