欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7066|回復: 3
收起左側

HEF4094兩片級聯,控制16個繼電器,單片機發送數據時,最后一位數據丟失!

[復制鏈接]
ID:344751 發表于 2018-9-4 15:10 | 顯示全部樓層 |閱讀模式
原理圖如下:
1.png
ST_VAVDIN_VAVCLK_VAVOE_VAV接單片機,ST_1DIN_1CLK_1OE_1反邏輯輸出。

問題:分兩次發送8位數據,最后發送的那一位數據丟失。
例如:(1)發送高80xFF,低80時,HEF4094輸出0x007F
(2)發送高80,低80xFF時,HEF4094輸出0x7F00


單片機代碼如下:
#define ST_4094_1 PCout(12)  //PC12
#define OE_4094_1 PDout(2)  //PD2
#define DIN_4094_1 PCout(11)  //PC11
#define CLK_4094_1 PCout(10)  //PC10

void vavle_init(void)  //初始化
{
          //初始化IO
          RCC->APB2ENR|=1<<4;     //使能PORTC時鐘         控制端口PC10-12
          RCC->APB2ENR|=1<<5;     //使能PORTD時鐘         控制端口PD2

          GPIOD->CRL&=0XFFFFF0FF;//
          GPIOD->CRL|=0X00000300;//PD2 推挽輸出            
   GPIOD->ODR|=1<<2;      //PD2 輸出高

          GPIOC->CRH&=0XFFF000FF;//
          GPIOC->CRH|=0X00033300;//PC10-12 推挽輸出            
   GPIOC->ODR|=7<<2;      //PC10-12 輸出高

   OE_4094_1=0;          //反邏輯
}

void TransByteTo4094_ElecExpValve1(u8 dat16_09,u8 dat08_01) //2HEF4094鎖存16位數據   并行輸出,dat16_098位, dat08_018位。
{
  u8 j;
  u8 i,tt;
  CLK_4094_1=1;
  ST_4094_1 =1;
  tt=dat16_09;          //先送高8
  for(i=0;i<8;i++)
  {
    j= tt &(0x01);
         if(j==1)
          { DIN_4094_1=0;}
         else
          { DIN_4094_1=1;}

  CLK_4094_1=1;                        //CLK引腳的上升沿把數據送入寄存器
  delay_us(10);
  CLK_4094_1=0;        
  delay_us(10);         

   tt=tt>>1;
  }

  tt= dat08_01;          //再送低8
  for(i=0;i<8;i++)
  {
    j= tt &(0x01);
         if(j==1)
          { DIN_4094_1=0;}
         else
          { DIN_4094_1=1;}

  CLK_4094_1=1;                        //CLK引腳的上升沿把數據送入寄存器
  delay_us(10);
  CLK_4094_1=0;        
  delay_us(10);         

  tt=tt>>1;
  }

  ST_4094_1 =1;         //ST引腳把兩個寄存器的數據更新輸出到HEF4094的輸出引腳上并且鎖存起來
  delay_us(10);
  ST_4094_1 =0;
  delay_us(10);

  CLK_4094_1=1;   //CLK拉低,抗干擾就增強
  ST_4094_1 =1;
  DIN_4094_1=1;
}


回復

使用道具 舉報

ID:335593 發表于 2018-12-14 11:25 | 顯示全部樓層
CLK_4094_1=0;                        //CLK引腳的上升沿把數據送入寄存器,先低后高才能形成上升沿
  delay_us(10);
  CLK_4094_1=1;        
  delay_us(10);   
回復

使用道具 舉報

ID:335593 發表于 2018-12-14 11:26 | 顯示全部樓層
CLK_4094_1=0;                        //CLK引腳的上升沿(先低后高)把數據送入寄存器
  delay_us(10);
  CLK_4094_1=1;        
  delay_us(10);   
回復

使用道具 舉報

ID:111634 發表于 2018-12-15 18:50 | 顯示全部樓層
本帖最后由 zl2168 于 2018-12-15 20:33 編輯

實例43  CC4094串入并出控制8/16循環燈
Proteus仿真一下,確認有效。
實例43 CC4094串行輸出控制8-16循環燈.rar (67.45 KB, 下載次數: 85)
4094-2.jpg
以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表