?? cd4094_cd4021.c
字號:
/****************************************************************************
* 文 件 名:cd4084_cd4021.c
* 版 本: V1.0
* 功 能:cd4084_cd4021集成電路驅動集
* 連 接:
* 說 明: 有需要就調用
* 作者:黃振升
* 日期:2006/05/31
*---------------歷史版本信息-------------------------------------------------
* 修 改 人: 黃振升
* 版 本: V1.0
* 日 期: 2006/05/31
* 描 述:
****************************************************************************/
/***********************************************************************
包含文件
***********************************************************************/
#include "config.h"
/***********************************************************************
CD4094
***********************************************************************/
/***********************************************************************
* 名 稱:CD4094_Init()
* 功 能:初始化CD4094的各個接口
* 入口參數:無
* 出口參數: 無
* 說 明:4094的output enable 接高電平
***********************************************************************/
void CD4094_Init(void)
{
PINSEL0 = PINSEL0 & ~(0x3f<<14); //設P1.16到P1.18為GPIO
IO0DIR = IO0DIR |( 7<<7); //定義為輸出
}
/***********************************************************************
* 名 稱:CD4094_Write(uint8 *value, uint16 bit)
* 功 能:將一字節數據寫入4094
* 入口參數:8位數據
* 出口參數: 無
* 說 明:寫過程采用模擬總線方式,注意這里輸入的數組是儲存位的,也就是數組中只允許0與1兩個值,這是本
* 次設計方便的需要
* CD4094_STROBE -- P1.16
* CD4094_CLK -- P1.17
* CD4094_DATA -- P1.18
***********************************************************************/
void CD4094_WriteChar(uint8 value)
{
uint8 i,j;
//cd4094_Init();
CD4094_STROBE_EN(); //使能寫如數據
for( i=0; i<8; i++)
{
CD4094_CLK_CL() ; //時鐘下降沿
j= value&0x01;
value = value>>1;
CD4094_DATA_Write(j); //寫如相應數據
//DelayNS(1);
CD4094_CLK_EN() ; //時鐘下降沿
//DelayNS(1);
}
CD4094_STROBE_CL(); //使能數據鎖存
}
/***********************************************************************
CD4021
***********************************************************************/
/***********************************************************************
* 名 稱:CD4021_Init()
* 功 能:初始化CD4094的各個接口
* 入口參數:無
* 出口參數: 無
* 說 明:4094的output enable 接高電平
***********************************************************************/
void CD4021_Init(void)
{
PINSEL2 = PINSEL2 & ~(1<<3); //設P1.26到P1.16為GPIO
IO1DIR = IO1DIR |( 3<<CD4021_PE); //輸出,輸入定義管腳
IO1DIR = IO1DIR &(~(1<<CD4021_DATA));
CD4094_PE_EN(); //串并控制置成并行輸入
}
/***********************************************************************
* 名 稱:CD4021_Read(uint8 *sbuf,uint16 bit)
* 功 能:將數據寫入4094
* 入口參數:一個儲存數據的緩沖區,需要讀取多少個數據
* 出口參數: 無
* 說 明:讀過程采用模擬總線方式,注意這里輸出的數組是儲存位的,也就是數組中只允許0與1兩個值,這是本
* 次設計方便的需要
* CD4021_PSC -- P1.19
* CD4021_CLK -- P1.20
* CD4021_DATA(Q8) -- P1.21
***********************************************************************/
void CD4021_Read(uint8 *sbuf, uint16 bit)
{
uint8 i,j;
CD4021_Init();
CD4094_PE_EN(); //串并控制置成并行輸入
DelayNS(100);
CD4021_CLK_CL() ; //時鐘下降沿
DelayNS(1);
CD4021_CLK_EN() ; //時鐘上升沿
DelayNS(1);
CD4094_PE_CL(); //串并控制置成串行輸出
for( i=0; i<bit; i++)
{
j = (uint8)CD4021_DATA_Read();
CD4021_CLK_CL() ; //時鐘下降沿
DelayNS(1);
*(sbuf+i) = j; //讀入相應數據
CD4021_CLK_EN() ; //時鐘上升沿
DelayNS(1);
}
CD4094_PE_EN(); //串并控制置成并行輸入
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -