- 打卡等级:以坛为家I
- 打卡总天数:240
- 最近打卡:2026-03-06 09:09:49
已绑定手机
高级会员
- 积分
- 722
|
笨办法的显示函数如下:
LCD_load(1,0);//显示标号为5的8
LoadToLcd();
delay_ms(1000);
LCD_load(2,0);//显示标号为5的8
LoadToLcd();
delay_ms(1000);
LCD_load(4,0);//显示标号为4个8
LoadToLcd();
delay_ms(1000);
LCD_load(5,0);//显示标号为5的8
LoadToLcd();
delay_ms(1000);
LCD_load(6,0);//显示标号为5的8
LoadToLcd();
delay_ms(1000);
LCD_load(7,0);//显示标号为5的8
LoadToLcd();
delay_ms(1000);
switch( n )
{
case 1:
case 2:
LCD_buff[0] &= ~(1<<seg_pos[n-1]);//清除bit0
LCD_buff[5] &= ~(7<<seg_pos[n-1]);//清除bit0,bit1,bit2
LCD_buff[10] &= ~(7<<seg_pos[n-1]);//清除bit0,bit1,bit2
LCD_buff[15] &= ~(7<<seg_pos[n-1]);//清除bit0,bit1,bit2
if(dat & 0x01) LCD_buff[15] |= (2<<seg_pos[n-1]); //T_SEG_ABC[n]; //A A在bit1上
if(dat & 0x02) LCD_buff[15] |= (4<<seg_pos[n-1]); //T_SEG_ABC[n]; //B B在bit2上
if(dat & 0x04) LCD_buff[10] |= (4<<seg_pos[n-1]); //T_SEG_ABC[n]; //C c在bit2上
if(dat & 0x08) LCD_buff[5] |= (2<<seg_pos[n-1]); //T_SEG_DEFG[n]; //D D在bit1上
if(dat & 0x10) LCD_buff[5] |= (1<<seg_pos[n-1]); //T_SEG_DEFG[n]; //E E在bit0上
if(dat & 0x20) LCD_buff[10] |= (1<<seg_pos[n-1]); //T_SEG_DEFG[n]; //F F在bit0上
if(dat & 0x40) LCD_buff[10] |= (2<<seg_pos[n-1]); //T_SEG_DEFG[n]; //G G在bit1上
break;
case 3:
LCD_buff[0] &= ~0xc0;//// 清除bit7,bit6
LCD_buff[5] &= ~0xc0;// 清除bit7,bit6
LCD_buff[10] &= ~0xc0;// 清除bit7,bit6
LCD_buff[15] &= ~0xc0;// 清除bit7,bit6
LCD_buff[1] &= ~(1<<0);// 固定操作bit0,bit0 清除
LCD_buff[6] &= ~(1<<0);// 固定操作bit0,bit0 清除
LCD_buff[11] &= ~(1<<0);// 固定操作bit0,bit0 清除
LCD_buff[16] &= ~(1<<0);// 固定操作bit0,bit0 清除
if(dat & 0x01) LCD_buff[15] |= 0xc0; //T_SEG_ABC[n]; //操作标号S14 1100 0000
if(dat & 0x02) LCD_buff[16] |= 0x01; //T_SEG_ABC[n]; //操作标号S1 0000 0001
if(dat & 0x04) LCD_buff[6] |= 0x01; //T_SEG_ABC[n]; //操作标号S3 0000 0001
if(dat & 0x08) LCD_buff[0] |= 0xc0; //T_SEG_DEFG[n]; //操作标号S17 1100 0000
if(dat & 0x10) LCD_buff[5] |= 0xc0; //T_SEG_DEFG[n]; //操作标号S16 1100 0000
if(dat & 0x20) LCD_buff[10] |= 0xc0; //T_SEG_DEFG[n]; //操作标号S15 1100 0000
if(dat & 0x40) LCD_buff[11] |= 0x01; //T_SEG_DEFG[n]; //操作标号S2 0000 0001
break;
case 4:
case 5:
LCD_buff[1] &= ~0x0e;;// 固定操作bit0,bit1,bit2,bit3 清除
LCD_buff[6] &= ~0x0e;// 固定操作bit0,bit0 清除
LCD_buff[11] &= ~0x0e;// 固定操作bit0,bit0 清除
LCD_buff[16] &= ~0x0e;// 固定操作bit0,bit0 清除
if(dat & 0x01) LCD_buff[16] |= (2<<seg_pos[n-1]); //T_SEG_ABC[n]; //操作标号A
if(dat & 0x02) LCD_buff[16] |= (1<<seg_pos[n-1]); //T_SEG_ABC[n]; //操作标号B
if(dat & 0x04) LCD_buff[11] |= (1<<seg_pos[n-1]); //T_SEG_ABC[n]; //操作标号C
if(dat & 0x08) LCD_buff[6] |= (2<<seg_pos[n-1]); //T_SEG_DEFG[n]; //操作标号D
if(dat & 0x10) LCD_buff[6] |= (4<<seg_pos[n-1]); //T_SEG_DEFG[n]; //操作标号E
if(dat & 0x20) LCD_buff[11] |= (4<<seg_pos[n-1]); //T_SEG_DEFG[n]; //操作标号F
if(dat & 0x40) LCD_buff[11] |= (1<<seg_pos[n-1]); //T_SEG_DEFG[n]; //操作标号G
break;
case 6:
LCD_buff[1] &= ~(1<<7);//固定操作bit7,bit7 清除
LCD_buff[6] &= ~(1<<7);//固定操作bit7,bit7
LCD_buff[11] &= ~(1<<7);//固定操作bit7,bit7
LCD_buff[16] &= ~(1<<7);//固定操作bit7,bit7
LCD_buff[2] &= ~(3<<seg_pos[n-1]);//固定操作bit0,bit1 清除
LCD_buff[7] &= ~(3<<seg_pos[n-1]);//固定操作bit0,bit1 清除
LCD_buff[12] &= ~(3<<seg_pos[n-1]);//固定操作bit0,bit1 清除
LCD_buff[17] &= ~(1<<seg_pos[n-1]);//固定操作bit0,bit1 清除
if(dat & 0x01) LCD_buff[17] |= (1<<0); //T_SEG_ABC[n]; //A
if(dat & 0x02) LCD_buff[16] |= (1<<7) ; //T_SEG_ABC[n]; //B
if(dat & 0x04) LCD_buff[11] |= (1<<7) ; //T_SEG_ABC[n]; //C
if(dat & 0x08) LCD_buff[7] |= (1<<0); //T_SEG_DEFG[n]; //D
if(dat & 0x10) LCD_buff[7] |= (1<<1); //T_SEG_DEFG[n]; //E
if(dat & 0x20) LCD_buff[12] |= (1<<1); //T_SEG_DEFG[n]; //F
if(dat & 0x40) LCD_buff[12] |= (1<<0); //T_SEG_DEFG[n]; //G
break;
case 7:
LCD_buff[2] &= ~(7<<seg_pos[n-1]);//固定操作bit0,bit1 清除
LCD_buff[4] &= ~(7<<seg_pos[n-1]);//固定操作bit0,bit1 清除
LCD_buff[12] &= ~(7<<seg_pos[n-1]);//固定操作bit0,bit1 清除
LCD_buff[17] &= ~(7<<seg_pos[n-1]);//固定操作bit0,bit1 清除
if(dat & 0x01) LCD_buff[17] |= (2<<seg_pos[n-1]); //T_SEG_ABC[n]; //A
if(dat & 0x02) LCD_buff[17] |= (1<<seg_pos[n-1]); //T_SEG_ABC[n]; //B
if(dat & 0x04) LCD_buff[12] |= (1<<seg_pos[n-1]); //T_SEG_ABC[n]; //C
if(dat & 0x08) LCD_buff[7] |= (2<<seg_pos[n-1]); //T_SEG_DEFG[n]; //D
if(dat & 0x10) LCD_buff[7] |= (4<<seg_pos[n-1]); //T_SEG_DEFG[n]; //E
if(dat & 0x20) LCD_buff[12] |= (4<<seg_pos[n-1]); //T_SEG_DEFG[n]; //F
if(dat & 0x40) LCD_buff[12] |= (2<<seg_pos[n-1]); //T_SEG_DEFG[n]; //G
break;
default:
break;
}
}
u8 code seg_pos[]={0,3,6,1,4,0,2};
|
|