智能仪器设计报告基于单片机和fpga的矩阵键盘控制系统设计-学位(3)

2019-02-16 13:20

《智能仪器设计》大作业——基于单片机和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 #include #define INT8U unsigned char #define INT16U unsigned int #define LCD_DB_PORT P1 //液晶DB0-DB7 #define LCD_START_ROW 0xC0 //起始行 #define LCD_PAGE 0xB8 //页指令 #define LCD_COL 0x40 //列指令 //液晶引脚定义 sbit DI = P2^0 ; //数据/命令选择线 sbit RW = P2^1 ; //读/写控制线 sbit E = P2^2 ; //使能控制线 sbit CS1 = P2^3 ; //片选1 sbit CS2 = P2^4 ; //片选2 sbit RST = P2^5 ; //复位

//----------------------------------------------------------------- // 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 -


智能仪器设计报告基于单片机和fpga的矩阵键盘控制系统设计-学位(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:图书馆管理系统流通催还论文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: