本帖最后由 huandaczq 于 2018-6-30 14:11 编辑
网上买了个段码液晶屏,后面黑胶显示是ht1621,链接口有1vss+ 2vcc+ 3dat+4wr+5cs+6bla+7blk;分别连接着地、+5v,rb7和rc34. 通电后,背光白色,没有任何段码被点亮。pcb上除了以上7个连接口连着单片机的io或者电源地,其他都没有动,只有几个贴片电阻和一个0.1uf。所以下面命令里加了一个rc振荡器。
也不知道哪里出了问题,有没有大神帮忙看一下,万分万分感谢。
下面是代码
//ht1621 第一次
#define BIAS 0x24
#define SYSEN 0x01
#define LCDOFF 0x02
#define LCDON 0x03
#define uc unsigned char
#define cs LATBbits.LATB7
#define wr LATCbits.LATC3
#define data LATCbits.LATC4
void send_low_bit_ht1621(uc data_sent, uc n_bit)
{
uc i;
for (i=0, i<n_bit, i++)
{
if (data_sent&0x01==1)
{
data=1;
}
else
{
data=0;
}
wr=0;
nop();
wr=1;
data_sent>>1;
}
}
void send_high_bit_ht1621(uc data_sent, uc n_bit)
{
uc i;
for (i=0, i<n_bit, i++)
{
if (data_sent&0x80==1)
{
data=1;
}
else
{
data=0;
}
wr=0;
nop();
wr=1;
data_sent<<1;
}
}
void write_cmd_ht1621(uc cmd)
{
cs=0;
send_high_bit_ht1621(0x80,3); //100==>1000@3
send_high_bit_ht1621(cmd,9);
cs=1;
}
void write_low_bit_ht1621(uc address, uc data_sent)
{
uc i;
cs=0;
write_cmd_ht1621(0xa0,3); //101==>1010@3
send_high_bit_ht1621(address<<2,6); //a5,a4,a3,a2,a1,a1;
sent_low_bit_ht1621(data_sent,4); //d0,d1,d2,d3
cs=1;
}
/****************************************/
void main()
{
write_cmd_ht1621(0x18);// 系统时钟源,片内rc振荡器
write_cmd_ht1621(BIAS);
write_cmd_ht1621(SYSEN);
write_cmd_ht1621(LCDON);
write_low_bit_ht1621(0x09,0x01);
}
|