欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

4四位數(shù)碼管帶時(shí)鐘冒號(hào),冒號(hào)閃爍問題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


我思考了半天,打出了冒號(hào)閃爍代碼,測(cè)試發(fā)現(xiàn)每分鐘只閃57下。
一開始直接用延時(shí)500毫秒循環(huán)閃,發(fā)現(xiàn)搶了數(shù)碼管的動(dòng)態(tài)掃描時(shí)間,造成數(shù)碼管閃爍。
這里是插入在動(dòng)態(tài)掃描里的,顯示效果都還算理想,只是少了幾次閃爍。
自學(xué)的,不怎么會(huì)跳延時(shí)和keil看單步時(shí)間……
想問問黑友盡善的閃爍辦法。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2022-8-10 17:00 | 只看該作者
冒號(hào)是哪根腳/段位?
假設(shè)是W3的dp段

  1. P1=0xFF;w3=1;P1=smgduan[shi%16];
  2. if(ss>=500)
  3. {
  4.         ss==0;
  5.         if(flash)
  6.         {
  7.                 P1 &= 0x7F;
  8.         }
  9.         flash = !flash;
  10. }else{
  11.         ss+=ms*4;
  12. }
  13. delay(ms);w3=0;//....
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

板凳
ID:1023753 發(fā)表于 2022-8-10 17:06 | 只看該作者
定時(shí)器不是好一點(diǎn),不占用時(shí)間
回復(fù)

使用道具 舉報(bào)

地板
ID:139866 發(fā)表于 2022-8-10 17:35 | 只看該作者
要想準(zhǔn)確就用定時(shí)器
回復(fù)

使用道具 舉報(bào)

5#
ID:57657 發(fā)表于 2022-8-10 18:00 | 只看該作者
你要用定時(shí)器中斷進(jìn)行動(dòng)態(tài)掃描和計(jì)時(shí)。
回復(fù)

使用道具 舉報(bào)

6#
ID:624769 發(fā)表于 2022-8-10 18:06 | 只看該作者
這要具體情況具體分析,不能任死理的。
一般如果時(shí)鐘點(diǎn) 是獨(dú)立引腳的話,我比較習(xí)慣用 DS1307 的 SQW 引腳輸出 1秒 的脈沖 來驅(qū)動(dòng)。
而如果時(shí)鐘點(diǎn) 是和其他段是公用引腳,比如,在位2的 小數(shù)點(diǎn)。 那么會(huì) 利用定時(shí)器  每 500ms 翻轉(zhuǎn)一次 Flag_TimePiont 標(biāo)志, 在數(shù)碼管 動(dòng)態(tài)掃描 顯示  位2 數(shù)字的時(shí)候:
if(Flag_TimePiont)   Disp[2] |= 0x80;
else Disp[2] &= 0x7f;
這樣的方法。
回復(fù)

使用道具 舉報(bào)

7#
ID:213173 發(fā)表于 2022-8-10 20:54 | 只看該作者
這個(gè)程序里有關(guān)于數(shù)碼管閃點(diǎn)的代碼,可以借鑒用于冒號(hào)閃爍。
4位數(shù)碼管時(shí)鐘溫度表仿真.rar (175.43 KB, 下載次數(shù): 28)

回復(fù)

使用道具 舉報(bào)

8#
ID:367840 發(fā)表于 2022-8-11 09:08 | 只看該作者
可以用定時(shí)器延伸出來做一個(gè)軟定時(shí)器,然后置標(biāo)志位進(jìn)行準(zhǔn)確定時(shí)
回復(fù)

使用道具 舉報(bào)

9#
ID:16255 發(fā)表于 2022-8-11 10:35 | 只看該作者
這種閃爍我會(huì)用定時(shí)器中斷,不占用系統(tǒng)延時(shí)。他在閃爍的話給我的信息就是系統(tǒng)在運(yùn)行。至于一分鐘閃多少下,是57下還是63下,其實(shí)并不是那么重要的了。
回復(fù)

使用道具 舉報(bào)

10#
ID:584814 發(fā)表于 2022-8-11 12:05 | 只看該作者
用個(gè)定時(shí)器之類的,約500ms滅,然后時(shí)鐘變秒時(shí)亮就可以。
回復(fù)

使用道具 舉報(bào)

11#
ID:796012 發(fā)表于 2022-8-11 12:17 | 只看該作者
lkc8210 發(fā)表于 2022-8-10 17:00
冒號(hào)是哪根腳/段位?
假設(shè)是W3的dp段

感謝黒友回復(fù)。。mh
回復(fù)

使用道具 舉報(bào)

12#
ID:796012 發(fā)表于 2022-8-11 12:18 | 只看該作者
haiyang201 發(fā)表于 2022-8-10 17:06
定時(shí)器不是好一點(diǎn),不占用時(shí)間

感謝黒友回復(fù)。。自學(xué)的技術(shù)不是很會(huì)
回復(fù)

使用道具 舉報(bào)

13#
ID:796012 發(fā)表于 2022-8-11 12:18 | 只看該作者
天ノ憶 發(fā)表于 2022-8-10 17:35
要想準(zhǔn)確就用定時(shí)器

感謝黒友回復(fù)。
回復(fù)

使用道具 舉報(bào)

14#
ID:796012 發(fā)表于 2022-8-11 12:19 | 只看該作者
npn 發(fā)表于 2022-8-10 18:00
你要用定時(shí)器中斷進(jìn)行動(dòng)態(tài)掃描和計(jì)時(shí)。

感謝黒友回復(fù)。。自學(xué)的技術(shù),還不是很熟悉
回復(fù)

使用道具 舉報(bào)

15#
ID:796012 發(fā)表于 2022-8-11 12:20 | 只看該作者
188610329 發(fā)表于 2022-8-10 18:06
這要具體情況具體分析,不能任死理的。
一般如果時(shí)鐘點(diǎn) 是獨(dú)立引腳的話,我比較習(xí)慣用 DS1307 的 SQW 引腳 ...

感謝黒友回復(fù)。。那個(gè)是SQW引腳
回復(fù)

使用道具 舉報(bào)

16#
ID:796012 發(fā)表于 2022-8-11 12:20 | 只看該作者
wulin 發(fā)表于 2022-8-10 20:54
這個(gè)程序里有關(guān)于數(shù)碼管閃點(diǎn)的代碼,可以借鑒用于冒號(hào)閃爍。

感謝黒友回復(fù)。
回復(fù)

使用道具 舉報(bào)

17#
ID:796012 發(fā)表于 2022-8-11 12:20 | 只看該作者
董云交 發(fā)表于 2022-8-11 09:08
可以用定時(shí)器延伸出來做一個(gè)軟定時(shí)器,然后置標(biāo)志位進(jìn)行準(zhǔn)確定時(shí)

感謝黒友回復(fù)。
回復(fù)

使用道具 舉報(bào)

18#
ID:796012 發(fā)表于 2022-8-11 12:21 | 只看該作者
mengsiu 發(fā)表于 2022-8-11 10:35
這種閃爍我會(huì)用定時(shí)器中斷,不占用系統(tǒng)延時(shí)。他在閃爍的話給我的信息就是系統(tǒng)在運(yùn)行。至于一分鐘閃多少下, ...

感謝黒友回復(fù)。。要精確閃爍哦
回復(fù)

使用道具 舉報(bào)

19#
ID:796012 發(fā)表于 2022-8-11 12:23 | 只看該作者
lkc8210 發(fā)表于 2022-8-10 17:00
冒號(hào)是哪根腳/段位?
假設(shè)是W3的dp段

冒號(hào)是哪根腳/段位?
假設(shè)是W3的dp段

P1=0xFF;w3=1;P1=smgduan[shi%16];
if(ss>=500)
{
        ss==0;
        if(flash)
        {
                P1 &= 0x7F;
        }
        flash = !flash;
}else{
        ss+=ms*4;
}
delay(ms);w3=0;//....



用的是單獨(dú)帶冒號(hào)的數(shù)碼管,不是小數(shù)點(diǎn)分出的;其實(shí)小數(shù)點(diǎn)分出可以節(jié)省硬件連接
回復(fù)

使用道具 舉報(bào)

20#
ID:401564 發(fā)表于 2022-8-11 13:36 | 只看該作者
Miao在定時(shí)器中斷中改變,1秒鐘取反一次
OUT=..........;                   //顯示,冒號(hào)不亮
if(Miao)OUT&=.....;//冒號(hào)亮燈
如果你不會(huì)寫一個(gè)一秒鐘的定時(shí)器,那.............

回復(fù)

使用道具 舉報(bào)

21#
ID:624769 發(fā)表于 2022-8-11 14:54 來自觸屏版 | 只看該作者
玉萌業(yè)余發(fā)展 發(fā)表于 2022-8-11 12:20
感謝黒友回復(fù)。。那個(gè)是SQW引腳

時(shí)鐘點(diǎn)是獨(dú)立引腳控制的話,建議用ds1307替代ds1302,因?yàn)閐s1307有sqw引腳,可直接控制時(shí)鐘點(diǎn),給07地址分別寫入0x00,0x80,0x10可控制時(shí)鐘點(diǎn)亮,滅,閃。
回復(fù)

使用道具 舉報(bào)

22#
ID:796012 發(fā)表于 2022-8-11 17:59 | 只看該作者
wulin 發(fā)表于 2022-8-10 20:54
這個(gè)程序里有關(guān)于數(shù)碼管閃點(diǎn)的代碼,可以借鑒用于冒號(hào)閃爍。


看,按你的程序修改了單按鍵調(diào)時(shí)。就是單片機(jī)延時(shí)得調(diào)精準(zhǔn)些
回復(fù)

使用道具 舉報(bào)

23#
ID:796012 發(fā)表于 2022-8-11 18:00 | 只看該作者
188610329 發(fā)表于 2022-8-11 14:54
時(shí)鐘點(diǎn)是獨(dú)立引腳控制的話,建議用ds1307替代ds1302,因?yàn)閐s1307有sqw引腳,可直接控制時(shí)鐘點(diǎn),給07地址 ...

好,有錢再買回來研究
回復(fù)

使用道具 舉報(bào)

24#
ID:796012 發(fā)表于 2022-8-11 18:01 | 只看該作者
Y_G_G 發(fā)表于 2022-8-11 13:36
Miao在定時(shí)器中斷中改變,1秒鐘取反一次
OUT=..........;                   //顯示,冒號(hào)不亮
if(Miao)OUT&=.....;//冒 ...

修改了一個(gè)。本來就學(xué)著玩得
回復(fù)

使用道具 舉報(bào)

25#
ID:401564 發(fā)表于 2022-8-12 07:24 | 只看該作者
玉萌業(yè)余發(fā)展 發(fā)表于 2022-8-11 17:59
看,按你的程序修改了單按鍵調(diào)時(shí)。就是單片機(jī)延時(shí)得調(diào)精準(zhǔn)些

你這個(gè)代碼,寫得讓人耳目一新啊,有黑客帝國(guó)風(fēng)范
回復(fù)

使用道具 舉報(bào)

26#
ID:796012 發(fā)表于 2022-8-13 10:28 | 只看該作者
Y_G_G 發(fā)表于 2022-8-12 07:24
你這個(gè)代碼,寫得讓人耳目一新啊,有黑客帝國(guó)風(fēng)范

其實(shí)我什么都不懂
回復(fù)

使用道具 舉報(bào)

27#
ID:401564 發(fā)表于 2022-8-13 14:50 | 只看該作者

話不是這么說的
你多少是會(huì)點(diǎn)的
雖說不是一定要像人家科班出身那樣,寫出嚴(yán)謹(jǐn)?shù)囊?guī)范的C語(yǔ)言代碼出來
但至少,一個(gè)語(yǔ)句占一行,這一點(diǎn)是要的
因?yàn)榇蠹叶际沁@樣的,如果你要貼代碼出來,多少是要考慮一下別人能不能看得明白你的代碼
像你這種代碼,很多時(shí)候,過一段時(shí)間,只怕是你自己都不知道自己代碼是什么意思了
回復(fù)

使用道具 舉報(bào)

28#
ID:213173 發(fā)表于 2022-8-14 07:21 | 只看該作者
玉萌業(yè)余發(fā)展 發(fā)表于 2022-8-11 17:59
看,按你的程序修改了單按鍵調(diào)時(shí)。就是單片機(jī)延時(shí)得調(diào)精準(zhǔn)些

單鍵調(diào)時(shí),適用帶冒號(hào)時(shí)鐘專用數(shù)碼管。


  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define key_S 3                                        //宏定義短按(約15ms)
  5. #define key_L key_S*40                        //宏定義長(zhǎng)按(約600ms)
  6. #define key_I key_S*20                        //宏定義長(zhǎng)按連+間隔(約300ms)

  7. sbit K1=P2^4;//連接按鍵
  8. sbit DP=P0^7;//連接冒號(hào)

  9. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽(yáng)LED段碼表
  10. uchar displayData[4];//顯示數(shù)據(jù)緩存
  11. char shi=12,fen=0,sec=0;//時(shí),分,秒
  12. uchar Cnt5ms;//5ms時(shí)基
  13. uchar KeySec;//鍵值
  14. uint num=0;//計(jì)數(shù)
  15. bit flashing=0;//閃爍標(biāo)志

  16. //定時(shí)器初始化程序
  17. void Timer0Init()//5毫秒@12.000MHz
  18. {
  19.         TMOD=0x01;//定時(shí)器T0方式1
  20.         TH0=(65536-5000)/256;
  21.         TL0=(65536-5000)%256;
  22.         TF0=0;//中斷請(qǐng)求清0
  23.         TR0=1;//啟動(dòng)T0
  24. }

  25. void keyscan()
  26. {
  27.         static unsigned int time=0;//計(jì)數(shù)變量
  28.         if(!K1)//按鍵按下
  29.         {
  30.                 time++;
  31.                 if(time>=key_L)//長(zhǎng)按
  32.                 {
  33.                         switch(KeySec)
  34.                         {
  35.                                 case 1: shi++;if(shi>23)shi=0; break;
  36.                                 case 2: fen++;if(fen>59)fen=0; break;
  37.                         }
  38.                         time=key_I;//連+間隔
  39.                         num=1000;//自復(fù)位變量賦值(5秒)
  40.                 }
  41.         }
  42.         else                                //松手
  43.         {
  44.                 if(time>key_S && time<key_I)//短按
  45.                 {
  46.                         KeySec++;
  47.                         if(KeySec>2)
  48.                         {
  49.                                 KeySec=0;
  50.                                 Cnt5ms=0;
  51.                                 sec=0;
  52.                         }
  53.                         num=1000;//自復(fù)位變量賦值(5秒)
  54.                 }
  55.                 time=0;

  56.         }
  57. }

  58. void display()//顯示
  59. {
  60.         static uchar i=0;
  61.         displayData[0] = tab[shi/10%10];
  62.         displayData[1] = tab[shi%10];
  63.         displayData[2] = tab[fen/10%10];
  64.         displayData[3] = tab[fen%10];

  65.         P2&=0xf0;//消隱
  66.         if(KeySec==0)
  67.                 P0=displayData[i];

  68.         if(KeySec==1)
  69.         {
  70.                 if(flashing && (i==0||i==1) && K1)
  71.                         P0=0xff;//時(shí)調(diào)整閃爍
  72.                 else P0=displayData[i];
  73.         }

  74.         if(KeySec==2)
  75.         {
  76.                 if(flashing && (i==2||i==3) && K1)
  77.                         P0=0xff;//分調(diào)整閃爍
  78.                 else P0=displayData[i];
  79.         }
  80.         P2|=0x01<<i;
  81.         i=++i%4;
  82. }


  83. void main()//主函數(shù)
  84. {
  85.         Timer0Init();//初始化定時(shí)器
  86.         while(1)
  87.         {
  88.                 if(TF0)//查詢定時(shí)器中斷請(qǐng)求位
  89.                 {
  90.                         TF0=0;
  91.                         TH0=(65536-5000)/256;//5ms
  92.                         TL0=(65536-5000)%256;

  93.                         Cnt5ms++;
  94.                         if(KeySec!=0)
  95.                         {
  96.                                 num--;
  97.                                 if(num==0)//按鍵停止操作5秒自動(dòng)恢復(fù)正常顯示
  98.                                 {
  99.                                         KeySec=0;
  100.                                         Cnt5ms=0;
  101.                                         sec=0;
  102.                                 }
  103.                                 if(Cnt5ms%50==0)   //0.25s 快閃
  104.                                         flashing=~flashing;
  105.                         }
  106.                         else if(Cnt5ms%100==0)//0.5s  慢閃
  107.                                         flashing=~flashing;

  108.                         if(Cnt5ms==200)//1s
  109.                         {
  110.                                 Cnt5ms=0;
  111.                                 sec++;
  112.                                 if(sec>=60)
  113.                                 {
  114.                                         sec=0;
  115.                                         fen++;
  116.                                         if(fen>=60)
  117.                                         {
  118.                                                 fen=0;
  119.                                                 shi++;
  120.                                                 if(shi>23)
  121.                                                         shi=0;
  122.                                         }
  123.                                 }
  124.                         }
  125.                         keyscan();                        //按鍵掃描
  126.                         display();                        //數(shù)碼管顯示
  127.                         if(KeySec==0)
  128.                                 DP=flashing;        //閃冒號(hào) 表示走時(shí)
  129.                         else DP=0;
  130.                 }
  131.         }
  132. }
復(fù)制代碼
4位數(shù)碼管時(shí)鐘仿真.rar (125.11 KB, 下載次數(shù): 15)


回復(fù)

使用道具 舉報(bào)

29#
ID:1042050 發(fā)表于 2022-8-14 10:14 | 只看該作者
調(diào)整延時(shí)時(shí)間
回復(fù)

使用道具 舉報(bào)

30#
ID:796012 發(fā)表于 2022-8-14 13:10 | 只看該作者
Y_G_G 發(fā)表于 2022-8-13 14:50
話不是這么說的
你多少是會(huì)點(diǎn)的
雖說不是一定要像人家科班出身那樣,寫出嚴(yán)謹(jǐn)?shù)囊?guī)范的C語(yǔ)言代碼出來

復(fù)制修改的,改好的就湊一起了
回復(fù)

使用道具 舉報(bào)

31#
ID:796012 發(fā)表于 2022-8-14 13:11 | 只看該作者
wulin 發(fā)表于 2022-8-14 07:21
單鍵調(diào)時(shí),適用帶冒號(hào)時(shí)鐘專用數(shù)碼管。

下載了,慢慢玩
回復(fù)

使用道具 舉報(bào)

32#
ID:796012 發(fā)表于 2022-8-14 13:13 | 只看該作者
sheep5618 發(fā)表于 2022-8-14 10:14
調(diào)整延時(shí)時(shí)間

if(sec &1)ss=1;else ss=0;/*1s一翻*/
這個(gè)一秒一翻轉(zhuǎn)還實(shí)在,直接關(guān)系1302
編譯不了0.5要不然就按秒亮滅了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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