没有合适的资源?快使用搜索试试~ 我知道了~
首页简单售货机的VHDL程序
简单售货机的VHDL程序
需积分: 9 9 下载量 32 浏览量
更新于2023-03-16
评论 1
收藏 2.05MB DOC 举报
简单售货机的VHDL程序简单售货机的VHDL程序简单售货机的VHDL程序简单售货机的VHDL程序简单售货机的VHDL程序
资源详情
资源评论
资源推荐
实验十二 数码管扫描显示控制器设计与实现
一、 实验名称
数码管扫描显示控制器设计与实现
二、 实验任务要求
用 VHDL 语言设计并实现六个数码管串行扫面电路,要求同时显示 0、1、2、3、4、5
这六个不同的数字图形到 6 个数码管上,仿真验证其功能,并下载到实现板测试。
三、 设计思路和过程
(1) 总体设计思路
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通新
号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂刘
现象,只要扫描的频率大于 50HZ。将看不到闪烁现象。
当闪烁显示的发光二极管闪烁频率较高时我们将观察到持续点亮的现象。同理,
当多个数码管依次显示,当切换速度足够快时,我们将观察到所有数码管都是同时
在显示。一个数码管要稳定显示要求频率大于 50HZ,那么 6 个数码管则需要
50*6=300HZ 以上才能持续点亮的现象。
经分析,我们所用的实验板有 50MHZ 的时钟发生器,那么我们需要将其分频
到大于 300HZ 的时钟,我取的是 500HZ,于是需要将 50MHZ 的周期扩大 10^5 倍,
并且为了数码管有足够的显示时间,我设置的占空比为 15%。
Cat1~cat6 是数码管选通控制信号,分别对应于 6 个共阴级数码管的公共端,
当 ca=’0’时,其对应的数码管被点亮。因此,通过控制 cat1~cat6,就可以控制 6
个数码管循环依次点亮。
(2) 代码设计
1)我设置了一个 clear 输入(低电平有效),作为复位端(置 0),在代码中
只需要在 process 的最外层用 if-else 语句判断一下即可:
if clear ='0' then
tmp<=0; --tmp 为分频器的计数信号
2)在程序的设计中,我设计了一个临时信号量 tmp :
signal tmp:integer range 0 to 99999;
作为两个进程间的通信,即将 tmp 在 process1 中循环叠加,在 process2 中作为敏感
量。
3)process 的作用是:
有两层 if-else 语句
第一次 If-else 语句的作用:用来判断是否复位,并且每当基本时钟信号(50MHZ
的时钟)clk 的上升沿到来时,tmp=tmp+1,变化范围是 0~99999。实质是将 clk 的周
期扩大 10^5 倍,是 cat 的频率为 500HZ。
代码如下:
if clear ='0' then
tmp<=0;
elsif clk'event and clk='1' then
if tmp=99999 then
tmp<=0;
else
tmp<=tmp+1;
end if;
第二层:用来决定选通信号 cat1~cat6 的占空比,和 ca 有效时的显示数字。
代码如下:
if tmp<15000 then
cat6<='0';
cat1<='1';
cat2<='1';
cat3<='1';
cat4<='1';
cat5<='1';
guanjiao<="1101101";
elsif tmp<30000 and tmp>15000 then
cat5<='0';
cat1<='1';
cat2<='1';
cat3<='1';
cat4<='1';
cat6<='1';
guanjiao<="0110000";
elsif tmp<45000 and tmp>30000 then
cat4<='0';
cat1<='1';
cat2<='1';
cat3<='1';
cat5<='1';
cat6<='1';
guanjiao<="1101101";
elsif tmp<60000 and tmp>45000 then
cat3<='0';
cat1<='1';
cat2<='1';
cat4<='1';
cat5<='1';
cat6<='1';
guanjiao<="1011011";
elsif tmp<75000 and tmp>60000 then
cat2<='0';
cat1<='1';
cat3<='1';
cat4<='1';
cat5<='1';
cat6<='1';
guanjiao<="1110011";
elsif tmp<90000 and tmp>75000 then
cat1<='0';
cat2<='1';
cat3<='1';
cat4<='1';
cat5<='1';
cat6<='1';
guanjiao<="1101101";
else
cat1<='1';
cat2<='1';
cat3<='1';
cat4<='1';
cat5<='1';
cat6<='1';
end if;
(3) 过程
1) 预习教材,查阅有关“分频器”程序;
2) 分析实验要求,设计伪代码;
3) VHDL 编程,编译成功后反震验证功能;
4) 下载到实验板实现功能;
5) 写实验报告。
四、 VHDL 程序
library ieee;
use ieee. std_logic_1164.all;
use ieee. std_logic_unsigned.all;
enty shumaguan is
port(
clk: in std_logic;
clear: in std_logic;
guanjiao: out std_logic_vector(6 downto 0);
cat1,cat2,cat3,cat4,cat5,cat6: out std_logic
);
end shumaguan;
architecture behave of shumaguan is
signal tmp:integer range 0 to 99999;
begin
p1:process(clear,clk)
begin
if clear ='0' then
tmp<=0;
elsif clk'event and clk='1' then
if tmp=99999 then
tmp<=0;
else
tmp<=tmp+1;
end if;
if tmp<=15000 then
cat6<='0';
cat1<='1';
cat2<='1';
cat3<='1';
cat4<='1';
cat5<='1';
guanjiao<="1101101";
elsif tmp<=30000 and tmp>15000 then
cat5<='0';
cat1<='1';
cat2<='1';
cat3<='1';
cat4<='1';
cat6<='1';
guanjiao<="0110000";
elsif tmp<=45000 and tmp>30000 then
cat4<='0';
cat1<='1';
cat2<='1';
cat3<='1';
剩余17页未读,继续阅读
wangxinbo1123
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0