文档库 最新最全的文档下载
当前位置:文档库 › LCD1602液晶显示DS1302实时时钟Proteus仿真

LCD1602液晶显示DS1302实时时钟Proteus仿真

LCD1602液晶显示DS1302实时时钟Proteus仿真
LCD1602液晶显示DS1302实时时钟Proteus仿真

Proteus仿真图:

仿真程序:

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

//*******LCD*******

sbit LCDRS=P2^0; //LCD数据/命令选择端sbit LCDRW=P2^1;

sbit LCDEN=P2^2; //LCD使能新号端

//******DS1302******

sbit IO=P1^0; //1302数据线

sbit SCLK=P1^1; //1302时钟线

sbit RST=P1^2; //复位

uint num=0;

//uchar *week[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"}; uchar Date[]={"Date: 2000-00-00 "};

uchar Time[]={"Time: *00:00-00* "};

uchar date_time[7]; //从ds1302读取的当前日期时间

//=======延时=======

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

//********向1302写数据*********

void write_ds1302(uchar dat)

{

uchar i;

for(i=0;i<8;i++)

{

IO=dat & 0x01; //保持最后一位为1,读状态

SCLK=1;

delay(1);

SCLK=0;

dat >>= 1;

}

}

//*********从1302读数据*********

uchar read_ds1302()

{

uchar i,b=0x00;

for(i=0;i<8;i++)

{

b |= _crol_((uchar)IO,i);

delay(1);

SCLK=0;

}

return b/16*10+b%16; //与BCD码转换

}

//*********从指定位置读数据********

uchar read_data(uchar addr)

{

uchar dat;

RST=0;

SCLK=0;

RST=1;

write_ds1302(addr);

dat=read_ds1302();

SCLK=1;

RST=0;

return dat;

}

//*********读取当前日期时间*********

void read_date_time()

{

uchar i,addr=0x81;

for(i=0;i<7;i++)

{

date_time[i]=read_data(addr);

addr+=2;

}

}

//----------LCD写指令----------

void lcd_write_com(uchar com)

{

LCDRS=0; //RS为0时,写指令,RS为1时,写数据P0=com;

delay(5);

delay(5);

LCDEN=0;

}

//----------LCD写数据----------

void lcd_write_data(uchar dat)

{

LCDRS=1;

P0=dat;

delay(5);

LCDEN=1;

delay(5);

LCDEN=0;

}

//-------LCD初始化-------

void lcd_init()

{

LCDEN=0;

lcd_write_com(0x38); //LCD显示模式设置

lcd_write_com(0x0c); //LCD显示开/关及光标设置

lcd_write_com(0x06); //当写一个字符后地址指针加1,且光标加1

lcd_write_com(0x01); //显示清屏

}

//---------设置液晶显示位置-----------

void set_lcd_pos(uchar p)

{

lcd_write_com(p | 0x80);

}

//---------液晶显示程序----------

void lcd_print(uchar p,uchar *s)

{

set_lcd_pos(p);

for(num=0;num<16;num++)

{

lcd_write_data(s[num]);

delay(10);

}

}

//----------日期时间转换-----------

void format_datetime(uchar d,uchar *p)

{

p[0]=d/10+'0';

p[1]=d%10+'0';

}

//---------主程序----------

void main()

{

LCDRW=0;

lcd_init();

while(1)

{

read_date_time();

format_datetime(date_time[6],Date+8); //年月日

format_datetime(date_time[4],Date+11);

format_datetime(date_time[3],Date+14);

// strcpy(Date+13,week[date_time[5]]);

format_datetime(date_time[2],Time+7); //时间转换

format_datetime(date_time[1],Time+10);

format_datetime(date_time[0],Time+13);

lcd_print(0x00,Date);

lcd_print(0x40,Time);

}

}

电路分析与仿真

课程设计任务书 学院信息工程学院班级自动化2班姓名XXX 设计起止日期2012.12.24~~2012.12.28 设计题目:电路分析与仿真 设计任务(主要技术参数): 指导教师评语: 成绩:签字: 年月日 课程设计说明书 一、课程设计的目的 电路原理是本专业以后所涉及到专业课的基础,将电路原理的理论知识弄懂、弄明白是为了以后学习专业课的时候能够更好的去实践。理论是实践的基础,只有掌握了基本的电路分析、计算的方法才会将以后的专业课融会贯通。 电路原理课程设计是理论教学之后的一个综合性实践教学环节,是对课程理论和课程实验的综合和补充。学会并利用一种电路分析软件,对电路进行分析、计算和仿真,通过查找资料,选择方案,设计电路,撰写报告,完成一个较完整的设计过程,将抽象的理论知识与实际电路设计联系在一起,使学生在掌握电路基本设计

方法的同时,加深对课程知识的理解和综合应用,培养学生综合运用基础理论知识和专业知识解决实际工程设计问题的能力,以及工程意识和创新能力。 二、课程设计的基本要求 通过本次的课程设计可以更娴熟的掌握一些电路分析的基本方法,更进一步掌握所学的理论知识。完成指定的题目和仿真任务,掌握仿真方法和学会写设计报告。1.明确设计任务 对设计任务进行具体分析,充分了解性能,指标,内容以及要求,明确应完成的任务。 2.方案选择与论证 通过查阅资料对不同的设计方案进行比较论证,根据现有的条件选择合适的设计方案,力争作到合理,可靠,经济,先进,便于实现,绘制出整体框图。 3.单元电路设计 确定各个单元的电路结构,计算元件参数(写出主要计算过程和公式),选择器件。 4.绘制原理图 用MATLAB绘制完整的原理图,在图中表明主要测试点以及理想情况下的参数值(或波形),列出元件表。 5.仿真验证 有条件时应该对所设计电路进行仿真,记录仿真结果,注意和理论值相比较,相差过大时应查明原因并即使修正,直到满足设计要求。 三、设计任务 本次课设采用一个电流源is1,两个电压源us1和us4,is1=1A,us1=30V,us4=5V,R1至R4的阻值分别为5Ω,5Ω,30Ω,20Ω,求流经R3的电流I,并仿真。 电路图连接如下 四、课程设计的主要内容 仿真软件的选择:

系统仿真测试平台

仿真测试系统 系统概述 FireBlade系统仿真测试平台基于用户实用角度,能够辅助进行系统方案验证、调试环境构建、子系统联调联试、设计验证及测试,推进了半实物仿真的理论应用,并提出了虚拟设备这一具有优秀实践性的设计思想,在航电领域获得了广泛关注和好评 由于仿真技术本身具备一定的验证功能,因此与现有的测试技术有相当的可交融性。在航电设备的研制和测试过程中,都必须有仿真技术的支持:利用仿真技术,可根据系统设计方案快速构建系统原型,进行设计方案的验证;利用仿真验证成果,可在系统开发阶段进行产品调试;通过仿真功能,还可对与系统开发进度不一致的子系统进行模拟测试等。 针对航电设备产品结构和研制周期的特殊性,需要建立可以兼顾系统方案验证、调试环境构建、子系统联调联试、设计验证及测试的系统仿真平台。即以半实物仿真为基础,综合系统验证、系统测试、设备调试和快速原型等多种功能的硬件平台和软件环境。 目前,众多研发单位都在思索着如何应对航电设备研制工作日益复杂的情况。如何采取高效的工程技术手段,来保证系统验证的正确性和有效性,是航电设备系统工程的重要研究内容之一,FireBlade 系统仿真测试平台正是在这种大环境下应运而生的。 在航电设备研制工程中的定位设备可被认为是航电设备研制工程中的终端输出,其质量的高低直接关系到整个航电设备系统工程目标能否实现。在传统的系统验证过程中,地面综合测试是主要的验证手段,然而,它首先要求必须完成所有分系统的研制总装,才能进行综合测试。如果能够结合面向设备的仿真手段,则可以解决因部分设备未赶上研发进度导致综合测试时间延长的问题。在以往的开发周期中,面向设备的仿真技术并没有真正得到重视: (1)仿真技术的应用主要集中在单个测试对象上,并且缺乏对对象共性的重用; (2)仿真技术缺乏对复杂环境与测试对象的模拟; (3)仿真技术的应用缺乏系统性,比如各个阶段中仿真应用成果没有实现共享,

基于DS1302的数码管显示数字钟

单片机原理课程设计 课题名称:基于DS1302的数码管显示数字钟 专业班级:电子信息工程 学生学号: 学生姓名: 指导教师: 设计时间:2010年6月21日--2010年6月25日

目录 摘要........................................................................................................................................................................ 1 设计任务和要求............................................................................................................................................ 2 方案论证........................................................................................................................................................ 3 系统硬件设计................................................................................................................................................ 3.1 系统总原理图 ................................................................................................................................ 3.2 元器件清单...................................................................................................................................... 3.3 PCB板图....................................................................................................................................... 3.4 Proteus仿真图 ............................................................................................................................... 3.5 分电路图及原理说明................................................................................................................... 3.5.1 主控部分(单片机MCS-51).............................................................................. 3.5.2 计时部分(实时时钟芯片DS1302).................................................................. 3.5.3 显示部分(共阳极数码管)................................................................................ 3.5.4 调时部分(按键)................................................................................................ 4系统软件设计................................................................................................................................................ 4.1 程序流程图..................................................................................................................................... 4.2 程序源代码........................................................................................................................................ 5心得体会........................................................................................................................................................ 6参考文献........................................................................................................................................................ 7结束语............................................................................................................................................................

Proteus仿真单片机实例

引言 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个仿真系统。 2.Proteus介绍 Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES(Adv-Ancd Routing And Editing Software)也就是PCB. 2.1 Proteus VSM的仿真 Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus可提供30多种元件库,超过8000种模拟、数字元器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。 除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。 Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,A VR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY,Keil、MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。 2.2 Proteus PCB Proteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。 3. 基于Protesus的简单数据采集系统。 3.1 软件的编写 本例题采用可调电阻调节电压值作为模拟信号的输入量,通过A/D转换芯片AD0808把模拟信号转换为数字量传送到单片机的P1口,并在P0口把转换的结果显示出来。 软件的编写可以在Keil C51 环境下进行,芯片的型号选择AT89C51,编写data.c文件,利用Keil C51进行编译,编译成功后生成data.hex文件。 3.2 绘制电路图 运行Proteus的ISIS,进入仿真软件的主界面,如图1所示。主界面分为菜单栏,工具栏,模型显示窗口,模型选择区,元件列表区等。

ds1302时钟程序详解-ds1302程序流程图(C程序)

ds1302时钟程序详解,ds1302程序流程图(C程序) ds1302时钟程序详解 DS1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始 输出。 2.3 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从 低位0位到高位7。 2.4 DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日 历、时间寄存器及其控制字见表1。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RA M的31个字节,命令控制字为FEH(写)、FFH(读)。

ds1302程序流程图 3.2 DS1302实时时间流程 图4示出DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对DS1302的基 本操作进行编程:

电子产品架构设计、性能仿真分析概要

电子产品架构设计、性能仿真分析 系统解决方案 - VisualSim ? EDA 技术经过了二十几年的发展,针对电子设计流程中某一专门领域的设计验证工具(如FPGA 、DSP 设计或PCB 设计)已经发展得相当成熟,自动化程度越来越高,使用也变得越来越简便快捷。但与此形成对比的是,对于通信、多媒体处理等领域的复杂电子产品或ASIC 设计,由于可选择的芯片或IP 以及相关系统实现方案越来越多、可能的设计约束条件(实时性、功耗、成本与物理尺寸等)越来越苛刻,项目开发团队开始体验到首次设计硬件、软件(原型设计)交付后测试失败的痛苦。系统设计师开始把更多的注意力放在电子系统设计的方法学上面,寻求真正面向电子系统总体设计的EDA 工具、为复杂电子系统的体系结构设计提供科学有效的手段。

Mirabilis Design公司的VisualSim?是业界首个专门用于复杂电子系统架构设计和性能分析的电子系统级(ESL)建模仿真工具。借助VisualSim?的快速虚拟原型开发技术,设计团队在项目开发的最初阶段即可以对一个复杂电子系统的不同硬件、软件实现方案进行快速性能仿真分析和研究评价,验证和优化设计设想,以确定可以满足全部约束条件的最优系统实现结构方案。 与MATLAB/Simulink、SPW等用于算法模型仿真和分析、选择的系统级设计工具不同,VisualSim?把关注的焦点放在对算法、协议、数据流和控制流等系统行为的实现架构的建模上。对于初步设定的系统硬件处理平台与外设结构、软件算法流程调度、高速数据存储与交换方案、网络协议等,VisualSim?可以帮助系统工程师回答如下的问题:该实现平台方案是否能够满足全部的系统设计需求?实时处理采用何种硬件/软件划分结构来实现最为有效?采用何种类型、数量的硬件资源(处理器/DSP、ASIC/FPGA、高速存贮器等)可以“恰当”地满足功能需要?软件任务调度算法如何与硬件资源进行合理匹配?高速数据流通道等采用何种总线形式或DMA模式传输更为高效?等类似传统系统设计工具无法解答的问题。 VisualSim?的方法学是:将更多的时间用于设计、分析不同的系统实现模型,而不是用于进行模型编码。在全图形化的环境中,VisualSim?独特的参数化模块库能够快速把设计功能抽象映射为各种系统实现结构、并据此进行事务级(Transaction Level)或时钟精度的仿真分析,得到系统的数据处理输出延时(Latency)、处理器利用率、总线冲突情况与总线利用率、多处理器任务分配平衡、缓冲需求、功耗等的性能指标。设计团队进而可以据此来设计、评价和选择不同的平台方案,而所有这些工作都是在实际硬件交付前就通过VisualSim?虚拟原型模型实现的。 作为一款业界领先的动态系统架构建模与性能仿真分析工具,VisualSim?专注于加速系统建模与仿真,IP复用和可执行模型的生成。VisualSim?具有完全集成的图形化软件环境,支持多种运行平台。由于采用了基于伯克利大学Ptolemy框架的多域仿真器,VisualSim?能够同时支持模

电子电路设计及仿真

信息与电气工程学院 通信工程CDIO一级项目 设计说明书 (2014/2015学年第二学期) 题目:电子电路设计及仿真 班级组数: 学生姓名: 学号: 设计周数:14周

2015年5月31日 一、电源设计 直流稳压电源一般由电源变压器,整流滤波电路及稳压电路所组成,变压器把市电交流电压变成为直流电;经过滤波后,稳压器在把不稳定的直流电压变为稳定的直流电流输出。本设计主要采用单路输出直流稳压,构成集成稳压电路,通过变压,整流,滤波,稳压过程将220V交流电变为稳定的直流电,并实现固定输出电压5V。 1.1设计要求 1.1.1 输入:~220V,50Hz; 1.1.2 输出:直流 5V(1组) 1.2设计过程 1.2.1直流稳压电源设计思路 (1)电网供电电压交流220V(有效值)50Hz,要获得低压直流输出,首先必须采用电源变压器将电网电压降低获得所需要交流电压。 (2)降压后的交流电压,通过整流电路变成单向直流电,但其幅度变化大(即脉动大)。 (3)脉动大的直流电压须经过滤波、稳压电路变成平滑,脉动小的直流电,即将交流成分滤掉,保留其直流成分。 (4)滤波后的直流电压,再通过稳压电路稳压,便可得到基本不受外界影响的稳定直流电压输出,供给负载RL。 1.2.2直流稳压电源原理 直流稳压电源是一种将220V工频交流电转换成稳压输出的直流电压的装置,它需要变压、整流、滤波、稳压四个环节才能完成,见图1.1。 工频交流脉动直流 直流负载 图1.1 直流稳压电源方框图 其中 (1)电源变压器是降压变压器,它将电网220V交流电压变换成符合需要的交流电压,并送给整流电路,变压器的变化由变压器的副边电压确定。 (2)整流电路,利用二极管单向导电性,把50Hz的正弦交流电变换成脉动的直流电。电路图如1.2。

流水灯(电路和汇编)-Proteus和Keil仿真演示实例知识讲解

流水灯(电路和汇编)-P r o t e u s和K e i l仿真演示实例

示例要求: 在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。 在KEIL 51中编程序,形成HEX文件;在PROTEUS中设计硬件,下载HEX文件,运行看结果。 第1篇:PROTEUS电路设计 1、打开PROTEUS的ISIS软件,如图1所示。新建电路图文件,将文件保存到E:\projectio (新建文件夹projectio)下面,文件基本名为io,扩展名默认。 选择元 图1 ISIS窗口图 2、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图2所示。

图2 元件选择窗口 在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图3的device列表栏。在这里依次添加元件单片机80C51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED,如图3所示。 图3 添加元件的device列表栏 3、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作;如图4所示。电源(POWER)与地(GROUND):(右键-放置-终端里选)。

图4 放置元件图4、连接导线,如图5所示。连接后存盘。 图5 连接元件图

5、在Keil软件中设计软件程序,形成HEX文件(具体过程见第2篇Keil软件编程)。保存软件项目到电路文件相同的文件夹E:\projectio下。 6、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的program file框中选择下载到80C51芯片中的程序。这里是同一个文件夹下面的shili.hex文件。如图6所示。 图6 下载程序到单片机 7、单击仿真运行按钮play,运行程序。可通过LED二极管看到相应的结果。如图7所示。 图7 仿真结果图

电子电路仿真分析与设计

上海大学 模拟电子技术课程 实践项目 项目名称:_电子电路仿真分析与设计_指导老师:_______李智华________ 学号:______12122272_______ 姓名:_______翟自协________ 日期:_____2014/1/27______

电子电路仿真软件PSPICE 题目一:放大电路电压增益的幅频响应与相频响应 电路如图所示,BJT为NPN型硅管,型号为2N3904,放大倍数为50,电路其他元件参数如图所示。求解该放大电路电压增益的幅频响应和相频响应。 步骤如下: 1、绘制原理图如上图所示。 2、修改三极管的放大倍数Bf。选中三极管→单击Edit→Model→Edit Instance Model, 在Model Ediror中修改放大倍数Bf=50。 3、由于要计算电路的幅频响应和相频响应,需设置交流扫描分析,所以电路中需要有交流源。 双击交流源v1设置其属性为:ACMAG=15mv,ACPHASE=0。 4、设置分析类型: 选择Analysis→set up→AC Sweep,参数设置如下:

5、Analysis→Simulate,调用Pspice A/D对电路进行仿真计算。 6、Trace→ Add(添加输出波形),,弹出Add Trace对话框,在左边的列表框中选中v(out),单击右边列表框中的符号“/”,再选择左边列表框中的v(in),单击ok按钮。 仿真结果如下:

上面的曲线为电压增益的幅频响应。要想得到电压增益的相频响应步骤如下:在probe下,选择Plot→ Add Plot(在屏幕上再添加一个图形)。如下图所示: 单击Trace→ Add(添加输出波形),弹出Add Trace对话框,单击右边列表框中的符号“P”,在左边的列表框中选中v(out),单击右边列表框中的符号“-”,再单击右边列表框中的符号“P”,再选择左边列表框中的v(in),单击ok按钮。函数P()用来求相位。

DS1302时序和C语言程序

1 DS130 2 简介: DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。 图1 DS1302的外部引脚分配 图2 DS1302的内部结构 各引脚的功能为: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。 SCLK:串行时钟,输入; I/O:三线接口时的双向数据线; CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。 DS1302有下列几组寄存器: ①DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如图3所示。

图 3 DS1302有关日历、时间的寄存器 小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是,当为1时,表示PM。在24小时模式时,位5是第二个10小时位。 秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。 控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM 的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。 ②DS1302有关RAM的地址 DS1302中附加31字节静态RAM的地址如图4所示。 图4 ③DS1302的工作模式寄存器 所谓突发模式是指一次传送多个字节的时钟信号和RAM数据。突发模式寄存器如图5所示。 图5 ④此外,DS1302还有充电寄存器等。 2 读写时序说明 DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。 要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图6。 图6 控制字(即地址及命令字节) 控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。

电子产品架构设计、性能仿真分析系统解决方案

电子产品架构设计、性能仿真分析 系统解决方案- VisualSim? EDA技术经过了二十几年的发展,针对电子设计流程中某一专门领域的设计验证工具(如FPGA、DSP设计或PCB设计)已经发展得相当成熟,自动化程度越来越高,使用也变得越来越简便快捷。但与此形成对比的是,对于通信、多媒体处理等领域的复杂电子产品或ASIC设计,由于可选择的芯片或IP以及相关系统实现方案越来越多、可能的设计约束条件(实时性、功耗、成本与物理尺寸等)越来越苛刻,项目开发团队开始体验到首次设计硬件、软件(原型设计)交付后测试失败的痛苦。系统设计师开始把更多的注意力放在电子系统设计的方法学上面,寻求真正面向电子系统总体设计的EDA工具、为复杂电子系统的体系结构设计提供科学有效的手段。

Mirabilis Design公司的VisualSim?是业界首个专门用于复杂电子系统架构设计和性能分析的电子系统级(ESL)建模仿真工具。借助VisualSim?的快速虚拟原型开发技术,设计团队在项目开发的最初阶段即可以对一个复杂电子系统的不同硬件、软件实现方案进行快速性能仿真分析和研究评价,验证和优化设计设想,以确定可以满足全部约束条件的最优系统实现结构方案。 与MATLAB/Simulink、SPW等用于算法模型仿真和分析、选择的系统级设计工具不同,VisualSim?把关注的焦点放在对算法、协议、数据流和控制流等系统行为的实现架构的建模上。对于初步设定的系统硬件处理平台与外设结构、软件算法流程调度、高速数据存储与交换方案、网络协议等,VisualSim?可以帮助系统工程师回答如下的问题:该实现平台方案是否能够满足全部的系统设计需求?实时处理采用何种硬件/软件划分结构来实现最为有效?采用何种类型、数量的硬件资源(处理器/DSP、ASIC/FPGA、高速存贮器等)可以“恰当”地满足功能需要?软件任务调度算法如何与硬件资源进行合理匹配?高速数据流通道等采用何种总线形式或DMA模式传输更为高效?等类似传统系统设计工具无法解答的问题。 VisualSim?的方法学是:将更多的时间用于设计、分析不同的系统实现模型,而不是用于进行模型编码。在全图形化的环境中,VisualSim?独特的参数化模块库能够快速把设计功能抽象映射为各种系统实现结构、并据此进行事务级(Transaction Level)或时钟精度的仿真分析,得到系统的数据处理输出延时(Latency)、处理器利用率、总线冲突情况与总线利用率、多处理器任务分配平衡、缓冲需求、功耗等的性能指标。设计团队进而可以据此来设计、评价和选择不同的平台方案,而所有这些工作都是在实际硬件交付前就通过VisualSim?虚拟原型模型实现的。 作为一款业界领先的动态系统架构建模与性能仿真分析工具,VisualSim?专注于加速系统建模与仿真,IP复用和可执行模型的生成。VisualSim?具有完全集成的图形化软件环境,支持多种

[整理版]proteus仿真单片机实例

[整理版]proteus仿真单片机实例 用器和存储器、断点和单步模式Proteus一部分是智能原理图输入系统引言Keil C51 运行可提供单片机体积小Proteus进行编译,编译成功后生成30的多种元件库,超过 ISIS,重量轻,进入仿真软件的主界面,如图等多种系列的处理器。IAR C-SPY,Keil,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多ISIS(Intelligent Schematic Input System)8000data.hex,也可以仿真模拟数字混合电路。种模拟、数字元器件。可以按照设计的要求选择、MPLAB文件。Protues 等开发工具的源程序进行调试的功包含强大的调试工具,具有对寄存1 所示。主界面分为菜单栏,工具3.2 绘制电路图,编写和虚拟系统模型 data.c文件,能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创VSM(Virtual Model System)利栏,模型显示窗口,模型选择区,元件列表区等。种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单;另一部分是高级布线及编辑软件 ARES(Adv-Ancd Routing 进行仿真。建。,nd Editing Software) 片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开除拥有丰富的元器件外, 2.2 Proteus PCB 也就是PCB. ProteusProteus 2.1 Proteus VSM还提供了

PSpice 92电子电路设计与仿真

电子线路实验报告

Pspice 9.2 电子电路设计与仿真 实验报告 学号:080105011128 专业:光信 班级:081班 姓名:李萍

一、启动PSpice 9.2—Capture CLS Lite Edition 在主页下创建一个工程项目lp 二、画电路图 1.打开库浏览器选择菜单Place/Part—Add Liabray, 提取:三极管Q2N2222、电阻R、电容C、电源VDC、模拟地0/Source、信号源VSIN。 2.移动元件、器件。鼠标选中该元、器件并单击,然后压住鼠标左键拖到合适位置,放开鼠标即可。 3.翻转某一元、器件符号。 4.画电路线 选择菜单中Place/wire,此时将鼠标箭头变成一支笔。 5.为了突出输出端,需要键入标注V o字符,选择菜单Place/Net Alias—Vo OK! 6.将建立的文件(wfh.sch)存盘。 三、修改元件、器件的标号和参数

1、用鼠标箭头双击该元件符号(R或C),此时出现修改框,即可进入标号和参数的设置 2、VSIN信号电源的设置:①鼠标选中VSIN信号电源的FREQ用鼠标箭头单击(符号变为红色),然后双击,键入FREQ=1KHz、同样方法即键入VoEF=0V、VAMPL=30mv。②鼠标选中VSIN 信号电源并单击(符号变为红色)然后用鼠标箭头双击该元件符号,此时出现修改框,即可进入参数的设置,AC=30mv,鼠标选中Apply并单击,退出 3、三极管参数设置:鼠标选中三极管并单击(符号变为红色)然后,选择菜单中的Edit/Pspice Model。打开模型编辑框Edit/Pspice Model 修改Bf为50,保存,即设置Q2N2222-X的放大系数为50。 4、说明:输入信号源和输出信号源的习惯标法。 Vs、Vi、Vo(鼠标选中Place/Net Alias) 单级共射放大电路 四、设置分析功能 1、静态

ds1302时钟程序详解 含电路图 源程序 注释

以下资料摘自电子发烧友网感谢作者,版权归网站所有,资料仅供参考 ds1302时钟程序详解 DS1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 2.3 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 2.4 DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。

此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 ds1302程序流程图

3.2 DS1302实时时间流程 图4示出DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对DS1302的基本操作进行编程:

DS1302实时时钟模块,1602显示

/*******************说明:************************** 将实时时钟数据通过LCD1602显示 -------------------------------------------------- 基于51单片机 **************************************************/ #include #include #define uchar unsigned char #define uint unsignedint uchardis_time_buf[16]={0}; //LCD1602引脚定义 //采用8位并行方式,DB0~DB7连接至LCDDATA0~LCDDATA7 sbit RS=P2^0; sbit RW=P2^1; sbit CS=P2^2; #define LCDDATA P0 //DS1302引脚定义 sbit RST=P1^3; sbit IO=P1^2; sbit SCK=P1^1; //DS1302地址定义 #define ds1302_sec_add 0x80 //秒数据地址 #define ds1302_min_add 0x82 //分数据地址 #define ds1302_hr_add 0x84 //时数据地址 #define ds1302_date_add 0x86 //日数据地址 #define ds1302_month_add 0x88 //月数据地址 #define ds1302_day_add 0x8a //星期数据地址 #define ds1302_year_add 0x8c //年数据地址 #define ds1302_control_add 0x8e //控制数据地址 #define ds1302_charger_add 0x90 #define ds1302_clkburst_add 0xbe //初始时间定义 uchartime_buf[8] = {0x20,0x10,0x06,0x01,0x23,0x59,0x55,0x02};//初始时间2010年6月1号23点59分55秒星期二 //功能:延时1毫秒 //入口参数:x //出口参数:无 //说明:当晶振为12M时,j<112;当晶振为11.0592M时,j<122 voidDelay_xms(uint x) { uinti,j; for(i=0;i

单片机PROTEUS仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 02 从左到右的流水灯 /* 名称:从左到右的流水灯 说明:接在P0口的8个LED 从左到右循环依次点亮,产生走 马灯效果 */ #include #include #define uchar unsigned char #define uint unsigned int

//延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {

PROTEUS仿真100实例(完整资料).doc

【最新整理,下载后即可编辑】 《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间 间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); }

02 从左到右的流水 灯 /* 名称:从左到右 的流水灯 说明:接在P0口的 8个LED从左到右循环依次点亮,产生走马灯效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } }

03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1); //P2的值向左循环移动 DelayMS(150); }

相关文档