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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機計數與數碼管顯示問題

[復制鏈接]
跳轉到指定樓層
樓主
這個程序的目的是通過P1.0口產生周期為兩秒的方波,由外部中斷0口輸入方波并計數,從數碼管中輸出數字,外部中斷1接開關,按第一下開始產生方波,計數并顯示,按第二下停止計數,顯示學號。我的程序的問題是按下開關,方波在產生了幾下之后就不產生了,而且顯示有問題,顯示的時間變長(動態顯示),不知道怎么回事,誰能解決一下?(共陰極數碼管,六位)
#include<reg51.h>
#define uchar unsigned char
uchar number[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極斷碼0到9
uchar student[6]={0x6f,0x7f,0x4f,0x4f,0x7d,0x06};//學號163389
uchar number_1[6]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};//要顯示的數字,他是計的數
uchar i=0,k=6;//k是數字的位數,先默認為六位,在后面的程序中再判斷
unsigned long j=0;//j作為方波計數的數字
sbit P1_0=P1^0;//P1.0產生方波
void delay(uchar m);//聲明延時函數
void main()
{
uchar m;//m作為循環的變量使用
TMOD=0x01;//使用定時器T0,方式一
TH0=0x3c;//
TL0=0xaf;//初值,50毫秒一中斷
TR0=0;//先不啟動T0,按下鍵在啟動
EA=1;//總中斷允許
ET0=1;//T0中斷允許
EX0=1;//T1允許
IT0=1;//外部中斷1觸發方式跳沿
EX1=1;
IT1=1;//外部中斷1,觸發方式跳沿
while(1)
{
  P2=0xfe;//P2最低位選中
  if(TR0)//如果定時器開啟
   for(m=0;m<k;m++)
   {
    P0=number_1[m];//顯示計的數字
   delay(5);//動態顯示,延時
   P2=P2<<1|0x01;//下一位選通
   }
  else
   for(m=0;m<6;m++)
   {
    P0=student[m];//如果不開啟,就顯示學號
delay(5);//延時一會
P2=P2<<1|0x01;//下一位選通
   }
  }
}
void timer_0() interrupt 1//定時器T0中斷函數
{
TH0=0x3c;//重載
TL0=0xaf;
i++;
if(i==20)//如果計到1秒

{
  i=0;//清零
  P1_0=~P1_0;//P1.0取反產生方波
}
}
void int_1() interrupt 2//外部中斷一中斷函數
{
  TR0=~TR0;//進入一次中斷函數,一次開啟,再一次不開啟
}
void int_0() interrupt 0//外部中斷0中斷程序
{
unsigned long m=1000000,n=100000,c=10,d=1;//為了獲得j的位數,先從最高位開始找,因為j最大是六位,所以m取七位,n取六位
uchar t,r;//t的目的是記錄j相應位的數字
j++;//進入一次中斷,及來一次下降沿,j加一
if(j==999999)//記到最大清零
  j=0;
while(1)
{
  t=j%m/n;//檢查每一位,從高處檢查,如果是零,就跳出,記錄位數k
  if(t!=0)
   break;//跳出語句
   k--;
    m=m/10;
    n=n/10;
  }
for(r=0;r<k;r++)//現在確定了j的位數,計為k
{
  t=j%c/d;//從低位開始記錄各位數字
  number_1[r]=number[t];//根據找到的數字,從number數組里拿出數字給到number1數組
  c=c*10;//
  d=d*10;//乘10,準備檢查下一位
}
}
void delay(uchar m)//延時函數
{
uchar t;
while(m--)
{
  for(t=0;t<120;t++);
}
}
不正常的顯示如圖所示


5LBWE3MG0KLBDQ{I5S8F3~V.png (268.11 KB, 下載次數: 58)

5LBWE3MG0KLBDQ{I5S8F3~V.png

F`M{{92F4KCH42JPL_7SX%H.png (269.33 KB, 下載次數: 78)

F`M{{92F4KCH42JPL_7SX%H.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:301728 發表于 2018-5-31 21:15 | 只看該作者
改好了,原來是在外部中斷0每次記錄j的位數時,忘了在中斷服務程序的開頭處寫上k=6,不然若第一次記錄了k=1,下一次就會繼續減,成了別的數了,不再可以記錄位數了。

評分

參與人數 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99re在线视频精品 | 天天操天天射天天舔 | 亚洲精品乱码 | 国产精品久久久久免费 | 日韩精品一区二区三区视频播放 | 国产一区免费 | 精品国产乱码久久久久久牛牛 | 亚洲一区二区三区观看 | 国产精品久久久久无码av | 九九久久久 | 91久久久久久久久久久 | 亚洲视频 欧美视频 | 成人h动漫精品一区二区器材 | 一区二区三区免费在线观看 | 久久久.com | 久草在线视频中文 | 日本精品一区二区 | 少妇无套高潮一二三区 | 中文区中文字幕免费看 | 在线免费观看黄a | 精久久久 | 福利片在线观看 | 亚洲影音先锋 | 国产欧美精品一区二区三区 | 久久专区 | 91麻豆精品一区二区三区 | 久久午夜精品福利一区二区 | 欧美一级免费看 | 黄色片在线网站 | av片免费观看 | 日韩欧美三级 | jvid精品资源在线观看 | 欧美色专区 | 国产在线观看 | 啪啪免费网 | 香蕉久久a毛片 | 欧美性一区二区三区 | 日韩成人免费在线视频 | 亚洲天堂一区 | 欧州一区二区 | 日韩欧美大片在线观看 |