成都理工大学核技术与自动化工程学院实验报告课程名称: 测控技术课程设计姓名: 陈银讯学号: 200706010216 专业: 测控技术与仪器学期: 2010-2011-1 任课教师: 周伟实验名称: 测控技术课程设计实验人员: 陈银讯指导老师: 周伟实验地点: 6C701 实验时间: 2010-12 一、实验内容用ATmeg a16L做数字脉冲计数器二、实验原理原理图如下三、实验步骤 1 参照原理图或样板将所有元件焊接在新电路板上,焊接时应遵循“先小后大,先低后高”的原则。注意不要长时间将烙铁头与元器件接触。焊接时谨防虚焊。 2编写实验程序,部分代码如下: void Mega16_Init(){ MCUCSR|=_BV(JTD) ;//disable the watch dog Timer MCUCSR|=_BV(JTD) ;PORTA=0xff; //IO port initialize PORTB=0xff; PORTC=0xff; PORTD=0xff; DDRA=0xFF; DDRB=0x08; DDRC=0xFF; 成都理工大学实验报告 III DDRD=0xFF; TCNT0 =0x05; //Timer0 initialize TCCR0 =0x04; TIMSK =0x01; TCNT1 =0xffff; //Timer1 initialize TCCR1B |=_BV(CS12)|_BV(CS11)|_BV(CS10); eeprom_busy_wait(); Time= eeprom_read_word(0); if(Time>1000)Time=10; time[0]=Time/1000; time[1]=Time%1000/100; time[2]=Time%100/10; time[3]=Time%10; }void keydeal(unsigned char opt) //键功能处理{Time =time[0]*1000+time[1]*100+time[2]*10+time[3]; switch(opt){ case 2://-- if(!start_flag){ if(time[cursor-1]==0) time[cursor-1]=0; else time[cursor-1]--; }break; case 5://left if(!start_flag){ set_flag=1; cursor--;//cursor moving if(cursor<1)cursor=4; }break; case 6://++ if(!start_flag){ //Note :condition isstart_flag=0 if(time[cursor-1]==9) time[cursor-1]=9; else time[cursor-1]++; }break; case 3://enter enterkey++; set_flag=0; if(enterkey==2){// 按下两次确认启动测量 start_flag=1; enterkey=0; TIMSK|=(1<<TOIE1); //Timer1 overflow Interrupt 成都理工大学实验报告 IV Enable; TCNT=125; eeprom_busy
测控技术课程设计 来自淘豆网www.taodocs.com转载请标明出处.