一 课程设计内容:设计一个单片机秒表,该秒表可显示0.0到59.9秒的时间,进行相应的单片机硬件电路的设计并进行软件编程.二 课程设计的要求和数据1 用单片机实现2 以0.1秒为最小单位显示3

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 05:33:04
一 课程设计内容:设计一个单片机秒表,该秒表可显示0.0到59.9秒的时间,进行相应的单片机硬件电路的设计并进行软件编程.二 课程设计的要求和数据1 用单片机实现2 以0.1秒为最小单位显示3

一 课程设计内容:设计一个单片机秒表,该秒表可显示0.0到59.9秒的时间,进行相应的单片机硬件电路的设计并进行软件编程.二 课程设计的要求和数据1 用单片机实现2 以0.1秒为最小单位显示3
一 课程设计内容:设计一个单片机秒表,该秒表可显示0.0到59.9秒的时间,进行相应的单片机硬件电路的设计并进行软件编程.
二 课程设计的要求和数据
1 用单片机实现
2 以0.1秒为最小单位显示
3 秒表量程为0.0到59.9 用3位LED灯显示
4 个人根据情况设计加上清零,开始计时停止计时等功能
三 课程设计应完成工作
1 完成单片机秒表硬件和软件设计 绘制电路原理图
2 完成课程设计报告的撰写

一 课程设计内容:设计一个单片机秒表,该秒表可显示0.0到59.9秒的时间,进行相应的单片机硬件电路的设计并进行软件编程.二 课程设计的要求和数据1 用单片机实现2 以0.1秒为最小单位显示3
这么复杂的问题应该到论坛上去找,给你个AVR单片机网址http://www.ourdev.cn/,可以到百度去搜,现成的应该很少,资料应该挺多的吧

别人都做了,你还做什么

给个邮箱,我发给你

汗 现在还有要这个程序的?

dula=1;
P0=table[three];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}
void delay(uint z) //延时子函数
{
uint x,y;
for(x=z;x>0;...

全部展开

dula=1;
P0=table[three];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}
void delay(uint z) //延时子函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
是用74hc573锁存器连得的数码管,自己调整一下 如果要秒表显示点的话,重新定义个表,自己改改吧

收起

P3接字码,P2接位码。没有加按键功能。

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

//数码管字型表,对应0,1,2,3,4,5,6,7,8,9//

uchar Table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uint Data[2]={0,0};      

data Buffer[1]={0};

uint TIME=0;     //倒计时时间

uint j;

sbit BEEP=P1^2; 

sbit Point=P3^7;

 

void DelayMs(uint i )       

{

 for(;i!=0;i--)

  {for(j=100;j!=0;j--) {;}}     

}

void Display(uint *p)         //动态显示函数,参数p为待显示的数组名

{

 P2=0xfe;                    

 P3=Table[p[2]];          //送字型码

 DelayMs(3);  

 P2=0xfb;            

 P3=Table[p[1]];          //送字型码

 Point=0;

 DelayMs(3);              //显示延时    

 P2=0xfd;              

 P3=Table[p[0]];

 DelayMs(3); 

 }

void Process(uint i,uint *p) 

{

 p[0]=i/100;

 i=i%100;

 p[1]=i/10;

 p[2]=i%10;

}

void main(void) 

 {

  EA=1; IT1=1; ET0=1;

  TMOD=0x01;          //T0方式1计时0.01秒 

  TH0=65536-5000/256;

  TL0=65536-5000%256;

    TR0=1;         //开中断,启动定时器 

  while(1)

   {

      

    Process(TIME,Data);

    Display(Data);   

    if(TIME>599)

   {

    TIME=0;

    }  

    }

}

/* 定时计数器0的中断服务子程序 */

void intserv1(void)  interrupt 1 using 1

{

TH0=65536-5000/256;

TL0=65536-5000%256;

Buffer[0]=Buffer[0]+1;         // 定时器T0的低四位赋值

if (Buffer[0]==10)       // 百分秒进位

 {

      TIME+=1;

   Buffer[0]=0;

 }

}