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

📄 ch451ls0811.h

📁 使用凌阳61单片机和1302时间芯片完成时钟功能并使用CH451LS芯片显示(程序中只在0号LED上显示秒)。是使用时
💻 H
字号:
#ifndef	__CH451LS0811_h__
#define	__CH451LS0811_h__
//	write your header here
#define CH451LS_CMD_LENGTH 12//指令字长度
#define DGT_NUM 10
#define LED_NUM 4	
#ifndef _DELAY
#define _DELAY
int delay_i;
#define D 0x7fff
#define DELAY for(delay_i=0;delay_i<D;delay_i++) *P_Watchdog_Clear=1;
#endif
int MASK12[]={0x0001,0x0002,0x0004,0x0008,
			0x0010,0x0020,0x0040,0x0080,
			0x0100,0x0200,0x0400,0x0800};			  
int DIGIT[]={0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f};


void wrt_to_CH451LS(int cmd){//将指令cmd的低12位通过IOB口的低8位串行写入CH451LS
	int data;
	int i=0;
	data=0;
	*P_IOB_Data=data;
	for(i=0;i<CH451LS_CMD_LENGTH;i++){
		data=0x0002;//保证LOAD始终为高电平
		*P_IOB_Data=data;
		if(cmd&MASK12[i])
			data|=0x0004;//输入有用数据
		data|=0x0008;//置DCLK为高电平
		*P_IOB_Data=data;
	}
	data=0x0000;//主要是置LOAD为低电平,其他位无所谓
	*P_IOB_Data=data;
	data=0x0002;//主要是置LOAD为高电平,其他位无所谓
	*P_IOB_Data=data;
	data=0x0000;//主要是置LOAD为低电平,其他位无所谓
	*P_IOB_Data=data;
}

void init_CH451LS(){
	int p;
	p=0x0201;//系统复位
	wrt_to_CH451LS(p);
	p=0x0401;//仅使能显示驱动
	wrt_to_CH451LS(p);
	p=0x0540;//非BCD、4个显示管、占空比16/16
	wrt_to_CH451LS(p);
	//p=0x0601;//使第0个显示管闪烁
	//wrt_to_CH451LS(p);	
}

void init_61_with_A_out(){//A口初始化为输出口
	int p=0xffff;
	*P_IOB_Dir=p;
	*P_IOB_Attrib=p;
}

void wrt_digit(int d,int num){//向CH451LS的d位写入数字num,(d从0开始编号)
	int cmd=0x0008;
	if(d>=0&&d<LED_NUM&&num>=0&&num<DGT_NUM){
		cmd|=d;
		cmd<<=8;
		cmd|=DIGIT[num];
		wrt_to_CH451LS(cmd);
	}
}
#endif

⌨️ 快捷键说明

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