标题:
单片机3位秒表设计
[打印本页]
作者:
hao826260775
时间:
2017-6-7 10:49
标题:
单片机3位秒表设计
#include <reg51.h>
#include <intrins.h>
unsigned char ledcode []={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//数码管码
unsigned int sec,ms10;
unsigned int mode=0;
unsigned char i;
unsigned char tab[4];
unsigned char wei[4]={0xfe,0xfd,0xfb,0xf7,};
sbit dula=P2^6;
sbit weila=P2^7;
sbit P23=P2^3;//
sbit P37=P3^7;//按键
void delay(unsigned int z)//延时
{
unsigned int a,b;
for(a=z;a>0;a--)
for(b=120;b>0;b--);
}
void TIM0_INT(void) interrupt 1//定时器0中断 10MS
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ms10=ms10+1;
if(ms10>100)//1s
{
sec=sec+1;
ms10=0;
if((sec%10)==0)// 每10MS
{
P23=0;
delay(50);
P23=1;
}
}
}
void keyscan()
{
if(P37==0)
{
delay(10);
if(P37==0)
{
if(mode==0)
{
TR0=1;//启动
}
if(mode==1)
{
TR1=0;//停止
}
if(mode==2)//清零
{
sec=0;
ms10=0;
}
mode++;
if(mode>=3)//第4次按回0
mode=0;
while(P37==0);
}
}
}
void zhuanhuan()//先转换好对应的段码
{
tab[0]=ledcode[sec/10%10];
tab[1]=ledcode[sec%10]|0X80;
tab[2]=ledcode[ms10/10%10];
tab[3]=ledcode[ms10%10];
}
void showseg()
{
for(i=0;i<4;i++)//4位数码管动态显示程序
{
P0=tab[i];
dula=1;
dula=0;
P0=wei[i];
weila=1;
weila=0;
delay(5);
}
}
void main()// 主程序
{
TMOD=0x01;//工作模式设置
TH0=(65536-10000)/256;//10MS定时
TL0=(65536-10000)%256;
ET0=1;
EA=1;
while(1) //循环
{
keyscan();//按键检测
zhuanhuan();//转换好对应的段码
showseg();//扫描数码管
}
}
3位秒表_3.zip
2017-6-7 10:49 上传
点击文件名下载附件
下载积分: 黑币 -5
88.93 KB, 下载次数: 13, 下载积分: 黑币 -5
作者:
hao826260775
时间:
2017-6-7 11:06
过审了吗
作者:
1261237621
时间:
2017-12-13 11:20
楼主 你的PCB图呢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1