全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2182
推到 Plurk!
推到 Facebook!

請問一下,關於4個七段顯示器如何做記數器用

答題得分者是:阿信
sharkneil
一般會員


發表:27
回覆:33
積分:12
註冊:2005-01-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-04 13:35:19 IP:203.71.xxx.xxx 未訂閱
現在我的顯示器是一個4個數字連在一起的七段顯示器,共10隻腳,A~G,S1~S4,我經過7448做數字控制,把7448的ABCD送到DSP做控制,接下來我應該要把S1~S4也送到DSP,顯示第幾個燈亮,那我的問題是,現在4個LED都是同時在亮,而且數字都依樣,假如我要設計一個可以計數用的,如何設計??我看書是說到輪流去讓S1~S4亮,再分別送數直給S1~S4,流程大概要怎麼寫呢?還有如何改善亮度問題。謝謝

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-04 15:13:58 IP:211.22.xxx.xxx 未訂閱
利用視覺暫留,輪流讓S1~S4亮.掃瞄時間快於幾十ms應該就OK了 亮度不夠應該是電流不太夠,降低你串聯的電阻值就ok 計數功能: 1. 設一變數持續計數 2. 計數值/10,餘數送個位數=>商/10,餘數送十位數 以此類推 3. 再將這些值送到LED顯示
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-04 16:21:13 IP:211.21.xxx.xxx 未訂閱
7448是共陰7段顯示器驅動IC S1~S4接負才會亮 亮度問題: 因為4組LED掃描顯示  每個只得到1/4功率  電阻換100歐姆 (如果DSP的輸出電流不夠 就用電晶體驅動)    要顯示的初值設為1234 SEG:要顯示的數字 對應到I/O (送到7448的ABCD,只用低四位元) COM:掃描的位數 對應到I/O (送到七段顯示器的S1~S4,只用低四位元)    
    char DispData[4]={1,2,3,4};
unsigned long DispNum=1234;
char ScanCnt=0;
char ScanLine=0xF7;    void ScanLED() {
//LED掃描 每隔一段固定時間呼叫一次 一般約1~5mS
        SEG=DispData[ScanCnt];                        // 顯示
        COM=ScanLine;                                //            ScanCnt++;                                  // 讓ScanCnt在0~3變化
        if (ScanCnt>=4) ScanCnt=0;                //            ScanLine>>=1;                                // 讓ScanLine在0xF7,0x7B,0x3D,0x1E變化
        if (ScanLine<0x10) ScanLine=0xF7;        // 取低四位元 7:0111 B:1011 D:1101 E:1110
                                                // 一次只有一位是 "0"
}    void UpCounter() {
//上數計數 每隔一段固定時間呼叫一次 或收到按鍵呼叫一次 
        unsigned long DispNum_Temp;            DispNum++;                                // 
        if (DispNum>9999) DispNum=0;                // 設定最大數為9999            DispNum_Temp=DispNum;                        //             DispData[3]=DispNum_Temp;                // 個位數
        
        DispNum_Temp/=10;                        // 除10
        DispData[2]=DispNum_Temp;                // 十位數            DispNum_Temp/=10;                        // 除10
        DispData[1]=DispNum_Temp;                // 百位數            DispNum_Temp/=10;                        // 除10
        DispData[0]=DispNum_Temp;                // 千位數
}    
------------------- 美好的事物 稍縱即逝
系統時間:2024-05-05 12:50:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!