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

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

QQ登錄

只需一步,快速開始

搜索
查看: 5707|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)LED點(diǎn)陣顯示電子鐘課程設(shè)計(jì)報(bào)告 附源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基于AT89S52單片機(jī)的LED點(diǎn)陣顯示時(shí)鐘
時(shí)鐘的顯示由LED點(diǎn)陣構(gòu)成。
能正確顯示時(shí)間,上電顯示為12點(diǎn)。
完成該系統(tǒng)的硬件和軟件的設(shè)計(jì),在Proteus軟件上仿真通過

《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)任務(wù)書
課題名稱
LED點(diǎn)陣顯示電子鐘設(shè)計(jì)
設(shè)計(jì)內(nèi)容及要求
1、課題內(nèi)容:設(shè)計(jì)一種基于AT89S52單片機(jī)的LED點(diǎn)陣顯示時(shí)鐘,要求如下:
(1)、時(shí)鐘的顯示由LED點(diǎn)陣構(gòu)成。
(2)、時(shí)間能夠由按鍵調(diào)整,誤差小于1S。
(3)、能正確顯示時(shí)間,上電顯示為12點(diǎn)。
2、要求:
完成該系統(tǒng)的硬件和軟件的設(shè)計(jì),在Proteus軟件上仿真通過,最后就課程設(shè)計(jì)本身提交一篇課程設(shè)計(jì)說明書。
設(shè)計(jì)工作量
1、匯編或C51語言程序設(shè)計(jì);
2、程序調(diào)試;
3、在Proteus上進(jìn)行仿真成功,進(jìn)行實(shí)驗(yàn)板下載調(diào)試;
4、提交一份完整的課程設(shè)計(jì)說明書,包括設(shè)計(jì)原理、程序設(shè)計(jì)、程序分析、仿真分析、調(diào)試過程,參考文獻(xiàn)、設(shè)計(jì)總結(jié)等。
進(jìn)度安排

目錄
1. 系統(tǒng)總體方案選擇與說明
2. 各單元硬件設(shè)計(jì)說明及計(jì)算方法
3. 軟件設(shè)計(jì)與說明(包括流程圖)
5. 調(diào)試結(jié)果與必要的調(diào)試說明
6. 使用說明
7. 課程設(shè)計(jì)體會(huì)
8. 參考文獻(xiàn)

  • 系統(tǒng)總體方案選擇與說明
本方案基于AT89S52單片機(jī)設(shè)計(jì)的,還用到13塊74HC573和1塊74HC138芯片,8快8*8LED點(diǎn)陣,原理比較簡(jiǎn)單,但所有硬件成本較高,不適應(yīng)商業(yè)用途。一個(gè)是硬件結(jié)構(gòu)的設(shè)計(jì),一個(gè)是控制的總體思想。在本小節(jié)中將對(duì)這兩部分內(nèi)容進(jìn)行簡(jiǎn)單的敘述
1.1硬件結(jié)構(gòu)
根據(jù)項(xiàng)目的功能和要求,可采用AT89S52單片機(jī)作為核心控制器。LED點(diǎn)陣電子鐘系統(tǒng)組成包括:顯示電路模塊、顯示驅(qū)動(dòng)電路模塊、按鍵電路模塊以及電源模塊。框圖如圖1.1所示。



1.2 控制思想
LED點(diǎn)陣電子鐘程序主要功能是屏幕顯示時(shí)間穩(wěn)定,精確。所以按照分塊設(shè)計(jì)的方法可以把程序分為主程序、顯示程序、調(diào)整程序。主程序主要是用來初始化系統(tǒng)和控制各個(gè)子程序之間執(zhí)行的順序。顯示程序用來完成數(shù)字在LED點(diǎn)陣上的顯示,時(shí)鐘的顯示是使用8塊8×8點(diǎn)陣顯示屏。
2. 各單元硬件設(shè)計(jì)說明及計(jì)算方法
74HC138
74HC138 作用原理于高性能的存貯譯碼或要求傳輸延遲時(shí)間短的數(shù)據(jù)傳輸系統(tǒng)在 高性能存貯器系統(tǒng)中,用這種譯碼器可以提高譯碼系統(tǒng)的效率。將快速賦能電路用于高速存貯器時(shí),譯碼器的延遲時(shí)間和存貯器的賦能時(shí)間通常小于存貯器的典型存取時(shí)間,這就是說由肖特基鉗位的系統(tǒng)譯碼器所引起的有效系統(tǒng)延遲可以忽略不計(jì)。HC138 按照三位二進(jìn)制輸入碼和賦能輸入條件,從8 個(gè)輸出端中譯出一個(gè) 低電平輸出。兩個(gè)低電平有效的賦能輸入端和一個(gè)高電平有效的賦能輸入端減少了擴(kuò)展所需要的外接門或倒相器,擴(kuò)展成24 線譯碼器不需外接門;擴(kuò)展成32 線譯碼器,只需要接一個(gè)外接倒相器。在解調(diào)器應(yīng)用中,賦能輸入端可用作數(shù)據(jù)輸入端。
74HC573
八進(jìn)制 3 態(tài)非反轉(zhuǎn)透明鎖存器
138芯片主要用于控制573芯片的輸入,以達(dá)到控制LED點(diǎn)陣顯示的目的。
8*8點(diǎn)陣顯示屏
圖2.2為8×8點(diǎn)陣LED外觀及引腳圖,其等效電路如圖2.3所示,只要其對(duì)應(yīng)的DC、DR軸順向偏壓,即可使LED發(fā)亮。例如如果想使圖2.3左上角LED點(diǎn)亮,則DC8=1,DR1=0即可。應(yīng)用時(shí)限流電阻可以放在DC軸或DR軸。8×8點(diǎn)陣LED外觀及引腳如圖2.2。

                     圖2.2  8×8LED點(diǎn)陣引腳圖
圖2.3為8×8點(diǎn)陣LED等效電路,由此可以看出點(diǎn)陣是用64個(gè)LED組成的。 點(diǎn)陣LED掃描法介紹:從圖2.3中可以看出,8×8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮。 頻率必須大于128赫茲,周期小于7.8毫秒即可符合視覺暫留要求。此外一次驅(qū)動(dòng)一列或一行(8盞LED)時(shí)需外加驅(qū)動(dòng)電路提高電流,否則LED亮度會(huì)不足。

                    圖2.3  8×8點(diǎn)陣LED等效電路


  • 軟件設(shè)計(jì)與說明(包括流程圖)




5. 調(diào)試結(jié)果與必要的調(diào)試說明
file:///Z:\TEMP\msohtmlclip1\01\clip_image002.jpg
如圖,上電顯示為12::00,時(shí)鐘自動(dòng)跳動(dòng)。因?yàn)長ED點(diǎn)陣顯示不夠明顯,所以可以調(diào)整延時(shí)來控制。
6.使用說明
本電路設(shè)3個(gè)按鍵,如圖
file:///Z:\TEMP\msohtmlclip1\01\clip_image003.jpg
按下K1鍵,電路進(jìn)入調(diào)整狀態(tài),秒鐘歸零,時(shí)鐘位可調(diào),K2為+1,K3為-1.
再按下K1鍵,分鐘位可調(diào),K2為+1,K3為-1.
再按下K1鍵,電路返回顯示狀態(tài)。
時(shí)鐘位、分鐘位、秒鐘位分別如圖所示
file:///Z:\TEMP\msohtmlclip1\01\clip_image004.jpg
7.課程設(shè)計(jì)體會(huì)
本次實(shí)習(xí)歷時(shí)一個(gè)星期,在這個(gè)星期里,我們一起努力,一起奮斗,一起討論,一起歡笑。
本次實(shí)習(xí)我要感謝同學(xué),可以說沒有他的幫助,我的實(shí)習(xí)任務(wù)是完不成的。我的實(shí)習(xí)題目是做一個(gè)LED點(diǎn)陣電子時(shí)鐘。這需要我去查閱大量的知識(shí)。作為一個(gè)學(xué)習(xí)成績(jī)不是很好的我,這個(gè)任務(wù)對(duì)我來說還是有一定的難度。
我首先從網(wǎng)上想查閱一些資料,但是網(wǎng)上沒有跟我想同的課題。所以一切還得自己搞。然后我就去圖書館借了一些書,以及自己的單片機(jī)課本,數(shù)電都拿到實(shí)驗(yàn)室去了,在實(shí)驗(yàn)室呆了一個(gè)星期,終于有了一些方向。程序方面還是弱項(xiàng),又看了一些編程方面的書,自學(xué)了51C語言,當(dāng)然,只是一些最基礎(chǔ)的,很多東西都要以后繼續(xù)努力學(xué)。
在這學(xué)期的實(shí)驗(yàn)中,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實(shí)驗(yàn)課上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我們都可以在實(shí)驗(yàn)結(jié)束之后變的更加成熟,會(huì)面對(duì)需要面對(duì)的事情。
還要感謝,兩位老師的品格和氣質(zhì)都深深的讓我們敬佩。兩位老師重不遲到,對(duì)學(xué)生更是富有耐心,劉老師更是在硬件方面給了學(xué)生很大的方便,很多設(shè)備都是直接找老師借的,這讓我們調(diào)試的時(shí)候很是方便。
本次實(shí)習(xí)很成功,我們都有了很大的收獲,感謝老師和同學(xué)。


單片機(jī)源程序如下:
  1. #include<reg52.h>

  2. void display(unsigned char,unsigned char,unsigned char);


  3. sbit a_138=P1^0;         //138
  4. sbit b_138=P1^1;
  5. sbit c_138=P1^2;

  6. sbit key1=P1^3;                //key1選擇,key2加,key3減
  7. sbit key2=P1^4;
  8. sbit key3=P1^5;

  9. sbit wei1=P2^0;           //六個(gè)點(diǎn)陣選擇位        ,weix=0位選通
  10. sbit wei2=P2^1;
  11. sbit wei3=P2^2;
  12. sbit wei4=P2^3;
  13. sbit wei5=P2^4;
  14. sbit wei6=P2^5;

  15. unsigned char num_138,shi,fen,miao,num_miao,key_flag;
  16. unsigned char code digittab[10][8]={

  17. {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0

  18. {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1

  19. {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2

  20. {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3

  21. {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4

  22. {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5

  23. {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6

  24. {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7

  25. {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8

  26. {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}  //9

  27. };

  28. void delay(unsigned char xms)
  29. {
  30.         unsigned char i,j;
  31.         for(i=xms;i>0;i--)
  32.                 for(j=110;j>0;j--);
  33. }

  34. void key_scan()
  35. {
  36.         if(key1==0)
  37.         {
  38.                 delay(3);
  39.                 if(key1==0)
  40.                 {
  41.                         TR0=0;
  42.                         key_flag++;
  43.                         if(key_flag>=3)
  44.                         {
  45.                                 key_flag=0;
  46.                                 TR0=1;
  47.                         }
  48.                         miao=0;
  49.                 }
  50.         }

  51.         if(key_flag==1)
  52.         {
  53.                 if(key2==0)
  54.                 {
  55.                         delay(3);
  56.                         if(key2==0)
  57.                         {
  58.                                 shi++;
  59.                                 if(shi>12)
  60.                                 shi=1;
  61.                         }
  62.                 }
  63.                 else if(key3==0)
  64.                 {
  65.                         delay(3);
  66.                         if(key3==0)
  67.                         {
  68.                                 shi--;
  69.                                 if(shi<1)
  70.                                 shi=12;
  71.                         }
  72.                 }
  73.         }

  74.         if(key_flag==2)
  75.         {
  76.                 if(key2==0)
  77.                 {
  78.                         delay(3);
  79.                         if(key2==0)
  80.                         {
  81.                                 fen++;
  82.                                 if(fen>=60)
  83.                                 {
  84.                                         fen=0;
  85.                                         shi++;
  86.                                         if(shi>12)
  87.                                                 shi=1;
  88.                                 }
  89.                         }
  90.                 }
  91.                 else if(key3==0)
  92.                 {
  93.                         delay(3);
  94.                         if(key3==0)
  95.                         {
  96.                                 fen--;
  97.                                 if(fen==0xff)
  98.                                 {
  99.                                         fen=59;
  100.                                         shi--;
  101.                                         if(shi==0)
  102.                                                 shi=12;
  103.                                 }
  104.                         }
  105.                 }
  106.         }
  107.         
  108. }

  109. void main()
  110. {
  111.         
  112.         P0=0x00;
  113.         TMOD=0x01;
  114.         TH0=(65536-50000)/256;          //50ms
  115.         TL0=(65536-50000)%256;
  116.         IT0=1;
  117.         IE=0x83;
  118.         TR0=1;
  119.         shi=12;
  120.         fen=0;
  121.         miao=0;

  122.         while(1)
  123.         {
  124.                 display(shi,fen,miao);
  125.         }
  126. }


  127. void display(unsigned char adate,unsigned char bdate,unsigned char cdate)
  128. {
  129.         unsigned char ashi,bshi,cshi,age,bge,cge;
  130.         ashi=adate/10;
  131.         age=adate%10;
  132.         bshi=bdate/10;
  133.         bge=bdate%10;
  134.         cshi=cdate/10;
  135.         cge=cdate%10;

  136.         wei1=0;
  137.         for(num_138=0;num_138<8;num_138++)
  138.                 {
  139.                         switch(num_138)
  140.                         {
  141.                                 case 0:a_138=0;b_138=0;c_138=0;break;
  142.                                 case 1:a_138=1;b_138=0;c_138=0;break;
  143.                                 case 2:a_138=0;b_138=1;c_138=0;break;
  144.                                 case 3:a_138=1;b_138=1;c_138=0;break;
  145.                                 case 4:a_138=0;b_138=0;c_138=1;break;
  146.                                 case 5:a_138=1;b_138=0;c_138=1;break;
  147.                                 case 6:a_138=0;b_138=1;c_138=1;break;
  148.                                 case 7:a_138=1;b_138=1;c_138=1;break;
  149.                         }
  150.                 P0=~digittab[ashi][num_138];
  151.                 delay(5);
  152.                 }
  153.         wei1=1;

  154.         wei2=0;
  155.         for(num_138=0;num_138<8;num_138++)
  156.                 {
  157.                         switch(num_138)
  158.                         {
  159.                                 case 0:a_138=0;b_138=0;c_138=0;break;
  160.                                 case 1:a_138=1;b_138=0;c_138=0;break;
  161.                                 case 2:a_138=0;b_138=1;c_138=0;break;
  162.                                 case 3:a_138=1;b_138=1;c_138=0;break;
  163.                                 case 4:a_138=0;b_138=0;c_138=1;break;
  164.                                 case 5:a_138=1;b_138=0;c_138=1;break;
  165.                                 case 6:a_138=0;b_138=1;c_138=1;break;
  166.                                 case 7:a_138=1;b_138=1;c_138=1;break;
  167.                         }
  168.                 P0=~digittab[age][num_138];
  169.                 delay(5);
  170.                 }
  171.         wei2=1;

  172.         wei3=0;
  173.         for(num_138=0;num_138<8;num_138++)
  174.                 {
  175.                         switch(num_138)
  176.                         {
  177.                                 case 0:a_138=0;b_138=0;c_138=0;break;
  178.                                 case 1:a_138=1;b_138=0;c_138=0;break;
  179.                                 case 2:a_138=0;b_138=1;c_138=0;break;
  180.                                 case 3:a_138=1;b_138=1;c_138=0;break;
  181.                                 case 4:a_138=0;b_138=0;c_138=1;break;
  182.                                 case 5:a_138=1;b_138=0;c_138=1;break;
  183.                                 case 6:a_138=0;b_138=1;c_138=1;break;
  184.                                 case 7:a_138=1;b_138=1;c_138=1;break;
  185.                         }
  186.                 P0=~digittab[bshi][num_138];
  187.                 delay(5);
  188.                 }
  189.         wei3=1;

  190.    wei4=0;
  191.         for(num_138=0;num_138<8;num_138++)
  192.                 {
  193.                         switch(num_138)
  194.                         {
  195.                                 case 0:a_138=0;b_138=0;c_138=0;break;
  196.                                 case 1:a_138=1;b_138=0;c_138=0;break;
  197.                                 case 2:a_138=0;b_138=1;c_138=0;break;
  198.                                 case 3:a_138=1;b_138=1;c_138=0;break;
  199.                                 case 4:a_138=0;b_138=0;c_138=1;break;
  200.                                 case 5:a_138=1;b_138=0;c_138=1;break;
  201.                                 case 6:a_138=0;b_138=1;c_138=1;break;
  202.                                 case 7:a_138=1;b_138=1;c_138=1;break;
  203.                         }
  204.                 P0=~digittab[bge][num_138];
  205.                 delay(5);
  206.                 }
  207.         wei4=1;

  208.         wei5=0;
  209.         for(num_138=0;num_138<8;num_138++)
  210.                 {
  211.                         switch(num_138)
  212.                         {
  213.                                 case 0:a_138=0;b_138=0;c_138=0;break;
  214.                                 case 1:a_138=1;b_138=0;c_138=0;break;
  215.                                 case 2:a_138=0;b_138=1;c_138=0;break;
  216.                                 case 3:a_138=1;b_138=1;c_138=0;break;
  217.                                 case 4:a_138=0;b_138=0;c_138=1;break;
  218.                                 case 5:a_138=1;b_138=0;c_138=1;break;
  219.                                 case 6:a_138=0;b_138=1;c_138=1;break;
  220.                                 case 7:a_138=1;b_138=1;c_138=1;break;
  221.                         }
  222.                 P0=~digittab[cshi][num_138];
  223.                 delay(5);
  224.                 }
  225.         wei5=1;

  226.    wei6=0;
  227.         for(num_138=0;num_138<8;num_138++)
  228.                 {
  229.                         switch(num_138)
  230.                         {
  231.                                 case 0:a_138=0;b_138=0;c_138=0;break;
  232.                                 case 1:a_138=1;b_138=0;c_138=0;break;
  233.                                 case 2:a_138=0;b_138=1;c_138=0;break;
  234.                                 case 3:a_138=1;b_138=1;c_138=0;break;
  235.                                 case 4:a_138=0;b_138=0;c_138=1;break;
  236.                                 case 5:a_138=1;b_138=0;c_138=1;break;
  237.                                 case 6:a_138=0;b_138=1;c_138=1;break;
  238.                                 case 7:a_138=1;b_138=1;c_138=1;break;
  239.                         }
  240.                 P0=~digittab[cge][num_138];
  241.                 delay(5);
  242.                 }
  243.         wei6=1;

  244. ……………………

  245. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
LED點(diǎn)陣顯示電子鐘設(shè)計(jì).rar (426.02 KB, 下載次數(shù): 72)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:638632 發(fā)表于 2020-4-3 19:58 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 伊人二区| 91精品国产综合久久久久久丝袜 | 激情小说综合网 | 日韩在线播放第一页 | 91成人免费 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产欧美在线观看 | 国产综合av| 国产色片| 紧缚调教一区二区三区视频 | 亚洲国产精品久久久久秋霞不卡 | 久久久精品一区二区 | 久久久精 | 国产高清精品一区 | a毛片| 中文在线一区二区 | 国产在线激情视频 | 中文一区| 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 成人午夜免费福利视频 | 日韩一区精品 | 天天操天天怕 | 成人欧美一区二区三区视频xxx | 国产成人免费视频网站视频社区 | 中文字幕亚洲区 | 精品无码久久久久国产 | 国产在线播| 午夜精品视频 | 国产999精品久久久影片官网 | 一区二区国产精品 | 久久国产精品网站 | 一区二区三区久久久 | 成人黄色在线 | 亚洲欧美日韩在线一区二区 | 欧美精品91 | 亚洲精品一区二区在线观看 | 高清欧美性猛交xxxx黑人猛交 | 人人澡人人射 | av在线天堂 | 久久99精品国产99久久6男男 | 高清成人av |