仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):【K04】
1.? 簡(jiǎn)介
? 本文提出了一種基于51單片機(jī)的秒表計(jì)時(shí)器。該設(shè)計(jì)在硬件方面主要采用AT89C51單片機(jī)作為主控核心,2位數(shù)碼管液晶顯示屏顯示計(jì)時(shí)信息,同時(shí)還具有啟動(dòng)、暫停、復(fù)位等功能。
2.? 主要功能
a.通過(guò)2位數(shù)碼管顯示計(jì)時(shí)器信息,計(jì)時(shí)范圍:0到99秒。
b.通過(guò)獨(dú)立按鍵設(shè)置啟動(dòng)、暫停、復(fù)位。
3.? 源程序(Keil5)
本設(shè)計(jì)采用keil5 C51軟件(內(nèi)附安裝包)實(shí)現(xiàn)程序設(shè)計(jì)。如需用keil4打開程序,可自行通過(guò).c和.h文件新建工程即可。
#include "reg51.h"
#define uchar unsigned char
#define uint unsingned int
#define LED P0
uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管碼表
uchar num,t,shi,ge,run_flag;
//------------------------------------
void init();//定時(shí)器初始化
void timer0();//
void display();//顯示
void delay(uchar);
sbit KEY1 = P3^5;//開始
sbit KEY2 = P3^7;//復(fù)位
sbit KEY3 = P3^6;//暫停
void main()//主函數(shù)入口
{
init();//初始化
while(1)
{
timer0();//查詢時(shí)間
display();//顯示
if(KEY1 == 0)//開始
{
if(TR0 == 0)//定時(shí)器沒(méi)有打開的時(shí)候
{
TR0=1;
}
}
else if(KEY2 == 0)//復(fù)位
{
TR0 = 0; //關(guān)閉定時(shí)器
TF0 = 0;//清楚時(shí)間溢出標(biāo)志
t = 0;
num = 0;
// TR0=1;
}
else if(KEY3 == 0)//
{
if(TR0 == 1)//定時(shí)器沒(méi)有打開的時(shí)候
{
TR0=0;
}
}
}
}
void init()//定時(shí)器初始化部分
{
num=t=0; //清楚數(shù)據(jù)
TMOD=0x01; //定時(shí)器初始化
TH0=(65536-15536)/256;//定時(shí)器賦初值 定時(shí)50ms
TL0=(65536-15536)%256;
EA=1;
ET0=1;
}
void timer0()
{
if(TF0==1) //查詢溢出的時(shí)間
{
TF0=0; //清楚溢出標(biāo)志
t++;
if(t==12) //累計(jì)時(shí)間到1S
{
t=0;
num++;
}
}
}
4.? 仿真proteus8.6
? 本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問(wèn)題,該仿真是通過(guò)proteus8.6導(dǎo)出的,所以請(qǐng)盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
計(jì)時(shí)界面:
5.? 設(shè)計(jì)報(bào)告
設(shè)計(jì)報(bào)告主要包括硬件電路、軟件設(shè)計(jì)、仿真調(diào)試等等,僅供參考。
6.? 資料清單
設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說(shuō)明+元件清單+操作視頻等。
7.? 資料獲取鏈接
百度網(wǎng)盤下載鏈接:【K04】百度網(wǎng)盤下載鏈接
更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集