欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
怎么在原有單片機(jī)程序基礎(chǔ)上添加蜂鳴器功能
[打印本頁(yè)]
作者:
小白白白白衣
時(shí)間:
2019-7-4 16:47
標(biāo)題:
怎么在原有單片機(jī)程序基礎(chǔ)上添加蜂鳴器功能
蜂鳴器這塊不太懂,怎么添加上按鍵以后無(wú)源蜂鳴器長(zhǎng)鳴的功能,求教
#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8
typedef unsigned int u16;
#define KEY_PORT P1
#define DIG_PORT P0
sbit gA = P2^2;
sbit gB = P2^3;
sbit gC = P2^4;
sbit gBuz = P1^5;
unsigned char code gDuanMa[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay10ms(void);
u8 KeyScan(void);
void KeyValueDisplay(u8 val);
void BuzzerOnOff(void);
void delay1ms(void);
void main(void)
{
u8 key = 0;
u8 key1 = 0;
while (1)
{
key = KeyScan();
if (key != 0)
{
key1 = key;
beep = 1;
}
KeyValueDisplay(key1);
}
}
u8 KeyScan(void)
{
u8 val = 0;
KEY_PORT = 0x0f;
if (KEY_PORT != 0x0f)
{
delay10ms();
if (KEY_PORT != 0x0f)
{
switch (KEY_PORT)
{
case 0x07 : val = 1; break;
case 0x0b : val = 2; break;
case 0x0d : val = 3; break;
case 0x0e : val = 4; break;
default : break;
}
KEY_PORT = 0xf0;
switch (KEY_PORT)
{
case 0x70: val = val + 0; break;
case 0xb0: val = val + 4; break;
case 0xd0: val = val + 8; break;
case 0xe0: val = val + 12; break;
}
return val;
}
}
return 0;
}
void BuzzerOnOff(void)
{
if()
gBuz = 1;
delay1ms();
gBuz = 0;
delay1ms();
}
void delay10ms(void) //誤差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
void delay1ms(void) //誤差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void KeyValueDisplay(u8 val)
{
gA = 1; gB = 1; gC = 1; // 位選數(shù)碼管0
DIG_PORT = gDuanMa[val / 10];
delay10ms(); // 間隔一段顯示時(shí)間
DIG_PORT = 0x00; // 消隱,注意不要漏掉了
gA = 0; gB = 1; gC = 1;
DIG_PORT = gDuanMa[val % 10];
delay10ms(); // 間隔一段顯示時(shí)間
DIG_PORT = 0x00; // 消隱,注意不要漏掉了
}
復(fù)制代碼
作者:
小白白白白衣
時(shí)間:
2019-7-4 18:13
#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8; // 重命名類型u8簡(jiǎn)化代碼編寫
typedef unsigned int u16;
#define KEY_PORT P1 // 矩陣按鍵接在P1端口
#define DIG_PORT P0 // 共陰極數(shù)碼管接P0端口
sbit gA = P2^2;
sbit gB = P2^3;
sbit gC = P2^4;
sbit S15 = P3^2;
sbit gBuz = P1^5; // 蜂鳴器接P1^5接口
unsigned char code gDuanMa[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay10ms(void);
u8 KeyScan(void);
void KeyValueDisplay(u8 val);
void BuzzerOnOff(u8 beep);
void delay1ms(void);
void main(void)
{
u8 key = 0; // 實(shí)時(shí)獲取的掃描鍵值
u8 key1 = 0; // 有按鍵情況下更新后的鍵值
u8 beep = 0;
while (1)
{
key = KeyScan();
if (key != 0) // 有按鍵按下
{
key1 = key; // 有按鍵則更新鍵值數(shù)值
beep = 1;
}
KeyValueDisplay(key1);
BuzzerOnOff(beep);
}
}
u8 KeyScan(void)
{
u8 val = 0;
KEY_PORT = 0x0f; // P1.0-1.3輸出高電平,P1.4-P1.7輸出低電平
if (KEY_PORT != 0x0f) // 讀取KEY_PORT看是否有按鍵按下
{
delay10ms(); // 延時(shí)消抖
if (KEY_PORT != 0x0f) // 確認(rèn)確實(shí)有按鍵按下
{
// 先確定按鍵發(fā)生在第幾列
switch (KEY_PORT)
{
case 0x07 : val = 1; break;
case 0x0b : val = 2; break;
case 0x0d : val = 3; break;
case 0x0e : val = 4; break;
default : break;
}
// 再確定按鍵發(fā)生在第幾行
KEY_PORT = 0xf0;
switch (KEY_PORT)
{
case 0x70: val = val + 0; break;
case 0xb0: val = val + 4; break;
case 0xd0: val = val + 8; break;
case 0xe0: val = val + 12; break;
}
return val;
}
}
return 0;
}
void BuzzerOnOff(beep)
{
if(beep == 1)
{
gBuz = 1;
delay1ms();
gBuz = 0;
delay1ms();
}
else gBuz=0;
}
void delay10ms(void) //誤差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
void delay1ms(void) //誤差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void KeyValueDisplay(u8 val)
{
gA = 1; gB = 1; gC = 1; // 位選數(shù)碼管0
DIG_PORT = gDuanMa[val / 10];
delay10ms(); // 間隔一段顯示時(shí)間
DIG_PORT = 0x00; // 消隱
gA = 0; gB = 1; gC = 1;
DIG_PORT = gDuanMa[val % 10];
delay10ms(); // 間隔一段顯示時(shí)間
DIG_PORT = 0x00; // 消隱
}
作者:
小白白白白衣
時(shí)間:
2019-7-4 18:13
已被自己解決,如果想要添加一個(gè)歸零按鈕,該怎么操作呢。
作者:
hange_v
時(shí)間:
2019-7-4 20:26
小白白白白衣 發(fā)表于 2019-7-4 18:13
已被自己解決,如果想要添加一個(gè)歸零按鈕,該怎么操作呢。
可以用外部中斷或者在whle(1)查詢引腳狀態(tài)
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1