<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 自制51單片機(jī)超大數(shù)碼管時(shí)鐘

          自制51單片機(jī)超大數(shù)碼管時(shí)鐘

          作者: 時(shí)間:2012-08-04 來源:網(wǎng)絡(luò) 收藏

          市面上出售的數(shù)碼管一般都很小,本人用led發(fā)光管自己制作了一種個(gè)頭很非常大的數(shù)碼管,掛在家里顯示效果非常牛逼下面是實(shí)物圖:
          點(diǎn)擊瀏覽下一頁點(diǎn)擊瀏覽下一頁

          點(diǎn)擊瀏覽下一頁點(diǎn)擊瀏覽下一頁

          下面是電路圖:
          點(diǎn)擊瀏覽下一頁

          下面是c51程序源代碼:

          #includereg52.h>
          #include intrins.h>
          #define uchar unsigned char
          #define uint unsigned int
          #define pos P0 //設(shè)置數(shù)碼顯示的位選
          #define segs P1 //設(shè)置數(shù)碼顯示的段選

          code unsigned char d[]=
          {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,

          0x7c,0x39,0x5e,0x79,0x71,0x40,0};
          // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 熄滅
          //P0段選,共陰數(shù)碼管 0-9 a-f - 表

          unsigned char code w[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
          //P1位選,直接使用P1的8個(gè)端口進(jìn)行8位選擇(此演示中未用到)

          //ds1302連線設(shè)置
          sbit SCL2=P2^0; //SCL2定義為P2口的第2位腳,連接DS1302SCL
          sbit SDA2=P2^1; //SDA2定義為P2口的第1位腳,連接DS1302SCL
          sbit RST = P2^2; // DS1302片選腳

          unsigned char now[8]= {0, 19, 9, 17, 1, 7 , 10, 0};
          // 秒 分 時(shí) 日 月 星期 年 寫入禁止(0允許寫入,1禁止寫入)
          unsigned char nowtoshow[8];//進(jìn)行數(shù)據(jù)位的拆分處理用
          code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //保存寫入寄存器位置
          code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; //保存讀取寄存器位置

          unsigned char flash=0; //閃秒
          void display(unsigned char *lp);//數(shù)字的顯示函數(shù);lp為指向數(shù)組的地址,lc為顯示的個(gè)數(shù)

          void Write_Ds1302_byte(unsigned char temp); //字節(jié)寫入函數(shù)
          void Write_Ds1302( unsigned char address,unsigned char dat ); //調(diào)用字節(jié)定入函數(shù)在特定的地址寫入特定的數(shù)據(jù)
          unsigned char Read_Ds1302 ( unsigned char address ); //調(diào)用指定的地址的數(shù)據(jù)

          void Read_RTC(void);//read RTC //讀取時(shí)間日期值到nowtoshow
          void Set_RTC(void);//set RTC //設(shè)定時(shí)間日期值,這里用于賦初值
          void keydelay(unsigned char t);////鍵盤消抖延時(shí)
          delay();


          void main()
          {
          unsigned int k=0; //使k在0到4000之間循環(huán),不同的時(shí)間段顯示不同的內(nèi)容,以較多的時(shí)間顯示時(shí)間,以很少的時(shí)間顯示日期和星期

          //Set_RTC(); //設(shè)初值,第一次使用,以后就可以注釋掉,以免再次調(diào)校時(shí)間,當(dāng)然必須給1302接上2~5.5V的備用電源或電池

          Read_RTC();
          nowtoshow[0]=now[2]/16; //數(shù)據(jù)的轉(zhuǎn)換,因我們采用數(shù)碼管0~9的顯示,將數(shù)據(jù)分開
          nowtoshow[1]=now[2]0x0f;
          nowtoshow[2]=now[1]/16;
          nowtoshow[3]=now[1]0x0f;
          display(nowtoshow);

          while(1)
          {
          if (k2000) //顯示時(shí)間
          {
          if (k%100==0) //循環(huán)1000次后進(jìn)行一次數(shù)據(jù)更新
          {
          Read_RTC();
          if (flash==0) //象征性的閃秒,并不準(zhǔn)確,也沒有必要準(zhǔn)確
          { flash=1;}
          else
          {flash=0;}
          nowtoshow[0]=now[2]/16; //數(shù)據(jù)的轉(zhuǎn)換,因我們采用數(shù)碼管0~9的顯示,將數(shù)據(jù)分開
          if (nowtoshow[0]==0)nowtoshow[0]=17; //如果是0則不顯示
          nowtoshow[1]=now[2]0x0f;
          nowtoshow[2]=now[1]/16;
          nowtoshow[3]=now[1]0x0f;
          }
          }
          if (k>2000k2500) //顯示日期
          {
          flash=17;
          nowtoshow[0]=now[4]/16; //數(shù)據(jù)的轉(zhuǎn)換,因我們采用數(shù)碼管0~9的顯示,將數(shù)據(jù)分開
          if (nowtoshow[0]==0)nowtoshow[0]=17; //如果是0則不顯示
          nowtoshow[1]=now[4]0x0f;
          nowtoshow[2]=now[3]/16;
          if (nowtoshow[2]==0)nowtoshow[2]=17; //如果是0則不顯示

          nowtoshow[3]=now[3]0x0f;


          }
          if (k>2500) //顯示星期
          {
          flash=17;
          nowtoshow[0]=17; //數(shù)據(jù)的轉(zhuǎn)換,因我們采用數(shù)碼管0~9的顯示,將數(shù)據(jù)分開
          nowtoshow[1]=17;
          nowtoshow[2]=17;
          nowtoshow[3]=now[5];
          }
          k++;
          if (k==3000)k=0;
          display(nowtoshow);
          }
          }

          51單片機(jī)相關(guān)文章:51單片機(jī)教程



          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();