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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4075|回復: 20
收起左側

請大家給小弟指點一下迷津。由于剛剛上手單片機程序

  [復制鏈接]
ID:607312 發表于 2021-1-22 16:03 | 顯示全部樓層 |閱讀模式
有一臺風扇,上電時蜂鳴器長響一聲(200ms)
有1個觸摸開關按鈕和一個風速觸摸按鈕。
按一下開關,風扇打開,默認1擋,再按一下開關,風扇關閉。
當風扇關閉時,按風速按鈕,無反應
當風扇打開時,按一下風速按鈕,風速變2擋,再按一下風速按鈕,風速變3擋,再按一下風速按鈕,
風速又變回1擋,無限循環
無論風速在哪個擋,只要按下開關鍵,都關閉
沒按一次按鈕,蜂鳴器嘀一聲(100ms)


以上功能說明我想通過流程圖的方式表達出來,但是內功不夠。麻煩大家幫幫忙指教一下。謝謝大家


回復

使用道具 舉報

ID:390416 發表于 2021-1-22 17:28 | 顯示全部樓層
視頻百度下載:https://pan.baidu.com/s/1qY6X3eG  
資料下載地址:https://pan.baidu.com/s/1bp4HLl9
給你發兩個百度盤網址 希望對你的問題有幫助
回復

使用道具 舉報

ID:235200 發表于 2021-1-22 22:49 | 顯示全部樓層
當內功不夠時,先從一個一個的IO口控制開始,不要搞太復雜的控制
回復

使用道具 舉報

ID:213173 發表于 2021-1-23 08:40 | 顯示全部樓層
有畫流程圖的時間都可以寫完代碼了。
  1. //程序適合STC15W104,時鐘11.0592MHz
  2. #include <reg51.H>                                         //單片機頭文件
  3. sfr AUXR=0x8E;                                                   //輔助寄存器
  4. #define uint unsigned int                         //宏定義數據類型uint
  5. #define uchar unsigned char                 //宏定義數據類型uchar
  6. //輸入輸出端口定義
  7. sbit key1=P3^0;                                                //開關
  8. sbit key2=P3^1;                                                //調速
  9. sbit OUT1=P3^2;                                                //風速1擋
  10. sbit OUT2=P3^3;                                                //風速2擋
  11. sbit OUT3=P3^4;                                                //風速3擋
  12. sbit Buzzer=P3^5;                                                //蜂鳴器
  13. //全局變量聲明
  14. bit   Switch=0;                                                //開關機標志位
  15. uchar Speed=0;                                                //速度控制變量
  16. uint  num;
  17. /*------------------------
  18.     初始化定時器
  19. ------------------------*/
  20. void Timer0Init()                //250微秒@11.0592MHz
  21. {
  22.         AUXR &= 0x7F;                //定時器時鐘12T模式
  23.         TMOD &= 0xF0;                //設置定時器模式
  24.         TMOD |= 0x02;                //設置定時器模式
  25.         TL0 = 0x1A;                   //設置定時初值
  26.         TH0 = 0x1A;                        //設置定時重載值
  27.         TR0 = 1;                                //定時器0開始計時
  28.         ET0 = 1;                                //開T0中斷
  29.         EA  = 1;                                //開總中斷
  30. }
  31. /*------------------------
  32.     按鍵掃描函數
  33. ------------------------*/
  34. void keyscan()       
  35. {
  36.         static bit key_sign=0;                        //按鍵狀態標志
  37.         static uint count=0;                        //計數變量                       
  38.         if(!key1||!key2)                                //檢測有按鍵操作
  39.         {
  40.                 if(++count>=1400 && key_sign==0)//消抖延時
  41.                 {
  42.                         key_sign=1;                                //按鍵狀態標志置1
  43.                         num = 400;                                //蜂鳴器響100ms
  44.                         TR0 = 1;                                        //定時器0開始計時
  45.                         if(!key1)                                //檢測開關鍵按下
  46.                         {
  47.                                 Switch=~Switch;                //開關機標志位取反
  48.                                 if(Switch)
  49.                                         Speed=1;                        //默認1擋
  50.                                 else Speed=0;                        //停
  51.                         }
  52.                         if(!key2 && Switch==1)        //檢測調速鍵按下并且開機有效
  53.                         {
  54.                                 Speed++;
  55.                                 if(Speed>=4)                        //循環調速
  56.                                         Speed=1;
  57.                         }
  58.                 }
  59.         }       
  60.         else
  61.         {
  62.                 key_sign=0;                                        //按鍵狀態標志清0
  63.                 count=0;                                        //消抖計數清0
  64.         }
  65. }
  66. /*------------------------
  67.     主函數
  68. ------------------------*/
  69. void main()                                                       
  70. {
  71.         num=800;//蜂鳴器響200ms
  72.         Timer0Init();
  73.         while(1)
  74.         {
  75.                 keyscan();
  76.                 switch(Speed)
  77.                 {
  78.                         case 0: OUT1=1;OUT2=1;OUT3=1;break;//停止
  79.                         case 1: OUT1=0;OUT2=1;OUT3=1;break;//1擋
  80.                         case 2: OUT1=1;OUT2=0;OUT3=1;break;//2擋
  81.                         case 3: OUT1=1;OUT2=1;OUT3=0;break;//3擋
  82.                 }
  83.         }
  84. }
  85. /*----------------------------
  86. 中斷服務函數(驅動無源蜂鳴器)
  87. -----------------------------*/
  88. void Timer0Interrupt(void) interrupt 1
  89. {
  90.         static uint count=0;                        //計數變量
  91.         count++;
  92.         Buzzer=~Buzzer;                                //驅動無源蜂鳴器
  93.         if(count>=num)
  94.         {
  95.                 TR0 = 0;                                                //關閉定時器
  96.                 count=0;                                                //清0
  97.                 Buzzer=1;                                        //復位
  98.         }
  99. }
復制代碼
回復

使用道具 舉報

ID:752974 發表于 2021-1-23 09:05 | 顯示全部樓層
單片機應用編程,必須先有正確的硬件平臺,控制軟件隨著硬件平臺而變。就樓主的問題,如果是弱電控制,可以用計數的方法實現,電源開關計數在0和1之間循環,0關風扇,1啟動風扇并作為調速的必要條件。調速開關在0,1,2(或1,2,3)之間循環,0對應1檔,1對應2檔,2對應3檔。
回復

使用道具 舉報

ID:826754 發表于 2021-1-23 10:47 | 顯示全部樓層
wulin 發表于 2021-1-23 08:40
有畫流程圖的時間都可以寫完代碼了。

大神,這個代碼可以用STC8G的單片機嗎?
回復

使用道具 舉報

ID:826754 發表于 2021-1-23 11:16 | 顯示全部樓層
wulin 發表于 2021-1-23 08:40
有畫流程圖的時間都可以寫完代碼了。

程序中這句的主要起什么作用呢?每一種芯片是不一樣的嗎?
sfr AUXR=0x8E;                                                   //輔助寄存器
回復

使用道具 舉報

ID:716656 發表于 2021-1-23 12:25 | 顯示全部樓層
川蜀浪子 發表于 2021-1-23 11:16
程序中這句的主要起什么作用呢?每一種芯片是不一樣的嗎?
sfr AUXR=0x8E;                             ...

把程序復制到keil,編譯,沒問題。注釋掉你不懂的這一行。看看提示哪有錯誤
回復

使用道具 舉報

ID:213173 發表于 2021-1-23 13:59 | 顯示全部樓層
川蜀浪子 發表于 2021-1-23 11:16
程序中這句的主要起什么作用呢?每一種芯片是不一樣的嗎?
sfr AUXR=0x8E;                             ...

你沒有仔細看最前面的注釋:程序適合STC15W104。考慮樓主用8腳芯片,所以推薦此型號。51頭文件沒有AUXR寄存器。所以要定義此特殊功能寄存器。
回復

使用道具 舉報

ID:213173 發表于 2021-1-23 14:02 | 顯示全部樓層
川蜀浪子 發表于 2021-1-23 10:47
大神,這個代碼可以用STC8G的單片機嗎?

同一公司產品,沒用什么特殊功能,原則上沒有問題。
回復

使用道具 舉報

ID:826754 發表于 2021-1-23 16:04 | 顯示全部樓層
壓著我頭發啦 發表于 2021-1-23 12:25
把程序復制到keil,編譯,沒問題。注釋掉你不懂的這一行。看看提示哪有錯誤

請問一下使用STC8F的芯片,編譯后出現重新定義是怎么回事?注譯掉這行代碼又可以。

51hei截圖_20210123160121.png
回復

使用道具 舉報

ID:826754 發表于 2021-1-23 16:05 | 顯示全部樓層
wulin 發表于 2021-1-23 14:02
同一公司產品,沒用什么特殊功能,原則上沒有問題。

剛試了一下8F的芯片可以用。
回復

使用道具 舉報

ID:517951 發表于 2021-1-23 16:44 | 顯示全部樓層
代碼發出來,看下又沒問題
回復

使用道具 舉報

ID:213173 發表于 2021-1-23 20:14 | 顯示全部樓層
川蜀浪子 發表于 2021-1-23 16:04
請問一下使用STC8F的芯片,編譯后出現重新定義是怎么回事?注譯掉這行代碼又可以。

STC8F.H頭文件里已包含sfr AUXR=0x8E;當然會提示重復定義。注釋掉即可。
回復

使用道具 舉報

ID:878420 發表于 2021-1-23 20:49 | 顯示全部樓層
學習C51半個月,一個計時小程序寫不出來。書能看懂,自己寫就是寫不出來,被PLC編程邏輯固化了,用C語言寫,總是不對,郁悶啊
回復

使用道具 舉報

ID:607312 發表于 2021-1-23 21:13 | 顯示全部樓層
munuc_w 發表于 2021-1-23 09:05
單片機應用編程,必須先有正確的硬件平臺,控制軟件隨著硬件平臺而變。就樓主的問題,如果是弱電控制,可 ...

能不能幫忙畫一下流程圖呢,方便理解。我現在想不到怎么畫流程圖。萬分感謝
回復

使用道具 舉報

ID:607312 發表于 2021-1-23 21:17 | 顯示全部樓層
wulin 發表于 2021-1-23 08:40
有畫流程圖的時間都可以寫完代碼了。

感謝大師的指教,小弟我剛剛接觸單片機不久,我想通過流程圖的方式來增強理解算法的問題。能不能幫幫忙畫一下呢
回復

使用道具 舉報

ID:420836 發表于 2021-1-24 09:49 | 顯示全部樓層
這里有很多優秀的單片機專家提供建議。 很有幫助。
回復

使用道具 舉報

ID:880098 發表于 2021-1-24 14:01 | 顯示全部樓層
wulin 發表于 2021-1-23 08:40
有畫流程圖的時間都可以寫完代碼了。

AUXR=0X8E先把16進制換成2進制,10001110,這個是規定寄存器的功能。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:592807 發表于 2021-1-25 08:42 | 顯示全部樓層
cdiyy 發表于 2021-1-23 21:17
感謝大師的指教,小弟我剛剛接觸單片機不久,我想通過流程圖的方式來增強理解算法的問題。能不能幫幫忙畫 ...

流程圖就這樣。
51hei截圖20210125084124.png
回復

使用道具 舉報

ID:847443 發表于 2021-1-25 16:38 | 顯示全部樓層
你可以先用仿真的方法,這樣就不用搭建硬件,由易到難,仿真能實現,硬件上基本就問題不大。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线观看视频 | 国产成人精品一区二区三区网站观看 | 久久久.com| 最新日韩av | 狠狠婷婷综合久久久久久妖精 | 国产成人免费视频网站高清观看视频 | 99re在线免费视频 | 97免费视频在线观看 | 日韩一二三区视频 | 在线色网站 | 亚洲精品视频一区 | 久久久青草 | 日韩美女一区二区三区在线观看 | 国产激情一区二区三区 | 精品国产欧美 | 日韩人体视频 | 久久亚洲欧美日韩精品专区 | 亚洲精品在线免费观看视频 | 欧美日韩一卡 | 视频一区二区在线观看 | 一区二区三区免费在线观看 | 精品9999| 女朋友的闺蜜3韩国三级 | www.蜜桃av| 激情欧美一区二区三区中文字幕 | 亚洲人在线观看视频 | 欧美一区二区三区日韩 | 国产在线观看免费 | 亚洲精品一二区 | 午夜免费视频 | 日本久久精品视频 | 国产精品久久久久久久久久久新郎 | 欧美亚州 | v片网站 | 久久国产视频播放 | 亚洲综合字幕 | 国产午夜影院 | 欧美高清hd| 99久久免费精品国产男女高不卡 | 欧美综合久久久 | 久久精品一级 |