清翔51单片机毫秒表计时器数码管显示
时间: 2023-08-29 14:04:30 浏览: 295
好的,我可以为您提供一份清翔51单片机毫秒表计时器数码管显示的代码示例:
```
#include<reg52.h> //包含头文件
#define uchar unsigned char //宏定义
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //数码管显示0~9及空位
uchar count=0; //计数器
void delay() //延时函数
{
uchar i,j;
for(i=1;i<4;i++)
for(j=0;j<125;j++);
}
void display() //数码管显示函数
{
uchar a,b,c; //分离千位、百位、十位、个位
a=count/1000;
b=count%1000/100;
c=count%100/10;
P2=0xfe; //选择千位数码管
P0=table[a];
delay();
P2=0xfd; //选择百位数码管
P0=table[b];
delay();
P2=0xfb; //选择十位数码管
P0=table[c];
delay();
P2=0xf7; //选择个位数码管
P0=table[count%10];
delay();
}
void main() //主函数
{
TMOD=0x01; //定时器0工作方式1
TH0=(65536-50000)/256; //定时器0初值(50ms)
TL0=(65536-50000)%256;
EA=1; //总中断允许
ET0=1; //定时器0中断允许
TR0=1; //定时器0开始计时
while(1)
{
display(); //数码管显示
}
}
void timer0() interrupt 1 //定时器0中断函数
{
TH0=(65536-50000)/256; //重新赋初值(50ms)
TL0=(65536-50000)%256;
count++; //计数加1
if(count>=10000) //计满1秒
{
count=0; //计数器清零
}
}
```
这段代码可以实现清翔51单片机毫秒表计时器数码管显示的功能,其中使用了定时器0来进行计时,每经过50ms计数器加1,当计满1秒时计数器清零,同时使用了数码管来显示计时结果。如果您需要进行更多的功能扩展,可以根据自己的需求进行修改。
阅读全文