广大ATmega128单片机实验报告实验二 1x8键盘和LED显示实验Word文件下载.docx
《广大ATmega128单片机实验报告实验二 1x8键盘和LED显示实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《广大ATmega128单片机实验报告实验二 1x8键盘和LED显示实验Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
2、软件平台:
ICCAVRC语言程序开发软件,AVRSTUDIO软件调试平台。
六、涉及的知识点
AVR单片机I/O口的原理及其配置、LED亮灭控制、读按键。
七、实验相关知识
1、电路原理
8盏LED
8个按键
图2.18个按键和8盏LED位置示意图
图2.2 8个按键和8盏LED电路图
2、与I/O口相关的寄存器
表2.1端口A数据寄存器PORTA
PORTA
位
功能描述
初始值
PORTA[7:
0]
[7:
当引脚配置为输出时,若PORTAn为“1”,引脚输出高电平,否则输出低电平。
当引脚配置为输入时,若PORTAn为“1”,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTAn清零,或者将这个引脚配置为输出。
三态
PORTA寄存器地址:
0x3B
表2.2端口A数据方向寄存器DDRA
DDRA
DDRA7
[7]
1=输出0=输入
DDRA6
[6]
DDRA5
[5]
DDRA4
[4]
DDRA3
[3]
DDRA2
[2]
DDRA1
[1]
DDRA0
[0]
寄存器DDRA地址:
0x3A
表2.3端口A输入引脚寄存器PINA
PINA
PINA[7:
通过读取PINAn可获得端口A各引脚电平:
0=低电平1=高电平
不定
寄存器PINA地址:
0x39
表2.4端口B数据寄存器PORTB
PORTB
PORTB[7:
当引脚配置为输出时,若PORTBn为“1”,引脚输出高电平,否则输出低电平。
当引脚配置为输入时,若PORTBn为“1”,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTBn清零,或者将这个引脚配置为输出。
寄存器PORTB地址:
0x38
表2.5端口B数据方向寄存器DDRB
DDRB
DDRB7
DDRB6
DDRB5
DDRB4
DDRB3
DDRB2
DDRB1
DDRB0
寄存器DDRB地址:
0x37
表2.6端口B输入引脚寄存器PINB
PINB
PINB[7:
通过读取PINBn可获得端口B各引脚电平:
寄存器PINB地址:
0x36
表2.7端口C数据寄存器PORTC
PORTC
PORTC[7:
当引脚配置为输出时,若PORTCn为“1”,引脚输出高电平,否则输出低电平。
当引脚配置为输入时,若PORTCn为“1”,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTCn清零,或者将这个引脚配置为输出。
寄存器PORTC地址:
0x35
表2.8端口C数据方向寄存器DDRC
DDRC
DDRC7
DDRC6
DDRC5
DDRC4
DDRC3
DDRC2
DDRC1
DDRC0
寄存器DDRC地址:
0x34
表2.9端口C输入引脚寄存器PINC
PINC
PINC[7:
通过读取PINCn可获得端口C各引脚电平:
寄存器PINC地址:
0x33
表2.10端口D数据寄存器PORTD
PORTD
PORTD[7:
当引脚配置为输出时,若PORTDn为“1”,引脚输出高电平,否则输出低电平。
当引脚配置为输入时,若PORTDn为“1”,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTDn清零,或者将这个引脚配置为输出。
寄存器PORTD地址:
0x32
表2.11端口D数据方向寄存器DDRD
DDRD
DDRD7
DDRD6
DDRD5
DDRD4
DDRD3
DDRD2
DDRD1
DDRD0
寄存器DDRD地址:
0x31
表2.12端口D输入引脚寄存器PIND
PIND
PIND[7:
通过读取PINDn可获得端口D各引脚电平:
寄存器PIND地址:
0x30
表2.13端口E数据寄存器PORTE
PORTE
PORTE[7:
当引脚配置为输出时,若PORTEn为“1”,引脚输出高电平,否则输出低电平。
当引脚配置为输入时,若PORTEn为“1”,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTEn清零,或者将这个引脚配置为输出。
寄存器PORTE地址:
0x23
表2.14端口E数据方向寄存器DDRE
DDRE
DDRE7
DDRE6
DDRE5
DDRE4
DDRE3
DDRE2
DDRE1
DDRE0
寄存器DDRE地址:
0x22
表2.15端口E输入引脚寄存器PINE
PINE
PINE[7:
通过读取PINEn可获得端口E各引脚电平:
寄存器PINE地址:
0x21
表2.16端口F数据寄存器PORTF
PORTF
PORTF[7:
当引脚配置为输出时,若PORTFn为“1”,引脚输出高电平,否则输出低电平。
当引脚配置为输入时,若PORTFn为“1”,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTFn清零,或者将这个引脚配置为输出。
寄存器PORTF地址:
0x62
表2.17端口F数据方向寄存器DDRF
DDRF
DDRF7
DDRF6
DDRF5
DDRF4
DDRF3
DDRF2
DDRF1
DDRF0
寄存器DDRF地址:
0x61
表2.18端口F输入引脚寄存器PINF
PINF
PINF[7:
通过读取PINFn可获得端口F各引脚电平:
寄存器PINF地址:
0x20
表2.19端口G数据寄存器PORTG
PORTG
PORTG[4:
[4:
当引脚配置为输出时,若PORTGn为“1”,引脚输出高电平,否则输出低电平。
当引脚配置为输入时,若PORTGn为“1”,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTGn清零,或者将这个引脚配置为输出。
寄存器PORTG地址:
0x65
表2.20端口G数据方向寄存器DDRG
DDRG
DDRG4
DDRG3
DDRG2
DDRG1
DDRG0
寄存器DDRG地址:
0x64
表2.21端口G输入引脚寄存器PING
PING
PING[4:
通过读取PINGn可获得端口G各引脚电平:
寄存器PING地址:
0x63
八、实验内容与步骤
1、连线
用短路块连接JP6针座的LED。
2、操作步骤
(1)创建工程目录“shiyan2”。
(2)将“实验程序文档/Include/”目录下的头文件iom128v.h拷贝到本工程目录“shiyan2”。
(3)创建工程“shiyan2”。
打开ICCAVR,在“Project”下拉菜单中选择“New”,如下图,
图2.3ICCAVR操作示意图
在“保存在(I)”下拉菜单中选择本工程目录“shiyan2”,在“文件名(N)”窗口中输入工程文件名“shiyan2”,然后按
按钮,如下图。
图2.4ICCAVR操作示意图
(4)设置工程参数。
在“Project”下拉菜单中选择“Options…”,如下图,
图2.5ICCAVR操作示意图
在弹出窗口的“Target”页面的“DeviceConfiguration”下拉菜单中选择
“ATMega128(PleaseseeNOTES)”。
在弹出窗口的“Compiler”页面的“OutputFormat”下拉菜单中选择“COFF/HEX”。
然后按
键,如下2图。
图2.6ICCAVR操作示意图
图2.7ICCAVR操作示意图
(5)将头文件iom128v.h添加到工程。
右击“Project”页面中的“Headers”项,在打开的菜单中选择“AddFile(s)…”,
图2.8ICCAVR操作示意图
选择弹出窗口中的iom128v.h文件并打开,如下面窗口,
图2.9ICCAVR操作示意图
添加的结果如下图。
图2.10ICCAVR操作示意图
(6)创建shiyan2.c文件并加入到工程。
创建shiyan2.c文件:
按
按键创建一个新文件,在“File”下拉菜单中选择“SaveAs…”将新文件保存在本工程目录,名字为shiyan2.c。
图2.11ICCAVR操作示意图
将shiyan2.c文件添加到工程:
右击“Project”页面中的“Files”项,在打开的菜单中选择“AddFile(s)…”。
图2.12ICCAVR操作示意图
选择弹出窗口中的shiyan2.c文件并打开,如下图,
图2.13ICCAVR操作示意图
图2.14ICCAVR操作示意图
(7)编写shiyan2.c文件。
双击右边的“Project”页面的“shiyan2.c”,在左边的“shiyan2.c”页面添加如下的语句:
#include"
iom128v.h"
voiddelay_ms(unsignedchari)
{unsignedchara,b;
for(a=0;
a<
i;
a++)
for(b=1;
b;
b++);
}
voidio_init(void)
{DDRB=0xFF;
PORTB=0xFF;
DDRE=0x00;
PORTE=0xFF;
voidmain(void)
{
io_init();
while
(1)
if((PINE&
(1<
<
PE0))==0)
PORTB=~(1<
PB0);
if((PINE&
PE1))==0)
PB1);
PE2))==0)
PB2);
PE3))==0)
PB3);
PE4))==0)
PB4);
PE5))==0)
PB5);
PE6))==0)
PB6);
PE7))==0)
PB7);
}
(8)编译连接shiyan2工程:
单击
按钮编译连接工程并生成shiyan2.hex烧写文件。
(9)下载shiyan2.hex烧写文件到AVRMega128学习板并运行,方法如实验1的“3、下载运行程序到AVRMega128学习板”,观察运行结果。
九、扩展实验
修改main()函数,当按左边第1个键时全部LED亮,当同时按着左边第2、第3个键时全部LED灭。
10、实验结果