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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32+74HC595源碼 三位數碼管顯示時間,按鍵調節時間加減,一個按鍵執行

[復制鏈接]
跳轉到指定樓層
樓主
數碼管電路原理圖如下:


單片機源程序如下:

595驅動:
  1. #include "stm32f10x.h"
  2. #include "HC595.h"
  3. #include "delay.h"
  4. #include "key.h"


  5. #define uint  unsigned int
  6. #define uchar unsigned char

  7. //初始化PA0、PA1和PA2為輸出口,并使能這個端口的時鐘                    
  8. //HC595 IO初始化
  9. void HC595_Init(void)
  10. {
  11.         GPIO_InitTypeDef  GPIO_InitStructure;
  12.          
  13.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);                                                                 //使能PA端口時鐘
  14.         
  15.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;        //端口配置
  16.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                                                  //推挽輸出
  17.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  18.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  19.         GPIO_SetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);                                                 //PA0,1,2 輸出高

  20. }

  21. void HC595_Display(unsigned char Bai, unsigned char Shi, unsigned char Ge)
  22. {
  23.         uchar k;
  24.         uchar n = Ge;
  25.         uchar m = Shi;
  26.         uchar x = Bai;
  27.         for(k=0;k<8;k++)
  28.         {
  29.                 if(n&0x80) HC595_SDI = 1;
  30.                 else HC595_SDI = 0;   //判斷當前發送位數據
  31.                 n <<= 1;                                      //左移一位
  32.                 HC595_CLK = 0;
  33.                 //delay_ms(1);
  34.                 HC595_CLK = 1;               //移位寄存器操作
  35.                 //delay_ms(1);               
  36.         }               
  37.         for(k=0;k<8;k++)
  38.         {
  39.                 if(m&0x80)HC595_SDI =1;
  40.                 else HC595_SDI = 0;                //判斷當前發送位數據
  41.                 m <<= 1;                                                        //左移一位
  42.                 HC595_CLK = 0;
  43.                 //delay_ms(1);
  44.                 HC595_CLK = 1;               //移位寄存器操作
  45.                 //delay_ms(1);
  46.         }
  47.         
  48.         for(k=0;k<8;k++)
  49.         {
  50.                 if(x&0x80)HC595_SDI =1;
  51.                 else HC595_SDI = 0;                //判斷當前發送位數據
  52.                 x <<= 1;                                                        //左移一位
  53.                 HC595_CLK = 0;
  54.                 //delay_ms(1);
  55.                 HC595_CLK = 1;               //移位寄存器操作
  56.                 //delay_ms(1);
  57.         }
  58.         
  59.         HC595_LE = 1;
  60.         //delay_ms(1);
  61.         HC595_LE = 0;                        //鎖存數據
  62.         //delay_ms(1);
  63. }

  64. //void HC595_Off(void)
  65. //{
  66. //        //OE = 1;               
  67. //}

  68. //void SMG(void)
  69. //{  
  70. //         
  71. //          u8 key;
  72. //          int a=0;//b=0, c=0;

  73. //          unsigned char Bai_Wei,Shi_Wei,Ge_Wei;        //千位,百位,十位,個位Qian_Wei,
  74. //                //數碼管編碼
  75. //                unsigned char table[] =
  76. //                {0xc0,0xf9,0xa4,0xb0,0x99,
  77. //                0x92,0x82,0xf8,0x80,0x90,
  78. //                0xff,0x00,0x90,0x86,0xaf,
  79. //                0xc0,0x89,0xc7,0x8e,0xc1,0x7f};
  80. //                //0,1,2,3,4,5,6,7,8,9,全暗,全亮,g,E,r,O,H,L,F,U,小數點,共陽數碼管使用
  81. //   
  82. //               
  83. //    key=KEY_Scan(0);   //掃描按鍵
  84. //                if(key==KEY_LEFT)
  85. //                {
  86. //            a++;               
  87. //               
  88. //                }
  89. //                Bai_Wei = table[a];
  90. //                Shi_Wei = table[2];
  91. //                Ge_Wei = table[3];
  92. //                HC595_Display(Bai_Wei,Shi_Wei,Ge_Wei);
  93. //}
復制代碼

  1. //2位數碼管測試代碼           
  2. //樊川技術
  3. //實驗現象:3位數碼管輪流顯示數碼管編碼表里面的字符
  4. #include "led.h"
  5. #include "delay.h"
  6. #include "sys.h"
  7. #include "HC595.h"
  8. #include "key.h"
  9. #include "time.h"

  10. unsigned char Qian_Wei,Bai_Wei,Shi_Wei,Ge_Wei;        //千位,百位,十位,個位
  11. float d=0;
  12. //數碼管編碼
  13. unsigned char table[] =
  14. {0xc0,0xf9,0xa4,0xb0,0x99,
  15. 0x92,0x82,0xf8,0x80,0x90,
  16. 0xff,0x00,0x90,0x86,0xaf,
  17. 0xc0,0x89,0xc7,0x8e,0xc1,0x7f};
  18. //0,1,2,3,4,5,6,7,8,9,全暗,全亮,g,E,r,O,H,L,F,U,小數點,共陽數碼管使用

  19. unsigned char table1[] =
  20. {0xc0,0xf9,0xa4,0xb0};
  21. //0,1,2,3,4,5,6,7,8,9,全暗,全亮,g,E,r,O,H,L,F,U,小數點,共陽數碼管使用

  22. int KEY_ING=1;


  23. int main(void)
  24. {
  25.         u8 key;
  26.   int a=0,b = 0,c = 0;
  27.         SystemInit();                                        //系統時鐘初始化為72M          SYSCLK_FREQ_72MHz
  28.         delay_init(72);                                //延時函數初始化
  29.         NVIC_Configuration();        //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  30.         LED_Init();                //LED端口初始化

  31.         HC595_Init();
  32.         KEY_Init();
  33.         TIM4_Init(1000,36000-1);  //定時500ms

  34.         
  35.         
  36. //        //清空LED數碼管
  37. //        Bai_Wei = table[10];//清空LED
  38. //        Shi_Wei = table[10];//清空LED
  39. //        Ge_Wei = table[10];//清空LED
  40. //        HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
  41. //        delay_ms(3000);

  42.         
  43.         
  44.         while(1)
  45.         {               
  46.                 key=KEY_Scan(0);   //掃描按鍵
  47.                 switch(key)
  48.                 {
  49.                         case KEY_DOWN: KEY_ING=1;break;    //按下K_DOWN按鍵  熄滅D2指示燈
  50.                         case KEY_LEFT: c=c+5;break;    //按下K_LEFT按鍵  點亮D3指示燈
  51.                         case KEY_RIGHT: c=c-5;break;   //按下K_RIGHT按鍵 熄滅D3指示燈
  52.                 }
  53.                                                         if(c == 10)
  54.                                                         {
  55.                                                                 c = 0;
  56.                                                                 b++;
  57.                                                         }
  58.                                                         if(c == -5)
  59.                                                         {
  60.                                                                 c = 5;
  61.                                                                 b--;
  62.                                                         }
  63.                                                         if(b == -1)
  64.                                                         {
  65.                                                                 b = 9;
  66.                                                                 a--;                        
  67.                                                         }
  68.                                                         if(b == 10)
  69.                                                         {
  70.                                                                 b = 0;
  71.                                                                 a++;                        
  72.                                                         }
  73.                                                         if(a == 3)
  74.                                                         {  
  75.                                                                 b= 0;
  76.                                                                 c= 0;
  77.                                                         }
  78.                                                         if(a <0)
  79.                                                         {  
  80.                                                                 a=0;
  81.                                                                 b=0;
  82.                                                                 c= 0;
  83.                                                         }
  84.                
  85.                 d=a*10+b+0.1*c;
  86.     Bai_Wei = table1[a];
  87.                 Shi_Wei = table[b];
  88.                 Ge_Wei =  table[c];
  89.                 HC595_Display(Bai_Wei,Shi_Wei,Ge_Wei);
  90.         }
  91. }
復制代碼

Keil代碼下載:
STM32_3位數碼管定時程序.rar (295.17 KB, 下載次數: 190)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:430492 發表于 2019-3-19 20:11 | 只看該作者
正在弄這個程序,感謝樓主分享。
回復

使用道具 舉報

板凳
ID:924454 發表于 2021-5-20 15:03 | 只看該作者
感謝樓主的精彩分享!
回復

使用道具 舉報

地板
ID:928738 發表于 2022-2-10 11:15 | 只看該作者
沒有原理圖,圖片不清晰
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清在线免费观看 | 国产小视频在线观看 | 中文精品一区二区 | 久久久精品视频免费看 | 久久区二区 | 91精品国产日韩91久久久久久 | 久久国产精品视频 | 日韩欧美中文字幕在线观看 | 夜夜爽99久久国产综合精品女不卡 | 国产欧美日韩久久久 | 成年网站在线观看 | 亚洲一区二区久久久 | yiren22 亚洲综合 | 热久久久久 | 9999国产精品欧美久久久久久 | 亚洲精品久久久久久一区二区 | 欧美日韩综合视频 | 国产精品国产三级国产aⅴ无密码 | 中文字幕亚洲精品 | www.国产.com| aaa一区 | 中文字幕在线观看第一页 | 精品一区二区视频 | 欧美一区二区三区在线看 | 亚洲精品福利在线 | 亚洲一区高清 | 精品国产乱码久久久久久影片 | 91精品国产91久久久久久吃药 | 欧美日韩精品 | 亚洲电影免费 | 日韩第一页 | 欧美二区三区 | 在线观看日韩 | 国产日韩免费观看 | 欧美日韩国产一区二区三区 | 国产综合精品一区二区三区 | 久久久久久国产精品 | 午夜视频在线免费观看 | 欧美福利一区 | 日韩一区二区三区视频 | 亚洲国产成人久久综合一区,久久久国产99 |