u8 LCD_buff[8];
u8 scan_index;
/****************** LCD段码扫描函数 ***************************/
u8 code T_COM[4]={0x08,0x04,0x02,0x01};
void LCD_scan(void) //5us @22.1184MHZ
{
u8 j;
j = scan_index >> 1;
P2n_pure_input(0x0f); //全部COM输出高阻, COM为中点电压
if(scan_index & 1) //反相扫描
{
P1 = ~LCD_buff[j]; //
P2 = ~(LCD_buff[j|4] & 0xf0);
}
else //正相扫描
{
P1 = LCD_buff[j];
P2 = LCD_buff[j|4] & 0xf0;
}
P2n_push_pull(T_COM[j]); //某个COM设置为推挽输出
if(++scan_index >= 8) scan_index = 0;
}
/*
MCU PIN P17 P16 P15 P14 P13 P12 P11 P10 P27 P26 P25 P24 P23 P22 P21 P20
LCD PIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-- 1D 2: 2D 2. 3D 4: 4D 4. 5D 5. 6D COM3
1E 1C 2E 2C 3E 3C 4E 4C 5E 5C 6E 6C COM2
1G 1B 2G 2B 3G 3B 4G 4B 5G 5B 6G 6B COM1
1F 1A 2F 2A 3F 3A 4F 4A 5F 5A 6F 6A COM0
B7 B6 B5 B4 B3 B2 B1 B0
buff[0]: -- 1D 2: 2D 2. 3D 4: 4D
buff[1]: 1E 1C 2E 2C 3E 3C 4E 4C
buff[2]: 1G 1B 2G 2B 3G 3B 4G 4B
buff[3]: 1F 1A 2F 2A 3F 3A 4F 4A
buff[4]: 4. 5D 5. 6D -- -- -- --
buff[5]: 5E 5C 6E 6C -- -- -- --
buff[6]: 5G 5B 6G 6B -- -- -- --
buff[7]: 5F 5A 6F 6A -- -- -- --
*/
以上是段码液晶的段码扫描函数部分,我想问的是LCD_buff这个数组如何在扫描后变成buff[0~7]这几个数组并能分别控制各个段码的,有点想不明白
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这一句更不明白,scan_index这个变量初值是什么?
一周热门 更多>