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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機驅動的數碼管顯示異常,有亂碼

[復制鏈接]
跳轉到指定樓層
樓主


同樣的數字,四位數碼管正常,二位數碼管有亂碼,同時,顯示的數字順序與實際要顯示的數字順序不符合,單片機代碼如下:

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. uchar code table1[]={50,3,25};
  6. uchar code table2[]={55,20,3};
  7. uchar a=50,b=55,n=0,m=0;
  8. uchar j,k,c3,c2,c1,c0;
  9. uchar pp;

  10. void delay(unsigned int i)
  11. {
  12.         int j;
  13.         for(i;i>0;i--)
  14.                 for(j=20;j>0;j--);
  15. }

  16. void display(uchar x,uchar y,uchar o,uchar p)
  17. {
  18.         P2=0x01;
  19.         P0=table[p];
  20.         delay(10);
  21.       
  22.         P2=0x04;
  23.         P0=table[o];
  24.         delay(10);

  25.         P2=0x08;
  26.         P0=table[y];
  27.         delay(10);

  28.         P2=0x02;
  29.         P0=table[x];
  30.         delay(10);
  31. }

  32. void main()
  33. {
  34.         TMOD=0x01;                                                  
  35.         TH0=(65536-46080)/256;
  36.         TL0=(65536-46080)%256;
  37.         ET0=1;                        
  38.         EA=1;
  39.         TR0=1;                       
  40.         while(1)
  41.         {
  42.                 if(TF0==1)                       
  43.                 {
  44.                         TF0=0;
  45.                         pp++;
  46.                         TH0=(65536-46080)/256;
  47.                         TL0=(65536-46080)%256;
  48.                 }
  49.                 if(pp==20)
  50.                 {      
  51.                         pp=0;
  52.                         a--;
  53.                         b--;
  54.                         if(a==0)
  55.                         {
  56.                                 n++;
  57.                                 a=table1[n];                              
  58.                                 if(n==2)
  59.                                 {
  60.                                         n=-1;
  61.                                 }         
  62.                         }
  63.                         if(b==0)
  64.                         {                                                                       
  65.                                 m++;
  66.                                 b=table2[m];                       
  67.                                 if(m==2)
  68.                                 {
  69.                                         m=-1;
  70.                                 }
  71.                         }
  72.                 }
  73.                 c0=a%10;                 
  74.                 c1=a/10;
  75.                 c2=b%10;
  76.                 c3=b/10;
  77.                 display(c1,c0,c2,c3);
  78.         }
  79. }
復制代碼





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

使用道具 舉報

沙發
ID:96682 發表于 2018-6-13 22:25 | 只看該作者
選用不同類型的數碼管顯示出現亂碼也正常,就算用相同的數碼管顯示相同內容,有時軟件也可能出現一些小異常
回復

使用道具 舉報

板凳
ID:129368 發表于 2018-6-14 01:49 | 只看該作者
顯示的時候還原下引腳原來狀態,俗稱清屏。就好了。也就是在賦值端口顯示后全部口置1.然后再顯示下一位數。
回復

使用道具 舉報

地板
ID:351586 發表于 2018-6-14 09:14 | 只看該作者
顯示的時候還原下引腳原來狀態,俗稱清屏。就好了。也就是在賦值端口顯示后全部口置1.然后再顯示下一位數。
回復

使用道具 舉報

5#
ID:351618 發表于 2018-6-14 09:43 | 只看該作者
顯示下一組數字前,先把之前的數字清了。亂碼這個現象就是視覺暫存
回復

使用道具 舉報

6#
ID:234075 發表于 2018-6-14 10:11 | 只看該作者
樓主的程序寫的天馬行空,排序有點亂,我倒是擼了半天,82行為什么是“c1,c0,c2,c3”,而不是大家習慣的C0,C1,C2,C3 ?數碼管顯示的排序也是01H,04H,08H最后是02H,最后在4位的數碼管上顯示順序應該是b的十位,a的十位,b的個位,a的個位,不知道這個是不是你想要的顯示結果?兩個兩位數碼管分別顯示b的十位,a的十位和b的個位,a的個位;
至于為什么顯示亂碼,可能是P0口電流過大的原因,建議樓主在P0口和數碼管位選中間也加上一個74HC593試試;
再問問樓主,為啥不寫中斷服務程序,而習慣用TF0的查詢法
回復

使用道具 舉報

7#
ID:350162 發表于 2018-6-15 08:59 | 只看該作者
zhb2004xp 發表于 2018-6-14 10:11
樓主的程序寫的天馬行空,排序有點亂,我倒是擼了半天,82行為什么是“c1,c0,c2,c3”,而不是大家習慣的C0, ...

初學者,正在努力,我想顯示的其實是兩個倒計時,順序應該是a的十位,a的個位,b的十位,b的個位,上面的二位數碼管a倒計時,下面那個b倒計時,圖中四位數碼管是正確的顯示順序,倒計時也是對的,但是如果程序按照我想的順序寫,結果順序就是亂的,只有按上面代碼里的這個錯誤的順序,四位數碼管才有正確的順序。另外,我也試過加消影,就是在延時后加P0=0x00,或者P0=0xff,但是加前者,數碼管只顯示8和9,加后者只顯示”9“左下角缺的一節,而如果加P2=0x00,就什么都不顯示了。實在想不明白,所以請求各路大神幫幫忙。
回復

使用道具 舉報

8#
ID:352342 發表于 2018-6-15 09:50 | 只看該作者

顯示的時候還原下引腳原來狀態,俗稱清屏。就好了。也就是在賦值端口顯示后全部口置1.然后再顯示下一位數。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 妖精视频一区二区三区 | 男女羞羞视频免费 | 高清一区二区 | 日韩视频三区 | 国产中文字幕在线 | 欧美 日韩 国产 在线 | 国产精品二区三区在线观看 | 黄免费在线| 在线不卡av | 国产精品美女久久久 | 91精品久久久久久久久 | 黄色网址免费在线观看 | 欧美日韩中文字幕在线 | 欧美精品乱码久久久久久按摩 | 国产一区二区三区免费观看视频 | 在线免费观看一区二区 | av片毛片| 中文字幕av在线一二三区 | 免费国产一区二区 | 日韩中文字幕免费在线观看 | 成人一级黄色毛片 | 亚洲日本乱码在线观看 | 久久国产精品99久久久久 | 免费视频久久 | 男女羞羞视频在线免费观看 | www.天天操 | 亚洲国产精品久久人人爱 | 在线成人www免费观看视频 | 日韩欧美在线一区 | 99亚洲视频 | 国产成人精品一区二区三区四区 | av黄色免费在线观看 | 在线婷婷 | 久久久精品日本 | 日韩亚洲视频 | 欧美在线一区二区视频 | 一区二区三区四区在线 | 五月天国产在线 | 人人干人人干人人 | 国精久久 | 国产永久免费 |