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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2854|回復: 3
打印 上一主題 下一主題
收起左側

單片機+TM1637數碼管冒號如何弄成閃爍?

[復制鏈接]
跳轉到指定樓層
樓主
ID:998934 發表于 2021-12-31 18:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/****-----請閱讀ReadMe.txt進行實驗-----***********/
#define MAIN_Fosc        11059200L    //定義主時鐘
#include    "15W4KxxS4.H"
#include    "tm1637.h"



u8 min=59;sec=50;
u8 count=0;




void Timer0Init(void)        //20??@11.0592MHz
{
    AUXR &= 0x7F;        //?????12T??
    TMOD &= 0xF0;        //???????
    TL0 = 0x00;        //???????
    TH0 = 0xB8;        //???????
    TF0 = 0;        //??TF0??
    TR0 = 1;        //???0????
}


/***********************
功能描述:主函數
入口參數:無
返回值:無
************************/
int main()
{
   
    u8 ch=0, p=0;
    P0M1 = 0;    P0M0 = 0;    //設置P0.0~P0.7為準雙向口
    P1M1 = 0;    P1M0 = 0;    //設置P1.0~P1.7為準雙向口
    P2M0 = 0;    P2M1 = 0;    //設置P2.0~P2.7為準雙向口
    P3M1 = 0;    P3M0 = 0;    //設置P3.0~P3.7為準雙向口
    P4M1 = 0;    P4M0 = 0;    //設置P4.0~P4.7為準雙向口
    P5M1 = 0;    P5M0 = 0;    //設置P5.0~P5.7為準雙向口
    Timer0Init();
    EA=1;ET0=1;
  TM1637_NixieTubeDisplay();
    TM1637_NixieTubeDisplayChar(min/10,0);
    TM1637_NixieTubeDisplayChar(min%10,1);
    TM1637_NixieTubeDisplayChar(sec/10,2);
    TM1637_NixieTubeDisplayChar(sec%10,3);
    while(1)
    {        
    //    if(fls==2)
    //    {
        //    maohao1();
    //        fls=0;
        //}
        
    }
}
void timer0_ISR() interrupt 1
{
    count++;
    if(count==50)
    {
        count=0;
        sec++;
        if(sec==60)
        {
            sec=0;
            min++;
            if(min==60)
            {
                min=0;
            }
                TM1637_NixieTubeDisplayChar(min/10,0);
                TM1637_NixieTubeDisplayChar(min%10,1);
        }
                TM1637_NixieTubeDisplayChar(sec/10,2);
                TM1637_NixieTubeDisplayChar(sec%10,3);
    }
}


  1. #include        "tm1637.h"
  2. u8 NumDis[24]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0X6F,\
  3.                           0x77,0x7C,0x39,0x5E,0x79,0x71,\
  4.                           0x08,0x48,0x49,\
  5.                           0x76,0x38,0x0E,0x50,0x37
  6. };//0123456789ABCDEF一二三HLJRS

  7. /**************************************
  8. 功能描述:延時函數
  9. 入口參數:u16 x ,該值為1時,延時1ms
  10. 返回值:無
  11. ***************************************/
  12. void delay_ms(u16 x)
  13. {  
  14.         u16 j,i;   
  15.         for(j=0;j<x;j++)   
  16.         {   
  17.                 for(i=0;i<1100;i++);   
  18.         }  
  19. }

  20. /**************************************
  21. 功能描述:延時函數
  22. 入口參數:u16 x ,該值為1時,延時us
  23. 返回值:無
  24. ***************************************/
  25. void delay_us(u16 n)                  
  26. {
  27.         u16 j,i;   
  28.         for(j=0;j<n;j++)   
  29.         {   
  30.                 for(i=0;i<7;i++);   
  31.         }
  32. }

  33. /**************************************
  34. 功能描述:TM1637開始函數
  35. 入口參數:無
  36. 返回值:無
  37. ***************************************/
  38. void TM1637_Start(void)
  39. {
  40.         TM1637_DIO_OUT();
  41.   TM1637_CLK = 1;
  42.         TM1637_DIO = 1;
  43.         delay_us(2);
  44.         TM1637_DIO = 0;
  45. }

  46. /**************************************
  47. 功能描述:TM1637應答函數
  48. 入口參數:無
  49. 返回值:無
  50. ***************************************/
  51. void TM1637_Ack(void)
  52. {
  53.         TM1637_DIO_IN();
  54.   TM1637_CLK = 0;
  55.         delay_us(5);  //在第8個時鐘下降沿之后延時5us,開始判斷ACK信號
  56.         while(TM1637_READ_DIO);
  57.         TM1637_CLK = 1;
  58.         delay_us(2);
  59.         TM1637_CLK = 0;
  60. }


  61. /**************************************
  62. 功能描述:TM1637停止函數
  63. 入口參數:無
  64. 返回值:無
  65. ***************************************/
  66. void TM1637_Stop(void)
  67. {
  68.         TM1637_DIO_OUT();
  69.         TM1637_CLK = 0;
  70.         delay_us(2);
  71.         TM1637_DIO = 0;
  72.         delay_us(2);
  73.         TM1637_CLK = 1;
  74.         delay_us(2);
  75.         TM1637_DIO = 1;
  76. }

  77. /**************************************
  78. 功能描述:向TM1637寫一個字節
  79. 入口參數:u8 oneByte
  80. 返回值:無
  81. ***************************************/
  82. void TM1637_WriteByte(u8 oneByte)
  83. {
  84.   u8 i;
  85.         TM1637_DIO_OUT();
  86.         for(i=0;i<8;i++)
  87.         {
  88.          TM1637_CLK = 0;
  89.                 if(oneByte&0x01)    //低位在前
  90.                 {
  91.                         TM1637_DIO = 1;
  92.                 }
  93.                 else
  94.                 {
  95.                         TM1637_DIO = 0;
  96.                 }
  97.                 delay_us(3);
  98.                 oneByte=oneByte>>1;
  99.                 TM1637_CLK = 1;
  100.                 delay_us(3);
  101.         }
  102. }

  103. /**************************************
  104. 功能描述:寫顯示寄存器
  105. 入口參數:無
  106. 返回值:無
  107. ***************************************/
  108. void TM1637_NixieTubeDisplay(void)
  109. {
  110.         u8 i;
  111.         TM1637_Start();
  112.         TM1637_WriteByte(0x40);//40H顯示地址自加1模式
  113.         TM1637_Ack();
  114.         TM1637_Stop();
  115.         TM1637_Start();
  116.         TM1637_WriteByte(0xC0);  //設置首地址
  117.         TM1637_Ack();
  118.                
  119.         for(i=0;i<6;i++)   //地址自加,不必每次都寫地址
  120.         {
  121.                 TM1637_WriteByte(0xff);  //送數據
  122.                 TM1637_Ack();
  123.         }
  124.         TM1637_Stop();
  125.         TM1637_Start();
  126.         TM1637_WriteByte(0x8f);   //開顯示,最大亮度
  127.         TM1637_Ack();
  128.         TM1637_Stop();
  129. }

  130. /**************************************
  131. 功能描述:向指定地址顯示一個字節內容
  132. 入口參數:u8 ch,u8 p
  133. 返回值:無
  134. ***************************************/
  135. void TM1637_NixieTubeDisplayChar(u8 ch,u8 p)
  136. {
  137.         if(ch>23) ch=0;//防止數組越界
  138.         TM1637_Start();
  139.         TM1637_WriteByte(0x44);//0x44固定模式有利于控制顯示位,0x40則采用顯示地址自加模式這里不使用
  140.         TM1637_Ack();
  141.         TM1637_Stop();
  142.         TM1637_Start();
  143.        
  144.         TM1637_WriteByte(0xC0+p);//0X00地址開始顯示
  145.         TM1637_Ack();
  146.                
  147.         TM1637_WriteByte(NumDis[ch]);//顯示
  148.         TM1637_Ack();               
  149.         TM1637_Stop();               //V1.1
  150. }
復制代碼


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

使用道具 舉報

沙發
ID:883242 發表于 2021-12-31 21:47 | 只看該作者
TM1637_NixieTubeDisplayChar函數里面加上利用count的值讓對應的燈點亮或者熄滅的代碼即可。
回復

使用道具 舉報

板凳
ID:624769 發表于 2021-12-31 22:50 | 只看該作者
看你要閃爍的周期,
發送  TM1637_WriteByte(0x80);   關閉顯示
一定時間后 發送 TM1637_WriteByte(0x8f); 打開顯示
達到閃爍的目的。
回復

使用道具 舉報

地板
ID:213173 發表于 2022-1-1 07:08 | 只看該作者
  1. /****-----請閱讀ReadMe.txt進行實驗-----***********/
  2. #define MAIN_Fosc        11059200L    //定義主時鐘
  3. #include    "15W4KxxS4.H"
  4. #include    "tm1637.h"
  5. //tm1637.c 中數碼管數組移到這里,TM1637_NixieTubeDisplayChar(u8 ch,u8 p)函數的形參ch直接傳遞段碼
  6. u8 NumDis[24]={//0123456789ABCDEF一二三HLJRS
  7. 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
  8. 0x7F,0X6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
  9. 0x08,0x48,0x49,0x76,0x38,0x0E,0x50,0x37};

  10. u8 min=59;sec=50;
  11. u8 count=0;

  12. void Timer0Init(void)        //20??@11.0592MHz
  13. {
  14.     AUXR &= 0x7F;        //?????12T??
  15.     TMOD &= 0xF0;        //???????
  16.     TL0 = 0x00;        //???????
  17.     TH0 = 0xB8;        //???????
  18.     TF0 = 0;        //??TF0??
  19.     TR0 = 1;        //???0????
  20. }

  21. /***********************
  22. 功能描述:主函數
  23. 入口參數:無
  24. 返回值:無
  25. ************************/
  26. int main()
  27. {   
  28.         u8 ch=0, p=0;
  29.         P0M1 = 0;    P0M0 = 0;    //設置P0.0~P0.7為準雙向口
  30.         P1M1 = 0;    P1M0 = 0;    //設置P1.0~P1.7為準雙向口
  31.         P2M0 = 0;    P2M1 = 0;    //設置P2.0~P2.7為準雙向口
  32.         P3M1 = 0;    P3M0 = 0;    //設置P3.0~P3.7為準雙向口
  33.         P4M1 = 0;    P4M0 = 0;    //設置P4.0~P4.7為準雙向口
  34.         P5M1 = 0;    P5M0 = 0;    //設置P5.0~P5.7為準雙向口
  35.         Timer0Init();
  36.         EA=1;ET0=1;
  37.         TM1637_NixieTubeDisplay();
  38.         TM1637_NixieTubeDisplayChar(NumDis[min/10],0);
  39.         TM1637_NixieTubeDisplayChar(NumDis[min%10]|0x80,1);//加冒號
  40.         TM1637_NixieTubeDisplayChar(NumDis[sec/10],2);
  41.         TM1637_NixieTubeDisplayChar(NumDis[sec%10],3);
  42.         while(1)
  43.         {        
  44. //    if(fls==2)
  45. //    {
  46. //    maohao1();
  47. //        fls=0;
  48. //}
  49.         
  50.     }
  51. }
  52. void timer0_ISR() interrupt 1
  53. {
  54.         count++;
  55.         if(count==50)
  56.         {
  57.                 count=0;
  58.                 sec++;
  59.                 if(sec==60)
  60.                 {
  61.                         sec=0;
  62.                         min++;
  63.                         if(min==60)
  64.                         {
  65.                                 min=0;
  66.                         }
  67.                 }
  68.         }
  69.         TM1637_NixieTubeDisplayChar(NumDis[min/10],0);
  70.         if(count<25) TM1637_NixieTubeDisplayChar(NumDis[min%10]|0x80,1);//加冒號
  71.         else TM1637_NixieTubeDisplayChar(NumDis[min%10],1);//不加冒號
  72.         TM1637_NixieTubeDisplayChar(NumDis[sec/10],2);
  73.         TM1637_NixieTubeDisplayChar(NumDis[sec%10],3);
  74. }

  75. /*
  76. void TM1637_NixieTubeDisplayChar(u8 ch,u8 p)
  77. {
  78.         if(ch>23) ch=0;//防止數組越界
  79.         TM1637_Start();
  80.         TM1637_WriteByte(0x44);//0x44固定模式有利于控制顯示位,0x40則采用顯示地址自加模式這里不使用
  81.         TM1637_Ack();
  82.         TM1637_Stop();
  83.         TM1637_Start();
  84.        
  85.         TM1637_WriteByte(0xC0+p);//0X00地址開始顯示
  86.         TM1637_Ack();
  87.        
  88. //        TM1637_WriteByte(NumDis[ch]);//顯示
  89.         TM1637_WriteByte(ch);//顯示
  90.         TM1637_Ack();               
  91.         TM1637_Stop();               //V1.1
  92. }*/
復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级在线 | 国产99热 | 久久久久国产一区二区三区四区 | 国产一级视屏 | 国产99久久精品一区二区永久免费 | 免费超碰 | www久久 | 国产日韩欧美中文 | 成人h动漫亚洲一区二区 | 欧美亚洲国产一区 | 国产精品福利久久久 | 欧美一级在线观看 | 久久久久久久国产 | 精品久久久久久 | 99久久精品免费看国产四区 | 亚洲国产黄 | 成人乱人乱一区二区三区软件 | 欧美激情在线精品一区二区三区 | 亚洲福利 | 欧美白人做受xxxx视频 | 亚洲成人三级 | 日本一区二区高清视频 | 一级美国黄色片 | 久久久久av | 亚洲免费观看视频 | 91亚洲精品国偷拍自产在线观看 | 四虎影| 老司机精品福利视频 | 日韩综合网 | 久久久91 | 一二三四在线视频观看社区 | 欧美精品一区二区在线观看 | 日本精品一区二区三区在线观看视频 | 一级大黄 | 国产精品永久免费观看 | 中文字幕在线播放第一页 | 99爱视频 | 国产丝袜人妖cd露出 | 国产视频中文字幕在线观看 | 久久99精品久久久久久狂牛 | 四虎永久影院 |