欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4950|回復(fù): 10
收起左側(cè)

如何用單片機(jī)定時(shí)器做一個(gè)秒表?

  [復(fù)制鏈接]
ID:855589 發(fā)表于 2020-12-7 11:13 | 顯示全部樓層 |閱讀模式
定時(shí)器TH0和TL0那部分我倒是弄懂了,就是寄存器TMOD和TCON那部分看了半天看不明白。應(yīng)該怎么樣編才能用定時(shí)器來設(shè)計(jì)一個(gè)秒表呢..........

輕觸按鍵的話分別作啟停和清零的功能,現(xiàn)在就不知道按鈕該連在啥地方...........啟停我看教材可能是INT0,清0咋整....還是說都放錯(cuò)了.....

原理圖

原理圖

回復(fù)

使用道具 舉報(bào)

ID:836944 發(fā)表于 2020-12-7 16:49 | 顯示全部樓層
額,可以看看這個(gè)計(jì)時(shí)器,玩著玩著好多地方就明白了。

8051 Timer with LCD.zip

53.67 KB, 下載次數(shù): 27

回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
ID:332444 發(fā)表于 2020-12-7 19:09 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

ID:839922 發(fā)表于 2020-12-7 19:25 | 顯示全部樓層
/*定時(shí)器1,定時(shí)模式 工作模式1 16位計(jì)數(shù)器,
定時(shí)20秒后使能蜂鳴器*/
#include <reg52.h> //51頭文件
#define uchar unsigned char//宏定義
#define uint  unsigned int//宏定義
sbit we = P2^7;//位定義數(shù)碼管位選鎖存器接口
sbit du = P2^6;//位定義數(shù)碼管段選鎖存器接口
sbit beep = P2^3;//蜂鳴器接口

//數(shù)碼管段選表
uchar code leddata[]={

                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                0x77,  //"A"
                0x7C,  //"B"
                0x39,  //"C"
                0x5E,  //"D"
                0x79,  //"E"
                0x71,  //"F"
                0x76,  //"H"
                0x38,  //"L"
                0x37,  //"n"
                0x3E,  //"u"
                0x73,  //"P"
                0x5C,  //"o"
                0x40,  //"-"
                0x00,  //熄滅
                0x00  //自定義

                         };

//毫秒級(jí)延時(shí)函數(shù)
void delay(uint z)
{
        uint x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}

//兩位數(shù)碼管動(dòng)態(tài)顯示函數(shù)
void display(uchar i)
{
        uchar shi, ge;
        shi = i / 10;//求模  i除以10取商的整數(shù)部分
        ge  = i % 10;//求余  i除以10取余數(shù)部分

        P0 = 0xff; //清除斷碼
        we = 1;//打開位選
        P0 = 0xfe;//1111 1110 只選通第一位數(shù)碼管
        we = 0;        //關(guān)閉位選

        du = 1;        //打開段選
        P0 = leddata[shi];
        du = 0;        //關(guān)閉段選
        delay(5);//延時(shí)5毫秒
       
        P0 = 0xff;//清除斷碼
        we = 1;        //打開位選
        P0 = 0xfd;//1111 1101  只選通第二位數(shù)碼管
        we = 0;        //關(guān)閉位選
       
        du = 1;//打開段選
        P0 = leddata[ge];
        du = 0;        //關(guān)閉段選
        delay(5);//延時(shí)5毫秒       
}

void main()
{
                uchar a; //50次數(shù)計(jì)數(shù)
                uchar b;//秒計(jì)數(shù)
                TR1 = 1;//啟動(dòng)T1
                TMOD = 0x10;//T1為定時(shí)器,工作模式1 16位計(jì)數(shù)器
                TH1 = 0x4b;
                TL1 = 0xfc;//0x4bfc        定時(shí)50ms                               
                while(1)
                {
                        if(TF1 == 1)//判斷T1是否溢出
                        {
                                TH1 = 0x4b;
                                TL1 = 0xfc;//0x4bfc        定時(shí)50ms
                                TF1 = 0;//清零便于下次判斷
                                a++;//50毫秒計(jì)數(shù)加1       
                        }
                        if(a == 20)//判斷是否到1秒
                        {
                                a = 0;//清零便于下次記錄50ms的次數(shù)
                                b++;//秒加1
                        }

                        display(b);//顯示秒的值

                        if(b == 20)//檢查是否到20秒
                        {
                                TR1 = 0;//時(shí)間到關(guān)閉定時(shí)器1
                                beep = 0; //使能蜂鳴器
                                delay(4000);//使能時(shí)間4秒
                                beep = 1;//關(guān)閉蜂鳴器
                                while(1); //停止程序
                        }

                       
                }
}
回復(fù)

使用道具 舉報(bào)

ID:451718 發(fā)表于 2020-12-7 20:25 | 顯示全部樓層
1,弄清楚定時(shí)器的幾種常用模式: 記錄時(shí)間,一般建議用16位的中斷模式1。 記錄數(shù)量,可以用8位自動(dòng)重裝置的模式2。
2,養(yǎng)成好的程序框架模式,涉及定時(shí)功能,就一定把定時(shí)0空出來,做long型變量的定時(shí)自加用。也就是在定時(shí)0的中斷中,只放一個(gè)語句,就是讓變量 SysTick++。 然后在主程序中,去記錄,對(duì)比,查詢變量和SysTick的差值。比如,要開始計(jì)時(shí),就把T1 = SysTick ; 要查詢時(shí)間,就計(jì)算SysTick - T1的差值;要重置,就重新把T1 = SysTick; 要暫停,就記錄T2 = SysTick - T1;要繼續(xù)計(jì)時(shí),就把T1 = SysTick - T2。
3,按鍵的操作,不建議放到定時(shí)器中操作,因?yàn)榘存I是有抖動(dòng)的,對(duì)于初學(xué)者這個(gè)穩(wěn)定過程的判斷,最好還是放在主程序。
回復(fù)

使用道具 舉報(bào)

ID:180919 發(fā)表于 2020-12-7 21:57 | 顯示全部樓層
秒也有要求,比如時(shí)多久,用什么單片機(jī),什么顯示方式,有幾個(gè)按鍵,這類的了。
回復(fù)

使用道具 舉報(bào)

8#
無效樓層,該帖已經(jīng)被刪除
ID:517951 發(fā)表于 2020-12-8 11:38 | 顯示全部樓層
89C52單片機(jī)的有兩個(gè)定時(shí)器T0,T1 都可以設(shè)置為16位模式, 在12M晶振的時(shí)候,T0,T1 的THL,THH設(shè)置為0XFFFF, 最大計(jì)時(shí)時(shí)長為65ms, 可以設(shè)置為50ms ,溢出就中斷可以+或者-寄存器,200次就是1秒,就可以做倒計(jì)時(shí)或正計(jì)時(shí)的秒表了。
回復(fù)

使用道具 舉報(bào)

ID:855589 發(fā)表于 2020-12-8 20:09 | 顯示全部樓層
xianfajushi 發(fā)表于 2020-12-7 19:09
可參https://blog.csdn.net/xianfajushi/article/details/89448933

他那個(gè)原理圖太復(fù)雜了。。。
回復(fù)

使用道具 舉報(bào)

ID:808225 發(fā)表于 2020-12-8 22:05 | 顯示全部樓層
按鍵放哪個(gè)pi口都行,不占用定時(shí)器的就好。你在程序中寫按鍵按下后,把定時(shí)器的中斷清零試試
回復(fù)

使用道具 舉報(bào)

ID:318489 發(fā)表于 2020-12-9 11:04 | 顯示全部樓層
51有定時(shí)器,設(shè)定個(gè)10ms,進(jìn)行計(jì)算就可以了
回復(fù)

使用道具 舉報(bào)

ID:223621 發(fā)表于 2020-12-9 15:30 | 顯示全部樓層
精度要求不高的化無所謂,幾乎所有51都搞定了的,stc-isp程序有相關(guān)定時(shí)器例程,應(yīng)用的化就應(yīng)該考慮單獨(dú)的時(shí)鐘芯片了。。。。。。。。
另,本人軟轉(zhuǎn)硬,可能考慮角度不同,給你個(gè)不同角度的建議,畫個(gè)時(shí)序圖,啥子都明白了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表