⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch452w4.c

📁 ch452的应用和方法,能过要它来做显示,这样不要用164芯片来,使得电路简单可靠.
💻 C
字号:
/****************************
 Website:  http://wch.cn
 Email:    tech@wch.cn
 Author:   W.ch 2005.4
 CH452 的4 线接口
****************************
 CH45X 的4 线接口,不含按键中断为3 个I/O 引脚,含按键中断为4 个I/O,兼容SPI 时序
 四线制方式也可以参照CH451,其中对CH451的选择4线串行接口初始化子函数可以省去。
****************************************************************************/
#include <reg52.h>
#include <intrins.h>
#include <pin.h>  // 修改该文件以适应硬件环境/单片机型号等

 //输出命令子程序
 //定义一无符号整型变量存储12字节的命令字。
void CH452_Write(unsigned int cmd)
{
	unsigned char i;
#ifdef USE_KEY
	DISABLE_INTERRUPT;		  //禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输
#endif	
	CH452_LOAD_CLR;                                  //命令开始,LOAD=0
	for(i=0;i!=12;i++)				//送入12位数据,低位在前
	{
		if (cmd&1) {CH452_DIN_SET;}
		else {CH452_DIN_CLR;}  // 输出位数据
//		CH452_DIN=cmd&1;
    	CH452_DCLK_CLR;
    	cmd>>=1;
    	CH452_DCLK_SET;                               //上升沿有效
	}
  	CH452_LOAD_SET;                                 //加载数据,LOAD上升沿
	DELAY_1US;				//命令数据加载周期不小于6US
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
	DELAY_1US;
#ifdef USE_KEY
  	ENABLE_INTERRUPT;
#endif
}

//*************************************************
//输入命令子程序,MCU从CH452读一字节
unsigned char CH452_Read()
{
	unsigned char i;
  	unsigned char cmd,keycode;		//定义命令字,和数据存储器
#ifdef USE_KEY
  	DISABLE_INTERRUPT;			               //禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输	
#endif
  	cmd=0x07;			               //输入读451命令字
  	CH452_LOAD_CLR;
  	for(i=0;i!=4;i++)
	{
		if (cmd&1) {CH452_DIN_SET;}
		else {CH452_DIN_CLR;}  // 输出位数据
//		CH452_DIN=cmd&1;		      //送入最低位
    	CH452_DCLK_CLR;			 
    	cmd>>=1;			      //往右移一位
    	CH452_DCLK_SET;			      //产生时钟上升沿锁通知CH451输入位数据
 	}
  	CH452_LOAD_SET;				      //产生加载上升沿通知CH451处理命令数据
  	keycode=0;				      //清除keycode
  	for(i=0;i!=7;i++)
	{
		keycode<<=1;			      //数据移入keycode,高位在前,低位在后
    	keycode|=CH452_DOUT;		      //从高到低读入451的数据
    	CH452_DCLK_CLR;			      //产生时钟下升沿通知CH451输出下一位
    	CH452_DCLK_SET;
 	}
  	CLEAR_INTER_FLAG;			      //清中断标志
#ifdef USE_KEY
  	ENABLE_INTERRUPT;
#endif
  	return(keycode);			     //反回键值
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -