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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9079|回復: 4
收起左側

有關數碼管動態掃描的一個問題

[復制鏈接]
ID:71235 發表于 2014-12-28 00:00 | 顯示全部樓層 |閱讀模式
   數碼管動態掃描幾乎是所有單片機入門書籍必寫的章節了,程序其實很簡單,10句以內就可解決(C51)。似乎是太簡單太基礎了,幾乎所有的例程都沒不曾提到:在一個大型的、運行時間較長的程序里實現效果如何?
   其實在做那個溫控器的時候就已經碰到這個問題,那次也是第一次用數碼管動態掃描技術,以前都是用液晶顯示器的,無論是段式的還是點陣式的,這個問題就是:數碼管顯示的時候各位顯示亮度不完全一樣,總是最高位顯示的亮度最高,其他幾位較暗,但是亮度比較一致,這個問題困擾了我一段時間,后來實際用的時候把最高位顯示給屏蔽了(確實也用不到這一位,但是掃描還是要掃到的),所有這個問題算是忽略過去了。但是此次做調頻收音機時又一次碰到了。程序流程大致如下:共有兩個模塊用到數碼管顯示,一個是顯示調頻頻率,另一個是顯示當前音量值,由音量控制按鈕來控制這兩個模塊的輪流調用,實際調試時發現:輪到音量顯示的時候,兩位數字亮度是均勻的,而當由頻率顯示的時候,最高位數字亮度最高,其他位要暗一半以上,無論是在程序中多處安插掃描程序或者改變位掃描間隔都不能改變這一情況。經過兩個模塊的比較,發現了這兩段程序的重大不同點,頻率顯示模塊實際是先從tea5767中讀出PLL數據,然后經過PLL到頻率的運算,再經過二進制到BCD轉換,最后送顯示緩沖,期間用到了大量的乘除、浮點運算,眾所周知51單片機的浮點運算能力是很差的,這個從加載浮點運算后程序所占空間大幅度增加就可以看出來,也就是說,此處的頻率運算時間是很長的,而音量顯示模塊只是從ram中取了1字節做了一下二進制到BCD的轉換,顯然速度要快的多。說到這里,其實就很明白了,最高位顯示更亮的原因就是由掃描程序運行間隔過長造成的!這是由動態掃描程序缺陷引起的,因為這種掃描程序沒有鎖存的功能,程序需要不停的掃描,才能保證顯示效果,看這段典型的程序:
uchar shift ;
uchar count=0 ;
uchar k;
shift=0xfe;
P2=0xff ;
for(k=0; k<8; k++)
{  
  P0=dis_code[dis_buf[k]];
  P2=shift;
  shift=_crol_(shift,1);   //左移一位,選中更高的數碼管
  delayms(1);
}
    可以看到,每次調用這段掃描程序后,數碼管的位選線就停在了最高位,如果兩次調用的間隔過長,就會造成最高位停留時間比其他位更多,而顯示亮度恰巧與位選停留的時間長短有關!
    解決方法非常簡單,在位選循環結束后加了P2=0xff;關閉了所有數碼管的顯示,保證各位數碼管的顯示時間均等。經實驗證明,這個方法是對的!
    之所以沒人提到這個問題(也許真是我看的書太少,沒發現其實人家也是這么解決的??),我想現在大家做東西的時候大都是首選液晶顯示器(價格也不貴,20來塊錢,消費的起),或者使用的專用的顯示芯片(程序無須時時掃描數碼管),即使是為了節約成本,也使用了數碼管動態掃描,也是因為主要用在了諸如“鬧鐘”等沒有多少數學運算的項目上了。

回復

使用道具 舉報

ID:72128 發表于 2015-1-13 17:44 | 顯示全部樓層
回去試一試
回復

使用道具 舉報

ID:72179 發表于 2015-1-13 21:21 | 顯示全部樓層
能貼一個完整的程序最好了
回復

使用道具 舉報

ID:72163 發表于 2015-1-18 09:29 | 顯示全部樓層
在大一些的程序里面做動態顯示要換一種思路的。一般不能放到主函數里面,正如樓主所說的,函數復雜了之后就不能保證每一個數碼管亮的時間是均等的。樓主的方法雖然解決了自己的問題,但是如果別人的程序和樓主的在運行時間上差別很大的話可能也無法通用。而且樓主的方法也無法確保每一個數碼管亮的時間是均等的,只能保證視覺上基本一致。
處理這樣的問題一般就得用定時器了,用定時器控制可以保證時間絕對的均等(在有限的精度范圍內,絕對的均等誰也達不到)。數碼管驅動程序在定時器中斷里處理,用一些控制標志去處理顯示順序和效果,可以很簡單的實現閃爍,消隱等效果。程序我發到別的論壇上去了,有時間我找找奉獻出來。需要的話記得提醒我啊。
回復

使用道具 舉報

ID:354704 發表于 2018-6-19 21:35 | 顯示全部樓層
jishuaihu 發表于 2015-1-18 09:29
在大一些的程序里面做動態顯示要換一種思路的。一般不能放到主函數里面,正如樓主所說的,函數復雜了之后就 ...

朋友,那個程序找出來沒有,有的話發一個出來唄!謝謝。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av永久 | 国产视频精品视频 | 黄色毛片网站在线观看 | 一级一级毛片免费看 | 久久国产精彩视频 | 国产欧美一区二区久久性色99 | 午夜影院在线观看版 | 99在线播放 | 亚洲欧美一区二区在线观看 | 精品国产91乱码一区二区三区 | 草久久| 欧美一级一区 | 久久国产欧美一区二区三区精品 | 日韩一区二区三区视频在线播放 | 自拍亚洲 | 亚洲国产网 | 992tv人人草| 中文字幕在线一区二区三区 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 国产精品久久久亚洲 | 国产精品久久国产精品 | 午夜精品久久久久久久久久久久久 | 天天摸天天看 | 日韩福利在线观看 | 天天干夜夜操 | 一级黄色淫片 | 日本午夜一区 | a欧美| av在线免费网 | 99精品欧美一区二区三区 | 中文字幕一级 | 99福利视频| 中文字幕成人av | 欧美a v在线 | 国产成人综合久久 | 日韩欧美一区二区在线播放 | 丁香一区二区 | 激情 亚洲| 中文字幕国产日韩 | 小视频你懂得 | 成人h视频在线 |