2024-08-16 10:09:24 +08:00

197 lines
4.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include"tm1650.h"
#include"config.h"
unsigned char code tab[]=
// 0 1 2 3 4 5 6 7 8 9
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
0x00,/*10 No display*/
0x40,/*11 - c*/
0x58,/*12 temp c*/
0x79,/*13 E*/
0x50,/*14 r*/
0x74,/*15 h*/
0xff,/*16 all display*/
0x5e,/*17 d*/
0x80,/*18 .*/
0x71,/*19 F*/
0x39,/*20[*/
0x0f,/*21]*/
0x46,/*22 -|*/
0x70,/*23 |-*/
0x21,/*24 <20>ϼ<EFBFBD>ͷ*/
0x0c,/*25 <20>¼<EFBFBD>ͷ*/
0x3e,/*26 U*/
0x37,/*27 N*/
0x3e,/*28 U*/
0x14,/*29 <20><>˫<EFBFBD><CBAB> ||*/
0x54,/*30 n*/
0x48,/*31 =*/
0x04,/*32 i*/
0x49,/*33 <20><>*/
0x08,/*34 һ*/
0x7c,/*35 b*/
0x38,/*36 L*/
0x76,/*37 H*/
0x78,/*38 t*/
0x73,/*39 P*/
0x77,/*40 A*/
};
void SMG1_INIT()
{
Write_DATA_SMG_1(0x48,0x11);
}
void TM1650_stop_SMG_1(void)
{
SMG_1_SCL=1;
SMG_1_SDA=0;
delayUs(1);
SMG_1_SDA=1;
delayUs(1);
}
void TM1650_start_SMG_1(void)
{
SMG_1_SCL=1;
SMG_1_SDA=1;
delayUs(1);
SMG_1_SDA=0;
delayUs(1);
}
void TM1650_ACK_SMG_1(void)
{
unsigned char timeout=0;
SMG_1_SCL=1;
// pinMode(SMG_1_SDA,INPUT); //set SMG_1_SDA input
delayUs(1);
SMG_1_SCL=0;
delayUs(1);
do timeout++;
while((SMG_1_SDA==1)&&(timeout<255));
SMG_1_SCL=0;
//pinMode(SMG_1_SDA,OUTPUT);
delayUs(1);
}
void TM1650_Write_SMG_1(unsigned char DATA)
{
unsigned char i;
delayUs(1);
SMG_1_SCL=0;
for(i=0;i<8;i++)
{
if(DATA&0X80)
SMG_1_SDA=1;
else
SMG_1_SDA=0;
DATA<<=1;
SMG_1_SCL=0;
delayUs(1);
SMG_1_SCL=1;
delayUs(1);
SMG_1_SCL=0;
delayUs(1);
}
}
void Write_DATA_SMG_1(unsigned char add,unsigned char DATA)
{
TM1650_start_SMG_1();
TM1650_Write_SMG_1(add);
TM1650_ACK_SMG_1();
TM1650_Write_SMG_1(DATA);
TM1650_ACK_SMG_1();
TM1650_stop_SMG_1();
}
void SMG1x4(unsigned char a,unsigned char b,unsigned char c,unsigned char d)
{
SMG1_INIT();
Write_DATA_SMG_1(0x68+0,tab[a]);
Write_DATA_SMG_1(0x68+2,tab[b]);
Write_DATA_SMG_1(0x68+4,tab[c]);
Write_DATA_SMG_1(0x68+6,tab[d]);
}
void SMG1x4_B(unsigned char a,unsigned char b,unsigned char c,unsigned char d,unsigned char e)
{
SMG1_INIT();
Write_DATA_SMG_1(0x68+0,e==1?tab[a]|0x80:tab[a]);
Write_DATA_SMG_1(0x68+2,e==2?tab[b]|0x80:tab[b]);
Write_DATA_SMG_1(0x68+4,e==3?tab[c]|0x80:tab[c]);
Write_DATA_SMG_1(0x68+6,e==4?tab[d]|0x80:tab[d]);
}
#if 0
void SMG1(unsigned int a)
{
SMG1_INIT();
Write_DATA_SMG_1(0x68+0,tab[a%10000/1000]);
Write_DATA_SMG_1(0x68+2,tab[a%1000/100]);
Write_DATA_SMG_1(0x68+4,tab[a%100/10]);
Write_DATA_SMG_1(0x68+6,tab[a%10]);
}
void SMG1_BL(unsigned char b)
{
// Write_DATA_SMG_1(0x48,0x01|b<<4);
switch(b)
{
case 0:Write_DATA_SMG_1(0x48,0x00);break;
case 1:Write_DATA_SMG_1(0x48,0x11);break;
case 2:Write_DATA_SMG_1(0x48,0x21);break;
case 3:Write_DATA_SMG_1(0x48,0x31);break;
case 4:Write_DATA_SMG_1(0x48,0x41);break;
case 5:Write_DATA_SMG_1(0x48,0x51);break;
case 6:Write_DATA_SMG_1(0x48,0x61);break;
case 7:Write_DATA_SMG_1(0x48,0x71);break;
case 8:Write_DATA_SMG_1(0x48,0x01);break;
}
}
void SMG1_dp(unsigned long datax)
{
unsigned long smgData;
unsigned char dp_x;
if(datax<=999)
{
smgData=datax;
dp_x=0;
}
else if(datax>999&&datax<=9999)
{
smgData=datax;
dp_x=1;
}
else if(datax>9999&&datax<=99999)
{
smgData=datax/10;
dp_x=2;
}
else if(datax>99999&&datax<=999999)
{
smgData=datax/100;
dp_x=3;
}
else if(datax>999999&&datax<=9999999)
{
smgData=datax/1000;
dp_x=4;
}
else if(datax>9999999)
{
smgData=0;
dp_x=5;
}
if(dp_x<5)
{
Write_DATA_SMG_1(0x68+0,dp_x==1?tab[smgData%10000/1000]|0x80:tab[smgData%10000/1000]);
Write_DATA_SMG_1(0x68+2,dp_x==2?tab[smgData%1000/100]|0x80:tab[smgData%1000/100]);
Write_DATA_SMG_1(0x68+4,dp_x==3?tab[smgData%100/10]|0x80:tab[smgData%100/10]);
Write_DATA_SMG_1(0x68+6,dp_x==4?tab[smgData%10]|0x80:tab[smgData%10]);
}
else
{
Write_DATA_SMG_1(0x68+0,tab[13]);
Write_DATA_SMG_1(0x68+2,tab[14]);
Write_DATA_SMG_1(0x68+4,tab[14]);
Write_DATA_SMG_1(0x68+6,tab[10]);
}
}
#endif