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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍橋杯單片機組省賽源程序 第十屆

[復制鏈接]
跳轉到指定樓層
樓主
ID:586435 發表于 2020-10-31 19:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
第十屆   

大多數人說  難點在NE555.
   其實仔細看過15的數據手冊  應該就很清楚NE555用的是計數器0來開展計數的,所以難就難在他很新。
  其次就是DA的輸出吧 。用到了 PCF8591寄存器的第7位,輸出寫入0x41  


其他就是邏輯問題了。總體不是多難。。。。。


代碼自行下載  哈哈。

單片機源程序如下:
  1. #include "pcf8591.h"
  2. #include "smg.h"
  3. #include "timer.h"
  4. #include "type.h"
  5. #include "led.h"



  6. sbit  S7 = P3 ^ 0;
  7. sbit  S6 = P3 ^ 1;
  8. sbit  S5 = P3 ^ 2;
  9. sbit  S4 = P3 ^ 3;


  10. bit flag_S7 = 1;
  11. bit flag_S6 = 1;
  12. bit flag_S5 = 1;
  13. bit flag_S4 = 1;

  14. u32 F_count;        //頻率計數值
  15. u32 F_count_buff;   //頻率計數緩沖值
  16. u8 V_date;
  17. float V_date_buff;
  18. bit flag_50ms;

  19. void Init_MCU(void);
  20. void KeyScan(void);
  21. void DisplaySMG(void);

  22. void main(void)
  23. {
  24.     Init_MCU();
  25.     Init_Timer0();
  26.     Init_Timer1(5);    //定時器設置為5ms
  27.     while(1)
  28.     {
  29.                 if(flag_50ms) //電壓數據刷新時間 50ms
  30.                 {
  31.                         flag_50ms = 0;

  32.                         if(flag_S5)
  33.                         {                                
  34.                                 V_date = 2*255/5;
  35.                                 Write_RB2();
  36.                         }
  37.                         else
  38.                         {
  39.                                 V_date = Read_RB2();
  40.                                 Write_RB2();
  41.                         }
  42.                         
  43.                 }
  44.         DisplaySMG();
  45.                 DisplayLED();
  46.                 KeyScan();
  47.     }
  48. }






  49. //-------------------------------------------
  50. //初始化外設
  51. //-------------------------------------------
  52. void Init_MCU(void)
  53. {
  54.     Select_573(4);
  55.     P0 = 0xFF;
  56.     Select_573(5);
  57.     P0 = 0x00;
  58.     Select_573(0);
  59.     P0 = 0xFF;
  60. }


  61. //-------------------------------------------
  62. //按鍵功能
  63. //-------------------------------------------
  64. void KeyScan(void)
  65. {
  66.     if(S7 == 0 || S6 == 0 || S5 == 0 || S4 == 0)
  67.     {
  68.         delay(200);
  69.         if(S7 == 0)   //數碼管顯示功能控制
  70.         {
  71.             flag_S7 = ~flag_S7;
  72.         }
  73.         while(!S7)
  74.         {
  75.             DisplaySMG();
  76.         }

  77.         if(S6 == 0)   //LED 指示燈功能控制
  78.         {
  79.             flag_S6 = ~flag_S6;

  80.         }
  81.         while(!S6)
  82.         {
  83.             DisplaySMG();
  84.         }

  85.         if(S5 == 0)   //輸出模式切換
  86.         {
  87.                         flag_S5 = ~flag_S5;
  88.         } while(!S5)
  89.         {
  90.             DisplaySMG();
  91.         }

  92.         if(S4 == 0)          //顯示界面切換
  93.         {
  94.             flag_S4 = ~flag_S4;
  95.         }
  96.         while(!S4)
  97.         {
  98.             DisplaySMG();
  99.         }
  100.     }
  101. }


  102. //-------------------------------------------
  103. //數碼管顯示函數
  104. //-------------------------------------------
  105. void DisplaySMG(void)
  106. {
  107.     if(!flag_S7)
  108.     {
  109.                 Select_573(6);
  110.         P0 = 0x00;
  111.                 Select_573(7);
  112.                 P0 = 0xFF;
  113.         Select_573(0);
  114.         
  115.     }
  116.     else
  117.     {
  118.         if(flag_S4)
  119.                 {
  120. //                        V_date = Read_RB2();
  121.                         V_date_buff = V_date;
  122.                         V_date_buff = (V_date_buff * 5.0) / 255 * 100;    //D/A值轉換
  123.                         Dispaly_V_SMG((u16)V_date_buff);
  124.                 }
  125.             
  126.         else
  127.             Dispaly_F_SMG(F_count_buff);
  128.     }
  129. }


  130. //-------------------------------------------
  131. //中斷服務函數
  132. //-------------------------------------------
  133. void InterruptTime0(void) interrupt 1
  134. {
  135.     F_count ++;
  136. }


  137. void InterruptTime1(void) interrupt 3
  138. {
  139.     static u8 t;
  140.     t++;
  141.         if(t % 10 == 0)
  142.                 flag_50ms = 1;
  143.             
  144.     if(t >= 20)          //頻率數據刷新時間  100ms
  145.         {
  146.        F_count_buff = F_count * 10;
  147.            F_count = 0;
  148.            t = 0;
  149.         }
  150. }
復制代碼

全部代碼51hei下載地址:
第十屆.zip (64.84 KB, 下載次數: 25)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女久久久久aⅴ国产馆 | 亚洲免费视频网址 | 一区二区三区视频在线观看 | 亚洲性人人天天夜夜摸 | 中文字幕精品一区二区三区精品 | 国产伦精品一区二区三区精品视频 | 成人a在线 | 一区二区三区电影在线观看 | 永久免费av | 一级片免费视频 | 久久精品亚洲国产奇米99 | 精品成人av | 成在线人视频免费视频 | 在线看亚洲 | 午夜精品久久久久久久星辰影院 | 福利社午夜影院 | 亚洲精品在线免费 | 欧美a区 | aaa级片 | 日韩欧美第一页 | 成人伊人| 国产精品久久久久无码av | 一级毛片视频 | 精品一区二区在线视频 | 午夜久久久| 久久久激情视频 | 亚洲精品二区 | 亚洲激情一区二区三区 | 香蕉视频黄色 | 亚洲一二三在线 | 国产精品久久久久久久久久免费看 | 91成人在线 | 在线免费小视频 | 中文字幕一区二区三区在线视频 | 在线观看视频h | 欧美精品一区二区三区在线 | 日韩精品一区二区三区中文字幕 | 欧美精品在线免费观看 | www.黄网| 久久人体视频 | 国产精品99久久久久久动医院 |