第四次课_FPGA驱动8段数码管.ppt_第1页
第四次课_FPGA驱动8段数码管.ppt_第2页
第四次课_FPGA驱动8段数码管.ppt_第3页
第四次课_FPGA驱动8段数码管.ppt_第4页
第四次课_FPGA驱动8段数码管.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FPGA驱动数码管及拨码开关的使用,拨码开关和按键,使用拨码开关实现2-4译码器,2-4译码器真值表: (使用拨码开关作为输入,led作为输出来演示) SW0:0 1 0 1 SW1:0 0 1 1 输出:0001 0010 0100 1000,应用举例:流水灯及下载,开发板led使用共阴极接法(选用led0-led3四个灯模拟输出):,源代码:,module yimaqi(data_in,led_out); input 1:0 data_in; output 3:0 led_out; reg 3:0 led_out; always (data_in0 or data_in1) case(da

2、ta_in) 2b00 : led_out = 4b0001; 2b01 : led_out = 4b0010; 2b10 : led_out = 4b0100; 2b11 : led_out = 4b1000; endcase endmodule,共阳极四位数码管连接图,创建一个新的工程,程序一:效果:4个数码管显示相同的内容,方法:段选0-9变化,4个位选同开,module shu_ma_gaun(mainclk,/主时钟 seg_data,/段选 ledseg/位选 ); input mainclk; output7:0seg_data; output3:0ledseg; wire3:0

3、ledseg; reg7:0seg_data; reg24:0Cont;/计数器变量 reg3:0keyword; always(posedge mainclk)/计数 Cont=Cont+1;,效果:4个数码管显示相同的内容,方法:4个位选同开,always(posedge Cont24)/根据低频时钟 keyword=keyword+1;/低频计数器 always(keyword) case(keyword) 4h0:seg_data=8hC0;/段选,显示0 4h1:seg_data=8hF9;/显示1 4h2:seg_data=8hA4; 4h3:seg_data=8hb0; 4h4:

4、seg_data=8h99; 4h5:seg_data=8h92; 4h6:seg_data=8h82; 4h7:seg_data=8hF8; 4h8:seg_data=8h80; 4h9:seg_data=8h90; 4ha:seg_data=8h88; 4hb:seg_data=8h83; 4hc:seg_data=8hc6; 4hd:seg_data=8ha1; 4he:seg_data=8h86; 4hf:seg_data=8h8E; endcase assignledseg=4b0000;/位选全开,4个数码管显示相同的数据,程序二:4个数码管显示不同的内容 思路:分时复用,动态扫描

5、 开第一个数码管的位选,显示第一个数码管的段选; 开第二个数码管的位选,显示第二个数码管的段选; 开第三个数码管的位选,显示第三个数码管的段选; 开第四个数码管的位选,显示第四个数码管的段选;,程序二:效果:4个数码管显示不同的内容 0512,module shu_ma_guan( mainclk, seg_data,/段选 ledseg/位选 ); input mainclk; output7:0seg_data; output3:0ledseg;/位选 reg3:0ledseg; reg7:0seg_data; reg24:0Cont; reg1:0state; always(posedg

6、e mainclk) Cont=Cont+1;,效果:4个数码管显示不同的内容,4个位选不同时开,always(posedge Cont15) case(state) 2h0: begin seg_data=8b11000000;ledseg=4b0111;state=state+1;end 2h1: begin seg_data=8b11111001;ledseg=4b1011;state=state+1;end 2h2: begin seg_data=8b11111001;ledseg=4b1101;state=state+1;end 2h3: begin seg_data=8b10000

7、000;ledseg=4b1110;state=state+1;end endcase endmodule,程序三:效果:两个数码管显示0-99变化的数字,思路: 1.做一个计数器变量0-99变化 2.取变量的个位和十位(通过整除取整和取余的方法) 3.将个位和十位与要显示的段选码一一对应; 4.开位选,送段选,循环 注意:FPGA并行执行!四步无先后之分! 这是与单片机的最大区别!,效果:0-99显示,module shu_ma_guan( mainclk, seg_data,/段选 ledseg/位选 ); input mainclk; output7:0seg_data; output3

8、:0ledseg;/位选 reg3:0ledseg; reg7:0seg_data; reg7:0gewei_code; reg7:0shiwei_code; reg3:0gewei_reg; reg3:0shiwei_reg; reg24:0Cont; reg4:0 Cont1; regstate; always(posedge mainclk) Cont=Cont+1;,效果:0-99显示,always(posedge Cont15) case(state) 1b0: begin seg_data=shiwei_code;ledseg=4b0111;state=state+1;end 1b

9、1:begin seg_data=gewei_code;ledseg=4b1011;state=state+1;end endcase always(posedge Cont24) begin if( Cont1=30) Cont1=0; else Cont1=Cont1+1; end always(Cont1) begin gewei_reg=Cont1/10; shiwei_reg=Cont1%10; end,always(gewei_reg) case(gewei_reg) 4h0:gewei_code=8hC0; 4h1:gewei_code=8hF9; 4h2:gewei_code=

10、8hA4; 4h3:gewei_code=8hb0; 4h4:gewei_code=8h99; 4h5:gewei_code=8h92; 4h6:gewei_code=8h82; 4h7:gewei_code=8hF8; 4h8:gewei_code=8h80; 4h9:gewei_code=8h90; endcase,always(shiwei_reg) case(shiwei_reg) 4h0:shiwei_code=8hC0; 4h1:shiwei_code=8hF9; 4h2:shiwei_code=8hA4; 4h3:shiwei_code=8hb0; 4h4:shiwei_code=8h99; 4h5:shiwei_code=8h92; 4h6:shiwei_code=8h82; 4h7:shiwe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论