好文档 - 专业文书写作范文服务资料分享网站

单片机C语言程序设计代码和仿真图

天下 分享 时间: 加入收藏 我要投稿 点赞

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

if(K2==0) Play(2); if(K3==0) Play(3); if(K4==0) Play(4); } }

23 播放音乐

/* 名称:播放音乐

说明:程序运行时播放生日快乐歌, 未使用定时器中断,所有频率完全用延时实现 */

#include

#define uchar unsigned char #define uint unsigned int sbit BEEP=P3^7;

//生日快乐歌的音符频率表,不同频率由不同的延时来决定 uchar 12,142,159,

212,212,106,126,159,169,190,119,119,126,159,142,159,

51

code

SONG_TONE[]={212,212,190,212,159,169,212,212,190,2

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

0};

//生日快乐歌节拍表,节拍决定每个音符的演奏长短 uchar

SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,

9,3,12,12,12,12,12,9,3,12,12,12,24,0};

//延时

void DelayMS(uint x) {

uchar t;

while(x--) for(t=0;t<120;t++); }

//播放函数 void PlayMusic() {

uint i=0,j,k;

while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { //播放各个音符,SONG_LONG为拍子长度 for(j=0;j

BEEP=~BEEP;

//SONG_TONE延时表决定了每个音符的频率 for(k=0;k

52

code

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

}

DelayMS(10); i++; } }

void main() {

BEEP=0; while(1) {

PlayMusic(); //播放生日快乐

DelayMS(500); //播放完后暂停一段时间 } }

24 INT0中断计数

/* 名称:INT0中断计数 说明:每次按下

计数键时触发INT0中断,中断程序累加计数, 计数值显示在3只数码管上,按下清零键时数码管清零

53

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

*/

#include

#define uchar unsigned char #define uint unsigned int //0~9的段码 uchar

07,0x7f,0x6f,0x00};

//计数值分解后各个待显示的数位 uchar DSY_Buffer[]={0,0,0}; uchar Count=0; sbit Clear_Key=P3^6; //数码管上显示计数值 void Show_Count_ON_DSY() {

DSY_Buffer[2]=Count/100; //获取3个数 DSY_Buffer[1]=Count0/10; DSY_Buffer[0]=Count;

if(DSY_Buffer[2]==0) //高位为0时不显示 {

DSY_Buffer[2]=0x0a;

if(DSY_Buffer[1]==0) //高位为0,若第二位为0同样不显示

54

code

DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

DSY_Buffer[1]=0x0a; }

P0=DSY_CODE[DSY_Buffer[0]]; P1=DSY_CODE[DSY_Buffer[1]]; P2=DSY_CODE[DSY_Buffer[2]]; } //主程序 void main() {

P0=0x00; P1=0x00; P2=0x00;

IE=0x81; //允许INT0中断 IT0=1; //下降沿触发 while(1) {

if(Clear_Key==0) Count=0; //清0 Show_Count_ON_DSY(); } }

//INT0中断函数 void

55

EX_INT0()

interrupt 0

单片机C语言程序设计代码和仿真图

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例if(K2==0)Play(2);if(K3==0)Play(3);if(K4==0)Play(4);}}23播放音乐/*名称:播放音乐说明:程序运行时播放生日快乐歌,未使用定时器中断,所有
推荐度:
点击下载文档文档为doc格式
9kxd01cs1i4uc568cqjj1x2cx44ea901aap
领取福利

微信扫码领取福利

微信扫码分享