SEG

静态的过于简单,直接开动态扫描的。

SEG_第1张图片

//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程序只需要申请修改缓冲区即可,具体见 运筹帷幄 方法论 部分

你可能感兴趣的:(蓝桥杯单片机,蓝桥单片机)