靜態的過於簡單,直接開動態掃描的。
//SEG.h//
u8 SEG_code[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xBF}; //共陽管碼錶(10 = -)
u8 SEG_buff[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //緩衝區
//SEG.c//
void SEG_Scan() //定時器中斷調用(建議1ms)
{
static u8 index = 0;
P2 = (P2 & 0X1F) | 0XE0; //消隱
P0 = 0xFF;
P2 = P2 & 0X1F;
P2 = (P2 & 0X1F) | 0XC0; //位選
P0 = 0x80 >> index;
P2 = P2 & 0X1F;
P2 = (P2 & 0X1F) | 0XE0; //段選
P0 = SEG_buff[index];
P2 = P2 & 0X1F;
index++;
index &= 0x07;
}
- 比賽是提供碼錶的,不需要背會。
- DP程序只需要申請修改緩衝區即可,具體見 運籌帷幄 方法論 部分