• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      23. 模擬計算器數字輸入及顯示
      文章長度[] 加入時間[2008/5/30] 更新時間[2025/5/17 0:14:19] 級別[0] [評論] [收藏]
       
      1. 實驗任務
      (1.       開機時,顯示“0”
      (2.       第一次按下時,顯示“D1”;第二次按下時,顯示“D1D2”;第三按下時,顯示“D1D2D3”,8個全顯示完畢,再按下按鍵下時,給出“嘀”提示音。
      2. 電路原理圖
      圖4.23.1
      3.  系統板上硬件連線
      (1.       把“單片機系統”區域中的P1.0端口用導線連接到“音頻放大模塊”區域中的SPK IN端口上;
      (2.       把“單片機系統“區域中的P3.0-P3.7端口用8芯排線連接到“4X4行列式鍵盤”區域中的C1-C4 R1-R4端口上;
      (3.       把“單片機系統”區域中的P0.0-P0.7端口用8芯排線連接到“動態數碼顯示”區域中的A-H端口上;
      (4.       把“單片機系統:區域中的P2.0-P2.7端口用8芯排線連接到“動態數碼顯示”區域中的S1-S8端口上;
      4. 相關程序設計內容
      (1.       行列式鍵盤輸入及按鍵功能設定;
      (2.       動態數碼顯示;
      (3.       數碼顯示方式處理;
      5. 匯編源程序
      (略)
      6. C語言源程序
      #include <AT89X51.H>
      unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
      unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
      unsigned char dispbuf[8]={0,16,16,16,16,16,16,16};
      unsigned char dispbitcount;
      unsigned char temp;
      unsigned char i,j;
      unsigned char key;
      unsigned char keypos;
      bit alarmflag;
      void change(unsigned char *p,unsigned char count)
      {
        while(count>0)
          {
            *(p+count)=*(p+count-1);
            count--;
          }
      }
      void main(void)
      {
        TMOD=0x01;
        TH0=(65536-4000) / 256;
        TL0=(65536-4000) % 256;
        TR0=1;
        ET0=1;
        EA=1;
        while(1)
          {
            P3=0xff;
            P3_4=0;
            temp=P3;
            temp=temp & 0x0f;
            if (temp!=0x0f)
              {
                for(i=50;i>0;i--)
                for(j=200;j>0;j--);
                temp=P3;
                temp=temp & 0x0f;
                if (temp!=0x0f)
                  {
                    temp=P3;
                    temp=temp & 0x0f;             
                    switch(temp)
                      {
                        case 0x0e:
                          key=7;
                          break;
                        case 0x0d:
                          key=8;
                          break;
                        case 0x0b:
                          key=9;
                          break;
                        case 0x07:
                          key=10;
                          break;
                      }
                    if ((key>=0) && (key<10))
                    {
                      keypos++;
                      if(keypos<8)
                        {
                          change(dispbuf,keypos);
                          dispbuf[0]=key;
                        }
                        else
                          {
                            keypos=8;
                            alarmflag=1;
                          }
                    }
                    temp=P3;
                    P1_0=~P1_0;
                    temp=temp & 0x0f;             
                    while(temp!=0x0f)
                      {
                        temp=P3;
                        temp=temp & 0x0f;             
                      }
                    alarmflag=0;
                  }
              }
            P3=0xff;
            P3_5=0;
            temp=P3;
            temp=temp & 0x0f;
            if (temp!=0x0f)
              {
                for(i=50;i>0;i--)
                for(j=200;j>0;j--);
                temp=P3;
                temp=temp & 0x0f;
                if (temp!=0x0f)
                  {
                    temp=P3;
                    temp=temp & 0x0f;             
                    switch(temp)
                      {
                        case 0x0e:
                          key=4;
                          break;
                        case 0x0d:
                          key=5;
                          break;
                        case 0x0b:
                          key=6;
                          break;
                        case 0x07:
                          key=11;
                          break;
                      }
                    if ((key>=0) && (key<10))
                    {
                      keypos++;
                      if(keypos<8)
                        {
                          change(dispbuf,keypos);
                          dispbuf[0]=key;
                        }
                        else
                          {
                            keypos=8;
                            alarmflag=1;
                          }
                    }
                    temp=P3;
                    P1_0=~P1_0;
                    temp=temp & 0x0f;             
                    while(temp!=0x0f)
                      {
                        temp=P3;
                        temp=temp & 0x0f;             
                      }
                    alarmflag=0;
                  }
              }
            P3=0xff;
            P3_6=0;
            temp=P3;
            temp=temp & 0x0f;
            if (temp!=0x0f)
              {
                for(i=50;i>0;i--)
                for(j=200;j>0;j--);
                temp=P3;
                temp=temp & 0x0f;
                if (temp!=0x0f)
                  {
                    temp=P3;
                    temp=temp & 0x0f;             
                    switch(temp)
                      {
                        case 0x0e:
                          key=1;
                          break;
                        case 0x0d:
                          key=2;
                          break;
                        case 0x0b:
                          key=3;
                          break;
                        case 0x07:
                          key=12;
                          break;
                      }
                    if ((key>=0) && (key<10))
                    {
                      keypos++;
                      if(keypos<8)
                        {
                          change(dispbuf,keypos);
                          dispbuf[0]=key;
                        }
                        else
                          {
                            keypos=8;
                            alarmflag=1;
                          }
                    }
                    temp=P3;
                    P1_0=~P1_0;
                    temp=temp & 0x0f;             
                    while(temp!=0x0f)
                      {
                        temp=P3;
                        temp=temp & 0x0f;              
                      }
                    alarmflag=0;
                  }
              }
            P3=0xff;
            P3_7=0;
            temp=P3;
            temp=temp & 0x0f;
            if (temp!=0x0f)
              {
                for(i=50;i>0;i--)
                for(j=200;j>0;j--);
                temp=P3;
                temp=temp & 0x0f;
                if (temp!=0x0f)
                  {
                    temp=P3;
                    temp=temp & 0x0f;             
                    switch(temp)
                      {
                        case 0x0e:
                          key=0;
                          break;
                        case 0x0d:
                          key=13;
                          break;
                        case 0x0b:
                          key=14;
                          break;
                        case 0x07:
                          key=15;
                          break;
                      }
                    if ((key>=0) && (key<10))
                    {
                      keypos++;
                      if(keypos<8)
                        {
                          change(dispbuf,keypos);
                          dispbuf[0]=key;
                        }
                        else
                          {
                            keypos=8;
                            alarmflag=1;
                          }
                    }
                    temp=P3;
                    P1_0=~P1_0;
                    temp=temp & 0x0f;             
                    while(temp!=0x0f)
                      {
                        temp=P3;
                        temp=temp & 0x0f;             
                      }
                    alarmflag=0;
                  }
              }
          }
      }
      void t0(void) interrupt 1 using 0
      {
        TH0=(65536-4000) / 256;
        TL0=(65536-4000) % 256;
        P0=dispcode[dispbuf[dispbitcount]];
        P2=dispbitcode[dispbitcount];
        dispbitcount++;
        if (dispbitcount==8)
          {
            dispbitcount=0;
          }
        if (alarmflag==1)
          {
            P1_1=~P1_1;
          }
      }
      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版