天天看點

stm32秒表計時器程式_單片機入門:數位管秒表

采用8位數位管進行秒表設計。仿真原理圖:

stm32秒表計時器程式_單片機入門:數位管秒表

程式設計:

/*數位管秒表設計*/#includeunsigned char LedBuff[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};unsigned char code LedChar[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共陽/*unsigned char code LedChar[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共陰*/void delay_ms(unsigned int ms)                       {      unsigned int a,b;   for(a=ms;a>0;a--)  for(b=123;b>0;b--);}void main(){  unsigned char cnt=0;  unsigned long sec=0;  unsigned char i=0;    TMOD=0X01;  TH0=0XB8;  TL0=0X00;  TR0=1;    while(1)  {    if(TF0==1)    {      TF0=0;      TH0=0XB8;      TL0=0X00;//計時器溢出一次0.002秒      cnt++;      if(cnt>=50)//溢出100次為1秒      {        cnt=0;        sec++;        LedBuff[0]= LedChar[sec%10];        LedBuff[1]= LedChar[sec/10%10];        LedBuff[2]= LedChar[sec/100%10];        LedBuff[3]= LedChar[sec/1000%10];        LedBuff[4]= LedChar[sec/10000%10];        LedBuff[5]= LedChar[sec/100000%10];      }    }    for(i=0;i<6;i++)    {      P0=0xff;            switch(i)   //位選,選擇點亮的數位管,      {        case(0):          P1=0x20; break;//顯示第0位        case(1):          P1=0x10; break;//顯示第1位        case(2):          P1=0x08; break;//顯示第2位        case(3):            P1=0x04; break;//顯示第3位        case(4):          P1=0x02; break;//顯示第4位        case(5):          P1=0x01; break;//顯示第5位        default: break;      }      P0=LedBuff[i];//發送段碼      delay_ms(1); //間隔一段時間掃描        P0=0xFF;    } }}
           

為驗證仿真設計,仿真視訊如下:

溫馨提示:需要仿真資料請背景私信!

繼續閱讀