日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

3步教你如何用51單片機(jī)制作秒表

GReq_mcu168 ? 來源:http://blog.csdn.net/wangwangp ? 作者:wangwangpengpeng ? 2020-10-23 13:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

和很多朋友一樣,在學(xué)51單片機(jī)的過程中我們肯定會(huì)涉及到制作一個(gè)秒表,牽涉到把單片機(jī)的多個(gè)部分組合起來使用,這對(duì)于我們初學(xué)者來說可能顯得有些困難,我同大家一樣,百思不得其解,最后頭都弄大了才把這個(gè)秒表制作出來,為了給以后的朋友們一些思路,一些參考,所以在這里我把自己制作的整個(gè)詳細(xì)過程整理出來供大家參考。我調(diào)試出來是沒有問題的,各方面都穩(wěn)定運(yùn)行,由于我水平有限,中間可能會(huì)有不對(duì)的地方,歡迎大家指正,我們一起學(xué)習(xí),一起進(jìn)步!

我將分為三個(gè)部分來介紹:1.整體思路,2.硬件電路方面,3.軟件編程方面。

1、整體思路

利用51單片機(jī)制作秒表時(shí),我介紹精確到十分位(即0.1s)的制作,并讓其擁有啟動(dòng),暫停,復(fù)位三個(gè)功能。

用到的單片機(jī)部分:定時(shí)器部分,獨(dú)立按鍵的檢測(cè)與應(yīng)用,數(shù)碼管的顯示,并結(jié)合一些簡單的程序即可實(shí)現(xiàn)。

用5位數(shù)碼管來進(jìn)行顯示,分別顯示秒的十分位,秒的個(gè)位,秒的十位,分的個(gè)位,分的十位。用定時(shí)器定時(shí)50ms,2個(gè)定時(shí)器中斷即是0.1s,即秒的十分位,20個(gè)定時(shí)器中斷即是1s,60個(gè)1s即是1分鐘,通過程序?qū)?位數(shù)碼管的值分離出來,并進(jìn)行顯示。這就是我在數(shù)碼管顯示方面的思路,如果不是太清楚,結(jié)合我下面軟件編程方面的程序來看你可能就會(huì)明白,我會(huì)在那部分做詳細(xì)介紹,看完了可能你就懂了。

利用獨(dú)立按鍵設(shè)置啟動(dòng)/暫停鍵和清零鍵,利用獨(dú)立按鍵的檢測(cè),若啟動(dòng)/暫停按鍵按下,秒表則啟動(dòng)或者暫停,按下復(fù)位鍵,秒表清零復(fù)位。我在程序后面全都有注釋,不用擔(dān)心。看完你就會(huì)明白了。

這是我制作的的流程圖:

“ms100”表示秒的十分位,"s"表示秒的個(gè)位,“s1”表示秒的十位,“min”表示分的個(gè)位,“min1”表示分的十位。

“cnt”表示秒的計(jì)數(shù)位,即多少個(gè)一秒,定時(shí)滿一秒加1,“minu”表示分的計(jì)數(shù)位,即多少個(gè)一分鐘,一分鐘加1,

這個(gè)流程圖提供了大致思路,要結(jié)合下面的程序部分一起看。可能有些簡陋,請(qǐng)多多包涵!

看起來是不是好簡單?有木有?請(qǐng)繼續(xù)往下看。

2、硬件電路方面

每個(gè)人的硬件可能都不一樣,(哪些控制數(shù)碼管的位選,哪些控制數(shù)碼管的段選,哪些控制獨(dú)立按鍵等等),大家在自己制作過程中都要仔細(xì)考慮,我在這里就用我自己的硬件進(jìn)行介紹。

這是我的數(shù)碼管的電路圖:(將J12用杜邦線接到對(duì)應(yīng)的P0口,將J16用杜邦線接到對(duì)應(yīng)的P1口)

位選端我用P1口控制,段選端我用P0口控制。在圖中我已標(biāo)明秒的個(gè)位s,秒的十位s1,分的個(gè)位min,分的十位min1所對(duì)應(yīng)的數(shù)碼管。該數(shù)碼管是共陰極。

秒的十分位我用的是另一個(gè)共陽數(shù)碼管。我用P3口控制該數(shù)碼管的段選,其圖如下:

而獨(dú)立按鍵我用的P2^7控制“啟動(dòng)/暫停鍵”,P2^6控制復(fù)位鍵:電路圖如下:(將JP5通過杜邦線接到P3口)

硬件電路基本上就是這些,由于分和秒之間要用小數(shù)點(diǎn)分隔開,所以分的個(gè)位對(duì)應(yīng)的數(shù)碼管的段碼要用帶小數(shù)點(diǎn)的段碼,其余的數(shù)碼管則不用。

硬件方面是為看懂軟件程序做準(zhǔn)備,下面我們就開始我們的軟件程序方面吧!

3、軟件程序方面

#include

#defineucharunsignedchar

#defineuintunsignedint

#definePIN0P0//數(shù)碼管段選端

#definePIN1P1//數(shù)碼管位選端

#definePIN3P3//十分位數(shù)碼管的段碼端

sbitstart=P2^7;//啟動(dòng)/暫停按鈕

sbitreset=P2^6;//復(fù)位按鈕

uintcnt=0;//1s的次數(shù)的計(jì)數(shù)值

uintnum=0;//進(jìn)入中斷次數(shù)的計(jì)數(shù)值(一次50ms)

uintnum1=0;//0.1s的次數(shù)的計(jì)數(shù)值

ucharcodetable[]={0x3f,0x06,0x5b,

0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//不帶小數(shù)點(diǎn)的共陰極數(shù)碼管段碼0-9

ucharcodetable1[]={0xbf,0x86,

0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

//帶小數(shù)點(diǎn)的共陰極數(shù)碼管段碼0-9

charcodetable2[]={0xc0,0xf9,0xa4,

0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//不帶小數(shù)點(diǎn)的共陽極數(shù)碼管段碼0-9

voidDisplay(uintw,uinta,uintb,uintc,uintd);//聲明顯示函數(shù)

voidInitTimer0();//聲明定時(shí)器初始化函數(shù)

voidDelayms(uintx);//聲明延時(shí)函數(shù)

voidmain()

{

uintms100=0;//秒的十分位

uints,s1,min,min1,minu=0;

//依次是秒的個(gè)位,秒的十位,分的個(gè)位,分的十位

InitTimer0();//初始化定時(shí)器

while(1)//進(jìn)入死循環(huán)

{

if(start==0)//檢測(cè)啟動(dòng)/暫停鍵是否按下

Delayms(20);//延時(shí)消抖

{

if(start==0)//消抖之后再次檢測(cè)

{

TR0=!TR0;//定時(shí)器的控制位取反

while(!start);//等待按鍵釋放

}

}

if(reset==0)//檢測(cè)復(fù)位鍵是否按下

{

Delayms(20);//延時(shí)消抖

if(reset==0)//消抖之后再次檢測(cè)

{

num=0;

num1=0;//進(jìn)入中斷次數(shù)值清0

ms100=0;//十分位的計(jì)數(shù)值清0

cnt=0;//秒的計(jì)數(shù)值清0

minu=0;//分的計(jì)數(shù)值清0

while(!reset);//等待按鍵釋放

}

}

if(num1>=2)//檢測(cè)是否達(dá)到0.1s,(兩個(gè)50ms)

{

num1=0;//進(jìn)入中斷次數(shù)值清零

ms100++;//秒的十分位的計(jì)數(shù)值加1

if(ms100>=10)//若秒的十分位計(jì)數(shù)值達(dá)到10

{

ms100=0;//清零秒的十分位的計(jì)數(shù)值

num1=0;//進(jìn)入中斷次數(shù)值置0

}

}

if(num>=20)//判斷計(jì)時(shí)時(shí)間是否達(dá)到1s(20個(gè)50ms)

{

num=0;//進(jìn)入中斷次數(shù)值置0

cnt++;//秒的計(jì)數(shù)值加1

if(cnt>=60)//判斷是否達(dá)到60s

{

cnt=0;//若達(dá)到60s,將秒的計(jì)數(shù)值置零

minu++;//分的計(jì)數(shù)值加1

if(minu>=60)//判斷是否達(dá)到60分鐘,一般秒表是用不到60分的,這是為了程序的嚴(yán)謹(jǐn)性

{

TR0=!TR0;//達(dá)到60分鐘則關(guān)閉定時(shí)器并清零所有的計(jì)數(shù)值

num1=0;

num=0;

ms100=0;

cnt=0;

minu=0;

}

}

}

s=cnt%10;//從秒的計(jì)數(shù)值里面分離秒的個(gè)位

s1=cnt/10;//從秒的計(jì)數(shù)值里面分離秒的十位

min=minu%10;//從分的計(jì)數(shù)值里面分離分的個(gè)位

min1=minu/10;//從分的計(jì)數(shù)值里面分離分的十位

Display(ms100,s,s1,min,min1);//顯示這5個(gè)數(shù)

}

}

voidInitTimer0()//定時(shí)器初始化函數(shù)

{

TMOD=0x01;//選擇定時(shí)器0的工作方式1

TH0=(65536-45872)/256;//裝初值(定時(shí)50ms),晶振11.0592MHz

TL0=(65536-45872)%256;

EA=1;//打開總中斷

ET0=1;//打開定時(shí)器中斷

TR0=0;//先不要啟動(dòng)定時(shí)器

}

voidTIMER0()interrupt1//定時(shí)器中斷服務(wù)函數(shù)

{

TH0=(65536-45872)/256;//重裝初值

TL0=(65536-45872)%256;

num++;//讓進(jìn)入中斷次數(shù)值加1,用于判斷是否達(dá)到1s

num1++;//讓進(jìn)入中斷次數(shù)值加1,用于判斷是否達(dá)到0.1s

}

voidDelayms(uintx)//延時(shí)xms

{

uinti,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

voidDisplay(uintw,uinta,uintb,uintc,uintd)//定義顯示函數(shù)

{

PIN3=table2[w];//秒的十分位的段選

Delayms(5);

PIN0=table[a];//秒的個(gè)位的段選

PIN1=0x7f;//秒的個(gè)位的位選

Delayms(5);

PIN0=table[b];//秒的十位的段選

PIN1=0xbf;//秒的十位的位選

Delayms(5);

PIN0=table1[c];//分的個(gè)位的段選(帶小數(shù)點(diǎn))

PIN1=0xdf;//分的個(gè)位的位選

Delayms(5);

PIN0=table[d];//分的十位的段選

PIN1=0xef;//分的十位的位選

Delayms(5);

}

由于在打字時(shí)可能不小心會(huì)弄錯(cuò)一丁點(diǎn)程序,我都是一個(gè)字母一個(gè)字母手打的,所以請(qǐng)大家理解思路即可,根據(jù)這個(gè)思路自己去寫,這樣得到的知識(shí)才是屬于自己的。畢竟 “讀別人的故事,悟自己的人生”。

下面來幾張實(shí)物圖給大家看一下我這個(gè)秒表的實(shí)際效果。

編譯結(jié)果:

燒寫進(jìn)單片機(jī)的效果:(沒有按啟動(dòng)按鈕之前)

按了啟動(dòng)按鈕之后,秒表將會(huì)自動(dòng)開始計(jì)時(shí),由于無法演示動(dòng)態(tài)過程,只能在中間按下暫停鍵給大家看看效果:

按下復(fù)位鍵后:

由于我用的是一個(gè)比較完整的51開發(fā)板,所以里面有很多部分,大家只需要注意觀察數(shù)碼管部分就好。

下面再來一個(gè)完整的圖:

結(jié)束語

至此,利用51單片機(jī)制作的秒表就已經(jīng)完成了!若是文章中有什么不懂的地方或者是自己在制作過程中遇到什么問題都可以聯(lián)系我,或者給我留言,我一定竭盡全力幫助大家!我們一起學(xué)習(xí),一起進(jìn)步!希望大家都能在看完這篇文章后自己動(dòng)手成功制作出一個(gè)秒表,祝愿大家學(xué)好單片機(jī)!當(dāng)然,由于自身水平有限,文章中肯定會(huì)存在錯(cuò)誤或者是考慮不周的的地方,懇請(qǐng)不吝賜教!謝謝大家!

(PS:我寫了一整天了,反復(fù)的看,反復(fù)的改,現(xiàn)在頭昏眼花,但是只要能對(duì)大家有所幫助,一切都是值得的。)

作者:wangwangpengpeng

來源:

http://blog.csdn.net/wangwangpengpeng/article/details/76065286

責(zé)任編輯:PSY

原文標(biāo)題:用51單片機(jī)制作一個(gè)秒表的詳細(xì)過程(教程有程序)

文章出處:【微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6078

    文章

    45593

    瀏覽量

    674010
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    278

    文章

    5716

    瀏覽量

    135189
  • 秒表
    +關(guān)注

    關(guān)注

    3

    文章

    81

    瀏覽量

    22698

原文標(biāo)題:用51單片機(jī)制作一個(gè)秒表的詳細(xì)過程(教程有程序)

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式2---在單片機(jī)里實(shí)現(xiàn)module_init機(jī)制

    嵌入式2---在單片機(jī)里實(shí)現(xiàn)module_init機(jī)制 很多朋友在寫單片機(jī)程序時(shí),常會(huì)遇到這樣的問題:所有模塊的初始化函數(shù)(比如LED初始化、串口初始化、傳感器初始化),都要手動(dòng)在main函數(shù)里一一
    的頭像 發(fā)表于 05-04 11:24 ?3199次閱讀
    嵌入式2---在<b class='flag-5'>單片機(jī)</b>里實(shí)現(xiàn)module_init<b class='flag-5'>機(jī)制</b>

    入門神器 | 尚硅谷51單片機(jī)視頻教程

    實(shí)現(xiàn)多任務(wù)處理的基礎(chǔ),而 51 單片機(jī)的中斷系統(tǒng)則是這一原理的最簡模型。教程通過外部中斷、定時(shí)器中斷等實(shí)驗(yàn),讓學(xué)員理解 CPU 如何在執(zhí)行主程序的同時(shí),能夠被突發(fā)事件打斷并優(yōu)先處理關(guān)鍵任務(wù)。這種機(jī)制
    發(fā)表于 05-01 17:34

    8XC51FX:高性能8位單片機(jī)的全方位解析

    8XC51FX:高性能8位單片機(jī)的全方位解析 在單片機(jī)的世界里,8XC51FX系列以其卓越的性能和豐富的功能脫穎而出,成為眾多電子工程師在設(shè)計(jì)項(xiàng)目時(shí)的熱門選擇。今天,我們就來深入探討一
    的頭像 發(fā)表于 03-29 13:15 ?361次閱讀

    手把手教你學(xué)51單片機(jī)-C語言版

    更多信息),手把手地帶領(lǐng)大家來學(xué)習(xí)單片機(jī)技術(shù),給單片機(jī)初學(xué)者帶來福音,讓大家一一個(gè)腳印的掌握單片機(jī)技術(shù)。 《手把手教你學(xué)
    發(fā)表于 03-05 11:47

    小白也能聽懂的單片機(jī)知識(shí)路徑

    在科技飛速發(fā)展的今天,單片機(jī)作為電子技術(shù)的核心組件,扮演著越來越重要的角色。對(duì)于想要踏入這個(gè)領(lǐng)域的初學(xué)者來說,了解并掌握單片機(jī)知識(shí)是邁向成功的第一。 第一部分:單片機(jī)基礎(chǔ)與
    發(fā)表于 02-04 16:44

    學(xué)習(xí)單片機(jī)快速方法

    自己的產(chǎn)品,制作自己想做的電路。這整個(gè)過程大概一個(gè)月時(shí)間。 在學(xué)習(xí)了51單片機(jī)后,你可以學(xué)習(xí)其他單片機(jī)和嵌入式處理器,比如AVR、STC、PIC、善于處理音頻的凌陽
    發(fā)表于 01-14 07:42

    C語言和單片機(jī)C語言有什么差異

    區(qū)別是由編譯器決的,只能參考對(duì)應(yīng)的編譯手冊(cè),即使同種平臺(tái)不同的編譯器對(duì)C的擴(kuò)展也有不同。 3、單片機(jī)c語言編程是基于C語言的單片機(jī)編程。單片機(jī)的C語言采用C
    發(fā)表于 11-14 07:55

    51單片機(jī)RS485編程實(shí)例資料

    詳細(xì)介紹51單片機(jī)RS485通信接線和編程代碼
    發(fā)表于 10-20 14:57 ?6次下載

    單片機(jī)最小系統(tǒng)工作原理及搭建

    單片機(jī)最小系統(tǒng)是指使單片機(jī)正常運(yùn)行所需的最簡電路配置,它是所有單片機(jī)應(yīng)用的開發(fā)基礎(chǔ)。以下是其核心組成、工作原理及搭建指南: 一、最小系統(tǒng)核心組成 單片機(jī)芯片 常見型號(hào) :STC89C
    的頭像 發(fā)表于 08-11 10:55 ?4395次閱讀
    <b class='flag-5'>單片機(jī)</b>最小系統(tǒng)工作原理及搭建

    單片機(jī)怎么燒程序

    單片機(jī)燒程序是將編寫好的程序代碼寫入單片機(jī)內(nèi)部存儲(chǔ)單元,讓單片機(jī)按照預(yù)設(shè)邏輯工作的過程,是單片機(jī)應(yīng)用開發(fā)中不可或缺的環(huán)節(jié)。無論是簡單的燈光控制程序,還是復(fù)雜的工業(yè)控制算法,都需要通過燒
    的頭像 發(fā)表于 07-23 11:47 ?2076次閱讀

    大一暑假適合學(xué)51單片機(jī)嗎?

    大一暑假學(xué) 51 單片機(jī),簡直是老天爺賞飯吃的黃金窗口。我當(dāng)時(shí)就是靠著這兩個(gè)月,把從課本上看來的 C 語言指針、循環(huán)語句,變成了能讓 LED 按節(jié)奏跳舞的真本事。
    的頭像 發(fā)表于 07-16 11:42 ?806次閱讀
    大一暑假適合學(xué)<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>嗎?

    AT89C51 單片機(jī)中文資料

    電子發(fā)燒友網(wǎng)站提供《AT89C51 單片機(jī)中文資料.pdf》資料免費(fèi)下載
    發(fā)表于 06-24 15:29 ?1次下載

    2.4寸TFT彩屏配套測(cè)試程序-51單片機(jī)

    如題,2.4寸TFT彩屏配套測(cè)試程序-51單片機(jī)。
    發(fā)表于 06-04 16:26 ?0次下載

    基于51單片機(jī)的溫濕度檢測(cè)與調(diào)節(jié)系統(tǒng)電路圖

    電子發(fā)燒友網(wǎng)站提供《基于51單片機(jī)的溫濕度檢測(cè)與調(diào)節(jié)系統(tǒng)電路圖》資料免費(fèi)下載
    發(fā)表于 05-12 17:23 ?4次下載
    金乡县| 逊克县| 菏泽市| 南川市| 株洲市| 宜良县| 兰坪| 五常市| 射阳县| 镇巴县| 江孜县| 青龙| 广东省| 九江市| 革吉县| 咸丰县| 航空| 台南县| 台前县| 黄石市| 东乌| 东明县| 沐川县| 包头市| 新郑市| 甘肃省| 德江县| 刚察县| 阳谷县| 蕉岭县| 上林县| 贺州市| 当雄县| 常州市| 拉萨市| 安阳市| 武宣县| 沙河市| 铜梁县| 余干县| 谢通门县|