基于嵌入式linux计算器的实现
- 格式:doc
- 大小:279.00 KB
- 文档页数:26
一目的及要求1实验目的根据计算器的原理设计一个具有加减乘除功能的简易计算器。
2实验要求(1)数字和结果用数码管显示。
(2)数字、+-*/、=、C用4X4键盘实现。
(3)计算结果正确,有出错提示。
二实验原理框图基本工作原理:本设计利用数码管和4*4矩阵式键盘实现了简易计算器的功能。
接通电源,数码管显示全0。
计算时,通过键盘输入需要计算的数字,该数字显示在数码管上,当键入等号时,计算结果显示在数码管上。
进行第二次运算时,按C键清除键盘结果。
当计算出现错误时,LED灯亮报警。
当计算结果超出数码管显示出现溢出时,报警电路也会报警。
报警输出为--。
四系统软件设计1.数据输入模块原理:通过4*4矩阵模块输入数字,在数码管上显示出来。
2.运算模块原理:四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号时,将所得结果反馈给运算模块输入端。
3.输出模块原理:通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据。
当输出结果溢出是LED亮四次,同时数码管显示都为--。
五实验调试首先按清零键清零。
然后进行调试。
输入数据2,再按乘法键,输入第二个数字6,按等号键,数码管显示12;再按除法键,输入第二个数据3,按等号键,数码管显示4;再按加法键,输入第三个数据7,依次按等号键,数码管显示11;按减法键,输入第四个数据99,依次按等号键,数码管显示-88。
若输入超出显示管的最大值或者超出数码管的位数,结果溢出,LED亮报警,同时数码管显示都为--。
如输入999999加上2 ,结果就溢出,LED灯亮四次报警。
六程序#include "LPC2468.h" /* LPC24xx definitions */ #include "type.h"#include "irq.h"#include "target.h"#include "timer.h"#include "fio.h"#include "keyboard.h"#include "SPI.h"extern BYTE seg_buf[50]; // LPC2468开发板使用此数组的0~5显示六个数码管;LPC2478板使用1~6BYTE seg_copy1[7];BYTE seg_copy2[7];unsigned long Num1 =0;/*第一个输入的数字*/unsigned long Num2 =0;/*第二个输入的数字*/unsigned long Num3 =0;/*第二个输入的数字*/extern BYTE KEY; // LPC2468开发板使用此数组的0~5显示六个数码管;LPC2478板使用1~6enum {Add =1,Dec,Mut,Div,nofuntion}funtion;/******************************************************************** *********** Main Function main()********************************************************************* *********/int main (void){unsigned char counter = 0; /*计算输入的数字的个数,超过6个则报警,运算结果超过6位数也报警*/unsigned char cal_allow = 1; /*允许输入数字标志*/unsigned char input_allow = 1;/*允许输入数字标志*/unsigned char funtion_type = 0;/*运算功能*/unsigned char Ne_num = 0;/*负数标志*/DWORD value=0,i=0;TargetResetInit();enable_timer(1);SPI_Init(8); // SPI总线速率为28.8/8 = 3.6 MHz Seg_Init(); // 数码管初始化LedsInit();for(i=0;i<7;i++){seg_copy1[i]=0;seg_copy2[i]=0;seg_buf[i]=0;}counter = 0;cal_allow = 1;input_allow = 1;funtion_type = nofuntion;while ( 1 ){value = KEY;/*输入数字*/if(value>0 && value<11){if(counter < 6&&input_allow==1){if(counter == 0) seg_buf[1] = value-1;else{for(i=0;i<counter;i++){seg_buf[counter+1-i] = seg_buf[counter-i]; }seg_buf[1] = value-1;}counter++;}if(counter == 6){input_allow = 0;LedOn(1);LedOn(2);LedOn(3);LedOn(4);}}/*如果是“C”键,则清除显示,清除计算标志*/if(value == 11){for(i=0;i<7;i++){seg_copy1[i]=0;seg_copy2[i]=0;seg_buf[i]=0;}counter = 0;Num1 = 0;Num2 = 0;Num3 = 0;cal_allow = 1;input_allow = 1;Ne_num = 0;/*负数标志*/funtion_type = nofuntion;}/*如果是“+”键,则显示结果*/if(value == 13 ){if(cal_allow == 1){for(i=0;i<7;i++){seg_copy1[i] = seg_buf[i];/*备份第一次输入的数字*/seg_buf[i]=0; /*显示清零以准备第二次输入数字*/}funtion_type = Add;counter = 0; /*计数器清零允许第二次计数*/cal_allow =1; /*再等号按下前不能再按第二次*/input_allow = 1; /*允许第二次输入数据*/}else{input_allow = 0; /*禁止按下2次功能键时候输入数据*/}/*如果是“-”键,则显示结果*/if(value == 14&& cal_allow == 1){if(cal_allow == 1){for(i=0;i<7;i++){seg_copy1[i] = seg_buf[i];/*备份第一次输入的数字*/seg_buf[i]=0; /*显示清零以准备第二次输入数字*/}funtion_type = Dec;counter = 0; /*计数器清零允许第二次计数*/cal_allow =1; /*再等号按下前不能再按第二次*/input_allow = 1; /*允许第二次输入数据*/}else{input_allow = 0; /*禁止按下2次功能键时候输入数据*/ }}/*如果是“X”键,则显示结果*/if(value == 15 && cal_allow == 1){if(cal_allow == 1){for(i=0;i<7;i++)seg_copy1[i] = seg_buf[i];/*备份第一次输入的数字*/seg_buf[i]=0; /*显示清零以准备第二次输入数字*/}funtion_type = Mut;counter = 0; /*计数器清零允许第二次计数*/cal_allow =1; /*再等号按下前不能再按第二次*/input_allow = 1; /*允许第二次输入数据*/}else{input_allow = 0; /*禁止按下2次功能键时候输入数据*/ }}/*如果是“/”键,则显示结果*/if(value == 16 && cal_allow == 1){if(cal_allow == 1){for(i=0;i<7;i++){seg_copy1[i] = seg_buf[i];/*备份第一次输入的数字*/seg_buf[i]=0; /*显示清零以准备第二次输入数字*/}funtion_type = Div;counter = 0; /*计数器清零允许第二次计数*/cal_allow =1; /*再等号按下前不能再按第二次*/input_allow = 1; /*允许第二次输入数据*/}else{input_allow = 0; /*禁止按下2次功能键时候输入数据*/ }}/*如果是“=”键,则清除显示,清除计算标志*/if(value == 12){for(i=0;i<7;i++){seg_copy2[i] = seg_buf[i];/*拷贝第二次输入的数字*/}/*把输入的数字串1合成运算数字*/Num1 = seg_copy1[6]*100000+seg_copy1[5]*10000+seg_copy1[4]*1000 +seg_copy1[3]*100+seg_copy1[2]*10 +seg_copy1[1];/*把输入的数字串2合成运算数字*/Num2 = seg_copy2[6]*100000+seg_copy2[5]*10000+seg_copy2[4]*1000 +seg_copy2[3]*100+seg_copy2[2]*10 +seg_copy2[1];switch(funtion_type){case Add:{Num1 = Num1+Num2;/*计算结果存在Num1中*/break;}case Dec:{if(Num1==Num2) Num1 = 0;else if(Num1>Num2){Num3 = Num1-Num2;/*计算结果存在Num1中*/ Num1 = Num3;}else if(Num2 > Num1){Num3 = Num2-Num1;Ne_num =1;Num1 = Num3;}break;}case Mut:{Num3 = Num1*Num2;/*计算结果存在Num1中*/ Num1 = Num3;break;}case Div:{if(Num1>=Num2&&Num2!=0){Num3 = Num1/Num2;/*计算结果存在Num1中*/}Num1 = Num3;break;}default:break;}/*显示结果*/if(Num1>999999||(Ne_num ==1&&Num1>99999)||Num2 ==0) {for(i=0;i<7;i++){seg_copy1[i]=0;seg_copy2[i]=0;seg_buf[i]=10;/*显示横杠表示计算溢出错误!*/}for(i=0;i<5;i++){LedOn(1);LedOn(2);LedOn(3);LedOn(4);delayMs(1,200);LedOff(1);LedOff(2);LedOff(3);LedOff(4);delayMs(1,200);}}else{seg_buf[1] = Num1%10;seg_buf[2] = (Num1%100)/10;seg_buf[3] = (Num1%1000)/100;seg_buf[4] = (Num1%10000)/1000;seg_buf[5] = (Num1%100000)/10000;seg_buf[6] = Num1/100000;if(Ne_num ==1){seg_buf[6] = 10;/*显示负号*/}}}delayMs(1,200);}}/******************************************************************** *********** End Of File********************************************************************* ********/七实验现象(1)运行成功以后的计算机界面如图一:图一(2)正确输入6+6=12的现象如图二和图三:图二图三(3)当进行除操作且除数为0时的现象如图四:图四七实验小结在设计计算机的过程中,我们遇到了很多问题,但是都通过查资料和请教同学得到了解决。
《基于ARM-Linux的嵌入式移动计算系统的研究与实现》一、引言随着信息技术的发展和智能设备的普及,嵌入式系统以其小型化、高集成度的优势逐渐在各领域发挥重要作用。
ARM作为主要的嵌入式系统架构,其结合Linux操作系统的移动计算系统成为了研究热点。
本文将就基于ARM-Linux的嵌入式移动计算系统的相关技术进行探讨,并对系统的实现进行详细分析。
二、ARM-Linux嵌入式移动计算系统概述ARM-Linux嵌入式移动计算系统是以ARM架构为核心,结合Linux操作系统构建的移动计算平台。
该系统具有高集成度、低功耗、可扩展性强等特点,广泛应用于移动设备、智能家居、工业控制等领域。
三、关键技术研究(一)ARM架构研究ARM架构作为嵌入式系统的核心,其性能和功耗的平衡是关键。
通过对不同ARM内核的比较分析,本文选取了适用于移动计算系统的内核类型,以满足高效率和低功耗的需求。
(二)Linux操作系统研究Linux操作系统作为系统软件的基础,为硬件提供了丰富的接口和良好的兼容性。
本文对Linux内核进行了优化,以适应嵌入式系统的资源限制,提高系统的运行效率和稳定性。
(三)系统硬件设计研究系统硬件设计是实现嵌入式移动计算系统的关键。
本文对硬件设计进行了详细规划,包括处理器选择、内存分配、存储方案等,以确保系统的高效运行和稳定性。
四、系统实现(一)系统架构设计系统架构设计是系统实现的基础。
本文设计了一种基于ARM-Linux的嵌入式移动计算系统架构,包括硬件层、操作系统层和应用层。
硬件层负责与硬件设备进行交互,操作系统层负责管理硬件资源和提供系统服务,应用层则负责实现具体的应用功能。
(二)系统开发环境搭建为便于开发,本文搭建了基于ARM-Linux的嵌入式开发环境。
包括交叉编译环境的搭建、开发工具的安装等,为后续的系统开发提供了良好的支持。
(三)系统软件设计与实现在软件设计方面,本文对Linux内核进行了裁剪和优化,以适应嵌入式系统的资源限制。
课程设计名称:嵌入式系统综合课程设计课程设计题目:基于嵌入式linux计算器的实现目录第1章系统分析 (1)1.1需求分析 (1)1.2硬件分析 (1)1.2.1 实验环境 (1)1.3软件分析 (2)1.3.1 操作系统简介 (2)1.3.2 开发技术简介 (2)第2章系统设计 (4)2.1操作系统移植 (4)2.2系统模块设计 (4)2.3函数设计 (4)2.4关键流程 (5)2.4.1 系统主流程 (5)2.4.2 功能按键流程图 (5)第3章QT程序移植 (7)3.1建立交叉编译环境 (7)3.2Q T源文件的编译 (8)3.3Q T应用的移植 (8)第4章系统调试及运行 (9)4.1调试分析 (9)4.2结果分析 (10)参考文献 (11)附录 (12)第1章系统分析1.1 需求分析课程设计内容和要求:设计一个简单的计算器,能够进行加、减、乘、除等数学操作。
(1)利用嵌入式linux和Qt,在ARM9上实现。
(2)界面尽可能友好、美观。
这是一个简单的计算器软件,功能为加、减、乘、除等,在嵌入式设备上实现,使用方便,性能可靠,基于ARM内核的微处理器在市场上绝对处于领导地位,因此该类项目拥有庞大的市场。
1.2 硬件分析将编写好的程序Makefile后,通过Vivi烧入到博创UP-Star2410开发板上,开机运行即可。
1.2.1 实验环境实验环境是:win7下安装虚拟机,在虚拟机上安装linux(ubuntu11.10)开发板是:博创UP-Star6410,开发板。
软件资源:(1)内核版本linux 2.6.21(2)BootLoader:U-boot(3)文件系统:Cramfs+Yaffs2硬件资源:(1)基于ARM1176JZF-S内核的SAMSUNG S3C6410处理器(2)系统工作频率为533/667MHz(3)256MB Nand Flash、8MB NorFlash(4)256MB Mobile DDR RAM(5)可外接3.5寸液晶屏或7寸液晶屏、可外接触摸屏(6)1个主USB口、一个USB OTG口(7)100M以太网口、一个USB串口接口(8)JTAG接口(9)总线和可复用资源扩展接口、多媒体支持AUDIO CODEC(10)JOYSTICK按键,1个中断键,5个LED灯1.3 软件分析这次课设我们用的是Linux下的Ubuntu系统。
嵌入式实验报告:学号:学院:日期:实验一熟悉嵌入式系统开发环境一、实验目的熟悉Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。
使用Linux的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。
二、实验容本次实验使用Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。
创建一个新目录,并在其中编写hello.c 和Makefile 文件。
学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、实验设备及工具硬件::UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。
软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+AMR-LINUX 开发环境。
四、实验步骤1、建立工作目录[rootlocalhost root]# mkdir hello[rootlocalhost root]# cd hello2、编写程序源代码我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:[rootlocalhost hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令“:wq!”保存并退出。
这样我们便在当前目录下建立了一个名为hello.c的文件。
hello.c源程序:#include <stdio.h>int main() {char name[20];scanf(“%s”,name);printf(“hello %s”,name);return 0;}3、编写Makefile要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。
摘要随着后PC时代的到来,嵌入式系统技术已经成为了一个万众瞩目的焦点。
目前已广泛应用于信息家电、数据网络、工业控制、医疗卫生、航空航天等众多领域。
巨大的市场潜力,无穷的商机,吸引了各路英豪纷踵沓来。
硬件方面,各大电子厂商相继推出了自己的专用嵌入式芯片,漫天而至的是mp3,PDA,无线上网装置,让人们充分感受到了这股强劲之势;软件方面,在Vxworks、pSOS、Neculeus和Windows CE等嵌入式操作系统引领下,也出现了空前繁荣的局面,但这些专用操作系统都是商业化产品,其高昂的价格使许多面向低端产品的小公司望而却步,并且其源代码的封闭性也大大限制了开发者的积极性。
近两年在我国登陆并蓬勃发展的Linux,也已广泛应用于各类计算应用,不仅包括IBM的微型Linux腕表、手持设备(PDA和蜂窝电话)、因特网装置、客户机、防火墙、工业机器人和电话基础设施设备,甚至还包括了基于集群的超级计算机。
Linux在高端服务器的优越表现及其天生具有的突出特点,就注定它必将在低端嵌入式系统中再次给人们以惊喜,而基于嵌入式Linux操作系统的应用,必定给我们未来的工作和生活带来翻天覆地的变化。
本课程设计是以Red Hat Linux---VMware Workstation ACE版为基础平台,利用Fcntl函数实现多用户共享下给文件加文件锁,其中文件锁包括建议性锁和强制性锁。
目录一.嵌入式Linux简介 (3)二.嵌入式Linux开发平台简介 (3)三.嵌入式linux开发流程 (3)ⅰ建立开发环境 (3)ⅱ配置开发主机 (4)ⅲ建立引导装载程序BOOTLOADER (4)ⅳ下载别人已经移植好的LINUX操作系统 (4)ⅴ建立根文件系统 (4)ⅵ建立应用程序的flash磁盘分区 (4)ⅶ开发应用程序 (5)ⅷ烧写内核、根文件系统、应用程序 (5)四.课程设计目的和要求 (5)fcntl函数格式 (5)程序流程图: (6)五.VI简介与源程序 (7)六.Gcc编译器的安装过程 (11)七.程序运行 (13)八.心得体会 (14)九.参考文献 (15)八.评分表 (15)一.嵌入式Linux简介嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
嵌入式linux实验报告嵌入式Linux实验报告一、引言嵌入式系统是指嵌入在各种设备中的计算机系统,它通常包括硬件和软件两部分。
而Linux作为一种开源的操作系统,被广泛应用于嵌入式系统中。
本实验报告将介绍嵌入式Linux的相关实验内容和实验结果,以及对实验过程中遇到的问题的解决方法。
二、实验目的本次实验旨在通过搭建嵌入式Linux系统,了解Linux在嵌入式领域的应用,并掌握相关的配置和调试技巧。
具体目标如下:1. 理解嵌入式系统的基本概念和原理;2. 掌握Linux内核的编译和配置方法;3. 熟悉交叉编译环境的搭建和使用;4. 实现简单的应用程序开发和调试。
三、实验环境1. 硬件环境:嵌入式开发板、计算机;2. 软件环境:Ubuntu操作系统、交叉编译工具链、嵌入式Linux内核源码。
四、实验步骤与结果1. 内核编译与配置通过下载嵌入式Linux内核源码,使用交叉编译工具链进行编译和配置。
在编译过程中,需要根据实际需求选择合适的内核配置选项。
编译完成后,生成内核镜像文件。
2. 系统烧录与启动将生成的内核镜像文件烧录到嵌入式开发板中,并通过串口连接进行启动。
在启动过程中,可以观察到Linux内核的启动信息,并通过串口终端进行交互。
3. 应用程序开发与调试在嵌入式Linux系统中,可以通过交叉编译工具链进行应用程序的开发。
开发过程中,需要注意与目标平台的兼容性和调试方法。
通过调试工具,可以实时监测应用程序的运行状态和调试信息。
五、实验结果与分析在本次实验中,我们成功搭建了嵌入式Linux系统,并实现了简单的应用程序开发和调试。
通过观察实验结果,我们可以得出以下结论:1. 嵌入式Linux系统的搭建需要一定的配置和编译知识,但通过合理的配置选项和编译参数,可以实现系统的定制化;2. 应用程序的开发过程中,需要注意与目标平台的兼容性和调试方法,以确保程序的正确运行和调试的有效性;3. 嵌入式Linux系统的稳定性和性能受到硬件和软件的综合影响,需要进行系统级的优化和调试。
矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。
如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。
㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。
(2 列出开发利用方案编制所依据的主要基础性资料的名称。
如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。
对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。
二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。
2、国内近、远期的需求量及主要销向预测。
㈡产品价格分析
1、国内矿产品价格现状。
2、矿产品价格稳定性及变化趋势。
三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。
2、矿区矿产资源概况。
3、该设计与矿区总体开发的关系。
㈡该设计项目的资源概况
1、矿床地质及构造特征。
2、矿床开采技术条件及水文地质条件。