Proteus仿真EEPROM数据的写入
- 格式:doc
- 大小:13.00 KB
- 文档页数:2
目录第1章Proteus ISIS简介 (1)第2章Proteus ISIS编辑环境 (2)第3章Proteus ISIS原理图输入 (3)3.1 Proteus ISIS原理图输入的可视工具介绍 (3)3.2 在Proteus ISIS原理图编辑窗口查找元件 (4)3.3 放置元件 (9)3.4 连线 (14)3.4.1 无模式连线 (14)3.4.2 自动连线模式 (14)3.4.3 动态光标显示 (14)3.5 元件标签 (17)3.5.1 编辑元件标签 (17)3.5.2 移动元件标签 (18)3.6 器件标注 (18)3.6.1 属性分配工具(PAT) (19)3.6.2 全局标注器 (20)第4章Proteus ISIS 8086仿真 (21)4.1 在Proteus ISIS中输入电路原理图 (21)4.2 在Proteus中设置外部代码编译器 (22)4.3 添加源代码,选择编译器。
(24)4.4 仿真调试 (26)4.4.1 调试模式 (26)4.4.2 设置断点 (27)第1章Proteus ISIS简介Proteus是英国Labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路与集成电路。
软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。
Proteus 7主要由ISIS和ARES两部分组成,ISIS的主要功能是原理图设计及与电路原理图的交互仿真,ARES 主要用于印制电路板的设计。
本手册介绍如何利用Proteus ISIS输入电路原理图、利用外部编译器编译8086汇编程序并进行基于8086微处理器的VSM 仿真。
Proteus 7可以在以下操作系统中使用:注意,Proteus软件也可能能在Windows 98,NT, Millennuium等合法Windows 系统中使用,只不过Labcenter和Microsoft都已经不再对此提供技术支持服务。
eeprom读写程序详解EEPROM(Electrically Erasable Programmable Read-Only Memory) 是一种可编程只读存储器,可以在电信号的作用下进行擦写和改写。
它通常用于存储单片机或其他嵌入式系统中的数据、设置参数、配置文件等。
对于 EEPROM 的读写程序,需要考虑以下几个方面:1. 读操作:读操作通常包括以下步骤:- 等待上次读操作完成。
- 获取要读取的数据的单元地址。
- 将 EEPGD 位和 CFGS 位清零。
- 启动读操作控制位 RD。
- 等待本次读操作完成。
- 将该单元地址中对应的数据返回。
在读取 EEPROM 数据时,为了避免芯片在一瞬间无法获取到数据,需要给芯片一定的时间来稳定获取数据。
因此,在读取操作中需要加入等待步骤。
2. 写操作:写操作通常包括以下步骤:- 等待上次写操作完成。
- 获取要写的数据的单元地址。
- 将要写的数据写入 EEPROM 的单元中。
- 将 EEPGD 位和 CFGS 位清零。
- 启动写操作控制位 WP。
- 等待写操作完成。
在写操作中,为了确保数据的可靠性,需要将要写的数据写入EEPROM 的单元中,并等待写操作完成。
同时,在写操作过程中,需要注意避免对无关的单元进行写操作,以免损坏 EEPROM 芯片。
3. 中断处理:在 EEPROM 的读写操作中,通常需要加入中断处理机制,以便在读写过程中及时响应和处理异常情况。
例如,在读取 EEPROM 数据时,如果 EEPROM 芯片出现故障,可能会导致读取失败。
为了避免这种情况,可以在读取操作中加入中断处理机制,在读取失败时及时报警或采取相应的应对措施。
总之,EEPROM 读写程序的实现需要考虑多个方面的因素,包括读操作、写操作、中断处理等。
同时,需要考虑 EEPROM 芯片的特性和限制,以便实现高效、稳定、可靠的 EEPROM 读写操作。
2Proteus 仿真I 2 C 存储器实验、实验目的1、了解I2C 总线的工作原理2、掌握I2C 总线驱动程序的设计和调试方法3、掌握I2C 总线存储器的读写方法、实验说明1、I2C 总线常识I2C 总线上的每个器件均由一个存储于该器件中的唯一地址来识别,并可被用作一个发送器或接收器(视其功能而定)。
AT24C02 是一个2K 位串行EEPROM ,内部含有256 个8 位字节,AT24C02 有一个8 字节页写缓冲器,该器件通过I2C 总线接口进行操作。
引脚名称和功能如图1 所示图1 24 系例I2C 存储器引脚说明通过器件地址输入端A0 、A1 和A2 可以实现将最多8 个24C02 器件连接到总线上。
2、I2C 总线协议(1)只有在总线空闲时才允许启动数据传送。
(2)在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变。
时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止-可编辑修改-信号。
(3)起始信号,时钟线保持高电平期间,数据线电平从高到低的跳变作为I2 C 总线的起始信号。
2 (4)停止信号,时钟线保持高电平期间,数据线电平从低到高的跳变作为I 2 C 总线的停止信号。
2I2 C 总线时序:3、页写操作的数据帧结构根据页缓冲区的大小,页写的字节数不能超过缓冲区大小。
如果在发送停止信号之前主器件发送超过缓冲区大小,地址计数器将自动翻转,先前写入的数据被覆盖。
如图2所示。
图2 页写操作数据帧结构三、实验内容2先搭建一个“I 2 C 存储器实验”的仿真电路,该单片机系统功能是采用页写的方式,把器件地址为A0H 的24C02 器件的片内50H 地址开始的8 个存储单元分别写入数据“00 、11 、22 、、、、、、77 ”。
四、.参考硬件电路-可编辑修改-五、参考汇编程序SDA EQU P3.5 ;定义24c02 的串行数据线SCL EQU P3.4 ;定义24c02 的串行时钟线SNUM EQU 40HSLAW EQU 41HORG 0000HAJMP MAINORG 0040HMAIN:MOV SP ,#5FHLCALL LDATA的器件地址MOV SLAW,#0A0H ;24c02;要发送9 个字节数据MOV SNUM,#9MOV R1,#30H ;数据缓冲区的首地址CALL WRNB ;调用发送n 个字节的子程序SJMP $-可编辑修改-LDATA:MOV R0,#30H ;片内ram 的地址:30H 31H 32H 33H 34H 35H ⋯..50H 00H 11H 22H 33H 44H MOV @R0,#50H ;存放的数据:INC R0MOV @R0,#00HINC R0MOV @R0,#11HINC R0MOV @R0,#22HINC R0MOV @R0,#33HINC R0MOV @R0,#44HINC R0MOV @R0,#55HINC R0MOV @R0,#66HINC R0MOV @R0,#77HRET;起始信号STA:SETB SDASETB SCLNOP-可编辑修改-CLR SDANOPNOPCLR SCLRET;终止信号STP:CLR SDASETB SCLNOPNOPSETB SDANOPNOPCLR SDACLR SCLRET;发应答位"0"ASK:CLR SDASETB SCLNOPNOPCLR SCL-可编辑修改-SETB SDA;发非应答位"1"NAS:SETB SDASETB SCLNOPNOPCLR SCLCLR SDARET;应答位检查,正常应答时F0 标志为0, 否则F0 为1 ASKC:SETB SDASETB SCLCLR F0MOV C,SDAJNC CEND ;应答位为1, 不置位F0SETB F0CEND: CLR SCLRET;发送到24c02 一个字节,预发送的数据存于A 中WRB: MOV R0,#08H-可编辑修改-LOOP0:RLC AMOV SDA,CNOPNOPSETB SCLNOPNOPNOPNOPCLR SCLDJNZ R0,LOOP0RET;* 函数名称:WRNB;*功能描述:对E2PROM 指定的页写入SNUM 个字节的数据;* 调用函数:STA WRB ASKC STP;* 入口条件:SLAW--I2C 器件写地址;* R1- 片内RAM 发送数据缓冲区的首地址WRNB:LCALL STAMOV A,SLAWLCALL WRB ;写器件的写地址-可编辑修改-MOV A,@R1 LCALL WRB LCALL ASKCINC R1DJNZ SNUM, WLP LCALL STP RET END六、思考练习题1、请说说 I 2C 总线的优点有哪些?2、编写程序,将自己学号写入 24C02 地址为 30H 开始的存储单元3、编写程序,将写入 24C02 的数据读出。
PROTEUS仿真教程第一步:安装PROTEUS软件第二步:创建新项目在PROTEUS软件中,您可以创建新项目来开始您的电路仿真工作。
点击菜单栏中的“File”选项,选择“New Project”来创建一个新项目。
然后输入项目的名称并选择保存路径。
第三步:添加元件在PROTEUS软件中,您可以通过“Library”选项来选择各种电子元件,包括电阻、电容、电压源等。
点击“Library”选项,选择您需要的元件并将其拖动到工作区中。
连接元件之间的引脚以搭建电路。
第四步:设置仿真参数在搭建完电路后,您需要设置仿真参数。
点击菜单栏中的“Graph”选项,选择“Set Simulator Parameters”来设置仿真参数,包括仿真时间、步长等。
您还可以设置输出波形的显示格式和范围。
第五步:运行仿真设置好仿真参数后,点击菜单栏中的“Simulate”选项,选择“Run”来运行仿真。
PROTEUS将模拟您搭建的电路,并显示仿真结果。
您可以查看电压、电流等参数,并分析电路的工作情况。
第六步:调试电路在仿真过程中,您可能会发现电路存在问题,比如输出波形不符合预期,电流过大等。
您可以通过调试电路来解决这些问题。
尝试更改元件参数、连接方式等,并重新运行仿真来检查效果。
第七步:保存和导出仿真结果在完成仿真后,您可以保存仿真结果并导出到其他格式。
点击菜单栏中的“File”选项,选择“Save As”来保存仿真文件。
您还可以导出波形图、数据表等结果,以便后续分析和报告。
总结:本教程介绍了PROTEUS的基本功能和使用方法,帮助您快速上手该软件进行电路仿真工作。
通过创建新项目、添加元件、设置仿真参数、运行仿真、调试电路和保存结果,您可以轻松完成电路仿真工作。
希望本教程对您有所帮助,祝您在PROTEUS软件中取得成功!。
简单实例助你快速掌握PROTEUS的用法为了更快掌握PROTEUS设计与仿真操作,我们先从一简单实例入手带你入门。
让我们首先来熟悉一下仿真软件的主界面:图1-1 仿真软件的主界面运行protues的ISIS模块,进入仿真软件的主界面,如图1-1所示,区域①为菜单及工具栏,区域②为元器件预览区,区域③为对象选择器窗口,区域④为编辑窗口,区域⑤为绘图工具栏,区域⑥为元器件调整工具栏,区域⑦为运行工具条。
Proteus是一种集单片机仿真和SPICE分析于一身的仿真软件。
其功能非常强大,不仅能仿真模拟电路、数字电路以及模拟数字混合电路,更重要的是可以仿真51系列、AVR、PIC等常用主流单片机。
Protues提供了丰富的资源:(1)Proteus拥有的元器件资源:Proteus可提供30多种元件库,超过8000种模拟、数字元器件。
(2)Proteus可提供的仿真仪表资源:仿真仪器仪表的数量、类型和质量是衡量仿真实验室是否合格的一个关键因素。
Proteus可提供常用的示波器(本文的实例中示波器被用来观察产生的波形)、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
以下简要罗列了proteus中常用元器件和仿真仪表中英文对照表:7407 驱动门1N914 二极管74Ls00 与非门74LS04 非门74LS08 与门74LS390 TTL 双十进制计数器7SEG 4针BCD-LED 输出从0-9 对应于4根线的BCD码7SEG 3-8译码器电路BCD-7SEG转换电路AND 与门BATTERY 电池/电池组BUS 总线CAP 电容if(P0_0==0){P1_0=0;}else P1_1=0;CAPACITOR 电容器CLOCK 时钟信号源CRYSTAL 晶振FUSE 保险丝GROUND 地LAMP 灯LED-RED 红色发光二极管void int0_isr(void) interrupt 0{ P1=1;}void int1_isr(void) interrupt 2{ P1=1;}LM016L 2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。
eeprom的写入时序EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,它可以被多次擦除和写入。
EEPROM的写入时序是指在进行数据写入时所需的操作步骤和时间顺序。
下面是关于EEPROM写入时序的文章:EEPROM的写入时序是指在对EEPROM进行数据写入时所需的操作步骤和时间顺序。
EEPROM是一种非易失性存储器,它可以被多次擦除和写入,因此在实际应用中,对EEPROM进行数据写入是非常常见的操作。
在进行EEPROM写入时,首先需要确定要写入的数据,然后将数据发送给EEPROM,接着进行写入操作。
在进行写入操作时,需要遵循一定的时序要求,以确保数据能够正确地被写入并保持稳定。
通常,EEPROM的写入时序包括以下几个步骤:1. 发送写入命令,首先需要向EEPROM发送写入命令,以告知EEPROM即将进行数据写入操作。
2. 发送地址,接着需要发送要写入数据的地址,以指定数据写入的位置。
3. 发送数据,一旦地址确定,就可以发送要写入的数据。
4. 写入确认,在数据发送完成后,需要发送写入确认命令,以告知EEPROM可以开始写入数据。
5. 写入时间,EEPROM需要一定的时间来完成数据写入操作,这个时间通常是毫秒级别的。
6. 写入完成确认,最后,需要发送写入完成确认命令,以告知系统数据写入已经完成。
在进行EEPROM写入时,以上步骤需要严格遵循,以确保数据能够正确地被写入并保持稳定。
同时,EEPROM的写入时序也受到EEPROM型号和制造商的影响,因此在实际应用中,需要根据具体的EEPROM型号和规格来确定相应的写入时序。
总之,EEPROM的写入时序是进行数据写入时所需的操作步骤和时间顺序,严格遵循写入时序是确保数据写入正确和稳定的关键。
对于工程师和开发人员来说,了解并掌握EEPROM的写入时序是非常重要的,可以帮助他们更好地进行EEPROM的数据写入操作。
今天做的是一个往EEPROM写入数据的项目。
项目没有什么实际意义,主要是练习一下学习的关于写EEPROM的知识。
项目的构思如下,向单片机的EEPROM中写入数据,00单元写入数据00,01单元写入数据01,FF单元写入数据FF,即任意一个EEPROM单元都根据其地址来写入相应的数据。
项目源程序十分简单,但需要注意EEPROM写入数据的操作步骤。
源程序如下:在MPLAB中编辑好源程序以后,编译生成相应的源代码,然后我们在Proteus中绘制本例的电路图。
本例电路图更为简单,因为我们使用的都是单片机内部资源,所以只需将一片PIC16F877放入电路图中就可以了。
电路图如下所示:绘制好电路图以后,我们就可以将前面生成的源代码装入单片机来进行仿真了。
此例其他方面都比较简单,最关键的在于仿真时的操作。
可以看到,当你点击仿真按钮的时候,系统并没有任何反映,我们根本看不到仿真效果。
这时你可以点击主菜单中的Debug菜单下的“PIC CPU EPROM Memory - U1”,如下图:此时系统将弹出相应的“EEPROM”窗口,在这个窗口中,你就可以看到EEPROM中的内容,看看仿真是否成功,其中的数据是否已经按照我们的要求变成了相应的内容。
如下图所示:当然,你也可以在仿真中使用Proteus的单步功能,你一步一步地点击单步按钮,可以看到,EEPROM中的内容一步一步地在变动。
如下图的两个图形所示:而且,从上图你还能看到,每点击一次单步按钮,EEPROM大约写入5个数据。
当然,如果你修改一下相应的时钟频率,每次写入的数据量可能会有改变。
本项目的内容简单,但需要掌握以下几个方面的内容:1.EEPROM数据写入的步骤。
2.Proteus中仿真单片机内部的RAM、EEPROM、FLASH等的操作。
实验二 Proteus仿真软件的使用,流水灯程序,数码管操作实验二 Proteus仿真软件的使用一、实验目的掌握Proteus仿真软件的使用方法和技巧。
二、实验仪器与设备1. 微机一台2. Proteus仿真软件三、实验内容1.用数码管设计一数码管显示电路。
利用P1和P2口分别控制两个共阳极数码管,可循环显示0~99,每个数字显示时间自行设计。
2编写程序在其中一个数码管上画“8”字形,即按照a-f-g-c-d-e-g-b依次点亮各线段然后全部熄灭,重复以上操作。
另外一个数码管做单管流水,即按a-f-g-c-d-e-g-b-a 依次单管循环点亮。
四、实验原理LED数码显示器内部有7个条形放光二极管和一个小圆点发光二极管组成,每个发光二极管称为一个字段,其控制原理和发光二极管的控制原理相同。
五、实验步骤1. 参考教材设计一双数码管控制显示电路,熟悉Proteus的使用方法。
2. 编程循环显示0~99.3. 编程在数码管画“8”。
六、实验报告见附表1、实验电路图2、附:实验程序 /*********************************** 实验二程序1 编写:日期:功能:用12MHz晶振,P1口P2口分别显示数字的个位十位,数字每隔大约500ms加 1一次,从0~99循环显示 ***********************************/#include char codetab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; voidDelay_ms(int); void main() { int ge=0,shi=0; while(1) { P1=tab[ge];P2=tab[shi]; Delay_ms(500); //500ms ge++; if(ge==10) { shi++; ge=0; if(shi==10) shi=0; } } } void Delay_ms(t) { int i; for(;t>0;t--)for(i=0;i<124;i++); } /********************************** 实验二程序2 编写:日期:功能:用12MHz晶振,P1口做写“8”字的单管流水, P2口画“8”字依次点亮数码管,数码管每隔大约500ms画一笔,重复此过程。
基于Proteus的IIC器件AT24C1024的应用作者:袁易君来源:《中国新技术新产品》2008年第24期摘要:本文采用软件仿真平台Proteus介绍了AT24C1024 EEPROM的使用及其特点,以及在具有DS1302时钟芯片、DS18b20温度传感器的具体应用系统中的使用,本系统对每隔一段时间的温度进行了存储。
关键词:Proteus;EEPROM;DS18b20;温度传感器电可擦除可编程EEPROM 在应用系统中既可由软件对其内容进行随机读写,又可在芯片断电的情况下长时间保存信息, 因此兼备了RAM 和ROM 的特点。
EEPROM 有串行和并行两大类,并行EEPROM 存储容量较大,读写方法简单,但价格较高,适用于信息量较多的场合。
串行EEPROM结构简单紧凑,价格低廉,但其读写方法复杂,存储单元较小,一般用于掉电情况下需要保存或一些数据需要在线修改的场合,这类数据不多却很重要,若使用常规的RAM芯片,就必须附带一套性能可靠的掉电保护系统,这不仅增加了线路设计的复杂性,同时也给设备的运行和维护带来了诸多不便。
同时Proteus软件是一款单片机软硬件设计仿真平台,能实时仿真多种单片机芯片,如51单片机系列、AVR单片机系列、PIC单片机系列及Arm单片机系列等,可减少学习单片机的成本,又可达到良好的学习效果。
124C系列串行EEPROM介绍24C系列串行EEPROM除具有一般串行EEPROM 的体积小、功耗低、工作电压允许范围宽等特点外,还具有型号多、容量大、二总线协议、占用I/ O 口线少、容量扩展配置极其灵活方便、读写操作相对简单等特点。
本系统中使用的是24C1024(1024kb) ,生产工艺是CMOS 工艺,工作电压在1.8~5.5V 之间,24C系列有两种封装形式:8 脚封装和14 脚封装。
我国目前开发用量最多的封装形式是8脚PDIP 封装,8 脚PDIP封装中A0 、A1 、A2 为器件地址选择位,这3 个引脚配置成不同的编码值,在同一串行总线上最多可扩展8 片同一容量或不同容量的24C 系列串行EEPROM 芯片。
摘要基于Proteus软件的单片机自动取款机(ATM)仿真系统设计,硬件电路需要单片机开发板和12864液晶显示器,能够实现自动取款的全部功能。
通过在在计算机上用C语言编程来将生成文件下载到单片机控制其它外围器件工作。
但是在EDA新技术的引入使得系统的开发成本降低而且灵活性增强,在Proteus软件中都可以找到上述硬件元件,通过电路图连接完全可以实现仿真功能。
在Keil软件环境下通过C语言编程,编译调试后生成单片机下载的HEX(十六进制)文件,硬件电路图是在Proteus 软件中进行建模。
通过Proteus和Keil结合建立的虚拟系统实现联合仿真,单片机实时控制12864LCD实现汉字的显示,扫描键盘从而达到用户与ATM的信息交换,使得ATM系统设计变为现实。
ATM系统,是一个有数据库组成的应用系统。
用户的初始信息通过E2PROM存放,这样免去了掉电丢失数据的弊端。
系统功能有用户在ATM上提取现金、查询账户余额、修改密码、账户冻结、密码保护、自动存款及转账功能。
可以仿真实现最基本的银行服务。
关键词:ATM;51单片机;Proteus;Keil;12864LCD;E2PROM;虚拟仿真AbstractAutomatic Teller Machine system is based on Proteus 51-microcontroller.Hardware circuit includes microcontroller developer board and 12864LCD display. All features of ATM can be well worked on it. Programming on PC then download created file to 51-microcontroller to control outer circuit. However, with the introduction of EDA, new technology, which lower the cost of system exploration and enhance flexibility. Programing with C language, compiling and debugging under the environment of Keil software,creating a HEX file which will be downloaded by microcontroller later. Hardware schematic diagrams are established with Proteus software. According to the combination of Proteus and Keil , making a virtual system , successfully achieve united simulation. Microcontroller controls 12864LCD to display Chinese words, scans keyboard to exchange information between customer and ATM, which makes virtual ATM system becoming reality.ATM system includes databases, which are used for the storage of customers’ initial information, leading to emerge from the disadvantage of data lost when power cuts. The functions of ATM are as follows: withdraw cash, search client and remaining modify password, client freezed, password protection, automatic deposit and transfer client. This system simulates to realize the bank’s fundamental services.Keywords:ATM;51microcontroller;Proteus;Keil;12864LCD;E2PROM;virtual simulation目录引言 (1)第一章 Proteus软件的单片机ATM系统 (3)1.1 Proteus软件的ATM概述 (3)1.2 Proteus软件的ATM安全性分析 (3)1.3 Proteus软件的ATM稳定性分析 (3)1.4 Proteus软件的ATM主要功能分析 (3)第二章 Proteus软件仿真的硬件系统设计 (5)2.1 MCS-51系列单片机 (5)2.1.1 AT89C51单片机 (5)2.1.2 单片机应用系统硬件设计 (5)2.2 串行传输 (5)2.3 I2C串行总线 (6)2.4 E2PROM (8)2.5 12864液晶显示模块 (10)2.5.1引脚功能 (10)2.5.2 12864DDRAM存储器 (10)2.5.3 显示控制控制方法 (11)2.6 蜂鸣器 (12)2.7 键盘 (12)2.7.1 键的识别 (12)2.7.2 键盘扫描流程图 (13)2.8 ATM硬件原理图 (13)第三章 Proteus单片机仿真软件系统设计 (15)3.1 C-51简介 (15)3.1.1 C-51具有特点 (15)3.1.2 C-51具有优点 (15)3.1.3 C-51独特地方 (15)3.2 ATM自动取款机系统流程 (16)3.3 程序介绍 (16)3.4 PCtoLCD2002扫描软件 (17)3.5 Proteus软件 (19)3.5.1 Proteus概述 (19)3.5.2 Proteus具有特点 (19)3.5.3虚拟工具箱 (20)3.6 Keil软件 (21)3.6.1概述 (21)3.6.2创建工程 (22)第四章 Proteus软件仿真结果 (23)第五章结论 (25)参考文献 (26)附录 (27)谢辞 (34)引言随着大规模集成电路的发展,组成微型计算机的各个功能部件:中央处理器、RAM、ROM、EPROM、并行串行输入输出I/O接口电路、定时器/计数器集、中断控制等部件成到一块半导体芯片上,构成一个完整的微型计算机[8]。
实验1 PROTUES环境及LED闪烁实验1.实验任务做一个闪烁灯:在P1.0端口上接一个发光二极管D1,使D1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒,重复循环。
2.电路原理图3.程序设计内容(1)延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大多是微秒级。
实验要求的闪烁时间间隔为0.2秒,所以在执行某一指令时,需要插入延时程序,来达到实验的要求。
延时子程序如下:DELAY: MOV R5, #20D1: MOV R6, #20D2: MOV R7, #248DJNZ R7, $DJNZ R6, D2DJNZ R5, D1RET(2)输出控制如上图所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
实验2 外部中断实验1.实验任务设计一个交通灯正常工作程序,并在有意外情况发生的情况下,能自动中断进入到中断服务程序运行,进行紧急事故处理,处理完成后能回到正常工作程序继续运行。
如原理图所示,P1接一位数码管用于显示时间,P2端口接东西方向和南北方向红绿灯,P3.2接一个按钮用于模拟一个外部中断源,当正常工作时,东西方向绿灯亮8秒,然后南北方向绿灯亮9秒;当模拟中断源发出中断信号时,东西和南北红灯亮5秒后返回正常工作程序。
(注:这里数码管选用了共阳极的数码管)数码管的段选码如下表所示:2.电路原理图3.程序设计内容(1)从proteus库中选取元器件:单片机AT89C51、磁片电容CAP、电解电容CAP-ELEC,晶振CRYSTAL、电阻RES、数码管7SEG-COM-CAT-GRN,按钮BUTTON,发光二极管等。
(2)设计延时程序。
实验3 T0波形发生器实验1.实验任务(1)首先用AT89C51单片机定时器/计数器0的定时功能构成一方波发生器,实现周期为400us的方波输出,如图所示,P3.5,p3.7是两个波形输出端,分别输出反相波形,两路波形输入虚拟示波器的A通道和B通道,用示波器观察方波的周期是否是400us。
单片机EEPROM读写数据流程解析EEPROM 写数据流程第一步,首先是I2C 的起始信号,接着跟上首字节,也就是我们前边讲的I2C 的器件地址,并且在读写方向上选择“写”操作。
第二步,发送数据的存储地址。
24C02 一共256 个字节的存储空间,地址从0x00~0xFF,我们想把数据存储在哪个位置,此刻写的就是哪个地址。
第三步,发送要存储的数据第一个字节、第二个字节??注意在写数据的过程中,EEPROM 每个字节都会回应一个“应答位0”,来告诉我们写EEPROM 数据成功,如果没有回应答位,说明写入不成功。
在写数据的过程中,每成功写入一个字节,EEPROM 存储空间的地址就会自动加1,当加到0xFF 后,再写一个字节,地址会溢出又变成了0x00。
EEPROM 读数据流程第一步,首先是I2C 的起始信号,接着跟上首字节,也就是我们前边讲的I2C 的器件地址,并且在读写方向上选择“写”操作。
这个地方可能有同学会诧异,我们明明是读数据为何方向也要选“写”呢?刚才说过了,24C02 一共有256 个地址,我们选择写操作,是为了把所要读的数据的存储地址先写进去,告诉EEPROM 我们要读取哪个地址的数据。
这就如同我们打电话,先拨总机号码(EEPROM 器件地址),而后还要继续拨分机号码(数据地址),而拨分机号码这个动作,主机仍然是发送方,方向依然是“写”。
第二步,发送要读取的数据的地址,注意是地址而非存在EEPROM 中的数据,通知EEPROM 我要哪个分机的信息。
第三步,重新发送I2C 起始信号和器件地址,并且在方向位选择“读”操作。
这三步当中,每一个字节实际上都是在“写”,所以每一个字节EEPROM 都会回应一个“应答位0”。
第四步,读取从器件发回的数据,读一个字节,如果还想继续读下一个字节,就发送一个“应答位ACK(0)”,如果不想读了,告诉EEPROM,我不想要数据了,别再发数据了,那就发送一个“非应答位NAK(1)”。
学习之6---看门狗定时器(WDT)//PIC.H中定义了宏#define CLRWDT() asm("clrwdt")因此在PICC的c语言中可以直接使用CLRWDT()对WDT清0//若单片机WDT使能,在适当位置加入CLRWDT(),程序进入正常运行时,每隔一定时间均会执行CLRWDT()语句对WDT清0,芯片不会复位//如果程序陷入死循环,不会执行到CLRWDT()语句,则超出所设定的时间后,WDT溢出使芯片复位,从头(000H)开始执行,单片机恢复正常运行//PIC16F单片机,看门狗定时器的启用只能在芯片的烧写时确定,即无法用软件来开启或关闭WDT,但在PIC16f88X中可以。
//PIC16单片机的WDT基本溢出时间为18MS,由RC充放电时间确定,在-40~85度之间变化时,WDT基本溢出时间在7-33ms变化#include<pic.h>__CONFIG(0X3F3D);//开启WTDvoid DELAY(unsigned int);#define LED1 RB1main(void){TRISB=0B11111101;OPTION=0B11111011; //WDT的分频比为1:8,最大复位时间为18*8=144msif(TO==0)// 若写成T0,则编译出错。
{LED1=1; //看门狗定时器溢出,仿真时溢出TO不会清零}elseLED1=0;while(1){DELAY(100);//模拟一个运行100ms的子程序CLRWDT();DELAY(200);//模拟一个运行200ms的子程序,此时会产生溢出(200ms>144ms)CLRWDT();};}void DELAY(unsigned int n){unsigned int j;char k;for(j=0;j<n;j++)for(k=246;k>0;k--)NOP();}学习之7--EEPROM的读写EEPROM特点:掉电时保持不变,F877A的EEPROM参数是保证1 000 000次擦除,数据保存>40年PICC中定义了读/写EEPROM的宏EERPOM_WRITE(addr,value); EEPROM_READ(addr);//PICC中系统已经为我们定义了读/写EEPROM的宏//宏EEPROM_WRITE写入EEPROM,只是启动写入过程,写完要几MS,当读/写EEPROM 时,程序会自动检测是否还在写,若是,则等待//C程序编写不涉及EECON1,EECON2#include<pic.h>__CONFIG(0X3F39);__EEPROM_DATA(89,34,48,210,53,192,7,57);//初始化EEPROM,分别写入单元0~7main(void){char aa;aa=EEPROM_READ(3);//读EEPROM单元3的内容EEPROM_WRITE(9,0X9A);//将0X9A写入EERPOM的单元9aa=EEPROM_READ(9);//读EEPROM单元9的内容while(1);}。
仿真软件proteus常见操作基础教程出处:本站整理作者:佚名人气:1556次评论: 0 | 我要发表看法1.proteus中怎样使用模板file--〉new design:在弹出的对话框就可以选择模板了file--〉save d esign as template…就可以保存你的模版了打开或制作一个自己常用的电路另存为模板,即:save as template 替换默认文件夹里的TemplatesDefault.DTF。
以后这就是你的模板啦3.第三方软件是如何用?把你的第三方库安装好,然后启动proteus,选择菜单system-->set path,分别增加model和library.4. 电源和地的运用总结1.在proteus防真画图过程中有正电源(VDD/VCC)负电源(VEE)地(VSS)引脚的元器件(好象这些元器件的这些脚没有在图中显示)软件会自动把其电源底脚定义为相应的电压所以在这些元器件上的电源地脚上不接电源地也是正确的(单片机也不用接晶振在设置选项中输入晶振的频率即可。
2.如果要用到确定的直流电压就可以用工具栏(默认是第八个)中的POWER和GROUND 象放置元器件一样来放置电源和地电源的默认值是+5V 地默认为0V 如果需要10V的电压则可在电源的设置选项卡的string里输入+10V 就可以了不过要注意前面的“+”号一定要加上否则不能防真。
电压默认的单位为V 就是说输入+10 电压也是+10V,我试了一下输入+10mV和输入+10MV 其电压是一样的都是10的7次方, 虽然地的默认值是0V 但如果象设置POWER一样在其string选项里写入电压值其电压就是你设置的大小而不是0V 了也就是说地也可以做电源用, 对于负电源负号大家都会加上的就不说了.5.电流探针(probe)电压探针(probe)表运用总结首先,在实际生活中中测电压电流,电压电流表都有两个端子,而在探针中,只有一个端子, 电压表是并入的电压探针一端接入要测的那点(可以引出线。
计算机仿真辅助单片机指令系统学习计算机仿真对单片机指令系统的学习的帮助主要在于帮助理解,加强记忆,适当应用。
能够在单片机指令系统学习中的软件主要是MedWin,因为其操作简单,而且可以直观地看到结果。
1.数据传送指令:数据传送类指令主要包括:MOV、MOVX、MOVC、PUSH、POP、XCH等。
下面我们通过一个简单的汇编程序来学习这些指令。
例1.汇编语言源文件如下图所示:在MedWin中编辑好源文件以后,以“.asm”为后缀保存为汇编源文件。
然后进行编译、汇编并将代码装入内存进行仿真。
由于本程序对寄存器、特殊功能寄存器、内部存储器、外部数据存储器都进行了操作,所以需要首先点击“查看”菜单下的相应子菜单打开相应的窗口,即寄存器、特殊功能寄存器、数据区IData、数据区XData,并可以根据需要点击“窗口”菜单下的选项来横向或纵向平铺窗口。
因为本程序需要一步一步地详细查看相应指令执行的结果,所以我们需要在执行指令时点击“指令跟踪(F7)”或“指令单步(F8)”按钮来单步执行。
指令执行中的一个画面如下图所示:从图中我们能够清晰地观察到每一条指令执行的每一个结果,从而加深我们对这些指令的理解与记忆。
除以上实例程序中所书写的以外,我们还可以使用其他的指令书写程序并在MedWin中仿真,比如PUSH、POP、MOVC等,相信你会得到一个很好的结果,而且MedWin肯定会提高你学习指令的兴趣。
2.算术操作类指令算术操作类指令主要有:ADD、ADDC、DA A、SUB、INC、DEC、MUL、DIV等。
算术操作类指令比较复杂,掌握起来比较困难,但在实际的单片机项目应用中很少涉及,尤其是MUL、DIV两条指令,在51系列单片机中更是被束之高阁,很少使用。
此处,我们不再像上节那样逐条书写并仿真课本上的程序,如果感兴趣,你可以仿照上节自己书写程序并进行仿真,观察并体会每一条指令执行的结果以及对系统的影响。
这里我们通过一个比较实用的例子来演示仿真算术类指令的操作。
Proteus仿真I2C存储器实验一、实验目的1、了解I2C总线的工作原理2、掌握I2C总线驱动程序的设计和调试方法3、掌握I2C总线存储器的读写方法二、实验说明1、I2C总线常识I2C总线上的每个器件均由一个存储于该器件中的唯一地址来识别,并可被用作一个发送器或接收器(视其功能而定)。
AT24C02是一个2K位串行EEPROM,内部含有256个8位字节,AT24C02有一个8字节页写缓冲器,该器件通过I2C总线接口进行操作。
引脚名称和功能如图1所示。
图1 24系例I2C存储器引脚说明通过器件地址输入端A0、A1和A2可以实现将最多8个24C02器件连接到总线上。
2、I2C总线协议(1)只有在总线空闲时才允许启动数据传送。
(2)在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变。
时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止信号。
(3)起始信号,时钟线保持高电平期间,数据线电平从高到低的跳变作为I2C总线的起始信号。
(4)停止信号,时钟线保持高电平期间,数据线电平从低到高的跳变作为I2C 总线的停止信号。
I2C 总线时序:3、页写操作的数据帧结构根据页缓冲区的大小,页写的字节数不能超过缓冲区大小。
如果在发送停止信号之前主器件发送超过缓冲区大小,地址计数器将自动翻转,先前写入的数据被覆盖。
如图2所示。
图2页写操作数据帧结构三、实验内容先搭建一个“I2C存储器实验”的仿真电路,该单片机系统功能是采用页写的方式,把器件地址为A0H的24C02器件的片内50H地址开始的8个存储单元分别写入数据“00、11、22、、、、、、77”。
四、.参考硬件电路五、参考汇编程序SDA EQU P3.5 ;定义24c02的串行数据线SCL EQU P3.4 ;定义24c02的串行时钟线SNUM EQU 40HSLAW EQU 41HORG 0000HAJMP MAINORG 0040HMAIN:MOV SP,#5FHLCALL LDATAMOV SLAW,#0A0H ;24c02的器件地址MOV SNUM,#9 ;要发送9个字节数据MOV R1,#30H ;数据缓冲区的首地址CALL WRNB ;调用发送n个字节的子程序SJMP $LDATA:MOV R0,#30H ;片内ram的地址:30H 31H 32H 33H 34H 35H…..MOV @R0,#50H ;存放的数据:50H 00H 11H 22H 33H 44H……INC R0MOV @R0,#00HINC R0MOV @R0,#11HINC R0MOV @R0,#22HINC R0MOV @R0,#33HINC R0MOV @R0,#44HINC R0MOV @R0,#55HINC R0MOV @R0,#66HINC R0MOV @R0,#77HRET;起始信号STA:SETB SDASETB SCLNOPCLR SDANOPNOPCLR SCLRET;终止信号STP:CLR SDASETB SCLNOPNOPSETB SDANOPNOPCLR SDACLR SCLRET;发应答位"0" ASK:CLR SDASETB SCLNOPNOPCLR SCLSETB SDARET;发非应答位"1" NAS:SETB SDASETB SCLNOPCLR SCLCLR SDARET;应答位检查,正常应答时F0标志为0,否则F0为1 ASKC:SETB SDASETB SCLCLR F0MOV C,SDAJNC CEND ;应答位为1,不置位F0SETB F0CEND: CLR SCLRET;发送到24c02一个字节,预发送的数据存于A中WRB:MOV R0,#08HLOOP0:RLC AMOV SDA,CNOPNOPSETB SCLNOPNOPNOPNOPCLR SCLDJNZ R0,LOOP0RET;--------------------------------*;*函数名称:WRNB *;*功能描述:对E2PROM指定的页写入SNUM个字节的数据* ;*调用函数:STA WRB ASKC STP *;*入口条件:SLAW--I2C器件写地址*;* R1-片内RAM发送数据缓冲区的首地址* ;--------------------------------*WRNB:LCALL STAMOV A,SLAWLCALL WRB ;写器件的写地址LCALL ASKCJB F0, WRNBWLP: ;向E2PROM写入SNUM个字节的数据MOV A,@R1LCALL WRBLCALL ASKCJB F0, WRNBINC R1DJNZ SNUM, WLPLCALL STPRETEND六、思考练习题1、请说说I2C总线的优点有哪些?2、编写程序,将自己学号写入24C02地址为30H开始的存储单元。
今天做的是一个往EEPROM写入数据的项目。
项目没有什么实际意义,主要是练习一下学习的关于写EEPROM的知识。
项目的构思如下,向单片机的EEPROM中写入数据,00单元写入数据00,01单元写入数据01,FF单元写入数据FF,即任意一个EEPROM 单元都根据其地址来写入相应的数据。
项目源程序十分简单,但需要注意EEPROM写入数据的操作步骤。
源程序如下:
在MPLAB中编辑好源程序以后,编译生成相应的源代码,然后我们在Proteus中绘制本例的电路图。
本例电路图更为简单,因为我们使用的都是单片机内部资源,所以只需将一片PIC16F877放入电路图中就可以了。
电路图如下所示:
绘制好电路图以后,我们就可以将前面生成的源代码装入单片机来进行仿真了。
此例其他方面都比较简单,最关键的在于仿真时的操作。
可以看到,当你点击仿真按钮的时候,系统并没有任何反映,我们根本看不到仿真效果。
这时你可以点击主菜单中的Debug菜单下的“PIC CPU EPROM Memory - U1”,如下图:
此时系统将弹出相应的“EEPROM”窗口,在这个窗口中,你就可以看到EEPROM中的内容,看看仿真是否成功,其中的数据是否已经按照我们的要求变成了相应的内容。
如下图所示:
当然,你也可以在仿真中使用Proteus的单步功能,你一步一步地点击单步按钮,可以看到,EEPROM中的内容一步一步地在变动。
如下图的两个图形所示:
而且,从上图你还能看到,每点击一次单步按钮,EEPROM大约写入5个数据。
当然,如果你修改一下相应的时钟频率,每次写入的数据量可能会有改变。
本项目的内容简单,但需要掌握以下几个方面的内容:
1.EEPROM数据写入的步骤。
2.Proteus中仿真单片机内部的RAM、EEPROM、FLASH等的操作。