/******显示函数******/
void display(uint i){
L=0; //第四个数码管亮
P0=table[i]; //将数据送到P0口
}
//定时中断0,用于产生唱歌频率
timer0() interrupt 1{
TL0=tl0_f;TH0=th0_f; //调入预定时值
BEEP=~BEEP; //取反音乐输出IO
}
八、实验过程
此次实验的硬件电路是统一设计的,按键电路只有4个,还有复位电路,晶振电路,蜂鸣器。焊单片机的过程还是比较轻松的。主要是软件的编写与调试。
艰难的编完程序之后就开始调试,刚开始接通电源时,单片机就开始发出滋滋的声音,对此,在程序里把蜂鸣器的初值设定为1。
问题二就是,在音调一按键完之后音调二三四等等都不会鸣响。检查完程序,发现是程序没有设置循环扫描键盘输入。
问题三:汇编程序成功之后,c语言中音调一功能实现不了,而其他现象都完美的实现了。发现是在程序中应该设置一个初始化的值,然后就把困难解决了。
九、实验总结及体会
在我看来,要完成一个项目,方法又很多,要走的巧,对于这个电子琴来说,网上又很多类似的程序,照搬照抄我反对,但是我的程序业不全是我自己写的,有些模块我是借鉴别人的,弄懂之后灵活插入自己的程序中,来实现我的功能。
通过这次程序的编写使我在大程序的编写上能力有所提高,培养了我们动手能力和创新能力。
在编程序的时候,因为单片机的课程是从大二下第八周开始上,而且也没有上过微机原理的课程,导致对此课程理解起来比较费劲,所以在编程序的时候,对汇编语言运用比较艰难。幸而有助教的指导,然后我一步一步把程序改完了。我觉得,这次写程序有很多收获,明确的自己要做的功能,明确的目的,就来整体规划,哪个端口怎么用,定时器怎么来分,然后就是一步一步来实现需要的功能,在写程序的过程中大脑中呈现出总的轮廓,并分块来写,这样就不会乱了。
十、参考文献
1.《单片机原理与应用》 戴胜华等著,北京:清华大学出版社、北京交通大学出版社,2006