- /*-----------------------------------------------
- 名稱:按鍵震動程序,按下不同的按鍵,改變輸出端的震動頻率
- 日期:2021-7-12
- 內容:改變P2口的1個LED燈閃爍頻率,接手機震動馬達,模擬電動牙刷
- 需要修改地方有兩處:1,多個按鍵改成一個按鍵來控制不同震動頻率。
- 2:按下按鍵1怎么讓他一直循環,而不是循環10次,
- 直到按下按鍵2切換到第二種頻率。
- 不使用PWM控制。
- 希望大師給修改一下程序
- ------------------------------------------------*/
- #include<reg52.h> //包含頭文件
- //頭文件包含特殊功能寄存器的定義
- #define uint unsigned int
- #define uchar unsigned char
- sbit key1 = P1^0; //按鍵1
- sbit key2 = P1^1; //按鍵2
- sbit LED0=P2^0;// 定義 輸出到P2.0端口,
- int i;
- void delay(uint xms) //延時
- {
- int i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--) ;
- }
- /*------------------------------------------------
- 主函數
- ------------------------------------------------*/
- void main (){
- while (1) //主循環
- {
- if(key1 == 0){
- //延時20ms 消除抖動
- delay(15);
- //第二次判斷
- if(key1 == 0){
- for(i=0;i<10;i++) //不按按鍵應該讓他一直循環,現在是循環執行10次 ,怎么才能讓他一直循環?
- {
- LED0=0; //將P1.0口賦值 0,對外輸出低電平
- delay(250); //調用延時程序;更改延時數字可以更改延時長度;
- //用于改變閃爍頻率
- LED0=1; //將P1.0口賦值 1,對外輸出高電平
- delay(250);
- }
- }
- while(!key1); //當按鍵未松開時,key為0,執行該死循環。
- //等待按鍵被松開
- }
- if(key2 == 0){
- //延時20ms 消除抖動
- delay(15);
- //第二次判斷
- if(key2 == 0){
-
- for(i=0;i<10;i++)
- {
- LED0=0; //將P1.0口賦值 0,對外輸出低電平
- delay(450); //調用延時程序;更改延時數字可以更改延時長度;
- //用于改變閃爍頻率
- LED0=1; //將P1.0口賦值 1,對外輸出高電平
- delay(500);
- }
- }
-
-
- //等待按鍵被松開
- while(!key2); //當按鍵未松開時,key為0,執行該死循環。
- }
- //主循環中添加其他需要一直工作的程序
- }
- }
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|