一、项目内容及要求:
(1) 用数码管显示当前被按下的按键
(2) LED 流水灯
(3) 通过按键实现歌曲的切换
设计方案阐述:
(图 1—蜂鸣器)
蜂鸣器部分:利用 AT89C51 的内部定时器使其工作在计数器模式 MODE1 下,改变计数值 TH0 及 TL0 以产生不同频率的方波,驱动喇叭发出不同的音调的音乐,再利用延迟来控制 发音时间的长短。把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳的音乐。先 将歌曲的简谱进行编码,储存在一个数据类型为 unsigned char 的数组中。程序从数组中 取出一个数,然后分离出高 4 位得到音调,接着找出相应的值赋给定时器 0,使之定时操作 蜂鸣器,得出相应的音调;接着分离出该数的低 4 位,得到延时时间,接着调用软件延时。
(图 2—键盘)
键盘部分:当键盘 S1~S5 被按下时,播放不同歌曲;同时用数码管显示按下的按键序号;
彩灯部分:利用 AT89C51 的控制流水灯的程序可以采用定时器 1 中断执行;由 P3 口输出,采用共阳接法,当单片 P3 口相应位输出 0 对应 LED 点亮
使用相关软硬件工具:Keil 5、Protues
设计原理图:
代码及逻辑控制思路阐述:
(略)
仿真结果截图及描述:
(示波器运行结果—蜂鸣器唱歌时)
仿真结果:按键 S1 被按下,蜂鸣器唱歌,彩灯闪烁;通过仿真结果,这次课程设计的要求已全部满足;
本次试验结论:
本次实验主要考验了软件设计能力,针对于音乐盒以及矩阵键盘的程序算 法以及逻辑;初步掌握了 51 单片机的部分内容,包括定时器中断,蜂鸣器驱动电路,数码管电路以及彩灯电路;通过这次课程设计使我懂得了理论与实际相 结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践 相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。