|

楼主 |
发表于 2020-9-21 11:29:57
|
显示全部楼层
为了没有M币的伙伴,贴出一些代码
#include "ht1623.h"
#include "delay.h"
/////////////////////////////////////////////////////
//HT1623端口初始化
void Lcd_GPIO_init(void)
{
HT1623DDR|= CS_SET|WR_SET|DA_SET;//端口方向设置为输出
HT1623Port|= CS_SET|WR_SET|DA_SET;//端口初始化高电平
}
/*****************************************************************************
写地址函数
*****************************************************************************/
void SendBit_1623(u8 byte,u8 cnt) //add 的高cnt 位写入HT1623,高位在前
{
u8 i;
for(i=0;i<cnt;i++)
{
if(byte&0x80) HT1623_DATA=1;
else HT1623_DATA=0;
HT1623_WR=0;
delay_us(2); //速度快的单片机必须加延时
HT1623_WR=1;
byte<<=1;
}
}
/*****************************************************************************
函数名称:void Ht1623WrCmd(u8 command)
功能描述: HT1623命令写入函数
参数说明:command为写入命令数据
说 明:写入命令标识位100
****************************************************************************/
void Ht1623WrCmd(u8 command)
{
HT1623_CS=0;
SendBit_1623(0x80,4); //写入标志码“100”和9 位command 命令,由于
SendBit_1623(command,8); //没有使有到更改时钟输出等命令,为了编程方便
HT1623_CS=1; //直接将command 的最高位写“0”
}
/*****************************************************************************
函数名称:void Ht1623WrData(u8 addr,u8 sdata)
功能描述: HT1623在指定地址写入数据函数
参数说明:addr为写入初始地址,sdata为写入数据
说 明:因为HT1623的数据位4位,所以实际写入数据为参数的后4位
调用方法: Ht1623WrData(9,0x10);
****************************************************************************/
void Ht1623WrData(u8 addr,u8 sdata)
{
HT1623_CS=0;
SendBit_1623(0xa0,3); //写入标志码“101”
SendBit_1623(addr<<1,7); //写入addr 的高6位
SendBit_1623(sdata<<4,4); //写入data 的4位
HT1623_CS=1;
}
/*****************************************************************************
Name: all_off(清除1623显示)
****************************************************************************/
void HT1623_all_off(void)
{
u8 addr;
for(addr=0;addr<96;addr++)
Ht1623WrData(addr,0x00);
}
/****************************************************************************
Name: all_on(全部点亮1623)
****************************************************************************/
void HT1623_all_on(void)
{
u8 addr;
for(addr=0;addr<96;addr++)
Ht1623WrData(addr,0xff);
}
/****************************************************************************
Name: Init_1623(初始化1623)
*****************************************************************************/
void Lcd1623_Init(void)
{
Lcd_GPIO_init(); //管脚初始化
delay_ms(100);
Ht1623WrCmd(BIAS); //0x50 //4COM,1/3bias 0x50 对比度比0x52大
Ht1623WrCmd(RC256); //0X30 //使用内部振荡器
Ht1623WrCmd(SYSDIS);//0X00 //关振系统荡器和LCD偏压发生器
Ht1623WrCmd(WDTDIS);//0X0A //禁止看门狗
Ht1623WrCmd(SYSEN); //0x02 //系统振荡器开
Ht1623WrCmd(LCDON); //0x06 //打开LCD 偏压发生器
}
|
|