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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

C51單片機+單個74HC595動態掃描1位數碼管(原理圖+實物制作+源碼)

查看數: 2239 | 評論數: 1 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2018-12-9 13:25

正文摘要:

原理圖

回復

ID:424598 發表于 2018-12-9 13:25
  1. /***********74HC595動態掃描1位數碼管************/
  2. //MCU:AT89S52RC
  3. //晶振:11.0592M.
  4. //采用1位數碼管
  5. /***************************************************/
  6. #include<reg51.h>
  7. #include <INTRINS.H>
  8. #define uint unsigned int
  9. #define uchar unsigned char
  10. #define nop() _nop_();_nop_();

  11. sbit CLK=P2^0; //74HC595的11引腳
  12. sbit DAT=P2^1; //74HC595的14引腳
  13. sbit RCLK=P2^2;        //74HC595的12引腳


  14. //本程序支持1位共陽和共陰數碼管可根據你的數碼管是共陰還是共陽,開啟下面匹配的tab[]
  15. //                 0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F   全亮 全滅
  16. //uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00,0xff}; //共陽數碼管 不顯示0xff 全亮0x00 只顯示點0x7f
  17. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0xff,0x00}; //共陰數碼管 不顯示0x00 全亮0xff 只顯示點0x80
  18. uchar t;
  19. uchar count = 0;

  20. /* //延時函數
  21. void delay(uchar z)
  22. {
  23.         uchar x,y;
  24.         for(x=z;x>0;x--)
  25.                 for(y=120;y>0;y--);
  26. }
  27. */

  28. //寫數碼管函數
  29. void write595(unsigned char word,uchar k1)
  30. {
  31.         uchar num,c; //變量
  32.         if(k1==1){ //如果k1的值為1,則點亮小數點)
  33.                 num=tab[word]|0x80; //關鍵就在|0x80
  34.         } else {
  35.                 num=tab[word];
  36.         }
  37.         //循環8個LED
  38.         for(c=0;c<8;c++)
  39.         {
  40.            CLK=0;
  41.            DAT=num&0x80;
  42.            num=num<<1;
  43.            CLK=1;
  44.         }
  45.         RCLK=0;
  46.         //nop();
  47.         //nop();
  48.         RCLK=1;
  49. }



  50. void init() //啟動定時器
  51. {
  52.     TMOD=0X01;
  53.     TH0=(65535-46080)/256;
  54.     TL0=(65535-46080)%256;
  55.     ET0=1;
  56.     EA=1;
  57.     TR0=1;
  58. }

  59. void T0_time() interrupt 1 //定時器
  60. {     
  61.         if (count == 20) {
  62.                 t++;
  63.                 count = 0;
  64.         } else {
  65.                 ++count;
  66.         }
  67. }

  68. int main(void) //主程序
  69. {   
  70. //unsigned char i;
  71.         init(); //啟動定時器
  72.         while(1)
  73.    { //無限循環
  74.            if(t>9) {t=0;} //當t>9,則初始為0
  75.            write595(t,0); //要寫的值          
  76.            //for(i=0;i<10;i++) _nop_();
  77.    }
  78. }
復制代碼

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表