专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

51单片机秒表C语言程序

作者:余春雨老师   来源:本站原创   点击数:  更新时间:2014年04月26日   【字体:

此程序的电路图下载:点这里  注意:只需要看数码管部分即可,其他部分可忽略掉. 程序是用c语言编写的,采用的单片机型号是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;
}
 
 
  }
关闭窗口

相关文章