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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3432|回復: 14
打印 上一主題 下一主題
收起左側

求助:數(shù)碼管消影問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:1059305 發(fā)表于 2023-1-6 10:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目的:通過按下按鍵作為外部的中斷輸入信號,通過數(shù)碼管顯示中斷次數(shù)。
問題:目前在PROTEUS仿真上能正常實現(xiàn)功能,但在實物上出現(xiàn)類似不能消影的問題,當按下按鍵后,數(shù)碼管全亮(會一直顯示8888),計數(shù)功能也出現(xiàn)問題,按下按鍵后數(shù)碼管4位同時改變(在顯示8888時,可以勉強觀察到數(shù)字有在變化)。


  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4.        
  5. //P0為SA-SH      P1為C0-C3

  6. sbit K1=P3^2;
  7. uchar  dis_code[11]={0xc0,0xf9,0xa4,0xb0,        // 0, 1, 2, 3
  8.                                                     0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};                // 4, 5, 6, 7, 8, 9, off
  9. uchar  buf[4];
  10. uint cnt=0;
  11.                                                                
  12. void delay(uchar ms)
  13. {
  14.         while(ms--)
  15.                 ;
  16. }


  17. void initial()
  18. {
  19.         IT0=1;
  20.         EX0=1;
  21.         EA=1;
  22. }



  23. int main()
  24. {
  25.         initial();
  26.         P0=0xff;
  27.         P1=0;
  28.         buf[0]=dis_code[0];
  29.         buf[1]=dis_code[0];
  30.         buf[2]=dis_code[0];
  31.         buf[3]=dis_code[0];
  32.        
  33.         while(1)
  34.         {
  35.                 P0=buf[3];//顯示千位
  36.                 P1=0x01;
  37.                 delay(5);
  38.                 P0=0xff;
  39.                
  40.                 P0=buf[2];//顯示百位
  41.                 P1=0x02;
  42.                 delay(5);
  43.                 P0=0xff;
  44.                
  45.                 P0=buf[1];//顯示十位
  46.                 P1=0x04;
  47.                 delay(5);
  48.                 P0=0xff;
  49.                
  50.                 P0=buf[0];//顯示個位
  51.                 P1=0x08;
  52.                 delay(5);
  53.                 P0=0xff;
  54.                
  55.         }
  56.        
  57. }

  58. void init0() interrupt 0

  59. {
  60.         EX0=0;
  61. if(K1==0)
  62. {
  63.                 cnt++;
  64.                 if(cnt>9999)
  65.                 {
  66.                         cnt=0;
  67.                 }
  68.         }
  69.        
  70.         buf[3]=dis_code[cnt/1000];  //千位
  71.         buf[2]=dis_code[cnt%1000/100];//百位
  72.         buf[1]=dis_code[cnt%100/10];//十位
  73.         buf[0]=dis_code[cnt%10];//個位
  74.         EX0=1;
  75.        
  76. }
復制代碼



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

使用道具 舉報

沙發(fā)
ID:680980 發(fā)表于 2023-1-6 16:00 | 只看該作者
加入P0消隱試試
if(k1==0)
{
P0=0XFF;
}
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 2023-1-6 16:37 | 只看該作者
用外部中斷讀取按鍵信號,消抖是個問題。仿真按鍵不會抖動,如果用簡單的延時消抖方法會導致動態(tài)數(shù)碼管顯示停頓。實際電路會因為按鍵抖動,cnt會加不確定的值。給你程序修改了,你試試。
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int      
  4. //P0為SA-SH      P1為C0-C3
  5. sbit K1=P3^2;
  6. uchar  dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
  7. 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};     // 4, 5, 6, 7, 8, 9, off

  8. uchar  buf[4];
  9. uint cnt=0;
  10.                                                                
  11. void delay(uint ms)
  12. {
  13.          while(ms--);               
  14. }
  15. void initial()
  16. {
  17.         IT0 = 1;
  18.         EX0 = 1;
  19.         EA = 1;
  20. }
  21. void main()
  22. {
  23.         uchar i;
  24.         initial();      
  25.         while(1)
  26.         {
  27.                 buf[0]=dis_code[cnt/1000%10];  //千位
  28.                 buf[1]=dis_code[cnt/100%10];//百位
  29.                 buf[2]=dis_code[cnt/10%10];//十位
  30.                 buf[3]=dis_code[cnt%10];//個位
  31.                 P1&=0xf0;
  32.                 P0=buf[i];
  33.                 P1|=0x01<<i;
  34.                 if(++i>3)
  35.                         i=0;
  36.                 delay(100);
  37.         }
  38. }

  39. void init0() interrupt 0
  40. {
  41.         cnt++;
  42.         if(cnt>9999)
  43.         {
  44.                 cnt=0;
  45.         }
  46. }
復制代碼



回復

使用道具 舉報

地板
ID:1059305 發(fā)表于 2023-1-6 17:06 | 只看該作者
景生2020 發(fā)表于 2023-1-6 16:00
加入P0消隱試試
if(k1==0)
{

還是不行,我想應該不是消影的問題,如果是消影的問題的話,當我觸發(fā)中斷時數(shù)碼管的千百十應該是不變的,只有個位的會出現(xiàn)問題,但現(xiàn)在當我觸發(fā)中斷時,數(shù)碼管的千百十個位都出現(xiàn)同樣的數(shù)字(數(shù)碼管還是顯示8888)只能勉強通過亮暗觀察到數(shù)碼管的數(shù)字發(fā)生變化。
回復

使用道具 舉報

5#
ID:142045 發(fā)表于 2023-1-6 19:31 | 只看該作者
數(shù)碼管動態(tài)顯示有閃爍主要是由于延時時間選擇不當造成的 主要檢查延時方面的語句
回復

使用道具 舉報

6#
ID:1060541 發(fā)表于 2023-1-6 21:22 | 只看該作者
每次顯示完后,加個1us延遲試試呢
回復

使用道具 舉報

7#
ID:624769 發(fā)表于 2023-1-6 22:17 來自觸屏版 | 只看該作者
你消了個寂寞,把所有的p0=0xff,都改成p1=0x00才是消影。
回復

使用道具 舉報

8#
ID:1059305 發(fā)表于 2023-1-9 09:42 | 只看該作者
wulin 發(fā)表于 2023-1-6 16:37
用外部中斷讀取按鍵信號,消抖是個問題。仿真按鍵不會抖動,如果用簡單的延時消抖方法會導致動態(tài)數(shù)碼管顯示 ...

十分感謝,代碼成功運行,目前還在學習消化中
回復

使用道具 舉報

9#
ID:1059305 發(fā)表于 2023-1-9 09:48 | 只看該作者
上善-若水 發(fā)表于 2023-1-6 19:31
數(shù)碼管動態(tài)顯示有閃爍主要是由于延時時間選擇不當造成的 主要檢查延時方面的語句

嗯嗯,但我現(xiàn)在試了之前的代碼發(fā)現(xiàn)又可以了,導致現(xiàn)在驗證不了
回復

使用道具 舉報

10#
ID:1059305 發(fā)表于 2023-1-9 09:48 | 只看該作者
huazhaojiu 發(fā)表于 2023-1-6 21:22
每次顯示完后,加個1us延遲試試呢

嗯嗯,但我現(xiàn)在試了之前的代碼發(fā)現(xiàn)又可以了,導致現(xiàn)在驗證不了
回復

使用道具 舉報

11#
ID:1059305 發(fā)表于 2023-1-9 09:52 | 只看該作者
188610329 發(fā)表于 2023-1-6 22:17
你消了個寂寞,把所有的p0=0xff,都改成p1=0x00才是消影。

我選用的是共陽極數(shù)碼管,P0是段選   所以我覺得P0=0xff  是消影沒錯
回復

使用道具 舉報

12#
ID:384109 發(fā)表于 2023-1-9 11:18 | 只看該作者
缺電路圖,所以不好說,數(shù)碼管的顯示最好放在定時器中斷里
回復

使用道具 舉報

13#
ID:161164 發(fā)表于 2023-1-9 11:40 | 只看該作者
LLL2022 發(fā)表于 2023-1-9 09:52
我選用的是共陽極數(shù)碼管,P0是段選   所以我覺得P0=0xff  是消影沒錯

P0=0xff 是可以消影,沒錯
但代碼次序錯了
你現(xiàn)在是
段選消影->段選顯示->位選改變

正確次序應該是
段選消影->位選改變->段選顯示
回復

使用道具 舉報

14#
ID:1059305 發(fā)表于 2023-1-9 14:06 | 只看該作者
人中狼 發(fā)表于 2023-1-9 11:18
缺電路圖,所以不好說,數(shù)碼管的顯示最好放在定時器中斷里

嗯嗯,我之后會去嘗試的
回復

使用道具 舉報

15#
ID:1059305 發(fā)表于 2023-1-9 14:08 | 只看該作者
lkc8210 發(fā)表于 2023-1-9 11:40
P0=0xff 是可以消影,沒錯
但代碼次序錯了
你現(xiàn)在是

嗯嗯,謝謝,我發(fā)現(xiàn)我改不改次序最終效果都可以實現(xiàn),因此我還是有點懵,但我之后會注意次序這方面的問題。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久999成人 | 国产区在线视频 | 99精品久久久 | 一级毛片视频 | 免费av在线| 女同久久另类99精品国产 | 日韩欧美精品 | 国产精品一区在线观看 | 高清欧美性猛交xxxx黑人猛交 | 中文字幕在线一区二区三区 | 亚洲精品4 | 亚洲精品18 | 国产成人高清视频 | 国产精品成人一区二区三区 | 欧美在线a | 日韩中文字幕在线观看 | 911网站大全在线观看 | 99久久99 | 亚洲高清在线观看 | 狠狠的日| 成人免费日韩 | 91综合在线观看 | 亚洲成人一二三 | 日韩精品国产精品 | 精品免费av | 日韩乱码一二三 | 羞羞的视频免费看 | 亚洲精品一区中文字幕乱码 | 亚洲精品大全 | www.久久久.com | 日韩在线小视频 | 久久久新视频 | 青娱乐一区二区 | 欧美日韩国产三级 | 日韩一区二区三区在线看 | 97av在线| 日日操夜夜摸 | www日本在线 | 成人性视频免费网站 | 欧美在线视频一区二区 | 日韩一级在线 |