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

標題: [求助]數碼管自加計數 [打印本頁]

作者: l308152569    時間: 2012-4-14 15:03
標題: [求助]數碼管自加計數

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit wei =P2^7;
sbit duan=P2^6;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
uint temp,n,bai,shi,ge;
void delay();

void display (uchar bai,uchar shi,uchar ge); //顯示子函數


void main()
{ wei=0;temp=0;
 duan=0;
 TMOD=0x01;   //選擇定時器及其工作方式
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;   //開總中斷
 ET0=1; //開定式終端
 TR0=1;  //啟動定時

while(1)
{

  wei=1;
  P0=0xfb;
  wei=0;
  duan=1;
  P0=table[ge];
  duan=0;

delay();
  wei=1;
  P0=0xfd;
  wei=0;
  duan=1;
  P0=table[shi];
  duan=0;
delay();
  wei=1;
  P0=0xfe;
  wei=0;
  duan=1;
  P0=table[bai];
  duan=0;
delay();  
  
}
}


void jishuqi () interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 n++;
 if(n==20)
    { n=0;
  temp++;
 }
 bai=temp/100;
 shi=temp%100/10;
 ge =temp%100%10;
}


void delay()
{    uint x,y;
 for(x=5;x>0;x--)
  for(y=110;y>0;y--);
}

這位是我學郭天祥編寫的數碼管自家計數器可是為何有的數字不顯示


 


作者: 龍乘霸氣    時間: 2012-4-15 21:46

這是我看他的視頻寫的。你參考下

#include<reg52.h>//導入頭文件
#define uchar unsigned char//宏定義
#define uint unsigned int//宏定義
sbit dula=P2^6;//定義段選口
sbit wela=P2^7;//定義位選口
//數碼表
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

uchar temp,bai,shi,ge,aa;//變量聲明

void display(uchar bai,uchar shi,uchar ge);//三位數顯示函數聲明
void delay(uint z);//延時函數聲明
void init();//初始化聲明
void main()
{
 init();//調用初始化函數
 while(1)
 {
  if(aa==20)//判斷定時器1S時間
  {
   aa=0;//定時器清0
   temp++;
   if(temp==100)
   {
    temp=0;
   }//只規定從0加到100
   bai=temp/100;//求百位數
   shi=temp%100/10;//求十位數
   ge=temp%10;//求個位數
  }
  display(bai,shi,ge);//調用三位數顯示函數
 }
}
//1MS延時函數
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
//三位數顯示函數
void display(uchar bai,uchar shi,uchar ge)
{
   dula=1;
  P0=table[bai];//P0口送百位數碼
  dula=0;
  P0=0xff;//消隱
  wela=1;
  P0=0xfe;
  wela=0;
  delay(5);//延時5MS,不能超過定時器的時間,不然會出錯

  dula=1;
  P0=table[shi];//P0口送十位數碼
  dula=0;
  P0=0xff;//消隱
  wela=1;
  P0=0xfd;
  wela=0;
  delay(5);//延時5MS,不能超過定時器的時間,不然會出錯

  dula=1;
  P0=table[ge];//P0口送個位數碼
  dula=0; 
  P0=0xff;//消隱
  wela=1;
  P0=0xfb;
  wela=0;
  delay(5);//延時5MS,不能超過定時器的時間,不然會出錯
}
//程序初始化函數
void init()
{
 dula=0;//消隱,上電時關掉段鎖存器
 wela=0;//消隱,上電時關掉位鎖存器
 TMOD=0x01;//給TMOD賦值確定T0和T1的工作方式
 //50MS定時
 TH0=(65536-50000)/256;//高八位存入60轉換成十六進制數是3C
 TL0=(65536-50000)%256;//低八位存入176轉換成十六進制數是B0
 EA=1;//開總中斷
 ET0=1;//開定時器0中斷
 TR0=1;//啟動定時器0

}

void timer0() interrupt 1//值為0時是外部中斷0,為1時是定時器計數器0
{
 ////再裝一次初值,因為值裝滿后清0,這樣下次進入中斷就會變成0
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 aa++;
}


作者: 蘇北哲    時間: 2019-6-11 14:57
我也沒有顯示數字
作者: 風神大師    時間: 2019-10-14 09:46
延時5MS應該有問題,一個數碼管最多1MS,不然會全部熄滅,或者數碼管變暗,達不到理想的效果。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久精品99| 国产激情视频在线免费观看 | 人人做人人澡人人爽欧美 | 日本免费一区二区三区 | 久久久久亚洲 | 五月天国产视频 | 亚洲精品99 | 亚洲国产黄色av | 91福利在线观看视频 | 秋霞国产 | 日韩av一区二区在线观看 | 国产精品免费一区二区三区四区 | 亚洲一区二区三区在线播放 | 精品国产一区二区在线 | 精品国产91乱码一区二区三区 | 激情av | 91综合在线视频 | 欧美福利专区 | a免费视频| 亚洲一区二区电影网 | 亚洲一区二区三区视频在线 | 久久91精品国产一区二区三区 | 天天操天天干天天曰 | 日韩欧美精品一区 | 成人国产精品久久 | 天天爱天天操 | 亚洲人成人一区二区在线观看 | 亚洲天堂日韩精品 | 国产一区在线视频 | 国产999精品久久久 精品三级在线观看 | 国产精品一区二区视频 | 麻豆hd | 精品欧美一区二区在线观看视频 | 亚洲欧美成人影院 | 少妇av片 | xx性欧美肥妇精品久久久久久 | 日韩av在线不卡 | 91精品久久久久久综合五月天 | 成人一区二区三区视频 | 鲁大师一区影视 | www.国产日本 |