正计时秒表显示学号的程序

正计时秒表显示学号的程序,第1张

1,需建立一个1毫秒的中断定时器如timer0()。

2,需建立一个全局变量毫秒变量,在中断里面累计计数,1毫秒加1一次。

3,需建立三个全局变量秒变量,分变量,时变量。

4,需做显示模块的处理。·

秒表开始工作时,毫秒变量在中断里面一直累计,在主循环里面做毫秒变量判断是否大于999 。如果大于999,秒变量加1,毫秒变量清零;如果秒变量大于59,分变量加1,秒变量清零;如果分变量大于59时,时变量加1,分变量清零。如果时变量大于23,时变量清零。秒表停止时,毫秒、秒、时、分变量不在累计。同时将这些变量送到数码管上显示。

#include<reg51h>

#define uchar unsigned char

#define uint unsigned int

uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9

uchar scanled;

uchar disdat[4];

uint ss,time;

sbit led=P1^0;

void dischg()

{

disdat[3]=ss%10;

disdat[2]=(ss/10)%10;

disdat[1]=(ss/100)%10;

disdat[0]=(ss/1000)%10;

}

void t0isr() interrupt 1 

{

ss++;

dischg();

}

void t1isr() interrupt 3 //显示

{

TH1=(65536-5000)/256;

TL1=(65536-5000)%256;

P2=1<<scanled;

P0=~ledtab[disdat[scanled]];

scanled++;

scanled%=4;

time++;

if(time>100){time=0;led=~led;}

}

main()

{

TMOD=0x16;

TH0=0xff;

TL0=0xff;

TH1=(65536-5000)/256;

TL1=(65536-5000)%256;

TR1=1;

TR0=1;

ET0=1;

ET1=1;

EA=1;

led=0;

scanled=0;

ss=0;

dischg();

while(1);

}

#include <reg51h>

#define uchar unsigend uchar

#define uint unsigned int

unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};//数码管段码

void main()

{

uint k;

TMOD=0X50;//设置模式为1,计数模式

TH1=0X00;

TL1=0X00;//初始值设定

IE=0X00;//关全局中断

TR1=1;//开定时计数器1运行

while(1)

{

if(TL1==16)//进行判断,为16时,计数值归零

TL1=0X00;

k=TL1;

P0=LED7Code[k];//数码管进行显示

}

}

程序目的见>

以上就是关于正计时秒表显示学号的程序全部的内容,包括:正计时秒表显示学号的程序、基于51单片机的简易计数器设计c程序、用C语言如何开51单片机的计数器,最好编个实例程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9683523.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存