*******************************/
/* 智能秒表(完美版) */
/*******************************/
#include
#define uint unsigned int
#define uchar unsigned char
sbit key1=P2^0; //定义"启动/暂停"按钮
sbit key2=P2^1; //定义"复位"按钮
sbit key3=P2^2; //定义"模式"按钮
sbit key4=P2^3; //定义"查看"按钮
sbit wei1=P2^4; //定义位选
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
bit flag_start,flag_mode,flag_5sec;
uchar temp,temp1,aa,aa1,shi,ge,shifen,baifen,num,i,j;
uchar time_data1[11],time_data2[11];
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //不带小数点共阴极数码管编码
uchar code tabledp[]={
0xbf,0x86,0xdb,0xcf,
0xe6,0xed,0xfd,0x87,
0xff,0xef,0xf7,0xfc,
0xb9,0xde,0xf9,0xf1}; //带小数点共阴极数码管编码
void display(uchar shi,uchar ge,uchar shifen,uchar baifen); //声明显示子函数
void delay(uint z); //声明延时子函数
void init(); //声明初始化函数
void key(); //声明键扫描函数
void display_process(); //声明显示处理函数
void main()
{
init(); //调用初始化子程序
while(1)
{
key();
display_process();
display(shi,ge,shifen,baifen); //调用显示子函数
}
}
void delay(uint z) //延时子函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar shi,uchar ge,uchar shifen,uchar baifen) //显示子程序
{
P0=table[shi]; //使用动态扫描的方法实现数码管显示
wei1=0;
delay(1);
wei1=1;
P0=tabledp[ge];
wei2=0;
delay(1);
wei2=1;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………