欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
4X4鍵盤(pán)數(shù)碼管顯示及控制單片機(jī)io口定時(shí)播放音樂(lè)
[打印本頁(yè)]
作者:
bulia
時(shí)間:
2018-8-18 15:47
標(biāo)題:
4X4鍵盤(pán)數(shù)碼管顯示及控制單片機(jī)io口定時(shí)播放音樂(lè)
制作出來(lái)的51單片機(jī)矩陣鍵盤(pán)控制播放音樂(lè)的實(shí)物圖如下:
IMG_20180818_152930.jpg
(3.74 MB, 下載次數(shù): 73)
下載附件
2018-8-18 15:44 上傳
在前人的基礎(chǔ)上改進(jìn)了一下,按鍵共陽(yáng)數(shù)碼管顯示,同時(shí)控制11個(gè)io口,定時(shí)播放音樂(lè),按鍵P2^6是取消定時(shí)及播放。
單片機(jī)源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define GPIO_KEY P1
#define weixuan P2
sbit BEEP=P2^5;
sbit a= P3^7;sbit b= P3^3;sbit c= P3^4;sbit d= P3^5;
sbit e= P3^6;sbit f= P2^2;sbit g= P2^3;sbit h= P2^4;
sbit fm=P2^5; sbit key=P2^6;
//uchar //用于存放定時(shí)器的高8
//0~F的共陽(yáng)數(shù)碼管段碼,最后一個(gè)是黑屏
const uchar SEG_CODE[] =
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF
};
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit led1=P0^7;
uchar ge,shi,bai;qian;KeyValue,j;timeh,timel;
char aa=0;
/*****延時(shí)函數(shù)*****/
void delay1ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=112;y>0;y--); //12M晶振下,延時(shí)1MS
}
void delay(uchar x)
{
uchar i;
while(x--)
{
for (i = 0; i<13; i++) {;}
}
}
void beep()
{
BEEP=0; //關(guān)閉蜂鳴器
delay(10); //延時(shí)
BEEP=1; }
/*****顯示函數(shù)*****/
void xianshi(uchar k)
{
ge=k%10; //個(gè)位
shi=k/10; //十位
bai=0;
if(k>9)
{
weixuan=0xfd;
P0=SEG_CODE[ge];//個(gè)位段選
delay1ms(10);
weixuan=0xfe;
P0=SEG_CODE[shi];//十位段碼,顯示
delay1ms(10);
}
else
{
weixuan=0xfe;
P0=SEG_CODE[ge];//個(gè)位段選
delay1ms(10);
}
}
/***鍵盤(pán)掃描函數(shù)***/
uchar keyscan()
{
GPIO_KEY=0x0f; //P1口值準(zhǔn)備
if(GPIO_KEY!=0x0f)
{
delay1ms(10); //延時(shí)消抖
if(GPIO_KEY!=0x0f)//再次判斷
{
GPIO_KEY=0x0f; //再次裝值準(zhǔn)備
switch(GPIO_KEY) //測(cè)試行
{
case(0x07):KeyValue=0;break; //第一行
case(0x0b):KeyValue=1;break; //第二行
case(0x0d):KeyValue=2;break; //第三行
case(0x0e):KeyValue=3;break; //第四行
}
GPIO_KEY=0xf0; //高四位賦1,判斷準(zhǔn)備
switch(GPIO_KEY) //測(cè)試行
{
case(0x70):KeyValue=KeyValue; break; //0-3
case(0xb0):KeyValue=KeyValue+4; break; //4-7
case(0xd0):KeyValue=KeyValue+8;break; //8-11
case(0xe0):KeyValue=KeyValue+12;break;//12-15
}
while((GPIO_KEY!=0x0f)&&(aa<10)) //判斷是否松手,假若沒(méi)有松手,
//一段延時(shí)后依舊判斷松手完成
{ beep();
delay1ms(5);
aa++;
}
aa=0;
}
}
return KeyValue;
}
uchar code zbjbxf[]=
{ //定義豬八戒背媳婦的簡(jiǎn)譜數(shù)組
0x64,0xA3,0xC1,0xA2,0x62,0x84,0x61,0x81,0x61,0xA4,
0xA1,0x91,0xA1,0x81,0x64,0xA3,0xC1,0xD2,0xD2,0xD2,
0xA2,0xC4,0xA1,0xC1,0xA1,0xC1,0xD2,0xD2,0xD2,0xA2,
0xC4,0xC2,0x62,0xC2,0x62,0xA2,0xA2,0x84,0x94,0x94,
0x92,0x81,0x91, 0xA2,0xC2,0xD4,0xE4,0xA4,0xE4,0xA2,
0xE2,0xA2,0xE2,0xA2, 0xA2,0x84,0x94,0x94,0x92,0x81,
0x91,0xA2,0xC2,0xD8
}; //適合12M 的晶振定時(shí)器初值表,高低 位分開(kāi)
uchar code chuzhi[]=
{
0xff,0xff,0xFC,0x8E,0xFC, 0xED,0xFD,0x43,0xFD,0x6A,
0xFD,0xB3,0xFD,0xF3,0xFE,0x2D,0xFE, 0x47,0xFE,0x76,
0xFE,0xA1,0xFE,0xC7,0xFE,0xD9,0xFE,0xF9,0xFF,0x16
};
void timer0() interrupt 1 //定時(shí)器0中斷服務(wù)程序
{
TH0=timeh;//將timeh 賦給計(jì)時(shí)器的高8
TL0=timel;//將timel 賦給計(jì)時(shí)器的低8
fm=~fm;
}//定時(shí)器每次到時(shí)將蜂鳴器反相
void delay0(uint z)
{ uint y;
for(z;z>0;z--)
for(y=19000;y>0;y--);
}
void delay1(uint z)
{ uint y;
for(z;z>0;z--)
for(y=112;y>0;y--);
}
void delay3(unsigned int x)
{
unsigned int i;
while(x--)
{ if(key==0){delay1(5);if(key==0){break;}}
for(i=0;i<113;i++);
}
}
void play1()
{ uint temp; //存放簡(jiǎn)譜數(shù)組中的每一個(gè)音符的臨時(shí)變量
uchar jp; //jp 用于取出temp
uchar i=0;
while(1)
{
temp=zbjbxf[i];
if(temp==0xff) break;
jp=temp/16;
if(jp!=0)
{
timeh=chuzhi[jp*2];
timel=chuzhi[jp*2+1];
TR0=1;//開(kāi)定時(shí)器
}
else {TR0=0;fm=1;}
delay0(temp%16);TR0=0;fm=1; delay1(5); TR0=1;i++;//關(guān)定時(shí)器
if(key==0){delay1(5);if(key==0){break;}}
}
TR0=0;//關(guān)定時(shí)器
fm=1; //關(guān)蜂鳴器
}
/*****主函數(shù)*******/
void main()
{
uchar b;
a=1; b=1;c=1;d=1;e=1;f=1;g=1;h=1;key=1;
TMOD=0x01;//設(shè)置定時(shí)器T0工作于方式1
IE=0x82; //允許T0 中斷
while(1)
{
if((GPIO_KEY!=0x0f)&&(aa<10))
{ delay1ms(10);//aa++;
b=keyscan();
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
4X4鍵盤(pán)數(shù)碼管顯示及控制io 口.rar
(56.94 KB, 下載次數(shù): 19)
2018-8-18 15:47 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1