“可同步显示歌词的ABC英文歌”设计说明
1 工程文件下载:
2 程序设计框架说明
本案例程序设计主要分为:无源蜂鸣器、按键扫描两个模块。
2.1宏定义
#defineuint unsigned int
#defineuchar unsigned char
2.2 引脚定义
sbitbeep=P3^4; //蜂鸣器
sbitkey1=P3^2; //按键1,播放歌曲
sbitkey2=P3^3; //按键2,暂停歌曲
sbitled_sel=P2^3; //数码管与发光二极管选通引脚
sbitsel0=P2^0; //sel0、sel1、sel2组合为位选信息,0-7
sbitsel1=P2^1;
sbitsel2=P2^2;
2.3变量定义
uchartimeh,timel; //定义定时器的重装值
ucharflag; //所选择点亮的数码管0-7标志位
ucharjindu=0; //music数组中指向的位置
uchargeci[]、uchar geci1[]、uchar geci2[]、uchar geci3[]、uchar geci4[]、uchar geci5[]、uchargeci51[]、uchar geci6[]、uchar geci61[] //《I can sayABC》的 同步歌词
ucharcode music[] //音乐《I can sayABC》的代码数组
ucharcode quzi[] //此数组为各个音符在定时器中的重装值
3 程序函数说明
void delay(unsigned int xms); //延时程序
uchar quyin(uchar tem); //找到tem音符在quzi数组中的位置值
void playmusic(); //播放音乐函数
void init_sys(); //系统初始化
void init(); //定时器初始化
void ex1() interrupt 3; //定时器中断服务程序,显示程序提到定时器1
void tim1() interrupt 1; //定时器中断服务程序,对应蜂鸣器发声
void exint() interrupt 2; //外部中断服务程序
4 程序总框图设计流程

附录:附加实例中的其他几个曲谱




