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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2797|回復(fù): 2
收起左側(cè)

萌新在搞智能臺(tái)燈設(shè)計(jì),論壇找到的仿真運(yùn)行不了,數(shù)碼管顯示也有問題,有沒有大佬...

[復(fù)制鏈接]
ID:763917 發(fā)表于 2020-6-4 16:00 | 顯示全部樓層 |閱讀模式
245黑幣
代碼如下
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*uchar code table[]=
{
0x3F,0x06,0x66,0x4F,            
0x66,0x6D,0x7D,0x07,            
0x7F,0x6F,0x77,0x7C,            
0x39,0x5E,0x79,0x71,         
0x76,0x38,0x37,0x3E,           
0x73,0x5C,0x40,0x00,  
};*/
char code table[] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,
    0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x02};
uchar WE[] = {0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7};
uchar Ly_Dis[4],Time1[3],Time2[3];
uchar dat, temp;
uint scale,num,num1,num2=990,num3;
bit CH,flag;
sbit CLK = P2^5;
sbit DI = P2^4;
sbit DO = P2^6;
sbit CS = P2^7;
sbit RELAY = P3^5;
sbit LED = P3^3;
sbit K1=P2^3;
sbit key2=P2^2;
sbit key3=P2^1;
sbit key4=P2^0;
void DelayMs(uint ms)
{
uint i, j;
for(i = ms; i > 0; i --)
  for(j = 110; j > 0; j --);
}
uchar Adc0832(uchar CH)
{
uchar i, test, adval;
adval  = 0x00;
test = 0x00;
CLK = 0;
DI = 1;
_nop_();
CS = 0;
_nop_();
CLK = 1;
_nop_();

if(CH == 0)
{
  CLK = 0;
  DI = 1; _nop_();
  CLK = 1; _nop_();
  CLK = 0;
  DI = 0; _nop_();
  CLK = 1; _nop_();
}
else
{
  CLK = 0;
  DI = 1; _nop_();
  CLK = 1; _nop_();
  CLK = 0;
  DI = 1; _nop_();
  CLK = 1; _nop_();
}
CLK = 0;
DI = 1;

for(i = 0; i < 8; i ++)
{
  _nop_();
  adval <<= 1;
  CLK = 1; _nop_();
  CLK = 0;
  if(DO)
   adval |= 0x01;
  else
   adval |= 0x00;
}

for(i = 0; i < 8; i ++)
{
  test >>= 1;
  if(DO)
   test |= 0x80;
  else
   test |= 0x00;
  _nop_();
  CLK = 1; _nop_();
  CLK = 0;
}

if(test == adval)
  dat = test;
_nop_();
CS = 1;
DO= 1;
CLK = 1;
return dat;
}
void Display(uchar num)
{
  uint i;
for(i = 0; i < 3; i ++)
{
  Ly_Dis[2 - i] = num % 10;
  num = num / 10;
}
Ly_Dis[3] = 0;

  P0 = WE[0];
  P1 = table[Ly_Dis[0]];
  DelayMs(4);
  
  P0 = WE[1];
  P1 = table[Ly_Dis[1]];
  DelayMs(4);
  
  P0 = WE[2];
  P1 = table[Ly_Dis[2]];
  DelayMs(4);
  
  P0 = WE[3];
  P1 = table[Ly_Dis[3]];
  DelayMs(4);
}
void Display1()
{
Time1[0]=num1/100;
Time1[1]=num1%100/10;
Time1[2]=num1%10;

P0 = WE[5];
P1 = table[Time1[0]];
DelayMs(4);

P0 = WE[6];
P1 = table[Time1[1]];
DelayMs(4);

P0 = WE[7];
P1 = table[Time1[2]];
DelayMs(4);
}
Display2()
{
Time2[0]=num2/100;
Time2[1]=num2%100/10;
Time2[2]=num2%10;

P0 = WE[5];
P1 = table[Time2[0]];
DelayMs(4);

P0 = WE[6];
P1 = table[Time2[1]];
DelayMs(4);

P0 = WE[7];
P1 = table[Time2[2]];
DelayMs(4);
}
void Relay()
{
if(temp >= 125&&temp!=0)
{
  RELAY = 0;
}
else
{
  if(temp!=0)
  RELAY = 1;
}
}
void Init()
{
RELAY = 1;
LED = 0;
TMOD=0x12;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
TH1=(65536-50000)/256;   
TL1=(65536-50000)%256;
ET1=1;
TR1=1;
}
void KeyScan()
{
  if(K1 == 0)
  {
   DelayMs(10);
   if(K1 == 0)
   {
    scale++;
    if(scale==10)
     scale=0;
   }
   while(!K1);
  }
  
  if(key2==0)
{
  DelayMs(10);
  if(key2==0)
  {
   flag=~flag;
  }
  while(!key2);
}

if(key3==0)
{
  DelayMs(10);
  if(key3==0)
  {
   num2+=10;
   if(num2==990)
    num2=0;
  }
  while(!key3);
}

if(key4==0)
{
  DelayMs(10);
  if(key4==0)
  {
   num2-=10;
   if(num2==0)
    num2=990;
  }
  while(!key4);
}
}
void main()
{
uint i;
Init();
while(1)
{
  temp = Adc0832(1);
  i ++;
  if(i == 50)
  {
   if(temp != 0)
   //Display(temp);
   //DelayMs(100);
   i = 0;
  }
  Relay();
  KeyScan();
  
   if(flag==0)
   Display1();
  else
   Display2();
  if(num1==num2)
  {
   LED=1;
   while(!key2);
  }
}
}
void timer0() interrupt 1
{
static uint tt;
tt++;
if(tt==10)
{
  tt=0;
  LED=0;
}
if(scale==tt)
LED=1;
}
void Timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num++;
if(num==20)
{
  num=0;
  num3++;
   if(num3==60)
   {
    num3=0;
    num1++;
    if(num1==990)
     num1=0;
   }
}
}


捕獲2.PNG
捕獲1.PNG
回復(fù)

使用道具 舉報(bào)

ID:267719 發(fā)表于 2020-6-6 23:30 | 顯示全部樓層
樓主的硬件電路只能在仿真里做做,做成實(shí)物會(huì)
1:程序跑不起來(lái),因?yàn)镋A接了VCC,沒接地;
2:三極管Q1,Q3會(huì)燒毀,單片機(jī)可能會(huì)燒毀;因?yàn)槿龢O管基極沒有電阻,低電平時(shí),電源對(duì)地等效接二極管短路。
3:D10-D25發(fā)光二極管會(huì)燒毀,因?yàn)闆]有限流電阻;
4:數(shù)碼管可能會(huì)燒毀,也是因?yàn)闆]有限流電阻;
5:繼電器驅(qū)動(dòng)不起來(lái);因?yàn)榇?lián)220歐電阻能否驅(qū)動(dòng),要看你繼電器的選型了;

軟件方面:
1:你注釋掉的譯碼是對(duì)的;
2:
if(key3==0)
{
  DelayMs(10);
  if(key3==0)
  {
   num2+=10;
   if(num2==990)
    num2=0;
  }
  while(!key3);
}
邊界有問題。剛開始你是uint scale,num,num1,num2=990,num3;
按了key3,結(jié)果num2+10=1000;1000!=990,所以num2不會(huì)被變?yōu)?。結(jié)果就是1000,超過了990.
key4存在同樣問題,當(dāng)num變?yōu)?后,按了key4鍵,num=65526。。。
4:如果單片機(jī)時(shí)鐘是12MHz,12T,那定時(shí)器1定時(shí)周期50ms,被num分頻20,就是1000ms,被num3分頻60,就是1分鐘。意味著num1要等1分鐘才會(huì)變一次。仿真顯示你有沒有等一分鐘后看過結(jié)果?

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2020-6-7 06:50 | 顯示全部樓層
學(xué)些新的數(shù)碼管動(dòng)態(tài)知識(shí),可參http://m.raoushi.com/bbs/dpj-189201-1.html,有代碼有示例工程下載。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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