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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4343|回復(fù): 3
收起左側(cè)

自學(xué)15天的初級(jí)菜鳥用if和while語句寫了可以用按鍵設(shè)置時(shí)間的倒計(jì)時(shí)程序

[復(fù)制鏈接]
ID:194752 發(fā)表于 2017-5-19 13:28 | 顯示全部樓層 |閱讀模式
本帖最后由 elise 于 2017-5-23 10:19 編輯

或許接觸電子器件比較早,對(duì)電子器件十分的熱愛,但一直都是定位在興趣愛好里。和工作一點(diǎn)關(guān)系都沒有。自己從事的是汽車的裝潢改裝工作。
為了增加自己的改裝能力,我發(fā)現(xiàn)我有必要去學(xué)習(xí)單片機(jī),但是年紀(jì)已經(jīng)不小了,30多歲了又是0基礎(chǔ)。又沒有時(shí)間去專業(yè)的機(jī)構(gòu)學(xué)習(xí)。于是就此開始自學(xué)。買了2手的51單片機(jī)學(xué)習(xí)板,開始一邊看視頻一邊琢磨研究。
前些天寫了一個(gè)在軟件中設(shè)置時(shí)間的倒計(jì)時(shí)程序,寫完之后一直在研究如何用按鍵來設(shè)置定時(shí)時(shí)間。
今天早上終于寫出來測試通過啦。
來跟大家分享喜悅的心情,同時(shí)帖上程序。忘高手指點(diǎn)一二。
因?yàn)槭浅鯇W(xué)者,很多語句都不會(huì)用,所以就硬生生的用if和while語句把程序?qū)懴聛砹恕?br /> 程序可能寫的有點(diǎn)亂。我加點(diǎn)注釋讓大家看明白點(diǎn)。

/*這個(gè)程序?qū)ξ襾碚f已經(jīng)很不容易了,寫寫改改,可能對(duì)高手來說實(shí)在是太簡單,程序運(yùn)行中有以下問題:第一,當(dāng)設(shè)置時(shí)間的按鍵暗下去的同時(shí),原先顯示的0000中前3位數(shù)會(huì)滅掉,按鍵松掉之后才會(huì)顯示。第二,設(shè)置秒的時(shí)候,我只寫了秒的十位數(shù)的設(shè)置,個(gè)位數(shù)沒有設(shè)置,一是覺得必要性不大,但是在特殊的情況下需要用到的話還是可以加語句來實(shí)現(xiàn)的。第三,進(jìn)入到聲光提示的時(shí)候,如果需要退出提示恢復(fù)初始值,按鍵需要長按*/


今天花了點(diǎn)時(shí)間修改了下程序,現(xiàn)在按鍵的時(shí)候不會(huì)有閃爍了,聲光提示的時(shí)候也不需要長按了,按一下就能退出。
而且在設(shè)置的時(shí)候,短按一下S2是時(shí)間加一,按住的話數(shù)字會(huì)快速增加。S3和S4也是一樣的效果。提高設(shè)定時(shí)間的效率。

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit dx=P2^6;
sbit wx=P2^7;
sbit beep=P2^3;
sbit s2=P3^4;
sbit s3=P3^5;
sbit s4=P3^6;
sbit s5=P3^7;
uchar c,d,e,f,g,h,i,tt;
uint x,y,num;
void delay(x);
void init();
void display(num);
void main()
{
init();
while(h)
  {
  if(s2==0)
  {
   for(y=15;y>0;y--)
   {
    display(num);
   }   
   if(s2==0)
   d++;
   display(num);
  }
  if(d==10)
  {
   d=0;
   c++;
   if(c==10)
   c=0;
  }
  if(s3==0)
  {
   for(y=15;y>0;y--)
   {
    display(num);
   }   
   if(s3==0)
   d--;
   display(num);
  }
  if(d==255)
  {
   d=9;
   c--;
   if(c==255)
   c=9;
  }
  if(s4==0)
  {
   for(y=15;y>0;y--)
   {
    display(num);
   }   
   if(s4==0)
   e++;
   display(num);
  }
  if(e==6)
  {
   e=0;
  }
  if((s5==0)&&(c+d+e+f!=0))
  {
   for(y=7;y>0;y--)
   {
    display(num);
   }   
   if((s5==0)&&(c+d+e+f!=0))
   g=1;
   h=0;  
   while(!s5)
   {
    display(num);
   }
  }
  display(num);
}
while(g)
{
  if(s5==0)
  {
   for(y=15;y>0;y--)
   {
    display(num);
   }   
   if(s5==0)
   g=0;
   h=1;   
  }
  TR0=g;
  display(num);
  if(tt==20)
  {
   tt=0;
   f--;
   if(f==255)
   {
    f=9;
    e--;
   }
   if(e==255)
   {
    e=5;
   }
   if((e==5)&&(f==9))
   {
    d--;
   }
   if(d==255)
   {
    d=9;
    c--;
   }
   if((c==0)&&(d==0)&&(e==0)&&(f==0))
   {
    g=0;
    i=1;
   }
  }
}
while(i)
{  
  P0=0xc3;
  wx=1;
  wx=0;
  P0=0x3f;
  dx=1;
  beep=0;
  for(y=7000;y>0;y--)
  {
   if(s5==0)
   {
    delay(8000);
    if(s5==0)
    g=0;
    h=1;
    i=0;
    while(!s5);
   }
  }
  beep=1;
  for(y=7000;y>0;y--)
  {
   if(s5==0)
   {
    delay(8000);
    if(s5==0)
    g=0;
    h=1;
    i=0;
    while(!s5);
   }
  }
  beep=0;
  for(y=7000;y>0;y--)
  {
   if(s5==0)
   {
    delay(8000);
    if(s5==0)
    g=0;
    h=1;
    i=0;
    while(!s5);
   }
  }
  beep=1;
  P0=0x00;
  dx=0;
  for(y=40000;y>0;y--)
  {
   if(s5==0)
   {
    delay(8000);
    if(s5==0)
    g=0;
    h=1;
    i=0;
    while(!s5);
   }
  }
}
}
void delay(x)
{
while(x--);
}
void init()
{
TMOD=0X01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
EA=1;
ET0=1;
c=0;
d=0;
e=0;
f=0;
i=0;
num=1000*c+100*d+10*e+d;
g=0;
h=1;
}
void display(num)
{
P0=0xfb;
wx=1;
wx=0;
P0=table[c];
dx=1;
dx=0;
delay(100);
P0=0xf7;
wx=1;
wx=0;
P0=table[d];
dx=1;
dx=0;
delay(100);
P0=0xef;
wx=1;
wx=0;
P0=table[e];
dx=1;
dx=0;
delay(100);
P0=0xdf;
wx=1;
wx=0;
P0=table[f];
dx=1;
dx=0;
delay(100);
}
void timer() interrupt 1
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
tt++;
}

評(píng)分

參與人數(shù) 2黑幣 +105 收起 理由
LQL-LQL + 5 贊一個(gè)!
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:194752 發(fā)表于 2017-5-19 13:46 | 顯示全部樓層
哦,,忘了說明一下,我的學(xué)習(xí)板晶振是11.0592M的,如果晶振是12M的,那么程序里TH0和TL0里面的46080就需要改為50000.
回復(fù)

使用道具 舉報(bào)

ID:194752 發(fā)表于 2017-5-19 21:13 | 顯示全部樓層
后來我又做了一次測試,用手機(jī)計(jì)時(shí)和軟件計(jì)時(shí),計(jì)時(shí)時(shí)間為99分鐘,到最后結(jié)束的時(shí)候,誤差為1秒左右,軟件計(jì)時(shí)慢了一秒左右。這個(gè)是不是可以理解為每一次中斷循環(huán)中產(chǎn)生的時(shí)間差的累計(jì)?
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-5-21 01:51 | 顯示全部樓層
elise 發(fā)表于 2017-5-19 21:13
后來我又做了一次測試,用手機(jī)計(jì)時(shí)和軟件計(jì)時(shí),計(jì)時(shí)時(shí)間為99分鐘,到最后結(jié)束的時(shí)候,誤差為1秒左右,軟件 ...

樓主如果是每一次都是慢了一秒,肯定是由于晶振不準(zhǔn)等問題導(dǎo)致的,可以考慮在代碼中將此誤差修正,參考資料:http://m.zg4o1577.cn/bbs/dpj-56167-1.html
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产三级在线观看 | 麻豆av在线免费观看 | 亚洲第一毛片 | 久久久久久九九九九 | 亚洲天堂一区二区三区 | av在线免费网站 | www中文字幕| 日本在线天堂 | 成人免费黄色片 | 人人超碰人人 | 国产美女自拍视频 | 欧美一区| 久久久夜 | 亚洲涩涩涩 | 69精品人人人人 | 九九热在线精品视频 | 青青青操 | 久久婷婷色 | 免费看黄色一级片 | 91久久国产综合久久91精品网站 | 亚洲精品伦理 | 日韩国产在线观看 | 久久精品国产一区二区 | 吃奶动态图 | 国产视频在线观看视频 | 青草导航 | 青青草视频免费在线观看 | 免费在线观看黄色片 | 台湾av在线| 午夜小视频在线观看 | 午夜大片| 日韩视频在线播放 | 在线观看日韩 | 这里只有精品视频 | 99re这里只有精品6 | 免费激情网站 | 狠狠干av| 99久久精品国产毛片 | 国产在线二区 | 四虎成人精品 | 女同一区二区 |