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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

學(xué)習(xí)單片機(jī)的日記

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年10月21日   【字體:
   經(jīng)歷了大一上學(xué)期我覺(jué)得大學(xué)其實(shí)好壞不在于學(xué)校而是在于個(gè)人,學(xué)校之間的差距只是在于可利用的教學(xué)資源以及環(huán)境,最重要的還是自己。個(gè)人覺(jué)得我大一要學(xué)的課程真正有用的不多,現(xiàn)在我是電子信息工程的一名大學(xué)生,大一所學(xué)課程有高數(shù),大學(xué)物理,英語(yǔ),體育,近代史,思修,大學(xué)物理實(shí)驗(yàn),電路分析,C語(yǔ)言。呵呵,只有C語(yǔ)言,電路,高數(shù),英語(yǔ)有用。其他科目我只是應(yīng)付下考試,不會(huì)真心去學(xué),因?yàn)闆](méi)有興趣。興趣是最好的老師,沒(méi)有它我覺(jué)得做什么事情都毫無(wú)意義,這就是我這個(gè)人的怪癖。利用所有閑下來(lái)的時(shí)間我準(zhǔn)備學(xué)習(xí)單片機(jī),單片機(jī)雖然是大二下學(xué)期的內(nèi)容但我覺(jué)得它至關(guān)重要。
   為什么我們要學(xué)習(xí)單片機(jī)呢?他是個(gè)什么東西呢?單片機(jī)就是一塊集成芯片,但這塊集成芯片具有一些特殊的功能,而它的功能的實(shí)現(xiàn)要靠我們使用者自己來(lái)編程完成。我們編程的目的就是控制這塊芯片的各個(gè)引腳在不同時(shí)間輸出不同的電平(高電平或低電平),進(jìn)而控制與單片機(jī)各個(gè)引腳相連接的外圍電路的電氣狀態(tài)。編程時(shí)我們就需要C語(yǔ)言,這是最快捷的編程方法。學(xué)習(xí)單片機(jī)不要一開(kāi)始就翻書死學(xué),學(xué)習(xí)他的內(nèi)部結(jié)構(gòu),這樣你怎么也學(xué)不好,而是要一開(kāi)始就編程,在編程的過(guò)程中了解到它的內(nèi)部結(jié)構(gòu),所以說(shuō)C語(yǔ)言的學(xué)習(xí)是很關(guān)鍵的。很多同學(xué)都會(huì)說(shuō)C語(yǔ)言好無(wú)聊,你是你不懂他最后有什么用處,只要你在學(xué)習(xí)C語(yǔ)言的過(guò)程中一同學(xué)習(xí)單片機(jī),你會(huì)發(fā)現(xiàn)很多樂(lè)趣與成就感,因?yàn)榕d趣是最好的老師。并不要害怕單片機(jī),不要以為需要很多知識(shí)才可以駕馭它,它雖然關(guān)系到數(shù)字電路以及模擬電路的知識(shí)(大二上學(xué)期學(xué)),但是涉及的還是不多,最主要的還是C語(yǔ)言的運(yùn)用。忘了說(shuō)單片機(jī)的前景,現(xiàn)在所有電子產(chǎn)品與設(shè)備幾乎全都涉及到單片機(jī),經(jīng)常是核心,所以學(xué)好它對(duì)就業(yè)以及未來(lái)有很好的發(fā)展。
   那如何來(lái)學(xué)習(xí)單片機(jī)呢? 學(xué)習(xí)單片機(jī)之前你需要一塊開(kāi)發(fā)板,51單片機(jī)開(kāi)發(fā)板。在淘寶上就可以買到,一開(kāi)始不要買有很多系統(tǒng)的,什么嵌入式系統(tǒng),AVR,ARM等等。咱們先學(xué)好51單片機(jī),不急不急。價(jià)格在100左右就行,我買的開(kāi)發(fā)板是東流電子的開(kāi)發(fā)板,163(包括了彩屏,以及AVR),大家可以試試郭天祥開(kāi)發(fā)板,不錯(cuò)的。大家買完開(kāi)發(fā)板肯定有附帶光盤教學(xué)視頻資料,但我還建議可以看網(wǎng)上的郭天祥十天學(xué)習(xí)單片機(jī)的視頻,講述的很不錯(cuò)。
    大家利用好現(xiàn)在的大學(xué)時(shí)光,它不是一個(gè)娛樂(lè)輕松的場(chǎng)所,而是為將來(lái)打拼做準(zhǔn)備的場(chǎng)所。有很多人會(huì)說(shuō)對(duì)自己專業(yè)沒(méi)興趣,那我勸告下趕快去轉(zhuǎn)專業(yè),別浪費(fèi)時(shí)光。還有你以為誰(shuí)天生就對(duì)什么有興趣,那都是要靠自己探索培養(yǎng)的,要多多想想自己的將來(lái),四年是學(xué)習(xí)的時(shí)間,你可以讓這四年讓你變成金。還有說(shuō)下我這個(gè)專業(yè)的同志們,電子信息專業(yè)是很好就業(yè)的,哪里沒(méi)有電子的身影,但學(xué)好才可以成功。
  單片機(jī)的學(xué)習(xí)內(nèi)容;
  1首先你要掌握keil軟件的運(yùn)用,它是編程的環(huán)境 2.學(xué)習(xí)以下實(shí)驗(yàn)(流水燈的控制,數(shù)碼管的顯示原理和實(shí)現(xiàn)鍵盤檢測(cè)原理,AD工作原理定時(shí)器計(jì)數(shù)器,中斷系統(tǒng),串行口運(yùn)用,等等)這些郭天祥都會(huì)講到。今天寫到這里,我去學(xué)單片機(jī)了。。。。。。
三月30日:今天是利用定時(shí)器0和1以及中斷系統(tǒng)控制數(shù)碼管以及流水燈;
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P3^7;
sbit wela=P2;
uchar temp,t0,t1,flag1,bai,shi,ge,flag;
uint shu;
void init();
void delay(uint z);
void display(uchar aa,uchar bb,uchar cc,uchar bai ,uchar shi,uchar ge);

 
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x79,0x38,0x3f};

 
void main()
{  
  init();
  while(1)
   {   
       if(flag1!=1)
       display(7,6,5,bai,shi,ge);
       else
        display(16,17,18,18,19,20);

 
   
    }
  
}
void init()
{   
   shu=432;
   temp=0xfe;
   P0=temp;
   TMOD=0x11;
   TH0=0x4c;
   TL0=0x00;
   TH1=0x4c;
   TL1=0x00;   
   EA=1;
   ET0=1;
   ET1=1;   
   TR0=1;
   TR1=1;

 

 
}
void timer0() interrupt 1
{
    TH0=0x4c;
    TL0=0x00;
    t0++;
    if(flag!=1)
   {
    if(t0==10)
    {
       t0=1;
       temp=_crol_(temp,1);
       P0=temp;
    }
   }
   else
   {
      if(t0%4==0)
          {
               P0=~P0;
               if(t0==60)
               TR0=0;
               P0=0xff;
                flag1=1;
           }
    }

 
}

 
void timer1() interrupt 3
{
    TH1=0x4c;
    TL1=0x00;
    t1++;
    if(t1=2)
    {   
        t1=0;
        shu--;
        bai=shu/100;
        shi=shu%100/10;
        ge=shu%10;
        if(shu==398)
         {
             TR0=0;
             TH0=0x4c;
             TL0=0x00;
             TR0=1;
             flag=1; 
             t0=0;  
             P0=0xff;   
             TR1=0;
          }
    }
}
void display(uchar aa,uchar bb,uchar cc,uchar bai ,uchar shi,uchar ge)

 
{
   dula=1;
     P0=table[aa];
     dula=0;
     P2=0;
     delay(5);

 
     dula=1;
     P0=table[bb];
     dula=0;
     P2=1;
     delay(5);
     
     dula=1;
     P0=table[cc];
     dula=0;
     P2=2;
     delay(5);
 
    
     dula=1;
     P0=table[bai];
     dula=0;
     P2=3;
     delay(5);

 
     dula=1;
     P0=table[shi];
     dula=0;
     P2=4;
     delay(5);
     
     dula=1;
     P0=table[ge];
     dula=0;
     P2=5;
     delay(5);
    

 

 
}

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

 
}


 

 
三月31日:今天學(xué)完矩陣鍵盤,終于會(huì)編了,弄了好久。。。。(今天開(kāi)始記錄思想,幫我加強(qiáng)記憶并自己再理解一遍)

 
#include <reg52.h>                                                                      /reg52.h是頭文件,包含了下列關(guān)鍵字
#define uint unsigned int                                                              /定義無(wú)符號(hào)型整數(shù)
#define uchar unsigned char                                                        /定義無(wú)符號(hào)型字符型
sbit dula=P3^7;                                                                             /數(shù)碼管的段是由P3.7引腳控制,位聲明下
sbit wela=P2;                                                                                /數(shù)碼管的位選是由P2引腳控制,東流電子的板子位選是由譯碼器控制
uchar temp,num;

 
void delay(uint z);                                                                        /延時(shí)函數(shù)聲明

 
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,        / 數(shù)碼管的數(shù)組
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

 
void main()                                                                              /主函數(shù)
{  
    dula=1;                                                                              /首先將數(shù)碼管不顯示,段選是由鎖存器控制,將鎖存器賦值1打開(kāi)鎖存器,    
    P0=0;                                                                               / 往里面輸入數(shù)據(jù)再賦值0關(guān)閉鎖存器
    dula=0;
    P2=0;                                  /我的板子的數(shù)碼管是由譯碼器控制,通過(guò)向P2口輸入不同的值進(jìn)而控制不同數(shù)碼管,0代表第一個(gè)數(shù)碼管
  while(1)                                          /主循環(huán),while語(yǔ)句當(dāng)()里的值為1是一直循環(huán){  }里的語(yǔ)句,不為1則跳出語(yǔ)句
   {   
        P1=0xfe;                           /如上圖所示P1指的是第一行鍵盤,矩陣鍵盤的檢測(cè)是給除了第一行賦值0外全部賦值為1,也就是111111       
        temp=P1;                          10,再將P1值賦給temp,讓后temp和0xf0(11110000)與(邏輯與)原理是:先掃描第一行,將其他端
        temp=temp&0xf0;    /口賦值1,當(dāng)有按鍵按下時(shí)有一列為0,列是在高四位如果是第一個(gè)鍵按下就是0111 0111和0xf0與下就不為0xf0
        if(temp!=0xf0)                     /如果temp不為0xfo(就相當(dāng)于有按鍵被按下)
     {   
          delay(10);                                           延時(shí)消抖
          temp=P1;                                            再將P1值賦給temp
          temp=temp&0xf0;                               再和0xf0邏輯與
        if(temp!=0xf0)                                       再判斷是否按鍵
         { 
             temp=P1;                                        將P1值重新賦給temp 
        switch(temp)                                         swith語(yǔ)句是多條件語(yǔ)句,()中temp是表達(dá)式,case(表達(dá)式):對(duì)應(yīng)語(yǔ)句,。break是停止
            {                                                       switch語(yǔ)句跳出
               
                case 0xee:num=1;                       如果是按第一個(gè)鍵就在數(shù)碼管上顯示0(為啥不是1?下面解釋)
                   break;
                case 0xde:num=2;                       如果按第一行第二個(gè)鍵在數(shù)碼管上顯示1
                   break;
                case 0xbe:num=3;
                   break;
                case 0x7e:num=4;
                   break;
             }
    dula=1;
    P0=table[num-1];                                 數(shù)碼管顯示[ ]中是上面聲明數(shù)組中的值,num-1對(duì)應(yīng)數(shù)組的值(num為1則代表數(shù)組的0)
    dula=0;
         }
     }
        P1=0xfd;
        temp=P1;                                           以下就是不同行數(shù)的檢測(cè),檢測(cè)第二行就給P1.2賦值0,改變下P1的值和num值就可以進(jìn)行第
        temp=temp&0xf0;                           二行以及第三第四行的鍵盤是否按下
        if(temp!=0xf0) 
     {   
          delay(10);
          temp=P1;
          temp=temp&0xf0;
        if(temp!=0xfe)
         {
             temp=P1; 
        switch(temp)
            {   
               
                case 0xed:num=5;
                   break;
                case 0xdd:num=6;
                   break;
                case 0xbd:num=7;
                   break;
                case 0x7d:num=8;
                   break;
             }
    dula=1;
    P0=table[num-1];
    dula=0;
          }
     }
        P1=0xfb;
        temp=P1;
        temp=temp&0xf0;
        if(temp!=0xf0) 
     {   
          delay(10);
          temp=P1;
          temp=temp&0xf0;
        if(temp!=0xfe)
         {
             temp=P1; 
        switch(temp)
            {   
               
                case 0xeb:num=9;
                   break;
                case 0xdb:num=10;
                   break;
                case 0xbb:num=11;
                   break;
                case 0x7b:num=12;
                   break;
             }
    dula=1;
    P0=table[num-1];
    dula=0;
          }
    }
        P1=0xf7;
        temp=P1;
        temp=temp&0xf0;
        if(temp!=0xf0) 
     {   
          delay(10);
          temp=P1;
          temp=temp&0xf0;
        if(temp!=0xfe)
         {
             temp=P1; 
        switch(temp)
            {   
               
                case 0xe7:num=13;
                   break;
                case 0xd7:num=14;
                   break;
                case 0xb7:num=15;
                   break;
                case 0x77:num=16;
                   break;
             }
    dula=1;
    P0=table[num-1];
    dula=0;
          }
     }

 
  }
}
  
 

 
void delay(uint z)                                         延時(shí)函數(shù)
{
   uint x,y;
    for(x=z;x>0;x--)
      for(y=110;y>0;y--);

 
}
啊哈,清明結(jié)束,把串口和AD轉(zhuǎn)換學(xué)完了,但是都是晚上學(xué)完的,沒(méi)網(wǎng)絡(luò)寫,那兩個(gè)以后復(fù)習(xí)的時(shí)候再補(bǔ)上,花了兩天學(xué)完液晶。話說(shuō)最近課還真緊,剩下課余時(shí)間來(lái)完成吧。看大三師兄們都在學(xué)一種芯片,STM32(一種高性能的ARM)芯片,比51單片機(jī)先進(jìn)多了,好想學(xué)啊,但是我一定要先精通51,學(xué)完我要做很多基于51的產(chǎn)品,學(xué)會(huì)制作PCB板,每天慢慢試著學(xué)模電和數(shù)電,好興奮啊。加油了!!
   液晶是什么東西呢?大家也都懂得,他是一種高分子材料,今天我就簡(jiǎn)單的介紹下1602液晶的程序控制
1602液晶有16個(gè)引腳每個(gè)引腳都有自己的作用 ,突然覺(jué)得要介紹好多東西,有線沒(méi)錢了,無(wú)線圖片上傳不了,以后再補(bǔ)上思想
 
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcden=P2^7;      
 sbit lcdrs=P2^5;
 sbit rw=P2^6;
 uchar code  table[]="Oh! my baby!";
uchar code table1[]="WWW.TXMCU.COM";
uchar num,num1; 
  void delay(uint z)
  {
         uint x,y;
              for(x=z;x>0;x--)
                    for(y=110;y>0;y--);
  }
  void write_com(uchar com)
         {
 
         lcdrs=0;
rw=0;  
         P0=com;
        delay(5);
         lcden=1;
         delay(5);
        lcden=0;
       }
         void write_data(uchar date)
        {
 
        lcdrs=1;
rw=0;
        P0=date;
        delay(5);
         lcden=1;
         delay(5);
         lcden=0;
        }
         void init()
       {
         
         lcden=0;
         write_com(0x38);
         write_com (0x0e);
         write_com(0x06);
write_com(0x01);
write_com(0x80+0x10);
        
      }
          void main()
      {
          init();
 for(num=0;num<12;num++)
  {
 write_data(table[num]);
 delay(5);  
        }
 
write_com(0x80+0x53);
for(num=0;num<13;num++)
  {
 write_data(table1[num]);
 delay(5);  
        } 
for(num=0;num<16;num++)
{
  write_com(0x18);
  delay(20);
}
 
   while(1);
      }
今天4月14號(hào),今天看了I^2C總線,感覺(jué)挺難的,好不容易編出來(lái)個(gè)程序但是竟然無(wú)法執(zhí)行,唉。。。最近覺(jué)得芯片時(shí)序圖對(duì)于編程很重要,慢慢來(lái)吧,太晚了,今天也沒(méi)時(shí)間寫思想了
 
#include <reg52.h>
#define uchar unsigned char
sbit sda=P3^6;
sbit scl=P1^5;
uchar a;
void delay( )
{ ;; }
 void delay1(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}

 
void start()
{
  sda=1;
  delay();
  scl=1;
  delay();
  sda=0;
  delay();
   
}
void stop()
{
   sda=0;
   delay();
   scl=1;
   delay();
   sda=1;
   delay();
}
void respons()
{
   uchar i;
   scl=1;
   delay();
   while((sda==1)&&(i<250))i++;
   scl=0;
   delay();
}
void init()
{
  sda=1;
  delay();
  scl=1;
  delay();
}
void write_byte(uchar date)
{
    uchar i,temp;
temp=date;

 

 
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
   delay();
sda=CY;
delay();
scl=1;
delay();
// scl=0;
     //   delay();
}
scl=0;
delay();
sda=1;
delay();
}

 

 
uchar read_byte()
{
   uchar i,j,k;
   scl=0;
   delay();
   sda=1;
   delay();
   for(i=0;i<8;i++)
   {
      scl=1;
 delay();
 if(sda==1)
    j=1;
 else 
    j=0;
      k=(k<<1)|j;
 scl=0;
 delay();
   }
    return k;
}
 

 
void main()
{
   init();
   start();
   write_byte(0xa0);
   respon();
   write_byte(3);
   respon();
   write_byte(0xfe);
   respons();
   stop();

 
   delay1(100);
   start();
   write_byte(0xa0);
   respon();
   write_byte(3);
   respon();
   start();
   write_byte(0xa1);
   respon();
   a=read_byte();
   stop();
   P0=a+5;
   while(1);

 
}
關(guān)閉窗口

相關(guān)文章