四位数码管动态显示c语言程序

  • 格式:doc
  • 大小:32.00 KB
  • 文档页数:3

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//这是一个四位数码管动态显示c语言程序,每隔一秒加一,直至加到9999为止//使用时需采用锁存器

#include

#include"stdio.h"

unsigned char code LED[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; unsigned char LEDbuff[]={0xff,0xff,0xff,0xff};

//定义数码管的位选段

sbit SEG_bit_1 = P0^1;

sbit SEG_bit_2 = P0^2;

sbit SEG_bit_3 = P0^3;

sbit SEG_bit_4 = P0^4;

unsigned int cnt=0;

unsigned int sec =0;

unsigned int mini=0;

unsigned int hour=0;

unsigned char i=0;

/*void delay(unsigned int z )

{

unsigned int x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

*/

void interrupttimer0() interrupt 1 /*设置中断函数*/

{

TH0=0xfc;

TL0=0x18;

cnt++;

//P1=0x80;

//delay(1);

switch(i)

{

case 0: SEG_bit_1 = 0;SEG_bit_4 = 1;P1=LEDbuff[0];i++;break;

case 1: SEG_bit_4 = 0;SEG_bit_3 = 1;P1=LEDbuff[1];i++;break;

case 2: SEG_bit_3 = 0;SEG_bit_2 = 1;P1=LEDbuff[2]&;i++;break;

case 3: SEG_bit_2 = 0;SEG_bit_1 = 1;P1=LEDbuff[3];i=0;break;

default:break;

}

}

/************************************************

void serial_init()

{

//TMOD = 0x20; //定时器T/C1工作方式2

SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)TH1 = 0xF3; //定时器初值高8位设置

TL1 = 0xF3; //定时器初值低8位设置

PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)

TR1 = 1; //定时器启动

}

**********************************************/

void main()

{

//serial_init(); //串口初始化

//TMOD=0x21; /*设置定时器*/

TMOD=0x01;

TH0=0xfc;

TL0=0x18;

TR0=1;

EA=1; /*设置中断*/

ET0=1;

while(1)

{

if(0==TF0)

{

if(cnt>=1000)

{

cnt=0;

sec++;

if (sec>=60) {

sec=0;mini++;

if (mini>=60) {

mini=0;hour++;

if (hour>=24) hour=0;

}

}

LEDbuff[0]=LED[sec%10]; //*设置数码管显示位*/

LEDbuff[1]=LED[sec/10%10];

LEDbuff[2]=LED[mini%10];

LEDbuff[3]=LED[mini/10%10];

// TI=1; //使用printf函数前须先将发送标志位TI置1

// printf("%4d %x ,%x %x\n ",sec,LEDbuff[0],LEDbuff[1],LEDbuff[2]);

// TI=0;

}

}

}

}