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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32驅動數碼管顯示的幾種方法

[復制鏈接]
跳轉到指定樓層
樓主
ID:391361 發表于 2019-3-5 10:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
數碼管 顯示的幾種方法

單片機源程序如下:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"
  4. #include "smg.h"
  5. #include <stdlib.h>

  6. u8 ge=0,shi=0,bai=0;
  7. u8 rlen1=0;
  8. int i=0,j=0,Num=0;
  9. float        num=0;
  10. char S[100]={0};

  11. u8 smg[16]={        0xC0, 0xF9, 0xA4, 0xB0,
  12.                                                         0x99, 0x92, 0x82, 0xF8,
  13.                                                         0x80, 0x90, 0x88, 0x83,
  14.                                                         0xC6, 0xA1, 0x86, 0x8E};                                               
  15.                                                        
  16. int main(void)
  17. {               
  18. delay_init();         
  19. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  20. uart_init(115200);
  21. SMG_Init();
  22.         printf("SMG test!\r\n");
  23. while(1)  //USART1接收到[0,100)之間的數據通過數碼管顯示出來
  24. {
  25.          if(USART_RX_STA&0x8000)//接收未完成
  26.          {
  27.                  j=0;
  28.                  rlen1=USART_RX_STA&0X3FFF;        //得到本次接收到的數據長度
  29.                  USART_RX_BUF[rlen1]=0;
  30.                  USART_RX_STA=0;
  31.                  printf("rlen1=%d\r\n",rlen1);
  32.                  printf("%s\r\n",USART_RX_BUF);
  33.                  sprintf(S,"%s",USART_RX_BUF);//接收到的字節數
  34.                  num=atof(S);
  35.                  printf("num=%f\r\n",num);
  36.                  if(0<=num&&num<10) //0~10
  37.                  {
  38.                          printf("數值在[0,10)區間\r\n");
  39.                          Num=num*100;
  40.                    bai=Num/100;
  41.                          shi=Num%100/10;
  42.                          ge=Num%10;
  43.                          GPIO_Write(GPIOC, (u16)smg[bai]-0x80 );
  44.                          delay_ms(1000);
  45.                          GPIO_Write(GPIOC, (u16)smg[shi] );
  46.                          delay_ms(1000);
  47.                          GPIO_Write(GPIOC, (u16)smg[ge] );
  48.                          delay_ms(1000);                         
  49.                  }
  50.                  else if(10<=num&&num<100) //10~100
  51.                  {
  52.                          printf("數值在[10,100)區間\r\n");
  53.                          Num=num*10;
  54.                          bai=Num/100;
  55.                          shi=Num%100/10;
  56.                          ge=Num%10;
  57.                          GPIO_Write(GPIOC, (u16)smg[bai] );
  58.                          delay_ms(1000);
  59.                          GPIO_Write(GPIOC, (u16)smg[shi]-0x80 );
  60.                          delay_ms(1000);
  61.                          GPIO_Write(GPIOC, (u16)smg[ge] );
  62.                          delay_ms(1000);                         
  63.                  }
  64.                  else//超出范圍
  65.                 {
  66.                         printf("數值超出[0,100)區間\r\n");
  67.                         for(i=0;i<3;i++)
  68.                         {
  69.                                 GPIO_Write(GPIOC, (u16)0x00 );
  70.                                 delay_ms(500);
  71.                                 GPIO_Write(GPIOC, (u16)0xff );
  72.                                 delay_ms(500);       
  73.                         }                               
  74.                 }
  75.          }
  76.          j++;delay_ms (10);
  77.          if(j>=300)//3秒沒數據
  78.          {
  79.                  GPIO_Write(GPIOC,~(u16)0x01);
  80.                  delay_ms(300);
  81.                  GPIO_Write(GPIOC,~(u16)0x40);
  82.                  delay_ms(300);
  83.                  GPIO_Write(GPIOC,~(u16)0x08);
  84.                  delay_ms(300);
  85.          }
  86. }
  87. }
復制代碼

所有資料51hei提供下載:
數碼管.7z (212.25 KB, 下載次數: 68)


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

使用道具 舉報

沙發
ID:1 發表于 2019-3-6 02:18 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产乱码精品一区二三赶尸艳谈 | www.v888av.com | 成人福利网 | 完全免费在线视频 | 欧美日韩国产三级 | 成人午夜精品 | 成人一区二区视频 | 欧美亚洲综合久久 | 国产精品国产精品 | 免费视频色| 91视视频在线观看入口直接观看 | 精品国产一区二区三区性色av | 久久免费福利 | 亚洲精品国产一区 | 亚洲精品成人网 | 蜜桃精品视频在线 | 99爱在线观看 | 天天射影院 | 草草影院ccyy | 精品久久国产老人久久综合 | 天堂素人约啪 | 国产精品国产成人国产三级 | 日本午夜网| 国产黄色一级片 | 日韩精品一区二区三区在线播放 | 成人h动漫精品一区二区器材 | 福利在线看 | 成人动漫一区二区 | av天天干 | 日本在线精品视频 | 免费国产一区二区 | 国产欧美日韩综合精品一区二区 | 国产乱xxav| 岛国视频 | 日韩中文一区二区三区 | 日韩手机在线看片 | 在线观看精品 | 天天干天天插 | 亚洲精品自在在线观看 | 日韩无 | 亚洲精品乱码久久久久久蜜桃 |