久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4568|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

如何用單片機定時器做一個秒表?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:855589 發(fā)表于 2020-12-7 11:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
定時器TH0和TL0那部分我倒是弄懂了,就是寄存器TMOD和TCON那部分看了半天看不明白。應(yīng)該怎么樣編才能用定時器來設(shè)計一個秒表呢..........

輕觸按鍵的話分別作啟停和清零的功能,現(xiàn)在就不知道按鈕該連在啥地方...........啟停我看教材可能是INT0,清0咋整....還是說都放錯了.....
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:836944 發(fā)表于 2020-12-7 16:49 | 只看該作者
額,可以看看這個計時器,玩著玩著好多地方就明白了。

8051 Timer with LCD.zip

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

回復(fù)

使用道具 舉報

板凳
ID:332444 發(fā)表于 2020-12-7 19:09 | 只看該作者
回復(fù)

使用道具 舉報

地板
ID:839922 發(fā)表于 2020-12-7 19:25 | 只看該作者
/*定時器1,定時模式 工作模式1 16位計數(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  //自定義

                         };

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

//兩位數(shù)碼管動態(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);//延時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);//延時5毫秒       
}

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

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

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

                       
                }
}
回復(fù)

使用道具 舉報

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

使用道具 舉報

6#
ID:180919 發(fā)表于 2020-12-7 21:57 | 只看該作者
秒也有要求,比如時多久,用什么單片機,什么顯示方式,有幾個按鍵,這類的了。
回復(fù)

使用道具 舉報

7#
ID:517951 發(fā)表于 2020-12-8 11:38 | 只看該作者
89C52單片機的有兩個定時器T0,T1 都可以設(shè)置為16位模式, 在12M晶振的時候,T0,T1 的THL,THH設(shè)置為0XFFFF, 最大計時時長為65ms, 可以設(shè)置為50ms ,溢出就中斷可以+或者-寄存器,200次就是1秒,就可以做倒計時或正計時的秒表了。
回復(fù)

使用道具 舉報

8#
ID:855589 發(fā)表于 2020-12-8 20:09 | 只看該作者
xianfajushi 發(fā)表于 2020-12-7 19:09
可參https://blog.csdn.net/xianfajushi/article/details/89448933

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

使用道具 舉報

9#
ID:808225 發(fā)表于 2020-12-8 22:05 | 只看該作者
按鍵放哪個pi口都行,不占用定時器的就好。你在程序中寫按鍵按下后,把定時器的中斷清零試試
回復(fù)

使用道具 舉報

10#
ID:318489 發(fā)表于 2020-12-9 11:04 | 只看該作者
51有定時器,設(shè)定個10ms,進行計算就可以了
回復(fù)

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av色在线 | 欧美亚洲一区二区三区 | 午夜天堂 | 亚洲一区视频在线播放 | 久久久久久久久久久91 | 成av人电影在线 | 亚洲精品中文在线观看 | 精品久 | 91在线看| 欧美福利视频一区 | 欧美精品日韩 | 久久男人 | 欧美国产日韩精品 | 午夜免费电影 | 国产三级精品三级在线观看四季网 | 午夜视频在线 | 欧美在线a| 欧美国产在线一区 | 久久久久国产精品一区三寸 | 国产91精品在线 | 成人免费视频在线观看 | 91av在线免费观看 | 国产精品一区二区三区四区 | 啪啪毛片 | 中文字幕第一页在线 | 久久久精品一区 | 久久久久国产一区二区三区四区 | 国产精品欧美一区二区 | 成人网av | 亚洲第一视频网站 | 精品国产欧美一区二区三区不卡 | 亚洲精品在线国产 | 成人网在线观看 | 中文字幕不卡一区 | 九九九久久国产免费 | 亚洲国产精品99久久久久久久久 | 亚洲高清成人 | 亚洲国产二区 | 999精品视频 | 一区在线观看 | 精品视频一区二区 |