① fpga生成bsf模块例化的时候怎么加非门进去
fpga生成bsf模块例化的时候怎么加非门进去
Quartus ii中画原理图时:用单击的方法展开Libraries栏中的元件库,其中primitives为基本元件库,打开logic子库,单面是常用的与门、或门和非门等门电路。
Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
② quartus 层次化设计
如果要用自己写的这两个程序建立全加器,还要写一个主程序用component调用这两个程序而且要用port map 语句把进出的管脚连线说明白,之后用这三个程序建工程 也可以 先写half_adder,编译通过之后点file->create/update->create symbol file for current file,变成符号元件存盘之后,之后新建原理图文件(file->new->block diagram/schematic file)调用元件库中的or2和half_adder,连线保存,以这个文件建立工程编译,应该能行,或者写两个vhdl文件,half_adder和full_adder,full_adder中用component调用half_adder,用这两个文件建工程然后编译
③ 电子设计入门的问题
四路原理很简单,这在电子技术相关书籍上都有的介绍。我也懒得去翻书了,帮你找到点资料,参考一下:
也许加上你自己的想法可以得到一些改进。
http://www.jusi.cc/Sjjc/ShowArticle.asp?ArticleID=77
实战四《简易四路抢答器》
;该抢答器供不多于4个参赛队或者个人的抢答比赛场合使用。每个参赛队的座位前
;安装1只抢答按钮开关(用板上的S9、S10、S11、S12)和一个信号灯(D4、D5、D6、D7)。
;主持人座位前装一只复原开关(板上S3)、1只蜂鸣器(板上BUZ1)和一个抢答器工作状态
;指示灯(D10),每当主持人口头发出号令之后.哪个队先按下座位上的按钮开关,该座位的信
;号灯就先被点亮,同时封锁其他按钮开关的活动.并且熄灭主持人座位上的状态指示灯和发出
;三声类似于电话振铃的提示声,以声明此次抢答动作已经完成.在主持人确认后,按下复原按钮
;,状态指示灯重新点亮,并且同时发出"笛-笛-"声,为下一次抢答作好准备.
;PIC单片机学习网 陈学乾 http://www.pic16.com
;程序文件名:"MCD-INTBUZ.ASM"
;*********************************************************************
;程序清单
;*********************************************************************
tmr0 equ 1h ;定义定时器/计数器0寄存器地址
status equ 3h ;定义状态寄存器地址
option_reg equ 81h ;定义选项寄存器地址
option_temp equ 0a6h ;(在BACK1)定义选项寄存器的备份寄存器的地址
intcon equ 0bh ;定义中断控制寄存器地址
portc equ 7h ;定义端口RC的数据寄存器地址
trisc equ 87h ;定义端口RC的方向控制寄存器地址
portb equ 06h ;定义端口RB的数据寄存器地址
trisb equ 86h ;定义端口RB的方向控制寄存器地址
c equ 0 ;定义进位标志位的位地址
z equ 2 ;定义0标志位的位地址
w equ 0 ;定义传送目标寄存器为W的指示位
f equ 1 ;定义传送目标寄存器为RAM的指示位
t0if equ 2 ;定义TMR0中断标志位的位地址
t0ie equ 5 ;定义TMR0中断使能位的位地址
inte equ 4 ;定义外部中断使能位的位地址
intf equ 1 ;定义外部中断标志位的位地址
count equ 20h ;定义一个计数器变量
count1 equ 24h ;定义一个计数器变量
count2 equ 25h ;定义一个计数器变量
count3 equ 27h ;定义一个计数器变量
count4 equ 28h ;定义一个计数器变量
portb_b equ 21h ;为PORTC定义一个备份寄存器
w_temp equ 7fh ;为W在体0和体1定义2个备份寄存器
;w_temp equ 0ffh ;(若是16F873/4,则需保留FFH单元)
status_temp equ 23h ;为STATUS定义一个备份寄存器
rp0 equ 5h ;定义状态寄存器中的页选位RP0
;******************复位向量和中断向量***********************
org 000h ;
nop ;设置一条ICD必须的空操作指令
goto main ;
org 0004h ;
goto serv ;跳转到中断服务子程序
;*******************主程序************************************
main
bsf status,rp0 ;
movlw 0 ;
movwf trisc ;设置RC口全部为输出
movlw 0ffh ;
movwf trisb ;设置RB口全部为输入
movlw 02h ;设置选项寄存器:上拉电阻启用;INT下降沿触发
movwf option_reg ;分频器给TMR0;分频比1:8
bcf status,rp0 ;
movlw 90h ;
movwf intcon ;开发INT中断
clrf portc ;RC口灯全灭
loop
movf portb,w ;读取RB口数据
iorlw b'11100001' ;送RB口的数到备份寄存器并将除S9、S10、S11、S12以外的位全部送1
movwf portb_b ;
xorlw 0ffh ;没有键按下转LOOP继续检测
btfsc status,z ;
goto loop ;
call delay10ms ;防抖动廷时
movf portb,w ;
iorlw b'11100001' ;
xorwf portb_b,0 ;再次读取RB口的数据,与前一次读的数相同则键值有效
btfsc status,z ;
goto loop ;
comf portb_b,w ;取反以便使被按下按键的位为1,其它位为0
movwf portc ;送RC口显示
call tone3t ;调用发声三次子程序
loop1
comf portb,w ;检测按键是否有松开
andlw b'00011110' ;
btfsc status,z ;
goto loop ;松开了返回
goto loop1 ;没松开继续检测
;*********************中断服务子程序*****************************
serv
;********************保存护现场部分*******************************
movwf w_temp ;保护W
swapf status,w ;保护STATUS
clrf status ;选择体0
movwf status_temp ;将STATUS存入体0的备份寄存器
;********************* 调查中断源**********************************
btfsc intcon,intf ;检查不是INT中断,返回
goto intserv ;是!转到INT中断处理部分
goto retfie0 ;
;*********************INT中断处理部分******************************
intserv
clrf portc ;令全部灯熄灭
bsf portc,7 ;点亮D10,表示就绪
call tone630 ;调用高音子程序
call delay ;调用1S廷时子程序
call tone630 ;调用低音子程序
bcf intcon,intf ;清除INT中断标志位
;*************************恢复现场部分*****************************
retfie0
swapf status_temp,w ;恢复STATUS
movwf status ;
swapf w_temp,f ;恢复W
swapf w_temp,w ;
retfie ;中断返加
;*************************低音调发生子程序(500HZ/50MS)*************
tone500
movlw .50 ;循环次数寄存器赋初值
movwf count ;50=500HZx0.05Sx2
t5lop
bcf intcon,t0if ;清除TRM0溢出中断标志位
movlw .131 ;给TMR0装入初值256-125=131
movwf tmr0 ;启动定时器
t5here
btfss intcon,t0if ;定时器溢出否
goto t5here ;否!循环栓测
movlw b'01000000' ;只将BIT6置位
xorwf portc,f ;只将RC6(BUZ)脚电平反转,其余不变
decfsz count,f ;循环次数递减,为0,跳一步
goto t5lop ;不为0,跳回
return ;返回
;**************************高音调发生子程序(630HZ/50MS)*****************
tone630
movlw .63 ;循环次数寄存器赋初值
movwf count1 ;63=630HZx0.05Sx2
t6lop
bcf intcon,t0if ;清除TRM0溢出中断标志位
movlw .157 ;给TMR0装入初值157=256-99
movwf tmr0 ;启动定时器
t6here
btfss intcon,t0if ;定时器溢出否
goto t6here ;否!循环栓测
movlw b'01000000' ;只将BIT6置位
xorwf portc,f ;只将RC6(BUZ)脚电平反转,其余不变
decfsz count1,f ;循环次数递减,为0,跳一步
goto t6lop ;不为0,跳回
return ;返回
;*********************发声1S子程序(1S=10x(50ms+50ms)***********
tonels
movlw .10 ;循环次数寄存器赋初值
movwf count2 ;
t1lop
call tone500 ;调用低音子程序
call tone630 ;调用高音子程序
decfsz count2,f ;循环次数递减,为0,跳一步
goto t1lop ;不为0,跳回
return ;返回
;*********************TMR0廷时子程序1S(1S=16x256x(256-12)US)********
delay
bsf status,rp0 ;设置文件寄存器体1
movf option_reg,w ;保护选项寄存器内容
movwf option_temp ;
movlw 07h ;重设选项寄存器;上拉电阻启用,INT下降沿触发
movwf option_reg ;分频器给TRM0;分频比值设为1:256
bcf status,rp0 ;恢复到文件寄存器体0
movlw .16 ;循环利用TMROP定时16次
movwf count3 ;溢出次数寄存器
d1lop
bcf intcon,t0if ;清除TMR0溢出中断标志位
bcf intcon,t0ie ;清除TMR0溢出中断使能位
movlw .12 ;给TMR0装入初值12=256-244
movwf tmr0 ;启动定时器
here
btfss intcon,t0if ;用查询法检测TMR0溢出否
goto here ;否!返回
decfsz count3,f ;是!溢出次数减1,为0,跳一步
goto d1lop ;否!循环利用TMR0
bsf status,rp0 ;设置文件寄存器体1
movf option_temp,w ;恢复选项寄存器内容
movwf option_reg ;
bcf status,rp0 ;恢复到文件寄存器体0
return ;返回
;*************************断续发声3次报警子程序***********************
tone3t
movlw .3 ;循环次数寄存器赋初值
movwf count4 ;
t3lop
call tonels ;调用发声1S子程序
call delay ;调用廷时1S子程序
decfsz count4,f ;循环次数递减,为0,跳一步
goto t3lop ;不为0,跳回
return ;返回
;**************************软件廷时10MS子程序****************************
delay10ms
movlw .13 ;将外层循环参数值送到30H
movwf 30h ;
lp0
movlw 0ffh ;将内层循环参数值送到31H
movwf 31h ;
lp1
decfsz 31h,1 ;变量31H内容递减,若为0则跳跃
goto lp1 ;跳转到LP1
decfsz 30h,1 ;变量30H内容递减,若为0则跳跃
goto lp0 ;跳转到LP0
return ;返回主程序
end ;源程序结束
;***************************************************
; 进入该实战演练的工序流程如下:
; 1.创建源文件和编辑源文件;在此介绍一种不同于前面讲的创建源文件的方法,用Windows附件中的”记事本”
; 这个为大家所熟知和好用的文件编辑器,并且可以方便的加入中文注释.不过有两点需要注意,一是注释前面的
; 分号”;”必须用西文半角输入;二是必须用”.asm”扩展名存储到事先建立的一个专用子目录下.
; 2.打开MPLAB集成开发环境:首先在WINDOWS环境下,选用开始>程序>Microchip MPLAB>MPLAB命令,启动MPLAB
; 并进入MPLAB的桌面.
; 3.创建项目:选用菜单File>New或Project>New Project,在事先建立的一个专用子目录下创建一个新项目,将
; 用记事本创建的源文件加入到该项目中.
; 4.建立项目中的目标文件:选择菜单Project >Build All(项目>建立所有文件),MPLAB将自动调用MPASM将项目
; 文件管理下的源文件(.asm)汇编成十六进制的目标文件(.hex).
; 5.ICD参数设置:通过菜单命令Project>Edit Project或者Option>Development Mode,将开发模式设置为
; ”MPLAB ICD Debugger”,点击OK按钮,打开ICD的工作窗口,在调试阶段,可以按照说明书图2-10设置各项,但需注意
; OSCILLATOR应设置为XT方式,尤其需要说明的是,选中“Enable Debug Mode”(使能调试模式)选项,在向目
; 标单片机烧写机器码程序时,会将调试临控程序同时写入单片机的指定程序存储器区域,然后才允许用ICD方式调试。
; 6.电路设置:将演示板的S1全部拔到ON,S4全部拔到OFF,S13的第1、第5拔到ON,第6、第7拔到OFF ,LCD不要插在演示板上,
; 以使端口C只与8只发光二极管接通;将用于选择频率的插针跳线插到”XT OSC”位置上,板上93CXX、24CXX应拿下。
; 7.向目标单片机烧写目标程序:用户在点击功能按钮”Program”向目标单片机烧写机器码程序时,会等待一段时间,
; 并且在条状的状态信息栏中,出现提示信息。有一点需要引起注意,就是PIC16F87X单片机的FLASH程序存储器的擦写
; 周期是有限的,大约为1000次,应尽量节省它的使用寿命。
; 8.运行和调试用户程序和用户电路:在各项参数设置好后,将ICD的工作窗口最小化,利用前面讲的”运行及调试”中介
; 绍的几种方法进行调试.当用自动单步方式调试时,建议临时禁止廷时子程序发挥作用,具体的方法是,可在CALL DELAY指
; 令前添加一个分号,并且重新汇编一次.为了学习目的,在调试过程中可以人为地加入一些软件漏洞(BUG)或硬件故障,来模
; 仿单片机端口引脚的片内或片外故障.
; 9.定型烧写目标单片机;经过多次重复上述步骤的反复修改和调试,使得程序和电路在联机状态完全正常,这时可以进行
; 定型烧写,即将ICD窗口中的”Enable Debug Mode”(使能调试模式)选项消除,不再将调试临控程序写入单片机中.
; 10.独立运行验收:上一步中的烧写过程完成后,即可将ICD模块和ICD仿真头(或演示板)之间的6芯电缆断开,让单片机在
; 演示板独立运行,观察实际效果. .
http://..com/question/66401179.html
④ 求鳄鱼式液压剪切机电气原理图
圆盘剪板机由主机和尾座两部分组成,主机主体为右侧的深喉口结构。传动箱内有齿轮变速机构.变速机构有三种速度。上、下国盘刀片由齿轮、链轮传动,下圆盘刀片为齿轮传动。
Q43系列锷鱼式剪切机 鳄鱼剪 适用于金属回收公司、废钢厂、冶炼铸造企业对各种形状的型钢及各种金属结构进行冷态剪切,以加要合格炉料。
本机采用液压驱动,噪音低、动作平稳、操作方便、维修简单、剪刀调整方便、使用安全,具有过载保护功能。剪切机从63t-300t共八个等级。可用电机或柴油机作动力。
用途
剪切机的用途就是用来剪切定尺、切头、切尾、切边、切试样及切除轧件的局部缺陷等。剪切机是轧钢机械中重要的辅助设备之一,因为剪切机的能力大小,直接影响轧机生产能力能否充分发挥以及轧制生产线金属流程的平衡问题。剪切机还广泛地使用在机械制造和修理等部门。
以上内容参考:网络-剪切机
⑤ 鳄鱼式液压剪切机的电气原理图是什么样的
鳄鱼剪,鳄鱼式剪切机,鳄鱼剪切机价格,鳄鱼剪切机原理,鳄鱼剪切机厂家
Q43系列锷鱼式剪切机 鳄鱼剪 适用于金属回收公司、废钢厂、冶炼铸造企业对各种形状的型钢及各种金属结构进行冷态剪切,以加要合格炉料。
特点:
(1)采用液压驱动,操作方便,维修简单。
(2)工作刀口长度:400mm,600mm700mm800mm1000mm1200mm,剪切力从63吨至400吨共8个等级。700mm以上刀口的剪切机,特别适用于剪切报废汽车。
(3)安装无须底脚螺丝,无电源的地方可用柴油机作动力。
鳄鱼式液压剪切机
该类机械采用单泵启动,电液阀自动和手动开关相结合。
动力部分采用高压柱塞泵,由电气部分控制达到载荷功能卸压。使用电液阀控制油缸上下工作;换向时平稳无冲击,达到安全可靠。
该机械主要是用于各类型圆钢、铁板、槽钢、方管、圆管、角铁及单车等。提高劳动效率,减轻劳动强度,减少运输费用,节省地方给钢铁公司增加产量创造条件。
本机采用液压驱动,噪音低、动作平稳、操作方便、维修简单、剪刀调整方便、使用安全,具有过载保护功能。剪切机从63t-300t共八个等级。可用电机或柴油机作动力。
生产厂家能力:
本厂产品生产已有数年历史,积累了丰富的经验技术,性能一直处于同行业中领先地位。本厂主产品有系列屑饼机(11种规格),系列废金属剪切机(11种规格),系列废金属打包机(11种规格)。
本厂善长独立设计,生产各种液压机械。产品面向钢铁冶炼、铸造、机械零件制造、废物资回收业等几十个行业。填补了国内多次空白及为国内数十家企业量身定制非标设备,攻克了这些企业的生产技术难题。
性能及优点:
1、本设备采用液压传动,与机械传动式剪断机相比,具有体积小、重量轻、惯性小、噪音低、动作平稳、操作方便、灵活、剪切断面大、剪刀口调整方便等优点,操作使用安全,易于实现过载保护。
2、本设备具有手动、自动功能,操作控制方便、简单,剪刀口在工作过程中的任何位置起动剪切和停止,并可根据被剪物料的大小,任意控制剪切口的大小,以取得最高的工作效益。
3、本设备设计了快速型,在不增加电动机功率及油泵排量得状况下,在(约250吨)剪切下速度保持快速,剪切较大物料时会自动转换速度。恢复原剪切力,从而提高工效近一倍。
4、活塞采用国外BSF格来圈密封,不仅在高油温下能保持剪切力不变,而且在长时间运行或油温较高状况下仍能保持剪切力不变。这些优点提高了本机质量品位,延长了机器使用寿命。
5、本机带快速装置。在不增加电机功率及油泵排量的状况下,设计了快速回路,使剪切速度由原每分钟8次增至每分钟12次(指剪刀最大张口时次数),提高工效近一倍。此功能为全国同行中独创。
产品包装:散装/裸装
产品用途:
本机用于各种断面形状如:圆钢、方钢、角钢、工字钢、板钢、钢管等废料的冷态剪切,热轧小型钢的定尺剪断,轧钢厂型钢定尺剪断等。
液压剪切机,该系列机型适用于金属回收加工厂、报废汽车拆解场、冶炼铸造行业,对各种形状的型钢剪切机及各种金属结构进行冷态剪断,加工成合格炉料。该系列产品特点:①采用液压驱动,安全性能可靠,操作方便。②工作刀口长度:400mm、600mm、700mm、800mm、1000mm、1200mm;剪切力从63吨至400吨八个等级,适合不同规模不同要求用户的选择。③安装不须底脚螺丝,无电源的地方可用柴油机作动力……
特点:
(1)采用液压驱动,操作方便,维修简单。
(2)工作刀口长度:400mm,600mm700mm800mm1000mm1200mm,剪切力从63吨至400吨共8个等级。700mm以上刀口的剪切机,特别适用于剪切报废汽车。
(3)安装无须底脚螺丝,无电源的地方可用柴油机作动力。
剪切机使用注意事项
1.未经学习,不了解机器结构、性能和操作规程者不得擅自开动机器。2.机器各润滑处应按要求,每班至少加注一次润滑油。3.加入油箱内的液压油,应严格使用高品质的抗磨液压油,必须经过严格过滤,并且应经常保持足够的油量,不足时应立即加注油液。4.油箱每半年应清洗并更换新油一次,但第一次清洗过滤油液不能超过一个月,使用过一次的新油液经过严格过滤后允许再用一次。5.当出现比较严重漏油或在工作中发生异常现象时,应立即停车,分析原因并排除故障,不得强行带病运转。6.机器在运转或打包过程中,不得进行修理或用手抚摸运动部位,严禁用手或脚在料箱内按压物料。7.泵、阀、压力表进行调整时,必须要有经验的技术工人进行,如发现压力表有故障,应立即检查检查或更新表。
产品特点:
1、采用液压驱动,安全性能可靠,操作方便;
2、该废金属剪切机整机结构紧凑,机械性能稳定;
3、剪切机的剪刀长度和最大剪切力可根据用户要求设计制做;
4、安装不须用底脚螺丝,无电源的地方可用柴油机作动力;
5、工作刀口长度:600mm、700mm、800mm、1000mm、1200mm;剪切力从65吨至450吨八个等级,适合不同规模不同要求用户的选择。废金属剪切机用途:
废金属剪切机适用于断面金属型材和废旧金属冷态剪断,是金属回收加工厂、报废汽车拆解场、轧钢厂、金属冶炼、铸造行业炉料加工处理的理想设备(如圆钢、槽钢、工字钢、钢板、铁管,也适用于各型材下料)。我公司生产的废金属剪切机质量保证,有各种类型的,质优价廉。我们公司拥有雄厚的技术,一流的设备,为您提供最优质的服务。欢迎来电咨询!
废金属剪切机用途:
废金属剪切机适用于断面金属型材和废旧金属冷态剪断,是金属回收加工厂、报废汽车拆解场、轧钢厂、金属冶炼、铸造行业炉料加工处理的理想设备(如圆钢、槽钢、工字钢、钢板、铁管,也适用于各型材下料)。我公司生产的废金属剪切机质量保证,有各种类型的,质优价廉。
废金属剪切机特点介绍:
适用范围广、工作效率高、操作简单、维护方便、主机既可安装于室内也可安装在室外;
该系列金属剪切机结构紧凑、机械性能安全可靠;
工作刀口长度:500mm——1200mm,剪切力60T——250T,适用不同规模、不同要求用户选择;
安装不须底脚螺丝,无电源地方可选装柴油机驱动;
最后强调:剪切机刀口长度和最大剪切力可根据用户要求设计制作。
⑥ 如何在Quartus把VHDL文件转化为电路原理图BDF文件
在project navigator下,选择vhdl文件->右键->create symbol file for cunrrent file
即可以让vhdl文件生成原理图bsf文件,可在bdf文件中调用
如果要是看综合后内部的逻辑电路的话,就用Tools中的RTL viewer
⑦ Quartus如何产生模块
常见的有两种方法,
(1)用代码调用模块:
引用时用
“
.
”
符号,标明原模块定义时规定的端口名:
designu_2(
.(端口1(u_1的端口1),
.(端口2(u_1的端口2),
.(端口3(u_1的端口3),
……
);
(2)将新建的原理图设计文件作为顶层文件,然后将数字设计的子模块生成模块电路(选择file菜单下的create/uupdata子菜单下的create
symbol
file
for
current
file即可。),然后进行连线,添加端口,就可以用了
⑧ Quartus II 能不能将VHDL生成的.bsf打包的模块,转化为内部详细的电路图
不能。这是两个系统。就像两门语言一样,一个是C语言,一个是用VB画出来的。C是没法转成VB代码的。如果要电路图的话就不要用VHDL写,直接用它的画图工具画。
⑨ 寻找一款8、10位AD芯片
来源:《国外电子元器件》
摘要:文章对高速低功耗10位串行模数转换芯片AD7810的引脚功能、主要参数、特性及典型应用作了详尽的介绍,同时给出了微处理器PIC16C6X/7X以及8051单片机与AD7810模数据转换器的的通讯接口电路和程序清单。
关键词:AD7810
低功耗 模数转换 单片机
AD7810是美国模拟器件公司(Analog
Devices)生产的一种低功耗10位高速串行A/D转换器。该产品有8脚DIP和SOIC两种封装形式,并带有内部时钟。它的外围接线极其简单,AD7810的转换时间为2μs,采用标准SPI同步串行接口输出和单一电源(2.7V~5.5V)供电。在自动低功耗模式下,该器件在转换吞吐率为1kSPS时的功耗仅为27μW,因此特点适合于便携式仪表及各种电池供电的应用场合使用。
1 AD7810引脚功能
AD7810引脚排列如图1所示,各引脚的功能如下:
1脚CONVST:转换启动输入信号。
2脚VIN+:模拟信号同相输入端。
3脚VIN-:模拟信号反相输入端。
4脚GND:接地端口。
5脚VREF:转换参考电压输入端。
6脚DOUT:串行数据输出端。
7脚SCLK:时钟输入端。
8脚VDD:电源端。
2 AD7810主要参数
AD7810的主要参数如下:
●分辨率:10位二进制;
●转换时间:2μs;
●非线性误差:±1LSB;
●电源电压范围:2.7~5.5V;
●电源功耗:高速方式时为17.5mW,低功耗方式时为5μW;
●参考电压VEFR范围:1.2V~VDD;
●模拟电压输入范围:0V~VREF;
●输出形式:SPI同步串行输出,与TTL电平兼容。
3 AD7810的工作模式
3.1 高速模式工
图2是AD7810工作在高速模式时的时序图。在此模式下,启动信号CONVST一般处于高电平。在CONVST端输入一个负脉冲,其下降沿将启动一次转换。若采用内部时钟,那么,转换需要2μs的时间(图中t1)。当转换结束时(图中A点),AD7810会自动将转换结果锁存到输出移位寄存器中。此后,在每一个SCLK脉冲的上升沿,数据按由高到低的原则(首先发送DB9,最后发送DB0)依次出现在DOUT上。如果在转换还未结束之前就发出SCLK信号来启动数据输出,那么,
在DOUT上出现的将是上一次转换的结果。
启动信号CONVST应在转换结束前变为高电平,即t3应小于t1,否则器件将自动进入低功耗模式。另外,串行时钟SCLK的最高频率不能超过20MHz。
3.2 自动低功耗模式
图3是AD7810工作在自动低功耗模式时的时序图。在此模式下,启动信号CONVST为低电平时,器件处于低功耗休眠状态。当在CONVST端输入一个正脉冲时,可在其上升沿将器件从休眠状态唤醒,唤醒过程需要1μs的时间(图中t2)。当器件被唤醒后,系统将自动启动一次转换,转换时间也是2μs(图中t1)。转换结束时,AD7810将转换结果锁存到输出移位寄存器中,同时自动将器件再一次置于低拉耗状态。
启动信号CONVST正脉冲的宽度(图2中t3)应小于1μs,否则器件被唤醒后将不会自动启动转换,而是将A/D转换的启动时间顺延至CONVST的睛降沿处。自动低功耗模式是AD7810是一大特铎,一般当数据吞吐率小于100kSPS时,应使器件工作在此模式下。在5V电源电压下,当数据吞吐率为100kSPS时,器件的功耗2.7mW;而当数据吞吐率为10kSPS时,功耗为270μW;若数据吞吐率为1kSPS,则其功耗仅27μW。
4 AD7810的典型应用
AD7810应用时几乎不需外围元件。图4所示是其典型应用电路,其参考电压VREF接至VDD,模拟输入VIN-接至GND,而待转换电压则从VIN+输入。
AD7810几乎可与各种MCU进行接口,图4中的MCU可以是8051或PIC16C6X/7X。当与PIC16C6X/7X系列单片机进行接口时,可将SCLK接至单片机的SCK(RC3),将DOUT接至SDI(RC4),而其启动信号CONVST则可接至单片机的任意输出口上(如RC0)。由于PIC单片机的SPI方式每次只能接收8位数据,因此10位数据应分两次读取。当AD7810与8051接口时,电路采用的是一种模拟串口方式,AD7810的SCLK、DOUT和CONVST分别接至8051的P1.0、P1.1和P1.2,只要严格按照AD7810的时序要求操作,一般接口都不会有问题。这种方式实际上可扩展到所有的MCU种类。另外,8051也可利用其串行口工作方式0与AD7810进行通讯(图中未画出),但这时应解决好两个问题:一是由于8051在TXD的上升沿进行采样,这样,TXD应经过一个反相器再接到SCLK,而将RXD接至DOUT,然后将CONVST接至任意一个输出端口。二是8051串行口首先接收低位数据,这一点与AD7810刚好相反,因此,编程时应当注意。
下面给出PIC16C6X/7X和8051分别与AD7810进行通讯的两段程序,作者只对与A/D转换有关的部分进行了编写(常用资源定义、芯片定义等均未列出),两段程序均可钭AD7810的工作控制在自动低功耗方式。8051与AD7810通讯程序如下:
START:CLR P1.0 ;初始化
SETB P1.0
CLR P1.2
LOOP:CALL CON0
... ;主程序省略
;
;A/D转换子程序,返回时数据低8位在R2中,高2位在R3中
CON0:MOV R1,#`10 ;10位数据
MOV R2,#0
SETB P1.2 ;唤醒启动AD7810
CLR P1.2
CON1:SETB P1.0 ;发送SCLK信号
MOV C,P1.1 ;读一位数据
CLR P1.0
MOV A,R2 ;数据移位
RLC A
MOV R2,A
MOV A,R3
RLC A
MOV R3,A
DJNZ R1,CON1
RET
PIC16C6X/7X与AD7810的通讯程序如下:
REG1 EQU 0X20 ;寄存器定义
REG2 EQU 0X21
CLRF PORTC ;端口初始化
BSF STATUS,RP0
MOVLW 0X30
MOVWF TRISC
BCF STATUS,PR0
BCF SSPCON,SSPEN
MOVLW 0X00 ;SPI初始化
MOVWF SSPCON
BSF SSPCON,SSPEN SPI开放
LOOP CALL ADCON
... ;主程序省略
;
;A/D转换子程序,返回时数据低8位在REFG1中,高2位在REG2中
ADCON BSF PORTC,0 ;唤醒启动AD7810
BCF PORTC,0
MOVWF SSPBUF ;启动接收高8位
BSF STATUS,RP0
CON1 BTFSS SSPSTAT,BF ;数据已接收?
GOTO CON1 ;没有收到
BCF STATUS,RP0
MOVF SSPBUF,W
MOVWF REG1 ;高8位送REG1
MOVWF SSPBUF ;启动接收低2位
BSF STATUS,PR0
CON1 BTFSS SSPSTAT,BF ;数据已接收?
GOTO CON1 ;没有收到
BCF STATUS,RP0
MOVF SSPBUF,W
ANDLW B11000000 ;保留有效位
MOVWF REG2 ;低2位送REG2
BCF STATUS,C ;进位位清零
RLCF REG2,1 ;数据调整
RLCF REG1,1
RLCF REG2,1
RLCF REG1,1 ;低8位
RLCF REG2,1 ;高2位
RETURN
希望可以帮到你!
⑩ PIC单片机a口输出口控制二极管的亮灭
你要亮就设高电平输出.灭就设低电平输出.程序以前会写.便现在不记得了.帮你不了.