建设企业网站模板下载,iis 网站后台,网页网站怎么做,网站哪里买外链一、系统方案 1、使用按键控制蜂鸣器模拟发出“叮咚”的门铃声。 2、“叮”声对应声音频率714Hz#xff0c;“咚”对应声音频率500Hz,这两种频率由ATmega128的定时器生成#xff0c;定时器使用的工作模式自定#xff0c;处理器使用内部4M时钟。“叮”声持续时间300ms#x…一、系统方案 1、使用按键控制蜂鸣器模拟发出“叮咚”的门铃声。 2、“叮”声对应声音频率714Hz“咚”对应声音频率500Hz,这两种频率由ATmega128的定时器生成定时器使用的工作模式自定处理器使用内部4M时钟。“叮”声持续时间300ms“咚”声持续时间700ms。 3、发“叮”时8个发光二极管亮发“咚”时发光二极管灭。 4、用LCD液晶显示芯片或数码管显示所用的定时器ATmega128有定时器0-3定时器时钟值、定时器的定时/计数器的初值及两种声音频率的持续时间等参数。 二、硬件设计 原理图如下
三、单片机软件设计 1、首先是系统初始化 //定时器1初始化 void timer1_init(void) { TCCR1B 0x00; //stop TCNT1H 0xf5; //setup TCNT1L 0x0e; TCCR1A 0x00; TCCR1B 0x00; //start Timer //定时器不分频 } 2、液晶显示程序 //写入命令 void LCD_write_command(uchar dat) { //LCD_wait_ready(); //写数据之前先判断液晶是否忙碌 lcd_ddr 0XFF; lcd_port0XFF; //设置端口为输出DI等于0代表指令操作 RW0();_delay_us(3);DI0(); //E下降沿将端口数据写到液晶显示器中 lcd_portdat; E1();_delay_us(3);E0(); } //写入数据 void LCD_write_data(uchar data) { //LCD_wait_ready(); //写数据之前先判断液晶是否忙碌 lcd_ddr 0XFF; lcd_port0XFF; //设置端口为输出DI等于1代表数据操作 RW0();_delay_us(3);DI1(); if(!fxshow) lcd_portdata;else lcd_port~data;//E下降沿将端口数据写到液晶显示器中 E1();_delay_us(3);E0(); } 3、按键程序 void Do() { switch(state) { case 0 :LED3_CLR() ;TCCR3B 0x01; state 1 ;scnt 0 ;Set_Frq(0);Start();break ; //启动定时器设定好相应的频率 case 1 :if(scnt300) //时间大于300毫秒 { state 2 ; //跳转到状态2 } break ;case 2 : Set_Frq(1); //设定咚的频率值 state 3 ; //跳转到状态3 break ; case 3 : if(scnt1000) //时间大于1000ms { state 4; //跳转到状态4 } LED3_SET() ;break ; //LED熄灭 case 4 : scnt 0 ; state 0 ; if(tcnt4){tcnt;}else{enable 0 ;TCCR3B 0x00; //定时器3停止工作tcnt 0 ;Stop(); //蜂鸣器停止输出}break ; //整个函数实现了叮 300毫秒咚 700毫秒的过程} } 4、核心算法程序 //*********************************************************************** // 主程序 //*********************************************************************** void main(void) { system_init(); //系统初始化 LCDchushihua(); //液晶初始化 LCDQingPing(); //显示器清屏
timer1_init(); //定时器1初始化
timer3_init(); //定时器3初始化
TIMSK0x04; //设置定时器中断
ETIMSK0x04; //设置定时器中断
SEI(); //开中断
vision_init(0); //显示内容初始化
m_enable 0 ; //叮咚模式
while(1)
{scan_key(); //按键扫描if(enable1){Do();}
}}
四、 proteus仿真设计 Proteus软件是一款应用比较广泛的工具它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况这样就可以通过软件仿真来验证我们设计的方案有没有问题如果有问题可以重新选择器件连接器件直到达到我们设定的目的避免我们搭建实物的时候如果当初选择的方案有问题我们器件都已经焊接好了再去卸载下去再去焊接新的方案的器件测试这样会浪费人力和物力也给开发者带来一定困惑Proteus仿真软件就很好的解决这个问题我们在设计之初就使用该软件进行模拟仿真测试选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸焊接实物调试最终完成本设计的作品。