導航:首頁 > 操作系統 > 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單片機多人跑步秒錶設計相關的資料

熱點內容
大同有什麼好玩伺服器地址 瀏覽:360
訪問另一台電腦的文件夾如何拼寫 瀏覽:378
輸入對稱加密演算法的是 瀏覽:616
航線推薦每天三班加密深圳航線 瀏覽:950
解壓小視頻刮肥皂講甜故事 瀏覽:416
453均線指標源碼 瀏覽:46
程序員在外包公司 瀏覽:990
如何改快捷方式為解壓 瀏覽:308
為什麼ns總是與伺服器連接斷開 瀏覽:353
廊坊接cnc編程兼職 瀏覽:937
江蘇伺服器應用線束加工雲主機 瀏覽:109
安卓手機名字如何變成透明的 瀏覽:116
1進制演算法公式 瀏覽:611
程序員多久敲壞一把機械鍵盤 瀏覽:589
安慶計算機編程培訓班 瀏覽:463
Linux伺服器請求log如何查看 瀏覽:465
outpdf 瀏覽:164
加密錢包市值排名 瀏覽:170
文件怎麼電腦解壓 瀏覽:680
網站源碼傳輸到阿里 瀏覽:295