ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:638KB ,
资源ID:21844307      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21844307.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(按键控制实验报告Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

按键控制实验报告Word格式.docx

1、 LEDG, / KEY / KEY, CLR, /COUNT/ /COUNT, / SEG7 / HEX0, HEX1, / LCD / LCD_BLON, LCD_DATA, LCD_EN, LCD_ON, LCD_RS, LCD_RW, / SDRAM / DRAM_ADDR, DRAM_BA, DRAM_CAS_N, DRAM_CKE, DRAM_CLK, DRAM_CS_N, DRAM_DQ, DRAM_DQM, DRAM_RAS_N, DRAM_WE_N, / Flash / FL_ADDR, FL_CE_N, FL_DQ, FL_OE_N, FL_RST_N, FL_RY, FL

2、_WE_N, FL_WP_N,);/ PARAMETER declarations/ PORT declarations/ CLOCK /input CLOCK_50;/ LED /output 7:0 LEDG;/ KEY /input 2:0 KEY;input CLR;/COUNT/input 7:0 COUNT/ SEG7 /output 6:0 HEX0;0 HEX1;/ LCD /output LCD_BLON;inout 7:0 LCD_DATA;output LCD_EN;output LCD_ON;output LCD_RS;output LCD_RW;/ SDRAM /ou

3、tput 12:0 DRAM_ADDR;output 1:0 DRAM_BA;output DRAM_CAS_N;output DRAM_CKE;output DRAM_CLK;output DRAM_CS_N;inout 31:0 DRAM_DQ;output 3:0 DRAM_DQM;output DRAM_RAS_N;output DRAM_WE_N;/ Flash /output 22:0 FL_ADDR;output FL_CE_N;inout 7:0 FL_DQ;output FL_OE_N;output FL_RST_N;input FL_RY;output FL_WE_N;ou

4、tput FL_WP_N;/ REG/WIRE declarations/ 7-SEG /wire2:0 norkey;wire7:0 count_in;0 data;/ Structural codingwire reset_n;assign reset_n = 1b1;kernel kernel_inst( / 1) global signals: .clk_50(CLOCK_50), .reset_n(reset_n), .sdram_clk(DRAM_CLK), .sys_clk(clk_sys), / / the_key .in_port_to_the_key(KEY), /the_

5、count .in_port_to_the_count(count_in7:0), / the_lcd .LCD_E_from_the_lcd(LCD_EN), .LCD_RS_from_the_lcd(LCD_RS), .LCD_RW_from_the_lcd(LCD_RW), .LCD_data_to_and_from_the_lcd(LCD_DATA), / the_led .out_port_from_the_led(LEDG), / the_sdram .zs_addr_from_the_sdram(DRAM_ADDR), .zs_ba_from_the_sdram(DRAM_BA)

6、, .zs_cas_n_from_the_sdram(DRAM_CAS_N), .zs_cke_from_the_sdram(DRAM_CKE), .zs_cs_n_from_the_sdram(DRAM_CS_N), .zs_dq_to_and_from_the_sdram(DRAM_DQ), .zs_dqm_from_the_sdram(DRAM_DQM), .zs_ras_n_from_the_sdram(DRAM_RAS_N), .zs_we_n_from_the_sdram(DRAM_WE_N), / the_seg7 .out_port_from_the_seg7(data), .

7、out_port_from_the_en_seg(en), / the_tri_state_bridge_flash_avalon_slave .address_to_the_cfi_flash(FL_ADDR), .read_n_to_the_cfi_flash(FL_OE_N), .select_n_to_the_cfi_flash(FL_CE_N), .tri_state_bridge_data(FL_DQ), .write_n_to_the_cfi_flash(FL_WE_N), ); clk_div clk_div( .clkin(clk_sys), .clk_1KHz(clk_1K

8、Hz), .clk_1Hz(clk_1Hz); mydecoder_7seg yima( .clk(clk_1KHz), .segmenth(HEX1), .segmentl(HEX0), .data(data), .en(en); / .lowdata(data3:0);counter couter( .clk(clk_1Hz), .clr(CLR),/anjian qingling .count(count_in7: / Flash Configassign FL_RST_N = reset_n;assign FL_WP_N = 1/ LCD configassign LCD_BLON =

9、 0; / not supportedassign LCD_ON = 1 / alwasy on endmodule系统框图实验程序#includecount.h /关于LCD的相关定义,控制LCD的输出格式#include stdio.hsystem.haltera_avalon_pio_regs.halt_types.hsys/alt_irq.hvolatile int a=0;volatile char b;unsigned char count1,count2,count3;static void KeyDown_interrupts(void* context,alt_32 id)

10、/中断函数 IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0);/响应中断后,将中断响应位复位; b=IORD_ALTERA_AVALON_PIO_DATA(KEY_BASE); /读取中断响应值 switch(b) case 0x1: /七段数码管显示 IOWR_ALTERA_AVALON_PIO_DATA(EN_SEG_BASE,1); /IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00); count1=IORD_ALTERA_AVALON_PIO_DATA(COUNT_BASE); IOWR_ALTERA_AVALO

11、N_PIO_DATA(SEG7_BASE,count1); break; case 0x2: /LCD显示 count2=IORD_ALTERA_AVALON_PIO_DATA(COUNT_BASE); printf(%02x, count2);/直接用标准输出函数表示 case 0x4:/LED灯显示 IOWR_ALTERA_AVALON_PIO_DATA(EN_SEG_BASE,0); count3=IORD_ALTERA_AVALON_PIO_DATA(COUNT_BASE); IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,count3); default:

12、/无按键时,正常计数,但无显示 void InitPIO(void)/中断初始化IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_BASE,0x7);/开中断,允许后三位开中断IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE,0x0);/中断响应后复位,防止中断一直响应。 alt_irq_register(KEY_IRQ,NULL,KeyDown_interrupts);int main() InitPIO(); while(1)/等待中断 IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);/中断初始化

13、return 0;程序几点注意:1)volatile int a=0;对于变量a,b,一定要用volatile关键字修饰,防止因编译器的优化而省略。具体说来,由于外部中断等的存在,变量的值很可能因为外部按键而改变变量的值,但编译器不会察觉到其变化,而仅仅使用寄存器里的备份。比如,在本次实验中,变量b为读取外部中断按键的值,当我们按下不同的按键时,b每次对应的值是不同的,而编译器在编译的过程中是感觉不到其变化的。这也是区分C程序员和嵌入式系统程序员的最基本的问题。2)系统设置Stdout选择LCD,printf(输出结果在LCD上显示;实验结果实验总结与体会最开始的时候程序,完全没思路,网上搜了下,发现nios自带的几个模板函数有类似的函数,count binary,只是函数实现的功能稍有不同,并采用的是边沿中断。花了一段时间把程序看懂之后,发现按照实验要求,最好采用电平中断。再有就是版本问题,调试的过程总是显示一些意想不到的错误。可能SOPC较前沿,所遇到的问题都没有很好的系统解决方法,过程较吃力。 这次实验总体上实现了实验要求,LCD显示方式还没有完全搞清楚,有后续学习。总之,通过这次实验,学到了很多的东西,尤其是关于软件及如何在硬件平台的基础上,通过软件来实现特定功能,这也正是嵌入式的特点。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1