⑴ 8051单片机的串行口扩展并行IO接口,控制16个发光二极管,2片CD4094并联,...
/*写数据到串入并出移位寄存器函数*/
void WR(unsigned char data num2 )
{
unsigned char data count1;
for(count1=0;count1<=7;count1++)
{
if((num2&0x80)==0x80) /*最高位为1,则向SDATA发送1*/
SDATA=1;/*发出数据的最高位*/
else
SDATA=0;
num2<<=1; /*右移位*/
SCLK=0;
_nop_();
_nop_();
SCLK=1; /*产生上生沿*/
}
}
⑵ 鍗旷墖链4094鑺鐗囬┍锷ㄦ暟镰佺¢樋
鍙浠ヤ娇鐢ㄤ綅镎崭綔鎸囦护锛屼娇鐢ㄥ苟琛屽彛𨱒ユā𨰾熶覆琛屽彛锛岃揪鍒板悜钬滀覆鍏ュ苟鍑哄瘎瀛桦櫒钬濊緭鍏ユ暟鎹镄勭洰镄勚
鍙戦丄CC鍒4094镄勫瓙绋嫔簭濡备笅锛
SEND_ACC:
MOV R2, #8
S_LOOP:
RRC A ;A涓镄勬渶浣庝綅绉诲姩鍒癈
MOV P3.3, C ;绉诲姩鍒瘅鍙
NOP
CLR P3.4 ;P3.4杈揿嚭涓涓鑴夊啿
NOP
NOP
SETB P3.4
DJNZ R2, S_LOOP
RET
;瀹
⑶ 8051单片机问题 如果用两个cd4094串行扩展并行IO接口控制16个发光二极管依次亮灭,那么
具体亮几个灯,你可以通过编程去控制的,它2片可以控制64路LED的,看你的程序怎么写了。
⑷ 谁能帮我写下用8051单片机的串行口外接串入并出的芯片CD4094的程序的注释
#include<reg51.h>
sbit p1_0=p1^o;//管脚定义,可能是光耦三极管,错把字母o当成数字0
void main()
{
unsigned char i,j;
SCON=0x00;//串口工作方式0,允许接收
j=0x01;//要从串口发送的数据
for(; ;)//死循环,相当于while(1)
{
p1_0=0;
SBUF=j;//j送到SBUF,从串口发送
while(!TI) { ;}//等待发送完成
p1_0=0;TI=0;//TI软件清0
for ( i=0;i<=254;i++) { ;}//延时
j=j*2;//左移一位,即led灯往左轮流亮
if (j= =0x00) j=0x01;//一轮左移完成,从头再次左移,循环左移
}
}
⑸ 鍏充簬鍗旷墖链篊D4094寮曡剼镄勯梾棰
闾d笉鏄鏅舵尟鑴氥侰D4094鏄鐢ㄦ潵镓╁𪾢I/O鎺у埗鍙g殑鑺鐗囧强8浣岖Щ浣嶅瘎瀛桦櫒锛屾病链夋櫠鎸銆备笉鏄鍗旷墖链猴纴鍏跺悇涓寮曡剼镄勫姛鑳戒綘鍙瀹幂殑sheet data 鏁版嵁鍐屼腑镆ュ埌璇存槑鍜岀敤娉曘
⑹ 单片机多个cd4094连用的问题
QS端就是最后一位Q7,罩灶在时钟上升沿改变,qs非在时钟下降沿改变,也是最后一位Q7,它们都是旁闷带用于运芦级联的,具体的参考datasheet