<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ch422芯片驅動

Harmony&嵌入式學習 ? 來源:Harmony&嵌入式學習 ? 作者:Harmony&嵌入式學 ? 2023-07-17 09:25 ? 次閱讀

CH422 芯片可以用于數碼管顯示驅動或者 I/O 擴展。CH422 內置時鐘振蕩電路,可以動態驅動 4 位數碼管或者 32 只 LED 發光管;CH422 用于 I/O 擴展時,可以提供 8 個雙向輸入輸出引腳和 4 個通 用輸出引腳;CH422 通過 2 線串行接口單片機等交換數據。

wKgZomSzuiKAO47CAAIMph-zuqs517.png

C文件

/********************************** (C) COPYRIGHT *******************************
* File Name          : 422IF.C
* Author             : WCH
* Version            : V1.0
* Date               : 2014/03/18
* Description        : CH422 DEMO接口函數定義
*******************************************************************************/


/******************************************************************************/
/* 頭文件包含 */
#include 
#include 
/******************************************************************************/


/*******************************************************************************
* Function Name  : mInitSTDIO
* Description    : 串口初始化函數,用于程序調試
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void	mInitSTDIO( )
{
	SCON = 0x50;
	PCON = 0x80;
	TMOD = 0x20;
	TH1 = 0xf3;                                                                  //24MHz晶振, 9600bps
	TR1 = 1;
	TI = 1;
}


/*******************************************************************************
* Function Name  : CH422_I2c_Start
* Description    : 兩線模式啟動信號
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void CH422_I2c_Start( void )                                            
{
    CH422_SDA_SET;                                                             // 發送起始條件的數據信號 
    CH422_SCL_SET;
    DELAY_0_1US;                                                               //根據單片機可選延時
    CH422_SDA_CLR;                                                             //發送起始信號
    DELAY_0_1US;      
    CH422_SCL_CLR;                                                             //鉗住I2C總線,準備發送或接收數據 
}


/*******************************************************************************
* Function Name  : CH422_I2c_Stop
* Description    : 兩線模式停止信號
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void CH422_I2c_Stop( void )    
{
    CH422_SDA_CLR;
    DELAY_0_1US;                                                               //根據單片機型號延時可選
    CH422_SCL_SET;
    DELAY_0_1US;
    CH422_SDA_SET;                                                             // 發送I2C總線結束信號
}


/*******************************************************************************
* Function Name  : CH422_I2c_WrByte
* Description    : 向CH422寫入一個字節
* Input          : unsigned char dat
* Output         : None
* Return         : None
*******************************************************************************/
void CH422_I2c_WrByte( unsigned char dat )                                     // 寫一個字節數據
{
    unsigned char i;
    for( i = 0; i != 8; i++ )                                                  // MCU輸出8位數據
    {
        if( dat&0x80 )
        { 
            CH422_SDA_SET;
        }
        else
        {
            CH422_SDA_CLR;
        }
        DELAY_0_1US;
        CH422_SCL_SET;
        dat >8));                                   //先發高字節
	CH422_I2c_WrByte((unsigned char)cmd);
	CH422_I2c_Stop();                                                            //發送結束信號
}

/*******************************************************************************
* Function Name  : CH422_I2c_Read
* Description    : 從CH422讀取鍵值
* Input          : None
* Output         : None
* Return         : unsigned char dat
*******************************************************************************/
unsigned char CH422_I2c_Read(void)
{
	unsigned char dat;
	
	CH422_I2c_Start();                                                           //發送啟動信號
	CH422_I2c_WrByte((unsigned char)(CH422_GET_KEY>>8));                         //發送取鍵值命令碼
	dat = CH422_I2c_RdByte();                                                    //接收鍵值
	CH422_I2c_Stop();                                                            //發送結束信號	
	
	return dat;
}

H文件

/********************************** (C) COPYRIGHT *******************************
* File Name          : 422CMD.H
* Author             : WCH
* Version            : V1.0
* Date               : 2014/03/18
* Description        : CH422 DEMO控制命令和接口函數聲明
*******************************************************************************/


/******************************************************************************/
/* 頭文件包含 */
#include 
#include 
#pragma NOAREGS	// 如果MCS51在中斷服務程序中調用CH422子程序或者使用鍵盤中斷功能,那么建議加入此編譯選項
/******************************************************************************/


/******************************************************************************/
/* 延時0.1uS子程序,與單片機速度有關,對于雙向I/O可以不需要延時,對于帶上拉的準雙向I/O建議加上延時 */
#define		DELAY_0_1US		{_nop_();}		                                         // MCS51>10MHz
/******************************************************************************/


/******************************************************************************/
/* 2線接口的連接,與實際電路有關 */
sbit	CH422_SCL=P1^0;
sbit	CH422_SDA=P1^1;
sbit	CH422_INT=P3^2;                                                          // 中斷輸出引腳
/******************************************************************************/


/******************************************************************************/
/* 2線接口的位操作,與單片機有關 */
#define		CH422_SCL_SET		{CH422_SCL=1;}
#define		CH422_SCL_CLR		{CH422_SCL=0;}
#define		CH422_SCL_D_OUT	{}				                                           // 設置SCL為輸出方向,對于雙向I/O需切換為輸出
#define		CH422_SDA_SET		{CH422_SDA=1;}
#define		CH422_SDA_CLR		{CH422_SDA=0;}
#define		CH422_SDA_IN		(CH422_SDA)
#define		CH422_SDA_D_OUT	{}				                                           // 設置SDA為輸出方向,對于雙向I/O需切換為輸出
#define		CH422_SDA_D_IN	{CH422_SDA=1;}	                                     // 設置SDA為輸入方向,對于雙向I/O需切換為輸入
/******************************************************************************/

/******************************************************************************/
/* CH422的常用命令碼*/
#define CH422_SYSON        0x4800                                              //設置系統參數
#define CH422_IO_OE_BIT    0x0001                                              //IO7-IO0雙向輸入輸出引腳,位1允許輸出
#define CH422_A_SCAN_BIT   0x0004                                              //控制動態掃描控制功能,為0啟用IO擴展功能、為1數碼管動態顯示
#define CH422_OD_EN_BIT    0x0010                                              //OC0-OC3輸出使能,為0推挽輸出,為1是開漏輸出
#define CH422_SLEEP_BIT    0x0080                                              //低功耗睡眠控制位
#define CH422_WR_OC        0x4600                                              //設置通用輸出命令,需另加8位數據

#define CH422_GET_KEY	     0x4f00					                                     // 獲取按鍵,返回按鍵代碼
//加載段數據命令/設置雙向輸入輸出命令
#define CH422_DIG0        0x7000					                                     // 數碼管位0顯示,需另加8位數據
#define CH422_DIG1        0x7200		                                           // 數碼管位1顯示,需另加8位數據
#define CH422_DIG2        0x7400		                                           // 數碼管位2顯示,需另加8位數據
#define CH422_DIG3        0x7600	                               	             // 數碼管位3顯示,需另加8位數據
//讀取雙向輸入輸出命令
#define CH422_RD_IO       0x4d00                                               //輸入字節2為雙向輸入輸出引腳IO7-IO0當前的引腳狀態

/******************************************************************************/

/******************************************************************************/
//接口函數聲明
extern	unsigned char CH422_I2c_Read(void);				                             // 從CH422讀取按鍵代碼
extern  void CH422_I2c_Write(unsigned short cmd);	                             // 向CH422發出操作命令
extern  void	mInitSTDIO( );                                                   //串口初始化函數
/******************************************************************************/

驅動程序

/******************************************************************************/
/* 頭文件包含 */
#include 
#include "422CMD.H"
/******************************************************************************/


/******************************************************************************/
/*數碼管顯示的BCD譯碼表*/
const unsigned char BCD_decode_tab[0x10] = { 0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F, 0X77, 0X7C, 0X58, 0X5E, 0X79, 0X71 };
/******************************************************************************/


/*******************************************************************************
* Function Name  : mDelaymS
* Description    : 延時函數
* Input          : unsigned char ms
* Output         : None
* Return         : None
*******************************************************************************/
void	mDelaymS( unsigned char ms )                                             // 延時毫秒 
{
	unsigned short i;
	while ( ms -- )
	{
		for(i=0;i!=1000;i++);
	}
}


/*******************************************************************************
* Function Name  : mian
* Description    : CH422功能演示,包括驅動數碼管,睡眠等
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void main()
{
	
	mDelaymS(60);																																 //CH422上電復位時間
	mInitSTDIO();                                                                //初始化串口

	CH422_I2c_Write(CH422_SYSON | CH422_A_SCAN_BIT | CH422_IO_OE_BIT | CH422_OD_EN_BIT);//開顯示

  CH422_I2c_Write(CH422_DIG0 | BCD_decode_tab[0]);
  CH422_I2c_Write(CH422_DIG1 | BCD_decode_tab[1]);
  CH422_I2c_Write(CH422_DIG2 | BCD_decode_tab[2]);
  CH422_I2c_Write(CH422_DIG3 | BCD_decode_tab[3]);
	
	while(1);                                                                    //讀取鍵值
}



審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 振蕩電路
    +關注

    關注

    17

    文章

    468

    瀏覽量

    98262
  • 時鐘
    +關注

    關注

    10

    文章

    1490

    瀏覽量

    130449
  • 數碼管
    +關注

    關注

    31

    文章

    1837

    瀏覽量

    90139
  • 芯片驅動
    +關注

    關注

    0

    文章

    12

    瀏覽量

    14089
收藏 人收藏

    評論

    相關推薦

    CH422做拓展IO時IO7~IO0是否可部分配置為Input、部分配置為OUPUT?

    如題,如果需要使用CH422做拓展的IO口,其中我們知道IO7~IO0可以作為輸入INPUT口或者輸出OUPUT口,但是目前查看規格書和推薦的代碼,都是初始化IO7~IO0為全部輸入口或者全部輸出
    發表于 10-11 08:27

    RTC芯片可以跟CH422共用一個I2C嗎?

    我看到規格書CH422是沒有地址的,我現在有一個有地址的RTC芯片,可以跟CH422共用一個I2C嗎?
    發表于 10-12 07:04

    CH422 SDA和SCL可以直接連接單片機3.3V IO嗎?

    我的單片機是3.3V ,CH422如果用5V供電,那么SDA 和SCL可以直接連接單片機3.3V IO嗎?需要注意什么嗎,謝謝
    發表于 10-12 07:20

    CH35芯片PCI驅動下載

    CH35芯片PCI驅動下載:CHINESE:PCISETUP.exe是PCI卡的驅動安裝工具,您可以用這個工具來安裝卡的驅動.相關文件說明-
    發表于 12-09 21:13 ?178次下載

    數碼管驅動及鍵盤控制芯片--CH452

    數碼管驅動及鍵盤控制芯片CH452:CH452是數碼管顯示驅動和鍵盤掃描控制芯片。
    發表于 01-07 12:23 ?60次下載

    CH340驅動

    USB轉串口芯片CH340的驅動,使用環境:windows
    發表于 12-10 17:23 ?69次下載

    USB芯片CH340CH341發卡器的驅動程序免費下載

    本文檔的主要內容詳細介紹的是USB芯片CH340CH341發卡器的驅動程序免費下載win7版本
    發表于 06-14 08:00 ?62次下載

    沁恒股份數碼管顯示驅動及I/O 擴展芯片:CH422概述

     CH422 芯片可以用于數碼管顯示驅動或者I/O 擴展。CH422 內置時鐘振蕩電路,可以動態驅動4位數碼管或者32 只LED 發光管;
    的頭像 發表于 11-11 16:23 ?3782次閱讀
    沁恒股份數碼管顯示<b class='flag-5'>驅動</b>及I/O 擴展<b class='flag-5'>芯片</b>:<b class='flag-5'>CH422</b>概述

    USB總線轉接芯片CH341的驅動免費下載

    本文檔的主要內容詳細介紹的是USB總線轉接芯片CH341的驅動免費下載。
    發表于 12-12 16:52 ?24次下載
    USB總線轉接<b class='flag-5'>芯片</b><b class='flag-5'>CH</b>341的<b class='flag-5'>驅動</b>免費下載

    CH422數碼管顯示驅動及IO擴展芯片的數據手冊

    CH422 芯片可以用于數碼管顯示驅動或者 I/O 擴展。CH422 內置時鐘振蕩電路,可以動態驅動 4 位數碼管或者 32 只 LED 發
    發表于 12-29 08:00 ?3次下載
    <b class='flag-5'>CH422</b>數碼管顯示<b class='flag-5'>驅動</b>及IO擴展<b class='flag-5'>芯片</b>的數據手冊

    LCD顯示驅動芯片CH463技術手冊

    電子發燒友網站提供《LCD顯示驅動芯片CH463技術手冊.pdf》資料免費下載
    發表于 09-09 11:26 ?0次下載
    LCD顯示<b class='flag-5'>驅動</b><b class='flag-5'>芯片</b><b class='flag-5'>CH</b>463技術手冊

    LCD顯示驅動芯片CH462技術手冊

    電子發燒友網站提供《LCD顯示驅動芯片CH462技術手冊.pdf》資料免費下載
    發表于 09-09 10:45 ?2次下載
    LCD顯示<b class='flag-5'>驅動</b><b class='flag-5'>芯片</b><b class='flag-5'>CH</b>462技術手冊

    數碼管驅動及鍵盤控制芯片CH451手冊

    電子發燒友網站提供《數碼管驅動及鍵盤控制芯片CH451手冊.pdf》資料免費下載
    發表于 09-09 10:07 ?0次下載
    數碼管<b class='flag-5'>驅動</b>及鍵盤控制<b class='flag-5'>芯片</b><b class='flag-5'>CH</b>451手冊

    數碼管顯示驅動及I/O擴展芯片CH422手冊

    電子發燒友網站提供《數碼管顯示驅動及I/O擴展芯片CH422手冊.pdf》資料免費下載
    發表于 09-09 09:44 ?2次下載
    數碼管顯示<b class='flag-5'>驅動</b>及I/O擴展<b class='flag-5'>芯片</b><b class='flag-5'>CH422</b>手冊

    兩線遠程I/O擴展芯片CH423驅動程序

    CH423 是兩線串行接口的通用遠程I/O 擴展芯片。CH423 提供8 個雙向輸入輸出引腳和16 個通用輸出引腳,支持輸入電平變化中斷;CH423 內置電流
    發表于 05-04 09:17 ?4次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>