ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:24.30KB ,
资源ID:9686897      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9686897.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(求是 程序doc.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

求是 程序doc.docx

1、求是 程序doc顶层library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity Total_Program isport( CLK : in std_logic ;-100MHZ时钟信号 RESET : in std_logic ; -人体热释电 INFRARED_RECEIVE : in std_logic;-红外人体感应输出信号 INF_LED : out std_logic;-人体红外热释电感应到就灯亮 -按键控制 KEY_IN :

2、 in std_logic_vector(3 downto 0);-四个按键 -AD7991采样 LED3:out std_logic;-转换成功标志 SDA : inout std_logic; SCL : out std_logic; AD_CONVERSION_SPEED :out std_logic;-ad 采样速度,用于观察 -电机控制 PWM_OUT : out std_logic; -数码管显示 DOT: out std_logic;-小数点 LED7 :out std_logic_vector(6 downto 0);-gfedcba com Anode BIT8 :out s

3、td_logic_vector(0 to 7)-bit8(7) to the first smg );end Total_Program;architecture Behavioral of Total_Program is -按键子程序 component ManyKeys port( CLK : in std_logic; RESET : in std_logic; KEY_IN : in std_logic_vector(3 downto 0);-四个按键 KEY_OUT : out std_logic_vector(3 downto 0) -按键输出指示,对应key1key4 ); e

4、nd component ; -AD采样 component ack_check port( CLK : in std_logic; -100MHZ RESET : in std_logic; Sampling_fre: out std_logic;-AD7991每次转换标志 LED3:out std_logic;-转换成功标志 SDA : inout std_logic; SCL : out std_logic; AD_CONVERSION_SPEED :out std_logic; DATA_OUT: out std_logic_vector(11 downto 0) ); end com

5、ponent ; -电机控制程序 component Motor_Control port( CLK : in std_logic; RESET : in std_logic; KEY1,KEY2,KEY3,KEY4 : in std_logic ;-四个独立按键 SAMPLING_FLAG : in std_logic;-AD7991 每次采样标志 INFRARED_RECEIVE : in std_logic;-红外热释电接收信号 INF_LED : out std_logic;-人体红外热释电感应到就灯亮 SAMPLING_DATA : in std_logic_vector(11 do

6、wnto 0);-AD7991每次采样输出的12bits数据 SMG_DATA_SV : out std_logic_vector(11 downto 0);-给数码管显示的设定数据; SMG_DATA_PV : out std_logic_vector(11 downto 0);-给数码管显示的测量值 PWM_DUTY : out std_logic_vector(6 downto 0) -控制PWM的数值 ); end component ; -PWM控制 component PWM port( CLK : in std_logic; RESET : in std_logic; DUTY

7、: in std_logic_vector(6 downto 0);-从0100% PWM_OUT : out std_logic ); end component ; -数码管显示 component Smg_Display port( CLK :in std_logic;-100MHZ RESET : in std_logic; DATA_SV : in std_logic_vector(11 downto 0); DATA_PV : in std_logic_vector(11 downto 0); DOT: out std_logic; -MSB LSB LED7 :out std_l

8、ogic_vector(6 downto 0);-gfedcba com Anode BIT8 :out std_logic_vector(0 to 7)-bit8(7) to the first smg ); end component ;signal key_reg : std_logic_vector(3 downto 0);signal sampling_reg : std_logic;signal ad_reg : std_logic_vector(11 downto 0);signal duty_reg : std_logic_vector(6 downto 0);signal s

9、v_smg,pv_smg : std_logic_vector(11 downto 0);begin UA : ManyKeys port map ( CLK = CLK , RESET = RESET , KEY_IN = KEY_IN , KEY_OUT= key_reg ); UB : ack_check port map ( CLK = CLK , RESET = RESET , Sampling_fre=sampling_reg, LED3=LED3, SDA =SDA, SCL=SCL, AD_CONVERSION_SPEED = AD_CONVERSION_SPEED, DATA

10、_OUT= ad_reg ); UC : Motor_Control port map ( CLK = CLK , RESET = RESET , KEY1 =key_reg(3), KEY2 =key_reg(2), KEY3 =key_reg(1), KEY4 =key_reg(0), SAMPLING_FLAG =sampling_reg, INFRARED_RECEIVE = INFRARED_RECEIVE, INF_LED =INF_LED, SAMPLING_DATA = ad_reg, SMG_DATA_SV =sv_smg, SMG_DATA_PV =pv_smg, PWM_

11、DUTY = duty_reg ); UD : PWM port map ( CLK = CLK , RESET = RESET , DUTY =duty_reg, PWM_OUT= PWM_OUT ); UE : Smg_Display port map ( CLK = CLK , RESET = RESET , DATA_SV = sv_smg, DATA_PV = pv_smg, DOT =DOT , LED7 = LED7, BIT8 = BIT8 ); end Behavioral;2222222222 UA-ManyKeys 2222222222222222222222222222

12、2222222library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ManyKeys isport( CLK : in std_logic; RESET : in std_logic; KEY_IN : in std_logic_vector(3 downto 0);-四个按键 KEY_OUT : out std_logic_vector(3 downto 0) -按键输出指示,对应key1key4 );end ManyKeys;a

13、rchitecture Behavioral of ManyKeys iscomponent Independent_Keysport( CLK : in std_logic;-100MHZ RESET : in std_logic;-CPU RESET KEY : in std_logic;-输入按键 KOUT : out std_logic-按键输出指示 );end component ;begin G1 : for i in 0 to 3 generate ux : Independent_Keys port map ( CLK=CLK, RESET=RESET, KEY=KEY_IN(

14、i), KOUT= KEY_OUT(i) ); end generate; end Behavioral;3333333333333333333333333333 ux_indepent 3333333333333333333333333333-程序功能:单个按键按下并要求释放后才算一次按键,按下和释放都去抖了,一次按键按下并释放后-按键输出只持续10ms高电平-浙江求是科教设备有限公司-作者:行云流水-library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arit

15、h.all;entity Independent_Keys isport( CLK : in std_logic;-100MHZ RESET : in std_logic;-CPU RESET KEY : in std_logic;-输入按键 KOUT : out std_logic-按键输出指示 );end Independent_Keys;architecture Behavioral of Independent_Keys issignal clk100hz : std_logic;type state is (s0,s1,s2,s3,s4,s5);signal current_stat

16、e : state;beginprocess(CLK,RESET)-产生10ms周期的时钟信号variable count:integer range 0 to 500000;begin if RESET=0 then count:=0;clk100hz=0; elsif rising_edge(CLK) then if count=500000-1 then count:=0;clk100hz=not clk100hz; else count:=count+1; end if; end if; end process;process(clk100hz,RESET)-按键消抖程序块begin

17、if RESET=0 then KOUT=0;current_state KOUT=0;-检测有键按下 if KEY=1 then current_state=s0; else current_state KOUT=0;-延时10ms if KEY=1 then current_state=s0; else current_state if KEY=1 then KOUT=0;current_state=s0;-再次检测有键按下否 else KOUT=1;current_state if KEY=0 then current_state=s3;-等待按键高电平出现 else current_s

18、tate current_state KOUT=0;-释放后结束 current_state current_state=s0; end case; end if; end process;end Behavioral;4444444444444444444 UB_ack_check 444444444444444444-程序介绍-该AD转换采用的是12bits的串行iic协议的AD7991,AD7991可以在三种模式下运行,分别是-标准模式,快速模式,高速模式,对应的时钟最高分别为100K,400K,和3.4MHZ。-此程序跑的是标准模式;SDA和SCL分别为AD7991的数据线和时钟线;-

19、程序使用说明-(1)AD_CONVERSION_SPEED为采样观察信号,实际采样频率f=AD_CONVERSION_SPEED;-通过改变第一个进程的count值可以改变采样频率;-(2)IIC地址选择:0101000,即AD7991-0的地址-(3)内部寄存器结构:-D7 D6 D5 D4 D3 D2 D1 D0-当D3=0时,选择的参考电压时内部电压,即3.3v,反之则选择外部参考电压;-D7D4为通道选择设置,该程序D7D4=0001,选择通道VIN0,即05v输入-其他位默认为零,选择1或0差不多;-AD采样值计算及信号观察-VIN=(DATA_OUT/4096)*5V,比如当VIN

20、0=3.3V时,DATA_OUT=101010001111;-备注:12AD最小分辨率:5/4096=1mv;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ack_check isport( CLK : in std_logic; -100MHZ RESET : in std_logic; Sampling_fre: out std_logic;-AD7991每次转换标志 AD_CONVERSION_SPEED : out

21、std_logic;-ad采样信号,用于观察采集频率 LED3:out std_logic;-转换成功标志 SDA : inout std_logic; SCL : out std_logic; DATA_OUT: out std_logic_vector(11 downto 0) );end ack_check;architecture Behavioral of ack_check issignal clock: std_logic;signal data_reg: std_logic_vector(11 downto 0);type state is (start,transmit_sl

22、ave_address,check_ack1,transmit_reg,check_ack2,stop,read_start,read_slave_address, read_check_ack1,read_data_high,read_check_ack2,read_data_low,ack_bymaster );signal current_state : state:=start;beginDATA_OUT=500000 then count:=0; clock= not clock; else count:=count+1; end if; end if; end process;-A

23、D7991 IIC协议进程process(clock,RESET)variable count1:integer range 0 to 16;variable slave_address,internal_reg,read_address,data_high,data_low: std_logic_vector(8 downto 1);variable cnt: std_logic_vector(6 downto 0);variable cnt1:integer range 0 to 8;-variable cnt2 :integer range 0 to 16;begin if RESET=

24、0 then count1:=0; data_reg=000000000000; SDA=1; SCL=1; LED3=1; cnt1:=8;-1 byte length AD_CONVERSION_SPEED=0; slave_address:=01010000; -last bit 0 : write address model current_state count1:=count1+1;-启动信号 case count1 is when 1 = SDA SCL SDA SCL count1:=0;current_statenull; end case; when transmit_slave_address = count1:=count1+1;-写地址 case count1 is when 1 =SDASCLSCLcnt1:=cnt1-1;count1:=0; if cnt1=0 then cnt1:=8;current_state=check_ack1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1