TCCR1B=0X04;//8分频 PORTB&=0x00;
PORTB|=0x40;//开始录音 }
if(PIND==0XF7)//当有按下INT1的时候,启动中断函数 {
PORTB&=0x00; delay_us(10);
PORTB|=0x80;//开始播音 i++;
MCUCR=0X00;
GICR=0X80; PORTD=0xFF; }
show(num1/10,0);//秒 十位 show(num1,1);//秒 个位 show(num/10,2);//毫秒 十位 show(num,3);//毫秒 个位 } }
3、键盘输入模块程序如下:
#pragma interrupt_handler miao:9 void miao()//计时 每次溢出 10ms { a=1; num++; if(num==100) { num1++;
9
if(num1==20)//当到达20秒的时候,停止计时 {
while(a)
{
show(num1/10,0); show(num1,1); show(num/10,2);
show(num,3);
if(PIND==0XF7)//当有按下INT1的时候,开始播音 {a=0;}
}
}
num=0; }
TCNT1H=0XFE; TCNT1L=0XC7; }
#pragma interrupt_handler baochi:3
void baochi()//按下INT1的时候,保持秒数并开始播放录音 { if((i==1)) { while(i) {
show(num1/10,0); show(num1,1); show(num/10,2); show(num,3);
if(PIND==0XFB)//当有按下INT0的时候,结束INT1中断,返回主函数
{i=0; }
} }
}
10
5 系统调试
5.1 系统硬件调试
系统硬件调试主要对已经焊接好的电路进行调试主要有以下几部分:
1.ATmega16单片机的最小系统调试,通过ISP接口对单片机下载程序,观察单片机运行情况,并根据出现的异常情况进行电路调整。
2.音频放大电路调试,把计算机输出的音频信号接入音频放大电路中,观察信号的失真程度,调节电位器观察输出的信号变化。
5.2 系统软件调试
系统软件调试主要对已经调试好的电路进行软件调试主要通过语音芯片ISD1820的软件调试,通过按键来控制I/O口的输出,来控制ISD1820的录音/播放,通过扬声器来确认录制的语音是否正确。
11
设计体会
通过本次专业综合设计,使我们对单片机的了解更加深一步,我发现只有自己动手认真做才能熟能生巧,还有对材料的整理和理解。我刚开始对单片机没有什么概念,通过请教老师和同学,使我慢慢的对单片机有了了解,然后从简单的程序开始学起,经过三个星期的学习,我现在能独自编写出本次综合设计的程序了,很有成就感。本次设计运用到的知识有很多方面,尤其是Atmega16单片机,引脚多,硬件内部线路接通,用起来很方便,还有ISD1820语音芯片与Atmega16单片机之间的连接,以及如何使用ISD1820芯片。
对于硬件方面主要就是看懂电路原理图,对引脚作用的熟悉。对于软件方面则是灵活运用单片机有关的程序语言,还有很多扩展功能,本次设计我们最大的成功之处是在这整个过程,动手动脑解决一个又一个的难题,充分体现我们学校的“动手动脑,全面发展”的校训。希望学校能提供更多的实习机会给我们,使我们学习的理论知识能与实际相结合。
12
参考文献
[1]谭浩强编著.c程序设计.北京:清华大学出版社,1999年. [2]夏宽理编著.c语言与c程序设计.上海:复旦大学出版社,1994年.
[3]窦振中编著.单片机外围器件实用手册一存储器分册.北京:北京航空航天大学出版社, 1998年.
[4]刘海成. AVR单片机原理及测控工程应用:基于ATmega48/ATmega16.北京:北京航空航 天大学出版社,2008.
[5]杨正忠,耿德根. AVR单片机应用开发指南及实例精解.北京:中国电力出版社,2008. [6] 海涛. ATmega 系列单片机原理及应用——C语言教程.北京: 机械工业出版社,2008. [7] 张军. AVR单片机应用系统开发典型实例.北京:中国电力出版社,2005. [8] 沈文、詹卫前等. AVR单片机C语言开发入门指导.北京:清华大学出版社,2003.
13