找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

怎么用單片機(jī)用定時器控制數(shù)碼管的顯示?

  [復(fù)制鏈接]
回帖獎勵 1 黑幣 回復(fù)本帖可獲得 1 黑幣獎勵! 每人限 3 次
跳轉(zhuǎn)到指定樓層
樓主
ID:452212 發(fā)表于 2018-12-24 18:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想實現(xiàn)數(shù)碼管與定時器結(jié)合,依次顯示數(shù)字并切換顯示速度,現(xiàn)在遇到的問題是不會用定時器控制晶體管的顯示,希望大神幫忙。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:454000 發(fā)表于 2018-12-25 03:23 | 只看該作者
拿去吧,這有定時器不同時間的應(yīng)用!用數(shù)組給定時器值
#include<reg51.h>
#define uchar unsigned char
#define uchar unsigned char
#define uint unsigned int
unsigned int i=0;  f=0;
unsigned char mm[ ] = {0x04,0xf5,0x56,0xef,0x14,0xb1,0xc7,0x98,0xe2,0x25,0xd4,0x02,0x11,0xa8,0xb7,0x03};
sbit led=P1^0;
void main()
{
        TMOD=0x01;               //T0工作在方式1下,16位定時功能
    TH0=f;  //定時器T1的高8位賦初值
    TL0=f;  //定時器T1的高8位賦初值
        TF0=0;                        //清除TF0標(biāo)志位
        TR0=1;                        //啟動T0
        while(1)
        {
                if(TF0==1)                //判斷T0溢出標(biāo)志位是否為1
                {         
                        TF0=0;
                    i++;
         if(i==16)

                   f=mm[i];

                        TH0=f;  //定時器T1的高8位賦初值
            TL0=f;  //定時器T1的高8位賦初值
               
                        led=~led;
                        i=0;
         }
        }}
       

評分

參與人數(shù) 3黑幣 +30 收起 理由
還有誰? + 15
jinsheng7533967 + 10 回帖助人的獎勵!
lx駕 + 5 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:449525 發(fā)表于 2018-12-25 14:36 | 只看該作者
stc的那個isp下載器里面有詳細(xì)的設(shè)置和介紹,去官網(wǎng)上下載。對理解單片機(jī)也快。
回復(fù)

使用道具 舉報

地板
ID:452212 發(fā)表于 2018-12-25 15:52 來自手機(jī) | 只看該作者
shuisheng 發(fā)表于 2018-12-25 03:23
拿去吧,這有定時器不同時間的應(yīng)用!用數(shù)組給定時器值
#include
#define uchar unsigned char

謝謝啦
回復(fù)

使用道具 舉報

5#
ID:134430 發(fā)表于 2018-12-25 21:19 | 只看該作者
uchar TimeForSEG;
回復(fù)

使用道具 舉報

6#
ID:451718 發(fā)表于 2018-12-25 21:33 | 只看該作者
如果你剛接觸單片機(jī),在了解中斷之前去學(xué)定時器,這是一個好思路。  但是不建議你通過看程序去體會, 還是要找一本不是太老,并且又通俗的教程仔細(xì)研讀,光看程序,往往會走彎路。  http://www.torrancerestoration.com/bbs/dpj-26246-1.html
這個教程里面,關(guān)于定時器講得很透徹,不像高校的教材,照本宣科,看得人滿頭霧水。
一樓的程序也不錯,很單純的講解了定時器的用法。但是定時器的附初值的方式,很可能會誤導(dǎo)人的。
回復(fù)

使用道具 舉報

7#
ID:134430 發(fā)表于 2018-12-25 21:45 | 只看該作者
uchar TimeForSEG;    //定義一個專用于數(shù)碼管(SEG)的計時變量
void main()
{
    TMOD=0x01;      //定時器0工作方式
    TH0=oxfc;         //   ims定時,(晶振12M)
    TL0=0x18;

    if(TimeForSEG>=xx)     //xx:需要控制數(shù)碼管的時間
    {
        TimeForSEG=0;       //清0,為下次計時
         Wei=0;                 //打開數(shù)碼管位控制(低電平啟動)
    }
}

vod TimeCount() interrupt 1     //中斷程序
{
    TH)=0xfc;                         //定時器重裝初值
    TL)=0x18
    TimeForSEG++;                 //計時;ims+1
}

我一般是如上寫程序的,這樣做有一個好處,更改時間方便,如果要控制多個元件,只要增加TimeForXX就行。
回復(fù)

使用道具 舉報

8#
ID:454949 發(fā)表于 2018-12-25 22:22 | 只看該作者
樓主可以嘗試用lcd1602  挺方便的
回復(fù)

使用道具 舉報

9#
ID:371527 發(fā)表于 2018-12-26 07:25 | 只看該作者
定時器設(shè)置為2ms,對數(shù)碼管定時掃描顯示
回復(fù)

使用道具 舉報

10#
ID:452212 發(fā)表于 2018-12-26 15:50 | 只看該作者
wh8010jky 發(fā)表于 2018-12-25 21:45
uchar TimeForSEG;    //定義一個專用于數(shù)碼管(SEG)的計時變量
void main()
{

謝謝啦
回復(fù)

使用道具 舉報

11#
ID:452212 發(fā)表于 2018-12-27 16:42 | 只看該作者
wh8010jky 發(fā)表于 2018-12-25 21:45
uchar TimeForSEG;    //定義一個專用于數(shù)碼管(SEG)的計時變量
void main()
{

想問一下可以隨意得更改時間嗎?還是只能+1?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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