《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
图5-3 译码输出结果
结果分析:如图所示,Y1[7:0]即为输出。如黄线所示位置,KEYI_KEYO为110_101,对应于键盘上的“8”。再来看输出Y1[7:0]为1111_0111,取反以后为0000_1000,对应于BCD码,也是对应着“8”。所以,仿真结果正确。即当按下相应的键时(通过相应的仿真激励来实现,即对KEYO的控制),会输出相应的BCD码。在无键盘按下时,输出为高阻状态。
5.4 单片机与液晶显示器模块
单片机对输入管脚进行扫描,然后进行输出,可以由proteus软件对单片机程序进行仿真,仿真结果如图5-4所示,由于Proteus软件对单片机模块有许多默认的输入,例如晶振电路,故没有在软件中进行连线,从而简化布局。
图5-4 Proteus软件仿真结果
- 10 -
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
6. 参考文献
[1] 李华. MCS 251系列单片机接口技术[ M]. 北京:北京航天航空大学出版社,1993.
[2] 游志宇,张洪,董秀成等. MCS251 与FPGA_CPLD 总线接口逻辑设计[J]. 单片机与嵌入式系统应用 ,2008,1 :29 - 32.
[3] 徐志军,徐光辉. CPLD/ FPGA 的开发与应用 [ M]. 北京:电子工业出版社,2002. [4] 郭文川.单片机原理与接口技术[M]. 北京:中国农业出版社,2007.
[5] 夏宇闻. Verilog数字系统设计教程[M]. 北京:北京航天航空大学出版社,2008. [6] 吴继华,王诚. 设计与验证Verilog HDL[M]. 北京:人民邮电出版社,2006.
[7] 栗彩霞,武一等. MCS 251单片机与FPGA接口的逻辑设计[J].山西电子技术,2009,5.
- 11 -
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
致 谢
通过这次《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计,我收获了许多。学习了89C51单片机的结构组成、各个组成部分的功能,并且掌握了一定的单片机编程技能;学习了Verilog语言的编写规范,利用Xilinx的ISE工具,用Verilog语言完成电路的设计;初步了解了可编程逻辑器件对硬件系统的控制,并且对89C51单片机与FPGA逻辑控制和接口连接有了一定的认识。
在这里要感谢曾翔君老师对我的指导。我们几个同学共同完成这个大作业,但是在机械学院我们接触单片机和FPGA控制方面知识的机会较少,因此刚开始接触大作业时遇到了很多问题,曾老师都对我们的问题耐心的指导,老师渊博的知识和悉心的教导深深地感染了我们,我们衷心祝愿曾老师在未来的生活工作里,一帆风顺,心想事成!
- 12 -
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
附 录
1.单片机程序 //LCD_12864.c
//----------------------------------------------------------------- // 名称:12864LCD(KS0108)显示驱动程序 (不带字库) //----------------------------------------------------------------- #include
//----------------------------------------------------------------- // LCD忙等待
//----------------------------------------------------------------- void LCD_Busy_Wait() { do { LCD_DB_PORT = 0xFF; //液晶端口置高电平 RW = 1; _nop_(); DI = 0; //设置为读,选择状态寄存器 E = 1; _nop_(); E = 0; //E置高电平读取,随后置为低电平 } while (P0 & 0x80); }
//----------------------------------------------------------------- // 向LCD发送命令
- 13 -
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
//----------------------------------------------------------------- void LCD_Write_Command( INT8U c) { LCD_Busy_Wait(); //液晶忙等待 LCD_DB_PORT = 0xFF; //液晶端口置高电平 RW = 0; _nop_(); DI = 0; //设置为写,选择命令寄存器 LCD_DB_PORT = c; //一字节命令放置到液晶端口 E = 1; _nop_(); E = 0; //E置高电平读取,随后置为低电平 }
//----------------------------------------------------------------- // 向LCD发送数据
//----------------------------------------------------------------- void LCD_Write_Data(INT8U d ) { LCD_Busy_Wait(); //液晶忙等待 LCD_DB_PORT = 0xFF; //液晶端口置高电平 RW = 0; _nop_(); DI = 1; //设置为写,选择数据寄存器 LCD_DB_PORT = d; //一字节数据放置到液晶端口 E = 1; _nop_(); E = 0; //E置高电平读取,随后置为低电平 }
//----------------------------------------------------------------- // 初始化LCD
//----------------------------------------------------------------- void LCD_Initialize() { CS1 = 1; CS2 = 1; //左右半屏片选 LCD_Write_Command(0x3F); // 显示开 LCD_Write_Command(LCD_START_ROW); // 设置起始行 }
//----------------------------------------------------------------- //
- 14 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能仪器设计报告基于单片机和fpga的矩阵键盘控制系统设计-学位(3)在线全文阅读。
相关推荐: