准确的称重。因为这个是虚拟电路,没有实在的重量。所以为了这个,在本系统中还是设置了一个初始的值。然后通过MPX4115去调它的值,而且它被设了一个上限的值,当重量到达那个点时,显示器就会显示出“over”字样。通过MPX4115上的“+,—”按键就可以实现调整重量大小的功能,但是重量就通过矩阵键盘来调整。只要按下键盘上的“=”键,就能够算出总价格,并显示出来,计算的使用增加按键的使用,使键盘的使用丰富起来。液晶显示模块采用的液晶显示器,它能够显示那些字符。这样使程序的编写简单了很多,再通过矩阵键盘上的按键实现价格计算和调整等功能。
单片机系统按照程序控制所设定操作方式开始运行,系统上电后,会使系统自动回到最初状态。初始化程序主要完成对单片机内专用寄存器的设定,并规定单片机的工作方式,顺便也规定每个端口的工作形态。主程序流程图如图 4-1 所示。
图4-1 系统流程图
4.3显示模块流程图及子程序的设计
显示模块子程序最重要的功能是来断定是不是需要,以及怎么样去将数值显示出来,因此,显示模块子程序是一段很重要的设计,在设计时要注重这个模块。首先开始显示初始化界面,完后判断有无按键,如果没有返回到上一步,如果有按键则显示出来按键的功能,例如预置的单价等,检测是否有重物,如果没有返回上一步,如果有按键则显示出物重、总价等信息,显示结束返回。显示子程序的流程图如下图4-2所示。
图4-2显示子程序流程图
开始显示初始化界面有无按键YN显示按键功能检测重物YN显示总价信息返回显示电路程序分析(取段) void Int() {
LcdInt(); //调用LCD初始化函数
//定时器0自动从转载模式
EA=1;
//开总中断
TMOD=0x22;
ET0=1;
//允许定时器0中断 //赋值 //开定时器0
TH0=0X14; TR0=1; }
TL0=0X00;
BKeyCount=0; //计数器初始化
4.4 按键处理程序
键盘电路使用4*4矩阵式键盘,一共有16个按键,主要用到的包括: 0 ~ 9、确认键、清零键、计算键。
在按键程序中应该先开始判断按键的编码,然后将其所表示的数值传送到相对应的存储单元,再开展功能的判断或数据的整理。主要是判断有无按键,如果没有原地跳转,如果有按键则通过LCD显示出其按键功能,然后判断是否有清零键按下,如果没有则原地跳转,如果有清零键按下,说明键盘输入重新开始,返回到字符界面显示继续后面的操作。键盘子程序的流程图如图4-3所示。
图4-3键盘子程序流程
YYYN按键输入LCD输入界面字符显示有功能键按下输入完毕调用LCD显示N有清零键按下N键盘显示模块的一段程序分析:
void main() {
Int();
Write_NO1(0x00,PC_Data); 取
{ Write_NO2(0x00,Price); WriteAddress(0x46);
//显示单价
Total_price[BKeyCount++]=BKeyNum; //存放价钱
// WriteData(' ');起到站空位的作用,清除原来无
Write_NO2(0x00,Price); while(1)
{ if(MMC74C992==0) {
while(MMC74C992==0); //MMC74C992=0时,说明有按键按下,很重
要,必须有。
BKey=(P2&0Xf0)>>4; //将高4位的BCD码一到低4位,便于计算 //将BKey的BCD码转换成相应的按键值,便于计算。
//改转换只转换了0-9数字键和“=”按键,其他暂时涉及不到,所以未进 switch(BKey) {
…
case 11:BKeyNum=10;break; //实则为\按键识别
default :BKeyNum=11;break; //其他按键键值为11,无效按键
//BKeyNum>=10,说明不是数字键,无需存
case 0:BKeyNum=7;break;
//按键7的识别
case 1:BKeyNum=4;break;
//按键4的识别
行转换
} if(BKeyNum<10)
用显示的数据。
4.5本章小结
本章对主程序进行了整体说明,这包括主程序里设计思想和主程序内容解析。接着对于按键调节和按键切换、显示部分的程序作了具体说明及分析。
5 系统仿真及调试
5.1 Proteus ISIS简介[15]
Proteus ISIS是英国Labcenter公司所开发的一个软件。它能够对电路进行分析和实物仿真。它已经出现快20年了,在全世界拥有非常多的企业用户群,也是目前唯一一个对每一种处理器都能进行迅速的仿真、调试和测试的EDA工具,
准确的履行了没有实物就能够对系统进行设计、测试和验证的作用。Proteus的作用真的有很多,是近年来备受电子设计爱好者青睐的一款新型电子线路设计与仿真软件。
5.1.1 Protues运行流程
(1)首先,在电脑里下载正确的软件版本,此软件主要是对硬件部分进行模拟。
(2)其次,进入软件后蓝色框内就是工作区域,可以在里面随意选择元器件,拖动元器件。根据原理图进行正确的连线。
(3)再次,完成所有连接后,双击单片机把生成的HEX文件进行导入。 (4)最后,如果程序和连好的图都没有问题就可以进行仿真了。
5.2 keil简介
Keil支持51系列的单片机的仿真,可通过系统设置生成51可执行的hex文件。Keil提供了一个完善开发案本,通过一个集成的开发环境将所有组合在一起。还有最关键的是,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势[16]。
在Keil集成开发环境不是在单一文件的模式下使用的,而是用工程的方法来管理文件。其中的文件包括源程序(如C语言、汇编语言)、头文件等都能够放在工程项目文件里进行统一的管理。创建新的应用程序就按照下面所介绍的方法来。
(1)一个工程项目文件; (2)挑选自己所用到的单片机;
(3)创立源程序文件后写入程序的代码; (4)将创建的不曾编译的项目文件save; (5)将未经编译的程序文件增加到此项目中。
5.3 出现的问题和解决方法
在系统设计完成后进入调试阶段,往往并不能直接得到所要的结果,即很难做到一次性成功。原因主要来自于硬件部分设计存在的问题和软件编程部分程序上的错误等。
首先,由于对单片机掌握并不十分熟练导致,对一些接口的功能理解没有十分透彻,因此在硬件连接时存在错误,经过查阅资料和与指导老师交流,反复修改,最终解决了硬件问题。
其次,在编程过程中,由于对C语言编写的不熟练,在编写过程中出现不少疑难,但经过反复查阅资料,认真理解,最终按照绘制好的程序流程图编写好了