国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
51單片機模擬電動牙刷程序
[打印本頁]
作者:
eng
時間:
2021-7-12 23:32
標題:
51單片機模擬電動牙刷程序
/*-----------------------------------------------
名稱:按鍵震動程序,按下不同的按鍵,改變輸出端的震動頻率
日期: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,執行該死循環。
}
//主循環中添加其他需要一直工作的程序
}
}
復制代碼
歡迎光臨 ELEOK (http://www.afoofa.cn/)
Powered by Discuz! X5.0