q/370112h q yc是什么标准准

嵌入式&量化参数QP和量化步长Qstep
H.264编解码器中,量化参数QP和量化步长Qstep的关系:
量化步长Qstep共有52个值。(对于亮度编码而言)
量化参数QP是量化步长Qstep的序号,取值0~51。
QP取最小值0 时,表示量化最精细;相反,QP取最大值51时,表示量化是最粗糙的。
Qstep随着QP的增加而增加,QP每增加6,Qstep增加一倍。
对于色度编码,QP的最大值是39。
RT.假设源和输出都是8bit.
4:2:0的顏色空間,luma分量的qp範圍為0-51,chroma分量的qp範圍為0-39
其中,qp就是x264 --qp中的那個qp. quantization&parameter,Qstep是量化步長,即:
Zij=round(Wij/Qstep)
其中Wij代表一個宏塊(macroblock)經DCT變換后的係數.這個宏塊在h264標準鐘可以是16x16,16x8,8x16,8x8,8x4,4x8,4x4等大小,其來源可以是I幀或者P/B幀的殘差值等等.
這裡同樣和JPEG標準不同,每個宏塊採用相同的量化步長量化.
QP和ln(Qstep)具有線性相關性,每當QP值增加6,Qstep便增加一倍.
因此當raw源中每當某分量每像素平均比特數增加一,最大QP值便可以增加6;反之如果減少一,最大QP值便應該減少6.這一點在x264源碼中也有體現.
因此10bit視頻的luma(亮度)分量其最大量化值就是51+2*6=63.
此外也可以看到當x264 --qp
0時並不是嚴格意義上的無損編碼,只不過是0.625的量化步長幾乎難以產生量化噪聲,因此可以近似看成無損編碼.
而x264的crf和2pass碼率控制模式就是通過marco-block
tree等工具,採用一定的預測算法,考慮人眼對不同內容的敏感程度,來確定不同宏塊/幀的量化值,從而完成最終成品的碼率控制的
变换与量化
1、&& 变换量化的过程如图3-1所示:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0px 10px 0px 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 DispLAY: MAx-WiDTH: 100%; FLoAT: BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//2122.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
2、 H.264 对4&4 的图像块(亮度块或Cr、Cb 色度块)进行操作,则相应的4&4DCT 变换矩阵A为:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//5796.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//4384.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//1720.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
H.264 对4&4DCT 中的A&进行了改造,采用整数DCT
技术,有效地减少计算量,同时不损失图像准确。上式可等效为:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//0954.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
其中,d=c/b(≈0.414)。符号“?”表示(CXCT)结果中的每个元素乘以矩阵E&中对应位置上的系数
值的运算。为了简化计算,取d 为0.5。同时又要保持变换的正交性,对b 进行修正,取b=√(2/5)
。对矩阵C&中的第2
行和第4 行,以及矩阵CT
中的第2 列和第4 列元素乘以2,相应地改造矩阵E为Ef,以保持原式成立,得到:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//3354.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
H.264 将DCT 中“?Ef”运算的乘法融合到后面的量化过程中,实际的DCT 输出为:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0px 10 pADDinG-LeFT: 0 WiDTH: pADDinG-riGHT: 0 MAx-WiDTH: 100%; FLoAT: HeiGHT: BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//1021.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
3、& 量化:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//3595.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
4、 在H.264 中,量化步长Qstep 共有52 个值。如表3-1 所示。其中QP 是量化参数,是量化步长的序号,QP 每增加
&6,Qstep 增加一倍。
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 DispLAY: MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//1062.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
量化步长是实际用来进行量化的值,量化参数只是量化步长的别名。
6、 亮度QP
的最大值是51,而色度QP 的最大值是39。
7、 H.264 量化过程还要同时完成DCT 变换中“?Ef”乘法运算,它可以表述为:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//0187.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
其中,Wij 是矩阵W&中的转换系数,PF
中的元素,根据样本点在图像块中的位置(i, j)取值:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//2762.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
利用量化步长随量化参数每增加6 而增加一倍的性质,可以进一步简化计算。设:
qbits = 15 +
floor(QP/6)。令
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//1310.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//4160.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
这样,MF 可以取整数。表3-2
只列出对应QP 值为0 到5 的MF 值,对于QP 值大于5 的情况,只是qbits 值随QP 值每增加6 而增加1,而对应的MF
值不变。这样,量化过程则为整数运算,并且可以避免使用除法。
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 DispLAY: MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//2953.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
具体量化过程的运算为:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//0838.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
其中sign()为符号函数;f
为偏移量,它的作用是改善恢复图像的视觉效果例如,对帧内预测图像块f 取2qbits/3,对帧间预测图像块f
取2qbits/6。
8、 如果当前处理的图像宏块是色度块或帧内16&16 预测模式的亮度块,则需要将其中各图像块的DCT
变换系数矩阵W&中的直流分量或直流系数W00
按对应图像块顺序排序,组成新的矩阵WD,再对WD
进行Hadamard 变换及量化。
9、 对亮度块WD
的Hadamard 变换为:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//4573.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
是Hadamard 变换结果。接着要对YD
再进行量化输出:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//1585.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
&& 10、对各色度块WD
的Hadamard 变换为:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//3698.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
是Hadamard 变换结果。接着要对YD
再进行量化输出:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//0216.jpg"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
11、zig-zag扫描顺序如下图3-1:
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 DispLAY: MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//4189.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />& &
帧模式 & & &
<img STYLE="BorDer-BoTToM: 0 BorDer-LeFT: 0 pADDinG-BoTToM: 0 Line-HeiGHT: 28 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 DispLAY: MAx-WiDTH: 100%; BorDer-Top: 0 BorDer-riGHT: 0 pADDinG-Top: 0px" ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="/images//0636.jpg" DATA-PINIT="registered"
TITLE="嵌入式&量化参数QP和量化步长Qstep" />
& &&cbp是什么参数?
12、cbp一共6bit,高2bit表示cbpc
(2:cb、cr中至少一个4x4块的AC系不全为0;1:cb、cr中至少一个2x2的DC系数不全为0;0:所有色度系数全0)。低4bit分别表示4个8x8亮度块,其中从最低一位开始的4位分别对应00,10,01,11位置的8*8亮度块。如果某位为1,表示该对应8*8块的4个4*4块中至少有一个的系数不全为0。&
13、level:幅值;run: 每个非零系数前面 0 的个数。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。intel处理器M和U H结尾的有什么具体区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
intel处理器M和U H结尾的有什么具体区别
&&笔记本CPU U和M区别
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢74HC595_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
是硅结构的CMOS器件, 兼容低电压TTL电路,遵守 NO.7A标准。74HC595具有8位和一个,三态输出功能。 移位寄存器和存储器有相互独立的时钟。数据在SH_cp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在ST_cp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。将串行输入的8位数字,转变为并行输出的8位数字,例如控制一个8位数码管,将不会有闪烁。
74HC595特点
8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态
74HC595是具有三态输出功能(即具有高电平、低电平和高阻抗三种输出状态)的门电路。输出寄存器可以直接清除。具有100MHz的移位频率。
74HC595输出能力
并行输出,总线驱动; 串行输入;标准中等规模集成电路
595移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
Cpd决定动态的能耗,
Pd=Cpd×VCC×f1+∑(CL×VCC^2×f0)
F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压
74HC595引脚说明
符号  引脚  描述  Q0--Q7  第15脚,第1-7脚
8位并行数据输出,  GND  第8脚  地  Q7’  第9脚  串行数据输出  MR  第10脚  主复位(低电平)  SHCP  第11脚  数据输入时钟线 STCP  第12脚  输出存储器锁存时钟线 OE  第13脚  输出有效(低电平)  DS  第14脚  串行数据输入  VCC  第16脚  电源  
74HC595使用方法
74595的数据端:
Q0--Q7: 八位输出端,可以直接控制数码管的8个段。
Q7&#39;: 输出端。将它接下一个595的DS端。
DS: 数据输入端,级联的话接上一级的Q7&#39;。
74595的控制端说明:
/MR(10脚): 低电平时将移位寄存器的数据清零。通常我将它接Vcc。
SH_CP(11脚):上升沿时数据寄存器的数据移位。Q0-&Q1-&Q2--&Q3--&...--&Q7;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)
ST_CP(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将ST_CP置为低电平,当移位结束后,在ST_CP端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。
/OE(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。
注1)7功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。
2)74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。
3)595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,如下面的真值表,在正常使用时ST_CP为低电平, /OE为低电平。从DS每输入一位数据,串行输入时钟SH_CP上升沿有效一次,直到八位数据输入完毕,输出时钟ST_CP上升沿有效一次,此时,输入的数据就被送到了输出端。
595具体使用的步骤:
第一步:目的:将要准备输入的位数据移入74HC595数据输入端上。
方法:送位数据到_595。
第二步:目的:将位数据逐位移入74HC595,即数据串入
方法:SH_CP产生一上升沿,将DS上的数据移入74HC595移位寄存器中,先送低位,后送高位。
第三步:目的:并行输出数据。即数据并出
方法:ST_CP产生一上升沿,将由DS上已移入数据寄存器中的数据
送入到输出锁存器。
说明: 从上可分析:从SH_CP产生一上升沿(移入数据)和ST_CP产生一上升沿(输出数据)是二个独立过程,实际应用时互不干扰。即可输出数据的 同时移入数据。[1]
74HC595真值表
MR为低电平时仅仅影响移位寄存器
空移位寄存器到输出寄存器
清空移位寄存器,并行输出为高阻状态
逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态 移入
移位寄存器的内容到达保持寄存器并从并口输出
移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并出
74HC595相关注释
H=高电平状态
L=低电平状态
当MR为高电平,数据在SHCP上升沿进入,在STCP上升沿输出到并行端口,OE为使能端,低电平有效,当OE为低时,输出使能,为高关闭使能,并不影响其他输入端。
74HC595程序样例
DS接MOSI,OE/GND接GND,SH_CP接SCLK,ST_CP接使能信号BIT0@P1,MR/VCC接POWER,如果不需要16位,改US16B,不使用H寄存器即可,还有SPI工作期间可以进入低功耗,也可以执行指令.
#include&&msp430.h&
void&main(void)
WDTCTL&=&WDTPW&+&WDTHOLD;
P1DIR&|=&BIT0&+&BIT1;
P1OUT&&=&~BIT0;
USICTL0&|=&USIPE6&+&USIPE5&+&USIMST&+&USIOE;
USICTL1&|=&USIIE;
USICKCTL&=&USIDIV_7&+&USISSEL_2;
USICTL0&&=&~USISWRST;
P1OUT&|=&BIT0;
USISRH&=&0xAA;
USISRL&=&0xAA;
USICNT&=&0x10&+&USI16B;&//&16位数,级联可用.
while((USICTL1&&&USIIFG)&!=&0x01){&//此处可以干别的
//这里写入与SPI无关的代码,共8*16=128条单周期指令.
USICTL1&&=&~USIIFG;
P1OUT&&=&~BIT0;
单片机74HC595模块驱动程序
//74HC595&LED控制
#include&&reg51.h&
#include&&intrins.h&
#define&NOP()&_nop_()
sbit&MOSIO=P3^4;
sbit&R_CLK=P3^5;
sbit&S_CLK=P3^6;
void&delay(unsigned&int&i);
void&HC595SendData(unsigned&char&SendVal);
{unsigned&char&Led=0
HC595SendData(0xff);
{&HC595SendData(Led);
Led&=Led|0x01;
if(Led==0xff)Led=0
delay(200);
void&delay(unsigned&int&i)
unsigned&int&j;
for(i;i&0;i--)
for(j=300;j&0;j--);
void&HC595SendData(unsigned&char&SendVal)
unsigned&char&i;
for(i=0;i&8;i++)
if((SendVal&&i)&0x80)MOSIO=1;
else&MOSIO=0;
74HC595驱动静态数码管程序
#include&reg51.h&
#include&intrins.h&
#defineNOP()_nop_()
sbitMOSIO=P3^4;
sbitR_CLK=P3^5;
sbitS_CLK=P3^6;
voiddelay(unsignedinti);
voidHC595SendData(unsignedcharSendVal);
unsignedcharcodeLED7Code[]=
{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,
~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
{unsignedcharHC595SendV
unsignedintLedNumV
{&LedNumVal++;
HC595SendVal=LED7Code[LedNumVal%16];&HC595SendData(HC595SendVal);
delay(200);
voiddelay(unsignedinti)
for(i;i&0;i--)
for(j=300;j&0;j--);
voidHC595SendData(unsignedcharSendVal)
for(i=0;i&8;i++)
if((SendVal&&i)&0x80)MOSIO=1;
elseMOSIO=0;
双595驱动点阵程序
#include&reg51.h&
#include&intrins.h&
#defineNOP()_nop_()
sbitMOSIO=P3^7;
sbitR_CLK=P3^5;
sbitS_CLK=P3^6;
sbiten573=P1^3;
sbitends=P1^2;
voidHC595SendData(unsignedintSendVal);
unsignedintV
unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedigittab[18][8]={
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},//0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00},//1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},//2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},//3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},//4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00},//5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00},//6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},//7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},//8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00},//9
{0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00},//P
{0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00},//R
{0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00},//E
{0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00},//C
{0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00},//H
{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00},//I
{0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00},//N
{0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00}
voidmain(void)
TMOD=0x01;
TH0=()/256;
TL0=()%256;
voidt0(void)interrupt1using0
TH0=()/256;
TL0=()%256;
if(cntb&18)/
{//P1=0xFF;
//P2=tab[cnta];
P0=~digittab[cntb][cnta];
Val=tab[cnta]&0x00
Val=Val+0x00
HC595SendData(Val);
{//P2=0xFF;
//P1=tab[cnta];
P0=~digittab[cntb-18][cnta];
Val=tab[cnta];
Val=Val+0xFF00;
HC595SendData(Val);
if(++cnta&=8)cnta=0;
if(++timecount&=333)
{timecount=0;
if(++cntb&=36)cntb=0;
voidHC595SendData(unsignedintSendVal)
for(i=0;i&16;i++)
{&if((SendVal&&i)&0x8000)MOSIO=1;//setdatalinehigh0X8000
elseMOSIO=0;&//MOSIO=1
R_CLK=0;//setdatalinelow
.21IC中国电子网&#91;引用日期&#93;}

我要回帖

更多关于 370112 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信