專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51單片機(jī)秒表C語言程序

作者:余春雨老師   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2014年04月26日   【字體:

此程序的電路圖下載:點(diǎn)這里  注意:只需要看數(shù)碼管部分即可,其他部分可忽略掉. 程序是用c語言編寫的,采用的單片機(jī)型號是stc89c52

#include <reg52.h>

  typedef unsigned char uchar8;
  typedef unsigned int uint16;
  typedef unsigned long ulong32;
  sbit ENLED = P1^4;
  sbit ADDR0 = P1^0;
  sbit ADDR1 = P1^1;
  sbit ADDR2 = P1^2;
  sbit ADDR3 = P1^3;
  uchar8 led_char[] = {
  0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90
  };
  uchar8 zifu_led[] = {
  0xff,0xff,0xff,
0xff,0xff,0xff
  };
  void main()
  {
  uchar8 cnt = 0;
uchar8 key = 0;
ulong32 sec = 0;
ADDR3 = 1; 
ENLED = 0;
TMOD = 0x01;
TH0 = 0xB7;
TL0 = 0x00;
TR0 = 1;
  while(1)
  {
 if(1 == TF0)
 {
TF0 = 0;
TH0 = 0xB7;
TL0 = 0x00;
cnt++;
if(100 = cnt)
{
cnt = 0;
sec++;
zifu_led[0] = sec%10;
zifu_led[1] = sec/10%10;
zifu_led[2] = sec/100%10;
zifu_led[3] = sec/1000%10;
zifu_led[4] = sec/10000%10;
zifu_led[5] = sec/100000%10;
}
 }
 switch(key)
 case 0:P0 = 0xff;ADDR2 = 0; ADDR1 = 0; ADDR0 = 0;P0 = led_char[zifu_led[0]];key++;break;
 case 1:P0 = 0xff;ADDR2 = 0; ADDR1 = 0; ADDR0 = 1;P0 = led_char[zifu_led[1]];key++;break;   
 case 2:P0 = 0xff;ADDR2 = 0; ADDR1 = 1; ADDR0 = 0;P0 = led_char[zifu_led[2]];key++;break;
 case 3:P0 = 0xff;ADDR2 = 0; ADDR1 = 1; ADDR0 = 1;P0 = led_char[zifu_led[3]];key++;break;
 case 4:P0 = 0xff;ADDR2 = 1; ADDR1 = 0; ADDR0 = 0;P0 = led_char[zifu_led[4]];key++;break;
 case 5:P0 = 0xff;ADDR2 = 1; ADDR1 = 0; ADDR0 = 1;P0 = led_char[zifu_led[5]];key = 0;break;
 default:break;
}
 
 
  }
關(guān)閉窗口

相關(guān)文章