導航:首頁 > 操作系統 > 52單片機多人跑步秒錶設計

52單片機多人跑步秒錶設計

發布時間:2023-12-09 06:50:49

『壹』 單片機課程設計 秒錶設計

#include<reg51.h>#include<stdio.h>#define dat P0
#define uchar unsigned char#define uint unsigned int
sbit seg1 = P2^0;sbit seg2 = P2^1;sbit seg3 = P2^2;sbit seg4 = P2^3;
uchar a,b,c,d;uint timeout=0,us=0,ms=0;uchar code table[]={0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E}; //共陽
/*uchar code table[]={0x3f,0x06,0x5b,0x4f, //0~3 0x66,0x6d,0x7d,0x07, //4~7 0x7f,0x6f,0x77,0x7c, //8~b 0x39,0x5e,0x79,0x71}; //共陰 */
void delay(uint z){while(z--);}
void display(){ dat = table[a]; seg1 = 0; delay(1000); seg1 = 1; dat = 0xff; dat = table[b]-0x80; seg2 = 0; delay(1000); seg2 = 1; dat = 0xff; dat = table[c]; seg3 = 0; delay(1000); seg3 = 1; dat = 0xff; dat = table[d]; seg4 = 0; delay(1000); seg4 = 1; dat = 0xff; }
void InitTimer0(void){ TMOD = 0x01; TH0 = (65536-10000)/256; TL0 = (65536-10000)%256; EA = 1; ET0 = 1; TR0 = 1;}
void main(void){ InitTimer0(); while(1) { d = us%10; c = us/10; b = ms%10; a = ms/10; display(); }}
void Timer0Interrupt(void) interrupt 1{ TH0 = (65536-10000)/256; TL0 = (65536-10000)%256; //add your code here! timeout++; if(timeout==1) { timeout = 0; us++; if(us==100) { us = 0; ms++; { if(ms==100) { ms = 0; } } } }}

『貳』 52單片機不用定時中斷如何實現60S秒錶功能

#include<reg52.h>

sbit AA=P0^7;//數碼管顯示用IO埠
sbit BB=P0^6;
sbit CC=P0^5;
sbit DD=P0^4;

sbit K1=P3^2;
sbit K2=P3^5;
sbit K3=P3^7;

int s,m;
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
void YS(int x); //延遲函數聲明
void XS(int d); //顯示函數聲明

void main()
{
s=m=0;
TMOD=0x01;//設置定時器工作方式
TH0=(65536-1000)/256;//1毫秒
TL0=(65536-1000)%256;//定時器裝初始值
EA=1;//開總中斷
ET0=1;//開定時器 0 的中斷
while(1)
{
XS(s); //顯示

if(K1==0){ TR0=1; }//開啟定時侍嘩者器,開始計時
if(K2==0){ TR0=0; }//關閉定時器,暫停計時
if(K3==0){ s=m=0; }//清空數據
}
}

void YS(int x) //延遲子函數
{
int y;
for(;x>0;x--)
for(y=100;y>0;y--);
}

void XS(int d) //顯老薯示子函數
{
char d1,d2,d3,d4;
d4=d%10; //取個位 %求余
d3=(d/10)%10; //取十蘆春位
d2=(d/100)%10;
d1=(d/1000)%10;

P2=table[d4]; AA=0; YS(1); AA=1;//個位顯示
P2=table[d3]; BB=0; YS(1); BB=1;//十位顯示
P2=table[d2]; CC=0; YS(1); CC=1;//百位顯示
P2=table[d1]; DD=0; YS(1); DD=1;//千位顯示
}

void timer() interrupt 1 //中斷處理子函數
{
TH0=(65536-922)/256;//1毫秒
TL0=(65536-922)%256;

m++;
if(m>=10) //判斷定時是否到達1s 即 1000 ms
{ m=0; s++; }

if(s>=9999) //判斷定時是否到達1s 即 1000 ms
{ s=0; }
}
絕對可用的,你試試吧,可能我的程序埠與你的不一樣,自己改一下就可以了

『叄』 52單片機製作秒錶問題

『肆』 單片機 秒錶的設計

顯示部分由於硬體連接狀態不明,無法提供程序,有些硬體方案要求一次發送所有的顯示內容,這種可以直接參考我下面的部分。有些硬體方案可以分別更改每一位的顯示內容,這樣可以利用DispFlag的不同位代表不同的顯示字元位置,並且在相應計數部分程序中置位,送入主程序顯示,當然顯示執行完畢後清零相關位是必須的。否則主程序會不斷的運行,出問題了。

unsigned char DOT,SEC,MIN,HOU,DispFlag;

//T0中斷服務程序
{
//計數部分
DOT++;
if (DOT == 9) {
SEC++;
DOT=0;
}
if (SEC == 59) {
MIN++;
SEC=0;
}
if (MIN == 59) {
HOU++;
MIN=0;
}
if (HOU == 100) {
DOT=0;
SEC=0;
MIN=0;
HOU=0;
}
//置位顯示標志
DispFlag = 1;
}

//主程序部分
int main(void) {
//初始化埠
//啟動定時器
//開中斷
while (1) {
if (DispFlag) {
//顯示函數
DispFlag = 0;
}
}
}

閱讀全文

與52單片機多人跑步秒錶設計相關的資料

熱點內容
幼兒編程教育培訓多少錢 瀏覽:403
經常生氣有什麼東西能解壓 瀏覽:901
代理伺服器地址和埠可以怎麼填 瀏覽:63
unity5手游編譯模型 瀏覽:265
安卓無人機app源碼 瀏覽:808
pl1編程語言 瀏覽:801
台達plc編程換算指令大全 瀏覽:174
手機上的編程游戲 瀏覽:108
伺服器密碼機有什麼用 瀏覽:477
dos磁碟命令 瀏覽:955
單片機cpu52的功能 瀏覽:691
opc伺服器怎麼開發 瀏覽:373
覓喜是個什麼app 瀏覽:402
加密cd機 瀏覽:946
社保用什麼app繳納 瀏覽:313
nodevlinux 瀏覽:582
騰訊tt伺服器怎麼登錄密碼 瀏覽:898
windows命令提示符 瀏覽:352
win7管理員許可權命令 瀏覽:729
地圖app哪個適合老年人用 瀏覽:74