LCD段码屏HT1621使用

.h文件


#ifndef _HT1621_H
#define _HT1621_H

#define BIAS   0x52     //1/3duty 4com 

#define SYSDIS 0X00     //关振系统荡器和LCD偏压发生器 
#define SYSEN  0X02     //打开系统振荡器 

#define LCDOFF 0X04     //关LCD偏压 
#define LCDON  0X06     //打开LCD偏压 

#define XTAL   0x28     //外部接时钟 
#define RC256  0X30     //内部时钟 

#define WDTDIS  0X0A    //禁止看门狗  

#define SET_HT1621_CS   GPIO_Write_High(GPIOA0,4)
#define CLR_HT1621_CS   GPIO_Write_Low(GPIOA0,4)

#define SET_HT1621_WR   GPIO_Write_High(GPIOA0,3)
#define CLR_HT1621_WR   GPIO_Write_Low(GPIOA0,3)

#define SET_HT1621_DAT  GPIO_Write_High(GPIOA0,1)
#define CLR_HT1621_DAT  GPIO_Write_Low(GPIOA0,1)

void Ht1621Wr_Data(unsigned char Data,unsigned char cnt);
void Ht1621WrCmd(unsigned char Cmd);
void Ht1621WrOneData(unsigned char Addr,unsigned char Data);
void Ht1621WrAllData(unsigned char Addr,unsigned char *p,unsigned char cnt);
void Ht1621_Init(void); 

#endif

.c文件

 

#include "apt32f102.h"
#include "apt32f102_gpio.h"
#include "HT1621.h"
#include "SC_delay.h"

/****************************************************** 
写数据函数,cnt为传送数据位数,数据传送为低位在前 
*******************************************************/ 
void Ht1621Wr_Data(unsigned char Data,unsigned char cnt) 
{ 
	unsigned char  i; 
	for (i=0;i<cnt;i++) 
	{   
		CLR_HT1621_WR; 
		SCDelay_us();
		 if(Data&0x80)
			SET_HT1621_DAT;
		else
			CLR_HT1621_DAT;	
		SCDelay_us(); 
		SET_HT1621_WR; 
		SCDelay_us();
		Data<<=1;  
	} 
} 


/******************************************************** 
函数名称:void Ht1621WrCmd(uchar Cmd) 
功能描述: HT1621命令写入函数 
全局变量:无 
参数说明:Cmd为写入命令数据 
返回说明:无 
设 计 人:ZHCE 
版    本:1.0 
说    明:写入命令标识位100 
********************************************************/ 
void Ht1621WrCmd(unsigned char Cmd) 
{ 
	CLR_HT1621_CS; 
	SCDelay_us();
	Ht1621Wr_Data(0x80,4); //写入命令标志100 
	Ht1621Wr_Data(Cmd,8);  //写入命令数据 
	SET_HT1621_CS; 
	SCDelay_us();
} 


/******************************************************** 
函数名称:void Ht1621WrOneData(uchar Addr,uchar Data) 
功能描述: HT1621在指定地址写入数据函数 
全局变量:无 
参数说明:Addr为写入初始地址,Data为写入数据 
返回说明:无 
设 计 人:ZHCE 
版    本:1.0 
说    明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位 
********************************************************/ 
void Ht1621WrOneData(unsigned char Addr,unsigned char Data) 
{ 
	CLR_HT1621_CS; 
	Ht1621Wr_Data(0xa0,3); //写入数据标志101 
	Ht1621Wr_Data(Addr<<2,6); //写入地址数据 
	Ht1621Wr_Data(Data<<4,4); //写入数据 
	SET_HT1621_CS;   
	SCDelay_us();
} 

/******************************************************** 
函数名称:void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt) 
功能描述: HT1621连续写入方式函数 
全局变量:无 
参数说明:Addr为写入初始地址,*p为连续写入数据指针, 
cnt为写入数据总数 
返回说明:无 
设 计 人:ZHCE 
版    本:1.0 
说    明:HT1621的数据位4位,此处每次数据为8位,写入数据 
总数按8位计算 
********************************************************/ 
void Ht1621WrAllData(unsigned char Addr,unsigned char *p,unsigned char cnt) 
{ 
	unsigned char i; 
	
	CLR_HT1621_CS; 
	Ht1621Wr_Data(0xa0,3); //写入数据标志101 
	Ht1621Wr_Data(Addr<<2,6); //写入地址数据 
	for (i=0;i<cnt;i++) 
	{ 
		Ht1621Wr_Data(*p,8); //写入数据 
		p++; 
	} 
	SET_HT1621_CS;   
	SCDelay_us();
} 



/******************************************************** 
函数名称:void Ht1621_Init(void) 
功能描述: HT1621初始化 
全局变量:无 
参数说明:无 
返回说明:无 
设 计 人:ZHCE 
版    本:1.0 
说    明:初始化后,液晶屏所有字段均显示 
********************************************************/ 
void Ht1621_Init(void) 
{ 
	SET_HT1621_CS; 
	SET_HT1621_WR; 
	SET_HT1621_DAT; 	
	SCDelay_ms(10);
	Ht1621WrCmd(BIAS);    //1/3占空比 4com 
	Ht1621WrCmd(RC256);   //使用内部振荡器 
	Ht1621WrCmd(SYSDIS);  //关振系统荡器和LCD偏压发生器 
	Ht1621WrCmd(WDTDIS);  //禁止看门狗 
	Ht1621WrCmd(SYSEN);   //打开系统振荡器 
	Ht1621WrCmd(LCDON);   //打开LCD偏压
} 







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值