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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6077|回復: 6
收起左側

STM32定時器+8位數碼管數字鐘整點PB口閃爍報警按鍵(查詢掃描)Proteus仿真程序

  [復制鏈接]
ID:740717 發表于 2020-6-3 12:06 | 顯示全部樓層 |閱讀模式
希望可以幫到你
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "Delay.h"
  3. #include "smg.h"
  4. #include "sys.h"
  5. #include "timer.h"
  6. #include "led.h"
  7. #include "fmq.h"
  8. #include "key.h"
  9. #include "stm32f10x_tim.h"
  10. //定義0~9十個數字的字型碼表
  11. uint16_t table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x80};//段碼   
  12.                //顯示0,   1,   2,    3,   4,  5,   6,   7,   8,    9, -,  .
  13. uint16_t wei[]={0x0fe,0x0fd,0x0fb,0x0f7,0x0ef,0x0df,0x0bf,0x07f}; //位碼;
  14. uint8_t  num[8];

  15. uint16_t t,i,k;  //
  16. uint16_t L1=LED1OFF;//F1=FMQ1OFF;//不能放在一行定義
  17. uint16_t F1=FMQ1OFF;
  18. uint16_t hour,minute,secend;         //原有定義時間
  19. uint16_t hour1,minute1,secend1;      //保護修改鬧鈴當前時間,恢復用
  20. uint16_t hour2,minute2,secend2;      //設鬧鈴
  21. int main(void)
  22. {
  23.         hour=23,minute=59,secend=50;
  24.         NVIC_Configuration(); //設置中斷分組2:2位搶占優先級,2位響應優先級
  25.          SMG_Init();
  26.         TIM3_Init(100,7199);        //10Khz的計數頻率,計數到5000為500ms(仿真1000,實際10000)
  27.         LED_Init();                     //7200-1=7199   72M=7200  0000
  28.         FMQ_Init();
  29.         KEY_Init();  //<<左移  &與字節 字  &&位與邏輯里小括號   |字節或字  ||位或邏輯   !=不等于  !邏輯取反
  30.   
  31.   while(1)
  32.         {
  33.                 t=KEY_Scan();                //得到鍵值
  34.           if(t)   //if(條件)t!=0真
  35.                  {                                                   
  36.                         switch(t)
  37.                         {                                 
  38.                                 case 1:
  39.                                          hour++;
  40.                                    break;        
  41.                                 case 2:
  42.                                         minute++;
  43.                                    break;
  44.                                 case 3:
  45.                                         secend++;
  46.                                    break;
  47.                                 case 4:
  48.                                 TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE);   //禁止TIM3中斷
  49.                                 TIM_Cmd(TIM3,DISABLE);                      //TIM3停止
  50.         hour1=hour,minute1=minute1,secend1=secend;        //把原有時間放在當前時間里                        
  51.                                 break;
  52.                                 case 5:
  53.                                         if(TIM_GetITStatus(TIM3,TIM_IT_Update)==RESET)   //獲取TIM3的更新狀標志位條件成立
  54.                                 {  
  55.                                         hour2=hour,minute2=minute,secend2=secend;        //鬧鈴設定時間放在當前時間里
  56.                                         hour=hour1,minute=minute1,secend=secend1;        //還原當前時間
  57.                                   TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  58.                                   TIM_Cmd(TIM3,ENABLE);
  59.                                 }
  60.                                 break;
  61.                         }
  62.                 }
  63.                
  64.    num[7]=secend%10;      // 51%10  51/10  取余1    %取余數   /取整數
  65.    num[6]=secend/10;//秒  /整除(商)
  66.          num[5]=10;
  67.    num[4]=minute%10;
  68.    num[3]=(minute%100)/10;
  69.          num[2]=11;
  70.    num[1]=hour%10;
  71.    num[0]=(hour%100)/10;
  72.                 for(i=0;i<8;i++)
  73.                 {
  74.                         GPIO_Write(GPIOB,wei[i]|(L1&F1));//送段送位短延時
  75.                         GPIO_Write(GPIOC,table[num[i]]);
  76.                         Delay(23);
  77.                         
  78.                         GPIO_Write(GPIOB,0x0ff|(L1&F1));//復位延時要適當
  79.                         Delay(23);        //仿真時可以省略,實際根據需要來確定               
  80.                 }
  81.    if(secend==60){secend=0;minute++;}
  82.          if(minute==60){minute=0;hour++;}
  83.          if(hour==24){hour =0;}
  84.          if(minute==0)
  85.          {
  86.            if(secend%2==1){LED1=0;L1=LED1ON;}
  87.            else{LED1=1;L1=LED1OFF;}
  88.                  FMQ1=0;F1=FMQ1ON;
  89.    }
  90.          else
  91.    { LED1=1;L1=LED1OFF;FMQ1=1;F1=FMQ1OFF;}
  92.    if(minute==minute2&&hour==hour2&&secend<=20)          //&& 與
  93.    {
  94.            if(secend%2==1){LED1=0;L1=LED1ON;}
  95.            else{LED1=1;L1=LED1OFF;}
  96.                  FMQ1=0;F1=FMQ1ON;                 
  97.          }
  98.      else
  99.     { LED1=1;L1=LED1OFF;FMQ1=1;F1=FMQ1OFF;}                        
  100.         }
  101. }
復制代碼

本人初學,僅供參考,如有錯誤,請大家回帖多多指教,仿真代碼下載:
定時器+8位數碼管數字鐘整點PB口閃爍報警按鍵(查詢掃描).7z (253.75 KB, 下載次數: 394)

評分

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

查看全部評分

回復

使用道具 舉報

ID:774639 發表于 2020-6-10 13:10 | 顯示全部樓層
仿真是在壓縮文件里嗎
回復

使用道具 舉報

ID:774639 發表于 2020-6-10 14:06 | 顯示全部樓層
打不開原理圖
回復

使用道具 舉報

ID:774108 發表于 2020-6-15 12:40 來自手機 | 顯示全部樓層
我運行起來數字不能一起顯示
回復

使用道具 舉報

ID:672798 發表于 2020-6-23 09:41 來自手機 | 顯示全部樓層
只有8.7及以上版本才能打開
回復

使用道具 舉報

ID:774631 發表于 2020-6-23 11:52 | 顯示全部樓層
謝謝分享,很實用的stm32仿真
回復

使用道具 舉報

ID:740717 發表于 2021-11-19 18:56 | 顯示全部樓層
jfghoiegkjf 發表于 2020-6-12 18:38
請問有實驗報告嗎

實驗報告要自己寫。。。。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 水蜜桃亚洲一二三四在线 | 黑色丝袜三级在线播放 | 在线播放一区二区三区 | 日韩精品在线一区 | 欧美在线视频一区二区 | 欧美一级片久久 | 超碰免费在线观看 | 日日天天 | 日韩亚洲欧美综合 | 欧美另类日韩 | www.97zyz.com| 久久99网| 日韩在线精品 | 亚洲日本中文字幕在线 | 日日夜夜视频 | 天天草av| 日韩精品一区二区三区视频播放 | 黄色毛片一级 | 亚洲一区国产 | 国产成人一区二区三区电影 | 玖玖国产精品视频 | 日韩精品成人网 | 国产一在线 | www.47久久青青 | 国产视频h | 欧美 日韩 国产 在线 | 天堂网色 | 日韩中文久久 | 久久i| 国产一区二区三区www | 中文二区 | 91最新视频 | 久久国产区 | 一区二区免费 | 成人精品啪啪欧美成 | 国产欧美日韩精品一区 | 午夜一级黄色片 | 国产小视频精品 | 精品日韩一区 | 夜夜艹天天干 | 涩涩视频在线观看免费 |