北邮小学期AVR单片机模拟电梯系统实验报告

上传人:公**** 文档编号:454716683 上传时间:2023-06-09 格式:DOCX 页数:27 大小:1.67MB
返回 下载 相关 举报
北邮小学期AVR单片机模拟电梯系统实验报告_第1页
第1页 / 共27页
北邮小学期AVR单片机模拟电梯系统实验报告_第2页
第2页 / 共27页
北邮小学期AVR单片机模拟电梯系统实验报告_第3页
第3页 / 共27页
北邮小学期AVR单片机模拟电梯系统实验报告_第4页
第4页 / 共27页
北邮小学期AVR单片机模拟电梯系统实验报告_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《北邮小学期AVR单片机模拟电梯系统实验报告》由会员分享,可在线阅读,更多相关《北邮小学期AVR单片机模拟电梯系统实验报告(27页珍藏版)》请在金锄头文库上搜索。

1、小学期单片机实验报告姓名: 申宇飞班级:信通3班学号:班内序号:03时间:2014/9/9-2014/9/18基于AVR单片机的模拟电梯系统制作目录基于AVR单片机的模拟电梯系统制作21.简介31.1课题名称31.2摘要32.前期准备32.1流水灯32.1.1 功能32.1.2 程序代码32.2蜂鸣器/按键蜂鸣器42.2.1 功能42.2.2 程序代码42.3 秒表计时器62.3.1 功能62.3.2 程序代码62.4流水灯与60秒秒表计时器82.4.1 功能82.4.2 程序代码83.设计过程113.1设计流程113.2 实验元器件113.3实验程序主要流程图123.4实验原理及原理图13实

2、验原理133.4.2 原理图13各模块的设计与详解:134.程序源代码及程序分析155.实验结果225.1 操作过程226.排错过程247.心得体会258.参考文献269.意见与建议261.简介1.1课题名称 基于AVR单片机的模拟电梯系统1.2摘要本实验设计制作一个基于单片机Atmega16的模拟电梯系统。此单片机模拟电梯用红色和绿色发光二极管分别来指示电梯当前是处于上升状态还是下降状态,用数码管显示当前是处于哪一层,能够通过键盘控制实现电梯的上下运行来到达指定楼层,此外,在出现意外情况时可以通过按键实现电梯的紧急停止及恢复运行。关键词:单片机,键盘扫描,按键检测,电机的正反转,数码管显示,

3、蜂鸣器,模拟电梯2.前期准备在之前的学习中我们从未学习单片机,所以在确定选题前需要一定的学习和练习。我们小组一共练习了3个工程:流水灯、按键蜂鸣器和秒表计时器,学会了使用AVR studio工作环境和WINAVR(GCC)编译器,并在板子上写入程序。学会了I/O端口初始化、输入输出操作,通过端口控制LED序列、8段数码管、蜂鸣器,中断和定时的使用。2.1流水灯 2.1.1 功能 学会I/O端口的初始化及通过端口控制LED,使得LED呈现流水灯效果,我们小组用的PB端口作为控制LED的端口,并且由于人眼频率和单片机频率的关系加了延迟函数,使得流水灯每个状态保持1s2.1.2 程序代码#inclu

4、de int main(void)char temp; /用来存储当前A端口的输出unsigned int i,k; /循环变量DDRA=0xff; /将A端口设为输出PORTA=0b00000001; /初始化A端口,从接入PA0的LED灯亮while(1) temp = PORTA;PORTA=PORTA1;if(temp&0b10000000) /若接入7的LED灯亮PORTA=PORTA | 0b00000001;/则点亮接入PA0的LED灯/即实现流水灯循环for(i=0;i50;i+) /延时,约1秒钟for(k=0;k1000;k+);2.2蜂鸣器/按键蜂鸣器 2.2.1 功能

5、按键蜂鸣器主要为了了解按键的使用,并且学会中断的应用 2.2.2 程序代码蜂鸣器: #include int main(void)unsigned int i,k; DDRB|=(13); /对B端口的设置,使得PD3设置为输出PORTB &=(13); /初始时蜂鸣器不响while(1) PORTB =(13); /设置蜂鸣器每隔约一秒响一次for(i=0;i50;i+)for(k=0;k1000;k+);按键蜂鸣器:#includeint main(void)DDRA &=(16); /按钮6的设置PORTA |=(16);DDRA &=(17); /按钮7的设置PORTA |=(17);

6、DDRA &=(12); /按钮2的设置PORTA |=(12);DDRA &=(13); /按钮3的设置PORTA |=(13);DDRB |=(13);/蜂鸣器输出PORTB &=(13);DDRD =0xff;/灯的输出while(1)switch(PINA &0b11001100)case 0b11001100: /K1被按下PORTD|=(10); /LED0发光break;case 0b11000000: /K2被按下PORTD|=(11); /LED1发光break;case 0b10001000: /K3被按下PORTD|=(12); /LED2发光break;case 0b0

7、1001000: /K4被按下PORTB |=(13); /蜂鸣器鸣响break;default:PORTB &=(13); /关蜂鸣器PORTD=0; /关灯break;2.3 秒表计时器 2.3.1 功能 利用两位数码管,实现秒表计时的功能 2.3.2 程序代码#include #include int table= /显示09的数组0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f; int main(void)DDRA=0xff;DDRB=0xff;DDRD=0b11110111;PORTA=0b00000001;PORTD=(13);

8、 /设置中断PORTB=0b00001000;MCUCR|=(1 ISC11); /设置INT1下降沿触发中断GICR|=(1 INT1);sei();unsigned int i,j,k,x,y;unsigned char temp;TCCR0|=(1CS01);while(1)for(i=0;i60;i+)x=i/10,y=i%10; /x为十位数,y为个位数PORTD=tablex;/接入PD口的数码管显示十位数PORTB=tabley;/接入PB口的数码管显示个位数temp=PORTA; /流水灯的显示 PORTA=PORTA 1;if(temp & (17)PORTA|=1;TCNT

9、0=55;for(k=0;k3;k+) /延时for(j=0;j10000;j+)while(!(TIFR & (1TOV0);TCNT0=55;SIGNAL(SIG_INTERRUPT1) /中断程序int m=0;while(1)if(PIND & (12) delay(10);while(1)m +;if(!(PIND & (12)m +; break; delay(500);if(m=2)delay(100);break; 2.4流水灯与60秒秒表计时器 2.4.1 功能 学会I/O端口的初始化及通过端口控制LED,使得LED呈现流水灯效果,此外,利用两个数码管,实现60秒秒表计时功能

10、,可随时停止。2.4.2 程序代码#include #include int main(void) char TEMP;DDRB=0xff;/将B端口设为输出 PORTB=0b11001100;/初始化B端口,最开始第一个灯亮 while(1)/主循环TEMP=PORTB;PORTB=PORTB1;if(TEMP&0b10000000)PORTB=PORTB|0b00000001;for(i=0;i100;i+) for(j=0;j1000;j+);int main(void)char num10= 0b00111111,/00b00000110,/10b01011011,/20b010011

11、11,/30b01100110,/40b01101101,/50b01111101,/60b00000111,/70b01111111,/80b01101111,/9;char shuma10=0b10111111,0b10000110,0b01011111,0b11001111,0b11100110,0b11101111,0b11111101,0b10000111,0b11111111,0b11101111,; unsigned int a = 0,tag = 0; char temp; unsigned int i,j; DDRA=0xff;PORTA=0b10001100; DDRC&=(17); PORTC |=(17); DDRB|=(17); DDRD|=(17)|(02); PORTC &=(16);/关数码管 TCNT0 = 55; TCCR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号