0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ch422芯片驅(qū)動

Harmony&嵌入式學(xué)習(xí) ? 來源:Harmony&嵌入式學(xué)習(xí) ? 作者:Harmony&嵌入式學(xué) ? 2023-07-17 09:25 ? 次閱讀

CH422 芯片可以用于數(shù)碼管顯示驅(qū)動或者 I/O 擴(kuò)展。CH422 內(nèi)置時鐘振蕩電路,可以動態(tài)驅(qū)動 4 位數(shù)碼管或者 32 只 LED 發(fā)光管;CH422 用于 I/O 擴(kuò)展時,可以提供 8 個雙向輸入輸出引腳和 4 個通 用輸出引腳;CH422 通過 2 線串行接口單片機(jī)等交換數(shù)據(jù)。

wKgZomSzuiKAO47CAAIMph-zuqs517.png

C文件

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


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


/*******************************************************************************
* Function Name  : mInitSTDIO
* Description    : 串口初始化函數(shù),用于程序調(diào)試
* 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;                                                             // 發(fā)送起始條件的數(shù)據(jù)信號 
    CH422_SCL_SET;
    DELAY_0_1US;                                                               //根據(jù)單片機(jī)可選延時
    CH422_SDA_CLR;                                                             //發(fā)送起始信號
    DELAY_0_1US;      
    CH422_SCL_CLR;                                                             //鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) 
}


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


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

/*******************************************************************************
* 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();                                                           //發(fā)送啟動信號
	CH422_I2c_WrByte((unsigned char)(CH422_GET_KEY>>8));                         //發(fā)送取鍵值命令碼
	dat = CH422_I2c_RdByte();                                                    //接收鍵值
	CH422_I2c_Stop();                                                            //發(fā)送結(jié)束信號	
	
	return dat;
}

H文件

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


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


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


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


/******************************************************************************/
/* 2線接口的位操作,與單片機(jī)有關(guān) */
#define		CH422_SCL_SET		{CH422_SCL=1;}
#define		CH422_SCL_CLR		{CH422_SCL=0;}
#define		CH422_SCL_D_OUT	{}				                                           // 設(shè)置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	{}				                                           // 設(shè)置SDA為輸出方向,對于雙向I/O需切換為輸出
#define		CH422_SDA_D_IN	{CH422_SDA=1;}	                                     // 設(shè)置SDA為輸入方向,對于雙向I/O需切換為輸入
/******************************************************************************/

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

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

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

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

驅(qū)動程序

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


/******************************************************************************/
/*數(shù)碼管顯示的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    : 延時函數(shù)
* 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功能演示,包括驅(qū)動數(shù)碼管,睡眠等
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void main()
{
	
	mDelaymS(60);																																 //CH422上電復(fù)位時間
	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);                                                                    //讀取鍵值
}



審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 振蕩電路
    +關(guān)注

    關(guān)注

    17

    文章

    501

    瀏覽量

    98678
  • 時鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1714

    瀏覽量

    131274
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1873

    瀏覽量

    90865
  • 芯片驅(qū)動
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    14124
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

    CH451中文資料手冊pdf(數(shù)碼管驅(qū)動及鍵盤控制芯片)

    數(shù)碼管驅(qū)動及鍵盤控制芯片CH451中文手冊(第三版)CH451 是一個整合了數(shù)碼管顯示驅(qū)動和鍵盤掃描控制以及μP 監(jiān)控的多功能外圍
    發(fā)表于 07-20 21:48 ?918次下載

    CH35芯片PCI驅(qū)動下載

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

    數(shù)碼管驅(qū)動及鍵盤控制芯片--CH452

    數(shù)碼管驅(qū)動及鍵盤控制芯片CH452:CH452是數(shù)碼管顯示驅(qū)動和鍵盤掃描控制芯片
    發(fā)表于 01-07 12:23 ?61次下載

    新型的鍵盤顯示驅(qū)動芯片CH451的性能特點(diǎn)和工作原理

    介紹一種新型的鍵盤顯示驅(qū)動芯片CH451的性能特點(diǎn)和工作原理,給出了CH451鍵盤顯示驅(qū)動芯片
    發(fā)表于 09-11 16:47 ?67次下載

    CH340驅(qū)動

    USB轉(zhuǎn)串口芯片CH340的驅(qū)動,使用環(huán)境:windows
    發(fā)表于 12-10 17:23 ?70次下載

    USB芯片CH340CH341發(fā)卡器的驅(qū)動程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是USB芯片CH340CH341發(fā)卡器的驅(qū)動程序免費(fèi)下載win7版本
    發(fā)表于 06-14 08:00 ?62次下載

    沁恒股份數(shù)碼管顯示驅(qū)動及I/O 擴(kuò)展芯片:CH422概述

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

    USB總線轉(zhuǎn)接芯片CH341的驅(qū)動免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是USB總線轉(zhuǎn)接芯片CH341的驅(qū)動免費(fèi)下載。
    發(fā)表于 12-12 16:52 ?24次下載
    USB總線轉(zhuǎn)接<b class='flag-5'>芯片</b><b class='flag-5'>CH</b>341的<b class='flag-5'>驅(qū)動</b>免費(fèi)下載

    CH422數(shù)碼管顯示驅(qū)動及IO擴(kuò)展芯片的數(shù)據(jù)手冊

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

    LCD顯示驅(qū)動芯片CH463技術(shù)手冊

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

    LCD顯示驅(qū)動芯片CH462技術(shù)手冊

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

    數(shù)碼管顯示驅(qū)動及I/O擴(kuò)展芯片CH422手冊

    電子發(fā)燒友網(wǎng)站提供《數(shù)碼管顯示驅(qū)動及I/O擴(kuò)展芯片CH422手冊.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 09:44 ?2次下載
    數(shù)碼管顯示<b class='flag-5'>驅(qū)動</b>及I/O擴(kuò)展<b class='flag-5'>芯片</b><b class='flag-5'>CH422</b>手冊