標(biāo)題:
按鍵按一次蜂鳴器響一次的單片機(jī)程序
[打印本頁(yè)]
作者:
dabing89
時(shí)間:
2018-10-13 17:37
標(biāo)題:
按鍵按一次蜂鳴器響一次的單片機(jī)程序
這個(gè)程序的功能是按鍵按下一次,蜂鳴器響一次,按下左邊的按鍵,點(diǎn)亮一排小燈,按鍵支持長(zhǎng)按鍵和短按鍵功能,直接移植即可,另外這個(gè)程序采用了多個(gè).C文件的方式編程
程序代碼如下:
/********************************************************
*描述:按下第一個(gè)按鍵8個(gè)小燈點(diǎn)亮,再次按下熄滅,按下第二個(gè)按鍵蜂鳴器響一次
QQ:597627977
********************************************************/
#define _MAIN_C
#include "main.h"
/*******************************************************************************
* 文件名:位定義
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
bit flag500ms = 0;//500ms翻轉(zhuǎn)一次
bit staBuzzer = 0;
/*******************************************************************************
* 文件名:主循環(huán)入口
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
void main(void)
{
uint8 i = 0;
Bsp_Power_Init();//LED端口初始化
Timer0Init(); //定時(shí)器0初始化函數(shù)
Timer1Init(); //1毫秒@11.0592MHz
LED0 = 1;//第一組LED
while(1)
{
KeyDriver();//按鍵掃描
if(flag_key1)
{
flag_key1 = 0;
P2 = ~P2;
}
if(flag_key2)
{
flag_key2 = 0;
KeyBeepState(1);//按鍵響
}
}
}
/*******************************************************************************
* 文件名:void Bsp_Power_Init()
* 描 述: 數(shù)碼管上電顯示
* 功 能:編程模塊化
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
void Bsp_Power_Init(void)
{
EA = 1;
// IE = 0xa8;//允許AD轉(zhuǎn)換
P0M1 = 0xFC;
P0M0 = 0X03;
P0 = 0X00;
P1M1 = 0xE0;
P1M0 = 0X1F;
P1 = 0X00;
//P2口開漏輸出
P2M1 = 0XFF;
P2M0 = 0XFF;
P2 = 0Xff;
// //P54,P55口為推挽輸出
P5M1 = 0X00;
P5M0 = 0X00;
P5 = 0xFF;
//P37,P36,3.2,P3.3 P3.4口為推挽輸出
P3M1 = 0X00;
P3M0 = 0XFC;
P3 = 0X23;
}
/*******************************************************************************
* 文件名:void Timer0Init(void)
* 描 述: 定時(shí)器0配置
* 功 能:編程模塊化
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
void Timer0Init(void) //1毫秒@11.0592MHz
{
AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式
TMOD &= 0xf0; //設(shè)置定時(shí)器模式
TMOD |= 0x01; //設(shè)置定時(shí)器模式
TL0 = (65535 - 1000) % 256;//設(shè)置定時(shí)初值
TH0 = (65535 - 1000) / 256;//設(shè)置定時(shí)初值
ET0 = 1; //打開定時(shí)器0中斷使能
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
EA = 1; //打開總中斷使能
}
/*******************************************************************************
* 文件名:void Timer0Init(void)
* 描 述: 定時(shí)器1配置
* 功 能:編程模塊化
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
void Timer1Init(void) //1毫秒@11.0592MHz
{
AUXR &= 0xBF; //定時(shí)器時(shí)鐘12T模式
TMOD &= 0x0F; //設(shè)置定時(shí)器模式
TMOD |= 0x10; //設(shè)置定時(shí)器模式,寫這個(gè)表示不是自動(dòng)重載模式
TL1 = 0x66; //設(shè)置定時(shí)初值
TH1 = 0xFC; //設(shè)置定時(shí)初值
ET1 = 1; //定時(shí)器1中斷
TR1 = 1; //定時(shí)器1開始計(jì)時(shí)
EA = 1; //開總中斷使能
}
/*******************************************************************************
* 文件名:void Timer0_inter(void) interrupt 1
* 描 述: 定時(shí)器0中斷服務(wù)函數(shù)
* 功 能:
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
void Timer0_inter(void) interrupt 1
{
//自動(dòng)重載,初值可以不需要寫
TL0 = (65535 - 1000) % 256; //設(shè)置定時(shí)初值
TH0 = (65535 - 1000) / 256; //設(shè)置定時(shí)初值
Beep();
}
/*******************************************************************************
* 文件名:void Timer1_inter(void) interrupt 3
* 描 述: 定時(shí)器1中斷服務(wù)函數(shù)
* 功 能:
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
void Timer1_inter(void) interrupt 3
{
//自動(dòng)重載,初值可以不需要寫
TL1 = (65535 - 1000) % 256; //設(shè)置定時(shí)初值
TH1 = (65535 - 1000) / 256; //設(shè)置定時(shí)初值
KeyScan();//按鍵掃描1ms
}
/*******************************************************************************
* 文件名:void Beep(void)
* 描 述: 蜂鳴器模塊子函數(shù)
* 功 能:
* 作 者:大核桃
* 版本號(hào):1.0.1(2017.05.23)
*******************************************************************************/
void Beep(void)
{
static uint8 tmr1ms = 0;
static uint16 tmr1s = 0;
if(staBuzzer)
{
tmr1ms++;
if(tmr1ms >= 1)
{
tmr1ms = 0;
BEEP = ~BEEP;
tmr1s++;
}
if(tmr1s >= 200)//延時(shí)時(shí)間長(zhǎng)短
{
tmr1s = 0;
staBuzzer = 0;
}
}
else
{
BEEP = 1;
}
}
/*******************************************************************************
* 文件名: void KeyBeepState(bit sta)
* 描 述: //1開按鍵音 0關(guān)閉按鍵音
* 功 能:模塊化編程
* 作 者:大核桃
* 版本號(hào):1.0.1(2015.03.03)
*******************************************************************************/
void KeyBeepState(uint8 sta)
{
if(sta)
{
staBuzzer = 1;
}
else
{
staBuzzer = 0;
}
}
復(fù)制代碼
全部資料51hei下載地址:
015 按鍵的使用.rar
(47.33 KB, 下載次數(shù): 120)
2018-10-13 17:36 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
快樂(lè)眼淚
時(shí)間:
2018-10-13 19:34
不知道什么時(shí)候能學(xué)到樓主的水平
作者:
dabing89
時(shí)間:
2018-10-14 14:52
快樂(lè)眼淚 發(fā)表于 2018-10-13 19:34
不知道什么時(shí)候能學(xué)到樓主的水平
我沒(méi)啥水平,老菜鳥一枚,有問(wèn)題可以交流,在壇子上就可以,如果來(lái)不及回復(fù)你,可以加我,大家一起進(jìn)步
作者:
潘克民ming
時(shí)間:
2020-3-4 16:14
非常棒,感謝!
作者:
褲褲的兜
時(shí)間:
2020-4-11 11:34
非常好,值得分享
作者:
SHANWAZI
時(shí)間:
2021-2-8 17:52
這個(gè)有源蜂鳴器還是無(wú)源蜂鳴器?
作者:
CHANXIN
時(shí)間:
2021-6-22 22:01
向樓主學(xué)習(xí)!太厲害了!向樓主學(xué)習(xí)!太厲害了!向樓主學(xué)習(xí)!太厲害了!向樓主學(xué)習(xí)!太厲害了!向樓主學(xué)習(xí)!太厲害了!
作者:
wyl138
時(shí)間:
2022-10-31 19:53
謙虛的樓主令人敬佩.
作者:
1253759011
時(shí)間:
2024-1-9 13:51
好清晰的代碼風(fēng)格
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1