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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關于單片機控制數碼管閃爍問題 求思路

查看數: 4169 | 評論數: 10 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
Rei
發布時間: 2019-12-28 22:39

正文摘要:

新手想請假一下各位大佬,要怎么樣才能做到讓數碼管其中一位以1Hz閃動,其他三位正常顯示,已經卡在這個步驟好多天了,是需要用到中斷定時器什么的嗎,希望大佬可以講一下具體思路

回復

ID:89515 發表于 2019-12-29 21:53
這個最好還是用中斷,因為有長延時容易造成程序時間阻塞!!!
思路:就兩個方向解決
1:控制數據線,掃描線不變。這個樓上有人已經說過就是沒點通而已,需要寫兩個函數,一個正常的掃描函數;另一個根據設置位的標志將相應位寫全1或全0關閉(取決于共陰還是共陽),兩個函數交叉調用即可。調用時間就是頻率,自己決定。如果要退出設置狀態,就只調用正常掃描的函數。
2:數據線不變,控制掃描線。同樣設置位標志決定哪一位閃爍,相應位位選線的開啟用閃爍周期決定,
比如前500MS開啟,后500MS關閉。其它的和正常掃描一樣。多申明一組變量來賦給位選,不要直接控制,這樣就很方便了。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

ID:584814 發表于 2019-12-31 09:53
Rei 發表于 2019-12-29 12:43
大佬能說的再詳細一點嗎,看的有點懵= =

除了加分的那個思路,其他的很麻煩,貼程序的沒聽懂你的意思基本在忽悠。
ID:130230 發表于 2019-12-30 16:52
定時器中斷
ID:213173 發表于 2019-12-30 07:53
Rei 發表于 2019-12-29 12:43
大佬能說的再詳細一點嗎,看的有點懵= =

勘誤:
        if(Twinkle==1 && key==i)//閃爍標志與鍵值條件符合
                        P0=0x00;        //保持消隱狀態
        else P0=dis_buf;        //送段碼,dis_buf[ ]顯示緩存數組
ID:213173 發表于 2019-12-30 07:11
Rei 發表于 2019-12-29 12:43
大佬能說的再詳細一點嗎,看的有點懵= =

這是一個動態顯示的數碼管驅動程序
void display()
{
        static uchar i=0;//靜態變量
        P0=0x00;                        //消隱
        switch(i)        //送位碼
        {
                case 0: led138a=0;led138b=0;led138c=0; break;
                case 1: led138a=1;led138b=0;led138c=0; break;
                case 2: led138a=0;led138b=1;led138c=0; break;
                case 3: led138a=1;led138b=1;led138c=0; break;
                case 4: led138a=0;led138b=0;led138c=1; break;
                case 5: led138a=1;led138b=0;led138c=1; break;
                case 6: led138a=0;led138b=1;led138c=1; break;
                case 7: led138a=1;led138b=1;led138c=1; break;
        }
        P0=dis_buf;        //送段碼
        i++;
        i%=8;
}
在上述程序基礎改為鍵控逐位閃爍的數碼管驅動程序
void display()
{
        static uchar i=0;//靜態變量
        P0=0x00;                        //消隱
        switch(i)        //送位碼
        {
                case 0: led138a=0;led138b=0;led138c=0; break;
                case 1: led138a=1;led138b=0;led138c=0; break;
                case 2: led138a=0;led138b=1;led138c=0; break;
                case 3: led138a=1;led138b=1;led138c=0; break;
                case 4: led138a=0;led138b=0;led138c=1; break;
                case 5: led138a=1;led138b=0;led138c=1; break;
                case 6: led138a=0;led138b=1;led138c=1; break;
                case 7: led138a=1;led138b=1;led138c=1; break;
        }
        if(Twinkle==1 && key==i)//閃爍標志與鍵值條件符合
                        P0=0xff;        //保持消隱狀態
        else P0=dis_buf;        //送段碼,dis_buf[ ]顯示緩存數組
        i++;
        i%=8;
}
ID:89515 發表于 2019-12-29 22:13
說明:以上兩種方法都是要先在中斷中設置閃爍標志的,閃爍標志是否有效  由是否進入設置狀態的標志決定。所以其實寫一個函數更方便,但是你必須先理解邏輯是什么樣的。
ID:384312 發表于 2019-12-29 18:49
首先確定數碼管共陰還是共陽,然后確定位選和段選IO口,再考慮動態數碼管的消影,最后結合定時器完事
ID:676374 發表于 2019-12-29 12:43
wulin 發表于 2019-12-29 07:09
樓主只要搞清楚數碼管在什么條件下可以點亮,什么條件下不亮,再按0.5秒間隔交替提供這兩個條件不就成了? ...

大佬能說的再詳細一點嗎,看的有點懵= =
ID:213173 發表于 2019-12-29 07:09
樓主只要搞清楚數碼管在什么條件下可以點亮,什么條件下不亮,再按0.5秒間隔交替提供這兩個條件不就成了?如果對閃動周期要求精確當然使用定時器中斷為佳。
ID:437615 發表于 2019-12-28 23:30
寫兩個顯示函數,把它們分開來顯示

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美v | 国产高清精品一区 | 在线观看中文字幕 | 国产wwwcom | 在线观看你懂的网站 | 欧美一区二区小视频 | 亚洲国产欧美在线 | 久久91av| 精品欧美一区二区三区久久久 | 日本一级淫片免费啪啪3 | 国产日韩欧美中文字幕 | 欧美一级淫片007 | 日本在线播放一区二区 | 羞羞视频在线观看网站 | 综合久久综合久久 | 欧美精品久久久 | 久久99久久久久 | 久久伦理电影 | 国产精品永久久久久久久www | 天堂成人国产精品一区 | 天天色天天射天天干 | 99精品国产一区二区三区 | 狠狠干天天干 | 精品中文字幕一区二区三区 | 欧美videosex性极品hd | 狠狠操狠狠操 | 国产成人综合一区二区三区 | 在线久草 | 精品久久精品 | 亚洲视频手机在线 | 久久精品成人 | 久久一区二区av | 国产精品久久国产精品 | 精品一区二区三区四区在线 | 成人综合一区二区 | 一区免费视频 | 国产999精品久久久久久 | 天天看天天爽 | 天天玩天天干天天操 | 人人干97| 亚洲人人 |