|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2013-3-25 11:40:19
|
显示全部楼层
经过测试, 自己写的程序没有问题,是段码表不对!
按照选LCD以及TM1722连接,对应的段码表:
const unsigned char _7seg_font[][4]={
{0x88,0x08,0x88,0x08}, //0
{0x80,0x00,0x80,0x00}, //1
{0x88,0x80,0x08,0x08}, //2
{0x88,0x80,0x80,0x08}, //3
{0x80,0x88,0x08,0x00}, //4
{0x08,0x88,0x80,0x08}, //5
{0x08,0x88,0x88,0x08}, //6
{0x88,0x00,0x80,0x00}, //7
{0x88,0x88,0x88,0x08}, //8
{0x88,0x88,0x80,0x08}, //9
{0x00,0x00,0x00,0x00}, //空
};
修改下列的函数即可
void TM1722_Write_Word(unsigned char addr,unsigned char nIndex,unsigned char dat)
{
unsigned char Temp;
TM1722_Write_Byte(0x40); //采用地址自动加1(40H)
TM1722_STB=1;
TM1722_Write_Byte(0xc0+addr);//显示寄存器的00H单元开始
Temp=_7seg_font[nIndex][dat];
TM1722_Write_Byte(Temp); //给显示寄存器送数据,
Delayms(CS_DELAY); //用于片选信号的延时
TM1722_STB=1;
}
显示"9"如下
TM1722_Write_Word(2,9,0); //显示 “9”
Delayms(10);
TM1722_Write_Word(3,9,1);
Delayms(10);
TM1722_Write_Word(6,9,2);
Delayms(10);
TM1722_Write_Word(7,9,3);
Delayms(10); |
|