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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機PWM調速程序+Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <REG52.H>
  2. #include <STDIO.H>
  3. #include <LM1602.H>
  4. #include <BUTTON.H>
  5. #include <DS18B20.H>
  6. #include <Interface.H>

  7. #define FOSC 11059200L      //System frequency
  8. #define BAUD 9600               //UART baudrate

  9. sbit PWM = P3^5;

  10. extern unsigned int frequency = 0;                                        // 頻率
  11. extern unsigned char Interface = 1;                                        // 正在處于的界面
  12. extern unsigned char Menu_option = 1;                                // 菜單選項
  13. extern unsigned char hour = 8, min = 0, sec = 0;        // 時間變量
  14. extern bit update_time_state = 0;                                        // 更新時間標志
  15. extern bit update_temp_state = 0;                                        // 更新溫度標志
  16. extern unsigned int PWM_val;                                                // PWM的設置等級
  17. extern unsigned int time_count = 0;                                        // 時鐘計時
  18. void Initial();                        // 系統初始化
  19. void Timer_Init();                // 中斷初始化
  20. void Count_second();        // 秒計更新計時
  21. void Count_temp();                // 溫度更新計時
  22. void PWM_control();                // PWM控制

  23. void Main()
  24. {
  25.         Initial();
  26.         while(1)
  27.         {
  28.                 KeyProc();
  29.                 Update_data();
  30.         }
  31. }

  32. void Timer1()interrupt 3
  33. {
  34.         TL1 = 0x00;                //設置定時初值
  35.         TH1 = 0xDC;                //設置定時初值
  36.         Count_second();
  37.         Count_temp();
  38.         PWM_control();
  39. }

  40. void Uart()interrupt 4
  41. {
  42.         if(RI)                                                         /*        RI:串口接收中斷申請標志位  */
  43.         {
  44.                 RI=0;                                                //必須重新對RI清
  45.         }
  46. }

  47. void Count_second()
  48. {
  49.         if(++time_count == 100)
  50.         {
  51.                 time_count = 0;
  52.                 update_time_state = 1 ;
  53.                 frequency = TH0<<8 | TL0;
  54.                 TH0 = TL0 = 0;
  55.                 if(++sec == 60)
  56.                 {
  57.                         sec = 0;
  58.                         if(++min == 60)
  59.                         {
  60.                                 min = 0;
  61.                                 if(++hour == 24)
  62.                                 {
  63.                                         hour = 0;
  64.                                 }
  65.                         }
  66.                 }
  67.         }
  68. }

  69. void PWM_control()
  70. {
  71.         static bit w;
  72.         static unsigned char count;
  73.         if(PWM_val == 0)
  74.         {
  75.                 PWM = 0;
  76.         }
  77.         else if(PWM_val == 15)
  78.         {
  79.                 PWM = 1;
  80.         }
  81.         else
  82.         {
  83.                 if(w == 0)
  84.                 {
  85.                         if(++count == PWM_val)
  86.                         {
  87.                                 count = 0;
  88.                                 PWM = 0;
  89.                                 w = 1;
  90.                         }
  91.                 }
  92.                 else
  93.                 {
  94.                         if(++count == (15 - PWM_val))
  95.                         {
  96.                                 count = 0;
  97.                                 PWM = 1;
  98.                                 w = 0;
  99.                         }
  100.                 }
  101.         }
  102. }

  103. void Count_temp()
  104. {
  105.         static unsigned int temp_count;
  106.         if(++temp_count == 20)
  107.         {
  108.                 temp_count = 0;
  109.                 update_temp_state = 1;
  110.         }
  111. }

  112. void Timer_Init()
  113. {
  114.         SCON=0x50;
  115.         T2CON=0x34;
  116.         TH2=RCAP2H=(65536-(FOSC/32/BAUD)) >> 8;
  117.         TL2=RCAP2L=(65536-(FOSC/32/BAUD));
  118.         ES=1;
  119.         ET1 = 1;
  120.         TMOD = 0x15;
  121.         TL1 = 0x00;                //設置定時初值
  122.         TH1 = 0xDC;                //設置定時初值
  123.         TR1 = 1;
  124.         TR0 = 1;
  125.         TF0 = 0;        
  126.         EA = 1;
  127. }

  128. void Initial()
  129. {
  130.         DS18B20();
  131.         Init_1602();
  132.         display_1602(0,0,"*Function Board*");
  133.         display_1602(1,1,"Welcome to use");
  134.         Timer_Init();
  135.         while((P2&0x1e) == 0x1e);
  136.         while((P2&0x1e) != 0x1e);
  137.         Init_1602();
  138.         display_1602(0,0,"Function Menu:  ");
  139.         Updata_Menu(Menu_option);
  140.         Timer_Init();
  141. }
復制代碼
全部資料51hei下載地址:
電子工程實訓.zip (157.25 KB, 下載次數: 57)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:730612 發表于 2020-4-16 15:45 | 只看該作者
好的 十分感謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费视频 | 性视频在线| 中文字幕国产精品 | 亚洲午夜视频在线观看 | 99热国产在线 | 日韩欧美精品一区二区 | 在线日韩视频 | 久久在线免费视频 | 日本不卡在线播放 | 超碰97在线播放 | 亚洲欧美在线视频 | www欧美 | 国产福利网站 | 久久久久久黄色 | 国产精品国产三级国产 | 91最新网址 | 91精品国产日韩91久久久久久 | 中文字幕不卡在线观看 | 日韩一级av毛片 | 日本不卡在线 | 天天综合影院 | 久久a级片 | 欧美黄色网 | 亚洲福利网站 | 中文字幕免费观看 | 成人玩具h视频 | 另类小说第一草 | 一级肉体全黄裸片 | 在线观看免费黄色 | www.日本在线观看 | 蜜臀av中文字幕 | 国产又黄又爽视频 | 免费的黄网站 | 欧美日韩专区 | 看毛片的网站 | 一区二区三区在线观看视频 | 狠狠艹狠狠干 | 国产黄a三级三级看三级 | 久久久www成人免费精品 | 午夜性色| 成人a视频|