proteus自带uclinux的改造与扩展源代码
- 格式:doc
- 大小:523.50 KB
- 文档页数:5
arduino 用proteus仿真基础知识和实例-回复Arduino用Proteus仿真基础知识和实例Arduino是一款非常流行的开源电子原型平台,而Proteus则是一款功能强大的电子电路仿真软件。
结合二者可以实现Arduino电路的仿真和调试,为电路设计师和Arduino爱好者提供了极大的便利。
本文将一步一步详细介绍Arduino用Proteus仿真的基础知识和实例。
第一部分:Proteus仿真基础知识在开始之前,我们需要了解一些Proteus仿真的基础知识。
1. Proteus简介:Proteus是一款由Labcenter Electronics公司开发的集电子电路设计、仿真、PCB设计于一体的综合性软件。
2. Proteus版本:Proteus有两个主要版本,分别是Professional和Lite。
Professional版拥有更多高级功能,而Lite版则相对简化但仍然可以满足一般需求。
3. 库文件:Proteus中包含了大量的元件库,我们可以在其中找到Arduino相关的元件以进行仿真。
4. Arduino模拟器:Proteus还提供了一个Arduino模拟器,可以模拟运行Arduino代码,观察器件的实际工作效果。
了解这些基本概念后,我们可以开始进行Arduino在Proteus中的仿真实例。
第二部分:Arduino在Proteus中的仿真实例在这里,我们将以一个简单的LED闪烁的例子来介绍Arduino在Proteus 中的仿真。
实例一:LED闪烁材料准备:- Arduino开发板- 220欧姆电阻- 5mm LED- 连接线步骤一:绘制电路图1. 打开Proteus,选择Arduino UNO开发板并放置到绘图区域。
2. 从库文件中选择一个LED并放置到UNO开发板上。
再选择一个220欧姆电阻并将其连接到LED的长脚上,另一端连接到UNO开发板上的GND端口。
3. 连接UNO开发板的数字引脚13与LED的短脚。
uClinux-dist源码包目录分析许多初学的朋友在看到uClinux-dist目录下的内容觉得很烦杂,对编译过程也觉得很疑惑,这里以我的理解作一个简单的介绍,希望对初学者有所帮助,也希望高手指正。
uClinux-dist源代码包的目录如下所示:uClinux-dist可以生成内核和根文件系统,有三个源代码目录需要编译,linux-2.4.x是放内核源代码的目录,lib目录是放库文件的目录,user目录是生成rootfs所需要的文件。
Config目录是存放一些配置脚本,bin目录存放编译时所需要的可执行文件,tools目录存放一些工具和脚本,uClibc也是存放库文件的目录,vendors分为所有支持的CPU厂商目录下面会有,内核的配置文件和romfs所需要的文件。
比如要编译44B0,就会在vendors/Samsung/44B0下专门针对44b0这款cpu的配置文件。
在uClinux-dist目录下有的Makefile文件是总文件,当运行make lib_only时,会编译lib 目录,在lib目录下又有相应的目录,每个目录下也有自己的Makefile文件,这样就会根据配置编译不同目录下的文件,一般调用格式为make –C 目录名,这样就会调用目录下的Makefile文件。
最终编译每个源代码文件,.c或.s.下面举user目录下的Makefile的片段例子说明,dir_$(CONFIG_USER_ZEBRA_RIPD_RIPD) += zebradir_$(CONFIG_USER_ZEBRA_ZEBRA_ZEBRA) += zebradir_y += gamesall:for i in $(dir_y) ; do make -C $$i || exit $? ; doneromfs:for i in $(dir_y) ; do make -C $$i romfs || exit $? ; doneclean:-for i in $(dir_y) $(dir_n) $(dir_) ; do \[ ! -d $$i ] || make -C $$i clean; \done其中dir_$(CONFIG_USER_ZEBRA_RIPD_RIPD)的值可能是dir_yCONFIG_USER_ZEBRA_RIPD_RIPD值只可能是y或n,若设置了相应的变量,就会有相应的文件名加入dir_y的变量中,for i in $(dir_y) ; do make -C $$i,相应的文件就会被编译。
如何利用p r o t e u s来仿真e m u8086下编写的E X E程序如何利用proteus来仿真emu8086下编写的EXE程序1.安装proteus和emu8086,都采用默认安装方式2.打开proteus,在其中设置emu8086编译器1)打开“源代码”菜单中的“设定代码生成工具”弹出下面所示对话框2)选中上面所示对话框中左下角的“新建”按钮,然后打开c盘下emu8086文件夹,选中emu8086.exe。
3)按照下图所示,填写源程序扩展名为“ASM”目标代码扩“EXE”,命令行“%1”,然后点击确定。
2.使用emu8086,生成可执行文件1)打开emu8086,会出现下图所示,在其中选择NEW2)单击new按钮后会弹出如下所示对话框,选择empty workspace3)再出现的空白编辑区部分敲入代码如:实验二中给的EX2_1.ASM4)利用FILE菜单中的save as对源程序进行存盘,利用assembler菜单下并编译,注意文件名和路径,请注意生成的可执行文件EXE一定要和仿真电路图DSN在同一文件夹下。
5)如果编译时提示有错误,则修改反色部分,再重新编译,直至没有错误编译成功生成可执行EXE文件为止。
3.打开仿真电路图,设置仿真运行环境。
1)以EX2_1.DSN为例,双击电路图中U1:8086单元2)弹出如下图所示对话框3)双击第三行 program file 右侧打开按钮,选择同文件夹下EX2_1.EXE,其他参数如上图设置。
4)下面如下图所示,设置内部存储器的容量Internal Memory Size 为0x1f0h,(注:内部存储器的容量还可以加大,根据情况设置即可,但因为本实验中用得到了外部扩展存储器,所以注意不能超过4000H)又因为本程序中有INT 3;断点中断,故要设置断点Stop on int 3 YES4.以上都做完,即可仿真执行程序并调试了,并可观察结果。
组名U5G参赛编号A358文档编号DOC-2日期2007-1-26作者王志勇uCLinux操作系统开发文档一.uClinux操作系统简介在本设计中采用的STR 710处理器不带有MMU,故操作系统选用uClinux.uClinux, Micro-Control-Linux,即"针对微控制领域而设计的Linux系统"。
1.uClinux的内存管理对于uClinux来说,其设计针对没有MMU的处理器,即uClinux不能使用处理器的虚拟内存管理技术。
uClinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页。
在加载应用程序时程序分页加载。
但是由于没有MMU管理,所以实际上uClinux采用实存储器管理策略(real memeory management)。
这一点影响了系统工作的很多方面。
uClinux系统对于内存的访问是直接的,(它对地址的访问不需要经过MMU,而是直接送到地址线上输出),所有程序中访问的地址都是实际的物理地址。
操作系统对内存空间没有保护(这实际上是很多嵌入式系统的特点),各个进程实际上共享一个运行空间(没有独立的地址转换表)。
2.uClinux的内核加载方式uClinux的内核有两种可选的运行方式:可以在flash上直接运行,也可以加载到内存中运行。
这种做法可以减少内存需要。
Flash运行方式:把内核的可执行映象烧写到flash上,系统启动时从flash的某个地址开始逐句执行。
这种方法实际上是很多嵌入式系统采用的方法。
内核加载方式:把内核的压缩文件存放在flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快(ram的存取速率要比flash高)。
3.uClinux的根(root)文件系统uClinux系统采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少的空间。
空间的节约来自于两个方面,首先内核支持romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。
常用快捷键:Proteus的按键和菜单很多,下面只是介绍一些常用的不好找到的快捷键和菜单F5:重定位中心F8:全部显示当前工作区全部显示F6:放大以鼠标为中心放大F7:缩小以鼠标为中心缩小G:栅格开关栅格网格U:撤销键R:刷新Ctrl+M:元件翻转Ctrl+画线:可以划曲线数字键盘+-:旋转右键双击:删除System -> set sheet sizes 调整画布的大小常用芯片:下面是课程实验中可能会用到的器件,知道名字后可以直接到库里搜索。
8086 处理器74LS373 锁存器74LS245 数据缓冲74LS138 三八译码器62648Kx8 RAM8255A IO扩展ADC0809 8位AD转换器BUTTON 按键DIPSW 拨码开关7SEG 数码管LED_RED 发光二极管Switch 开关PULLUP 上拉电阻逻辑器件AND OR NOT XOR NAND NOR仿真注意事项和技巧:1.总线的画法: 左边有一个蓝色的BUSES MODE按钮,点了之后,先画出来,线尾以双击结束。
然后将你需要画的线都连到这个总线上。
点WIRE LABEL model,单击每根线,写入名称,名称相同的线表示连接在了一起。
2.画总线的单根线时,按住Ctrl可以画出折线,画完第一根后,此后双击要连接的芯片引脚可以自动重复上一次的连线轨迹。
3.8086芯片的设置,internal memory size 初始值为0,这样仿真会提示内存不足,设置为0x1000就可以了,要是程序比较大,此值可以调整。
4.没有仿真库的元件是不能仿真的,如果电路中有这样的原件,可以在设置中勾选exclude from simulation,把此元件在仿真中排除。
5.8086内部是没有存储空间的,为了仿真需要有部分地址是不可以接外设使用的,试验中大家尽量用最高的四位地址线参与译码,这样肯定是没有问题的。
软件的使用说到底很简单,大家把所有的按钮和菜单都点一遍,自己搭个小电路,应该就掌握得差不多了。
Proteus⼊门教程完整版Proteus ⼊门教程本⽂将简单介绍⼀下Proteus 的使⽤。
在这⾥,我⽤的Proteus 版本是Proteus 6.7 sp3 Professional 。
⼀、Proteus 6 Professional 界⾯简介安装完Proteus 后,运⾏ISIS 6 Professional ,会出现以下窗⼝界⾯:为了⽅便介绍,我分别对窗⼝内各部分进⾏中⽂说明(见上图) 。
下⾯简单介绍各部分的功能:1.原理图编辑窗⼝( The Editing Window ):顾名思义,它是⽤来绘制原理图的。
蓝⾊⽅框内为可编辑区,元件要放到它⾥⾯。
注意,这个窗⼝是没有滚动条的,你可⽤预览窗⼝来改变原理图的可视范围。
2.预览窗⼝( The Overview Window ):它可显⽰两个内容,⼀个是:当你在元件列表中选择⼀个元件时,它会显⽰该元件的预览图;另⼀个是,当你的⿏标焦点落在原理图编辑窗⼝时(即放置元件到原理图编辑窗⼝后或在原理图编辑窗⼝中点击⿏标后) ,它会显⽰整张原理图的缩略图,并会显⽰⼀个绿⾊的⽅框,绿⾊的⽅框⾥⾯的内容就是当前原理图窗⼝中显⽰的内容,因此,你可⽤⿏标在它上⾯点击来改变绿⾊的⽅框的位置,从⽽改变原理图的可视范围。
3.模型选择⼯具栏( Mode Selector Toolbar ):主要模型( Main Modes ):1* 选择元件( components)(默认选择的)2* 放置连接点3* 放置标签(⽤总线时会⽤到)4* 放置⽂本5* ⽤于绘制总线6* ⽤于放置⼦电路7* ⽤于即时编辑元件参数 (先单击该图标再单击要修改的元件)配件( Gadgets):1* 终端接⼝( terminals ):有VCC 、地、输出、输⼊等接⼝2* 器件引脚:⽤于绘制各种引脚3* 仿真图表( graph):⽤于各种分析,如Noise Analysis4* 录⾳机5* 信号发⽣器( generators)6* 电压探针:使⽤仿真图表时要⽤到7* 电流探针:使⽤仿真图表时要⽤到8* 虚拟仪表:有⽰波器等2D 图形( 2D Graphics ):1* 画各种直线2* 画各种⽅框3* 画各种圆4* 画各种圆弧5* 画各种多边形6* 画各种⽂本8* 画原点等4.元件列表( The Object Selector ):⽤于挑选元件( components)、终端接⼝( terminals)、信号发⽣器 ( generators )、仿真图表( graph )等。
Harbin Institute of Technology专业综合实践课程(论文)设计题目:Proteus V8的特殊调试与诊断功能的开发摘要—本文主要以Proteus8.0版本的功能及使用为基础,主要介绍工程的创建、编译器的配置、基本调试等一些基本问题,并探讨Proteus8.0的一些新特点新功能,最后与Proteus7.0做出对比得出结论。
关键词—Proteus8.0,Proteus7.0;1.简介Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
同时,Proteus还是一个巨大的教学资源,可以用于模拟电路与数字电路的教学实验、单片机与嵌入式系统的教学实验、微控制器系统的综合实验、创新实验与毕业设计等。
Proteus可以与广大学生相结合,打造成一个口袋实验室。
在Proteus家族里,Proteus8.0是目前较新的版本(最新的是8.1版),Proteus8.0版本的出现具有重要的意义,它也与其他版本有着很明显的不同,再此进行详细介绍Proteus8.0版本的使用过程。
2.使用过程2.1创建新工程假定此时已安装了Proteus8.0版本。
选择并点开Proteus8Professional,首先需要新建一个工程,由于本教程是与PCB绘制教程相关联的,所以此时的工程是一个带有原理图、PCB和源代码编译部分的工程。
点击File,如图,选择New Project,将出现新建工程向导部分,在此可以设置文件名(Name)和保存路径(Path)点击Next,在下一页的顶部选项卡中,选择“从选中的模板中创建原理图”(Create aSchematic from the selected template),在此可选择默认(DFAULT)。
向嵌入式平台移植软件的相关技术字节顺序大端:高字节数据存放在低地址处,低字节数据存放在高地址处;小端:低字节数据存放在低地址处,高字节数据存放在高地址处。
字节对齐Makefile中增加了编译参数- -pack – struct;增加组包函数和拆包函数。
其解决字节对齐的原理是,通过在发数据包处增加组包函数,使数据按CPU要求组织放在指定地址处,组成包发给下层,而后在收数据包处增加拆包函数,是收到的内存中的数据再按要求还原。
位段采用条件编译方式,针对不同的平台定义顺序不同的位段;也可在组包函数和拆包函数中加上位段处理。
代码优化1,提高代码执行效率,switch-case语句吧最可能发生的情况放在第一;使用全局变量比向函数传递参数更有效率。
减少了函数调用前参数入栈及函数完成后参数出栈的操作;2,尽可能的减小代码尺寸,并避免试用标准库例程;3,避免内存泄露。
Make文件中的内容Make文件包含五方面的内容:具体规则、隐含规则、变量定义、指令和注释。
具体规则例举了目标的依赖,可能同时提供了创建或更新该目标的命令。
隐含规则目标是由同名文件创建或更新,同时提供了创建更新该目标的命令。
变量定义定义变量占一独立行。
指令1,读其他make文件;2,根据变量值判定是否使用或忽略make文件的部分内容;3,定义多行变量,即定义变量值可以包含多行字符的变量;以“#”开始的行是注释行,在处理时被make忽略。
若注释行尾是“\”,则表示下一行继续问注释行。
除在define指令内部外,注释可以出现在make文件任何位置,甚至于命令内部(这里shell决定什么是注释内容)。
Make文件命名(P27)在标准名字make文件中,make按GNUmakefile、makefile、Makefile顺序寻找make 文件。
Make文件一般命名为“makefile”或“Makefile”。
若不存在,则不使用任何make文件。
在非标准名字Make文件中,使用“-f name”或“- - file=name”指定make文件。
二、使用Proteus 创建LPC2000 ARM “硬件”电路Proteus 软件是一个可以仿真处理器和外设的一个高性能的仿真软件,可以用它来设计“硬件”电路,并且在此硬件电路上运行软件,逼真的给出真正硬件运行时的现象。
点击WINDOWS 操作系统的“开始|程序|Proteus 7 Professional | ISIS 7 Professional ”启动Proteus 。
启动Proteus 如图1-14、图1-15所示:图1-14 启动Proteus图1-15 Proteus 界面 点击图标,添加元件,如下图1-16:弹出Pick Devices对话框,在Key Words栏中输入lpc进行快速查找器件,如下图1-17:图1-17 Pick Devices对话框点击Result栏中的LPC2103,点击OK(或者双击LPC2103,然后点击OK)将LPC2103添加到Proteus中,参照下图1-18:选中lpc2103并且在编辑区点击左键可以将lpc2103放置到编辑区,如下图1-19:图1-19添加电源和地,点击左边栏的按钮,分别点击POWER和GROUND,将它们也放入编辑区。
在这里图1-20按下图1-21进行连接:图1-21将连接到V18的电源label设置设置为VCORE,方法为:右击该电源,选择Edit Properties(编辑属性)在弹出的对话框中输入VCORE用同样的方法设置连接到V3的电源为V3.3,设置完成后,类似下图1-23:图1-23按照下图1-24配置电源:图1-24在弹出的对话框中点击new,见下图1-25:图1-25在Name栏输入VCC,并将V oltage设置为3.3,并且选择左侧的V3.3,点击add按钮添加到右侧栏中,如下图1-26:图1-26再用同样的方式添加一个1.8V的电源,见下图1-27:图1-27电源设置完毕。
在proteus的编辑区中,右击LPC2103芯片,选择Edit Properties,如下图1-28图1-28在弹出的窗口中Program file栏,找到KEIL软件编译生成的hello.hex文件,一般项目所在的路径下。
学习开发套件V3.0中嵌入Uclinux的步骤和方法在学习开发套件V3.0中嵌入Uclinux的步骤和方法,硬件系统为EP1C6,2Mflash,8Msdram.开发环境:SOPC学习开发套件V3.0,型号EP1C6。
QII5.1+SP2,NiosII IDE5.1+SP1。
一 .安装nios2linux开发包nios2linux-1.4二 .建立硬件系统1. QII中建一工程linux_nios,并添加NIOSII CPU,QII工程和平常的建立并没有什么区别,只要得加上flash和sdram,因为这里只是对linux的简单调试,所以SOPC中只添加LED和UART等几个简单外设。
如下图:注意为防止不必要的麻烦,这里尽量使用默认名字。
如果想用USB连接电脑,在QII中把串口连接到USB线的IO管脚上即可。
我们的工程中是两个口都接了,使用串口或者USB口都行。
三.建立软件环境打开NIOSII IDE3.1 建立linux内核file-> new-> project 后如下图:注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:1)、打开cmd,在 开始->运行 那里输入cmd2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:这是在New->Other那里你就可以看到那个linux的目录项了。
关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。
3.2 输入内核名字按next:finish完成四. 构建内核:4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:后进入如下界面:因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M。
Proteu s 的用法一、用Prote u s的步骤:1、建模板点File→New Design,新建模板并选择模板大小。
点File→Save Design,保存模板。
点Desig n→Edit Design Properties,,编辑模板的标题和作者等。
点Templ ate→Edit Design Defaul ts,编辑模板的背景颜色和栅格颜色。
点Templ ate→Set Graphi c s Styles,编辑线的颜色、总线颜色等颜色。
也可以编辑元件的颜色,如下图:点Templ ate→Set Text Styles,编辑文本的颜色,包括总线标号的颜色。
2、在库中选择所有要用的元器件。
3、画图。
4、点Tools→Global Annota tor可以对整个或局部的元件自动编号5、如何把当要把P rote u s中的图复制到wo rd中时,需要背景色和元件的颜色都是黑白色。
方法:点File→Export Graphi c s→Export Bitmap,在颜色选项中选中“Displa y”或“Mono”,然后点Fil ename按钮,选择输出路径,然后点OK,输出BMP格式的图片。
然后打开wo rd,点插入→图片→来自文件,就可以了。
注:如果在颜色选项中选中“Displa y”,则输出的图片,只背景色和元件的颜色是黑白的,其他的颜色不变;如果在颜色选项中选中“Mono”,则输出的图片中,所有的颜色都是黑白的。
6、如何隐藏元件的<TEXT>内容,如下图:方法:选择“Templa te→Set Design Defaul ts”在弹出的“EditDesign Defaul ts”窗口中左下角的“Hidden Object s”栏下,将“Showhiddentext?”右边的选择框里的钩去掉就OK啦!如下图:7、仿真注:总线的用法:①总线按钮后,开始画总线,画完总线后双击鼠标,就完成了画总线。
基于51单⽚机和DAC0832的信号源(proteus电路图加程序)班级学号⾃动测试实验报告学院机电⼯程学院专业测控技术与仪器导师姓名吕晓洲学⽣姓名学号摘要本⽂介绍了以8051和DAC0832为核⼼的信号源,可以通过按键选择正弦波、⽅波、三⾓波、锯齿波和梯形波,也可以通过按键选择798.6Hz、266.2Hz、88.7Hz、29.6Hz、9.85Hz、3.3Hz、1.1Hz共九档频率。
波形和频率通过软件改变,幅值通过硬件放⼤的放⼤器改变。
本信号源具有结构简单、功能丰富、使⽤⽅便另外价格实惠等特点。
【关键词】单⽚机,8051,DAC0832,信号源,频率,波形⼀.实验要求以及⽅案选择1.实验要求:设计⼀个信号源,能产⽣正弦波、三⾓波、锯齿波、⽅波等简单的波形,能够⽅便改变波形和频率。
2.⽅案选择:⽅案⼀:完全由硬件电路制作,使⽤传统的锁相频率合成⽅法。
通过芯⽚IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利⽤过零⽐较器转换成⽅波,积分电路转换成三⾓波。
此⽅案,电路复杂,⼲扰因素多,不易实现。
⽅案⼆:直接利⽤波形产⽣芯⽚,例如,利⽤MAX038芯⽚组成的电路输出波形。
MAX038是精密⾼频波形产⽣电路,能够产⽣准确的锯齿波、三⾓波、⽅波和正弦波四种周期性波形。
但此⽅案成本⾼,程序复杂度⾼。
⽅案三:通过单⽚机控制DAC,输出五种波形。
此⽅案输出的波形分辨率不够⾼,频率有限。
但此⽅案电路简单、成本低,波1.80C51单⽚机80C51单⽚机属于MCS-51系列单⽚机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、⽐较(CMP)、16位数据指针、布尔代数运算等指令,以及串⾏通信能⼒和5个中断源。
采⽤40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。
它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接⼝制作在⼀块集成电路芯⽚中,从⽽构成较为完整的计算机、⽽且其价格便宜。
Proteus安装和使用简介Proteus ISIS是英国Labcenter公司开发的电路分析及单片机系统设计与仿真软件。
它运行于Windows操作系统上,可以实现模拟电路、数字电路及多种微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计。
Proteus是目前唯一能对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原形时就可对系统进行调试、测试和验证。
Proteus软件大大提高了企业的产品开发效率,降低了开发风险。
由于Proteus软件逼真、真实的协同仿真功能,它不仅适合于作为电路基础、模拟电路、数字电路、高频电路、信号与系统等课程的辅助教学工具,也特别适合于作为配合单片机课堂教学和实验的学习工具。
Proteus软件提供了30多个元器件库、近万种元器件。
元器件涉及电阻、电容、二极管、三极管、变压器、继电器、各种放大器、各种激励源、各种微控制器、各种门电路和各种终端等。
Proteus软件中还提供有交直流电压表、电流表、示波器、信号发生器、定时器、计数器和逻辑分析仪等测试信号工具用于电路测试。
Proteus主要由两个设计平台组成:①ISIS(Intelligent Schematic InplJt System)——原理图设计与仿真平台,它用于电路原理图的设计以及交互式仿真;②ARES(Advanced Rotlting and Editing Soltware)——高级布线和编辑软件平台,它用于印制电路板的设计,并产生光绘输出文件。
不过,在我国的PCB制造业,很少有人用Proteus进行印制电路板的设计。
因此,这里不对Proteus的ARES功能进行介绍。
1.1 Proteus安装方法Proteus的版本很多,这里介绍的是Proteus7.1版本。
Proteus7.1是一款性能非常稳定的版本,特别适合于在校大学生作为学习电路基础、模拟电路、数字电路、高频电路、信号与系统和单片机等课程的辅助教学工具。
proteus自带uclinux的改造与扩展源代码
自己写的源代码供大家学习:这里要感谢bqtanterry网友提
供的proteus实例
http://www.protues.com.cn/forum.php?mod=viewthread&tid=2455
#include
#define com 0u
#define dat 1u
#define rs (1u<<0)
#define rw (1u<<1)
#define e (1u<<2)
#define addr 0x80000020u
unsigned char tab[]="I love ARM!";
unsigned char tbl[]="Fuck! I do!";
void delay(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write(unsigned char f,unsigned char input)
{
unsigned int tmp=addr;
*((volatile unsigned *)(tmp+=f))=input;delay(5);
*((volatile unsigned *)(tmp&=~(rw)))=input;delay(5);
*((volatile unsigned *)tmp)=input;delay(5);
*((volatile unsigned *)(tmp|=e))=input;delay(5);
*((volatile unsigned *)(tmp&=~e))=input;delay(5);
*((volatile unsigned *)(tmp|=rw))=input;
}
void init()
{
write(com,0x38);
write(com,0x0f);
write(com,0x06);
write(com,0x01);
}
int main()
{
int i;
init();
write(com,0x80+0x10);
for(i=0;i<11;i++)
{
write(dat,tab
);
delay(10);
}
write(com,0x80+0x40+0x12);
for(i=0;i<11;i++)
{
write(dat,tbl);
delay(10);
}
for(i=0;i<16;i++)
{
write(com,0x1c);
delay(220);
}
return 0;
}
编译:arm-elf-gcc -o lcd lcd.c -elf2flt
生成romfs镜像:./genromfs -d romfs/ -f romfs.img
再用H-Converter.exe转换成romfs.hex
上图可以看出A0是控制LCD_RS,A1控制LCD_RW,A2
控制LCD_E
这个是关于地址对lcd的控制逻辑图。U68的Q4有效时
ADDR_LCD才能使能,所以有A6A5A4A3=0b0100,即addr
=0x80000020地址使能lcd。