1.试题所需要协调的外设有:
PCF8591、数码管、矩阵键盘、led、电位计RB2、AT24C02;
2.难点和待解决的问题:
(1)矩阵 按键的长按检测和单次按键检测(较难);
(2)IIC总线通信协议的理解及应用;(难点,但是官方给了驱动,建议自己理解,我写在了另一篇博文里);
(3)主函数里循环利用PCF8591循环读取电位计RB2,如何保证每次读取的RB2电位计的电压值是正确的(待解决);
(4)解决led灯均匀流动;
一、先上程序的led函数:
#define uchar unsigned char
uchar code Led_Table[4][8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
0x81, 0x42, 0x24, 0x18, 0x81, 0x42, 0x24, 0x18,
0x18, 0x24, 0x42, 0x81, 0x18, 0x24, 0x42, 0x81};
uchar Led_Time[4] = {4, 4, 4, 4};
uchar uMod;
uchar uLed;
void Led_Dis(uchar uLed)
{
P0 = ~uLed;
HC_led; //打开led的锁存器;
HC_void; //关闭led的锁存器;
}
void Le