本科毕业设计说明书(论文)
共 29 页第 14 页
如图4.1所示,系统主要主要由主程序、按键输入子程序、显示子程序、运算部分组成。主程序主要完成初始化功能;液晶主要负责显示输入数据和输出结果的工作;按键主要负责键入数据,进行数据运算。系统进入工作时首先进行初始化工作,之后系统将在循环以下这一过程:显示,按键扫描,键码处理,检测输入数据是否能够正确进行运算处理,如果数据正确则进行数据运算,反之,则返回到按键,重新扫描。
4.2 按键程序流程设计
按键模块的的子程序执行流程为:首先需要进行行列按键扫描,此时需要一个按键消抖的过程,然后确定按键位置,在进入对应键码内的数据进行处理。按键模块子程序流程图如图4.2所示。
开始初始化显示参数按照行列计算键值输入列扫描信号得出键码列扫描信号移位按键消抖读入行信号等待按键释放N有键键入?YN列扫描完?Y返回返回 图4.2 按键扫描流程
本科毕业设计说明书(论文)
共 29 页第 15 页
键盘扫描子程序,首先读出I/O口低四位,然后读出I/O口高四位,键值并显示缓存。然后将键如的值转换为ASCII码然后就可以软件来设置硬件按键各个键代表的内容。读键程序使用行列扫描法。流程图中的消除抖动所用就是软件消抖的方法。软件消抖所用到的延时函数如下:
/**************延时******************/ void delay(uchar z) {
uchar x,y; for(x=z;x>0;x--) for(y=100;y>0;y--); }
4.3 LCD1602显示流程设计
当按键键入数值和结果显示时,都需要用到LCD1602作为显示屏,LCD1602显示流程如图4.3所示。
开始输出选通信号初始化显示参数延时关位显示位选通信号移位取显示数据指向下一个显示数据输出段码数据N2位完成?Y返回
图4.3 显示流程图
本科毕业设计说明书(论文)
共 29 页第 16 页
由图4.3可以很清楚地看出LCD1602的显示流程。显示模块程序首先要对显示模块进行初始化,然后控制光标的位置。定义液晶显示的控制端口,用sbit指令完成;然后设置清屏、开关显示、归位、显示位置的首地址等等。相关的代码如下:
/*************lcd********************/ sbit lcdrs=P3^7; //LCD控制脚 sbit lcdrw=P3^6; sbit lcden=P3^5;
/***********液晶初始化***************/
void init(void ) {
write_com(0x38); //模式:8位数据,两行,5*7字体 write_com(0x0c); //开显示,无光标 write_com(0x06); //向左增量移动 write_com(0x01); //清屏 }
/**************写命令*****************/ void write_com(uchar com) {
lcdrs=0; lcdrw=0; lcden=0; P1=com;
delay(5); //延时函数 lcden=1; delay(5); lcden=0; }
/*************写数据******************/ void write_date(uchar date) {
本科毕业设计说明书(论文)
lcdrs=1; lcdrw=0; lcden=0; P1=date; delay(5); lcden=1; delay(5); lcden=0; }
/*************读AC 地址*****************/ void read_date(void)
{
lcdrs=0; lcdrw=1; delay(5); P1=0xff; lcden=1; delay(5); state=P1; delay(5); lcden=0; delay(5); state=state&127;
}
共 29 页第 17 页
4.4 本章小结
本章主要介绍计算器各个模块详细的运行流程,包括系统流程图,按键程序流程图,LCD显示流程图等。计算器的程序主要包括以下模块: 读键程序、判断按键程序段、运算操作子程序等部分;LCD显示程序模块;主程序模块,对整个系统进行初始化。C语言模块化的特点使得这些程序模块条理清晰。与此同时,为了挺高整个系统的有效性,加入了复位按键,错误提示报警等。
本科毕业设计说明书(论文)
5 功能仿真及其结果
共 29 页第 18 页
根据各个模块介绍以及软件设计流程图,进行硬件仿真,从而达到计算器的基本功能,并且在此基础上进行功能扩展。
5.1 软件简介
5.1.1 KEIL软件简介
KEIL C51是基于51系列单片机为内核的,由美国KEIL Software公司研制的一款智能、实用的开发系统软件。KEIL C51为80C51系列的单片机不但提供了C语言编译环境,而且也保留了汇编环境。uVision2是由KEIL Software公司研制的51系列兼容单片机C语言软件开发工具,uVision2的集成开发环境囊括了:汇编器、编译器、实时操作系统、调试器和项目管理器。uVision2可以为用户提供一个单一而又方便的开发环境。
5.1.2 PPOTUES ISIS简介
PROTUES软件是由英国Labcenter Electronics公司研发的EDA系统设计工具软件,它可以帮助设计者进行电路分析和仿真。该软件包含其它EDA工具软件的仿真功能,而且还可以仿真单片机和外围电路。PROTUES不仅是当今最好的单片机和外围电路仿真的工具软件,而且还提供设计、仿真数字电路和分析、模拟电路及模/数混合电路的平台,真正的实现了从概念到产品的完整设计。PROTUES可以仿真51系列、PIC和AVR等主流单片机。该软件可以直接在原理图的虚拟原型上进行编译,然后配合显示和输出可以看到仿真的结果。ISIS是一款操作智能、简便,可完成系统仿真的实用软件。
5.2 仿真结果与操作说明
5.2.1 系统总体仿真
本系统以AT89C52单片机为核心,选用11.0592MHz的晶振,利用液晶和键盘来做计算器设计,应用范围广泛而且方便实用。通过Proteus仿真环境,keil编程环境的支持,用主程序初始化系统,其他程序模块化选择的方式,进行软件调试,当各个模块都调试成功之后,添加入主程序,最后完成计算器的设计。
本设计应当达到一般计算器所具有的加、减、乘、除四则运算功能,并且在此基础上拥有一定的扩展。因此,本设计需要优化硬件电路的设计,减少串口的使用,合理的分配单片机硬件资源,在保证计算器功能正常实现的同时还需要保证计算器拥有