关于段码液晶的扫描程序部分,求解答
时间:10-02
整理:3721RD
点击:
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]这几个数组并能分别控制各个段码的,有点想不明白
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]这几个数组并能分别控制各个段码的,有点想不明白
LCD_buff应该是有初始化的,每次从LCD_buff[j]取值赋予P1口,LCD_buff[j|4]取值赋予P2口(低四位清0)