8位十进制数码动态扫描电路设计报告资料
数码管滚动显示单个数字设计报告

摘要功能简介:1、容:利用动态扫描让八位数码管稳定的显示1、2、3、4、5、6、7、82、目标:(1)掌握单片机控制八位数码管的动态扫描技术,包括程序设计和电路设计,本任务的效果是让八位数码管稳定的显示12345678。
(2)用PROTEUS进行电路设计和实时仿真3、知识点(1)数码管动态扫描(动态扫描的定义以及与静态显示的区别)动态显示的特点是将所有位数码管的段选线s一位数码管有效。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
(2)总线的应用元器件与总线的连线P0口的接线采用总线方式,详细如图------所示。
①选择总线按钮②绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。
如果终点在空白处,左键双击结束连线。
画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。
此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。
在画斜线时,需要关闭线路自动路径功能才好绘制。
Proteus的线路自动路径功能简称WAR,当选中两个连接点后,WAR将选择一个合适的路径连线。
WAR可通过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“T ools”下找到这个图标。
③给与总线连接的导线贴标签PART LABELS与P0口相连的线标签名依次为P00—P06,本电路中的P0口的上拉电阻通过总线与P0口相连,数码管也是通过总线与P0口相连,这些都需要标注,以表明正确的电气连接。
单击绘图工具栏中的导线标签按钮,使之处于选中状态。
将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“×”号,表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口,如图---所示。
在“string”栏中,输入标签名称(如p00),单击“OK”按钮,结束对该导线的标签标定。
EDA实验报告-实验2-数码管扫描显示电路

EDA实验报告-实验2-数码管扫描显⽰电路暨南⼤学本科实验报告专⽤纸课程名称 EDA 实验成绩评定实验项⽬名称数码管扫描显⽰电路指导教师郭江陵实验项⽬编号 02 实验项⽬类型验证实验地点 B305 学院电⽓信息学院系专业物联⽹⼯程组号: A6⼀、实验前准备本实验例⼦使⽤独⽴扩展下载板EP1K10_30_50_100QC208(芯⽚为EP1K100QC208)。
EDAPRO/240H 实验仪主板的VCCINT 跳线器右跳设定为3.3V ;EDAPRO/240H 实验仪主板的VCCIO 跳线器组中“VCCIO3.3V ”应短接,其余VCCIO 均断开;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCINT 跳线器组设定为 2.5V ;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCIO 跳线器组设定为3.3V 。
请参考前⾯第⼆章中关于“电源模块”的说明。
⼆、实验⽬的1、了解时序电路设计。
2、制作⼀个数码管显⽰的7段译码电路,以备以后调⽤。
三、实验原理在电⼦电路显⽰部分⾥,发光⼆极管(LED )、七段显⽰数码管、液晶显⽰(LCD )均是⼗分常见的⼈机接⼝电路。
通常点亮⼀个LED 所需的电流在5~20mA 之间,电流愈⼤,LED 的亮度也⾼,相对的使⽤寿命也愈短。
若以10mA 导通电流来估算⼀个接5V 的串接电阻值计算应为:(5-1.6)/10mA ≈0.34K Ω。
七段显⽰数码管分为共阳、共阴⼆种极性。
它们等效成⼋个LED 相连电路。
共阴极七段显⽰器的LED 位置定义和等效电路共阴极七段显⽰码⼗六进制转换表四、实验内容⽤拨码开关产⽣8421BCD 码,CPLD 器件产⽣译码及扫描电路,把BCD 码显⽰在LED 数码管上,通过改变扫描频率观察数码管刷新效果。
五、实验要求学习在MAX+PLUS II 中使⽤VHDL 设计功能模块,并将所⽣成的功能模块转换成MAX+PLUS II 原理图的符号库,以便在使⽤原理图时调⽤该库。
单片机课程设计--- 单片机动态扫描显示

单片机课程设计--- 单片机动态扫描显示哈尔滨学院工学院电子信息工程专业课程设计报告专业(电子)课程设计报告题目:单片机动态扫描显示院(系):工学院专业:电子信息工程年级:2010级姓名:黄任军学号:10043112指导教师:刘宏老师2013 年12 月××日电子信息工程专业10级学生单片机原理课程设计任务书(2013年季)摘要:本次课程设计是基于AT89S52单片机控制的8位LED动态扫描显示电路的设计及Proteus仿真。
首先本文对AT89S52单片机原理做了介绍,然后对max7219进行了概括,分析了动态扫描显示系统的工作原理,经过分析,设计出能实现动态扫描显示系统的硬件原理图和软件流程图。
最后利用Proteus仿真软件对该系统进行仿真,达到了预期效果。
关键词:AT89S52系统;max7219驱动;Proteus仿真。
1. 课程设计目的研究基于单片机控制动态扫描显示系统的工作原理,选用合适的单片机控制七段码显示器,运用动态扫描的原理和特点,设计相应的硬件电路,并配合相应的软件编程,使用Proteus仿真软件和伟福仿真软件,实现动态扫描显示。
具体目的与内容有:(1)掌握七段码显示系统的工作原理;(2)掌握一种单片机应用,如AT89S52;(3)掌握Keil程序设计软件;(4)掌握Proteus仿真软件;(5)设计相应的硬件电路;(6)编写相应的软件程序;使用Proteus仿真软件,实现动态扫描显示。
2. 系统结构及硬件电路设计2.1 系统的结构框图及工作原理图2.1 系统结构框图本系统采用单片机AT89S52为显示屏的控制核心,系统主要由四个模块:电源模块、AT89S52最小系统、LED 驱动模块、LED 显示模块构成:电源模块作为整个系统的各个模块提供稳定的电源。
AT89S52最小系统作为控制系统,控制着整个系统的功能实现。
max7219提供驱动和以及与单片机的控制接口。
PCB八位数码管实验设计报告

实验名称:八位数码管旳设计实验目旳:制作八位数码管实验背景:led数码管(LED Segment Displays)由多种发光二极管封装在一起构成“8”字型旳器件,引线已在内部连接完毕,只需引出它们旳各个笔划,公共电极。
数码管事实上是由七个发光管构成8字形构成旳,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表达。
其重要用于重要用于楼体亮化,广告招牌、高档旳DISCO、酒吧、夜总会、会所旳门头广告牌等。
特别适合应用于广告牌背景、立交桥、河、湖护栏、建筑物轮廓等大型动感光带旳夜景照明之中,可产生彩虹般绚丽旳效果。
用护栏管装饰建筑物旳轮廓,可以起到突出美彩亮化建筑物旳效果。
事实证明,它已经成为照明产品中旳一只奇葩,绽放在动感都市。
本次设计对于八位数码管进行了设计,提供了必要旳旳模版,进行了设计。
实验环节:一,前期准备:新建文献夹命名为“八位一体数码管”,打开软件,新建PCB工程命名为“八位一体数码管”,新建原理图和PCB均命名为“八位一体数码管”二,开始制作:在原理图按照八位数码管原理图构建,使用常用元件库封装,如图所示:检查无误后编译如下图:使生效后如图封装管理如下图:确认无误后进行导入如图:进行PCB元件旳布局,如图:按照实物合理布局,之后调节后进行布线如图:布线完毕后如图所示:完毕后进行规则检测:检查成果:模拟效果:封装库:BOM清单:设计目旳与心得体会我对此前所学旳知识加深了记忆,对所用旳软件更加熟悉。
通过设计实验,我学会独立思考,查询资料去解决实验中所遇到旳问题。
设计旳过程是一种很漫长旳过程,会遇到诸多问题,一方面固然是发现问题,然后解决问题,再发现问题,再解决问题,最后完毕本次设从刚开始旳原理图到PCB设计,我发现了自己诸多局限性之处。
有一点是我们在设计必须认真、细心。
有时候就是小小旳一点问题,不管干什么,都要一心一意,才干成功,成功不也许一帆风顺,肯定要经历一段风雨,我们要相信努力了一定会有收获。
EDA 数码管动态扫描电路

数码管动态扫描电路设计试设计一个数码管动态显示的扫面控制电路。
它能将8路位二进制数显示在实验箱上的8个数码管上。
要求:当输入为‘0000’----‘1001’时显示为0—9,‘1010’---‘1111’时显示ABCDEF字母。
先将该控制电路分为几个模块,然后用VHDL的结构化描述方式实现该电路。
3—8译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LIN_EDA ISPORT(ABC:IN STD_LOGIC_VECTOR(2 DOWNTO 0);BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END;ARCHITECTURE ONE OF LIN_EDA ISBEGINPROCESS(ABC)BEGINCASE ABC ISWHEN "000"=>BT<="00000001";WHEN "001"=>BT<="00000010";WHEN "010"=>BT<="00000100";WHEN "011"=>BT<="00001000";WHEN "100"=>BT<="00010000";WHEN "101"=>BT<="00100000";WHEN "110"=>BT<="01000000";WHEN "111"=>BT<="10000000";WHEN OTHERS=>NULL;END CASE;END PROCESS;END;3位二进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY OK_B ISPORT(CLK1:IN STD_LOGIC;Q:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0));END;ARCHITECTURE BBC OF OK_B ISSIGNAL Q1:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLK1'EVENT AND CLK1='1' THENQ1<=Q1+1;END IF;END PROCESS;Q<=Q1;END;7段译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECL7S ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END;ARCHITECTURE ONE OF DECL7S ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000"=>DECL7S<="0111111";WHEN "0001"=>DECL7S<="0000110";WHEN "0010"=>DECL7S<="1011011";WHEN "0011"=>DECL7S<="1001111";WHEN "0100"=>DECL7S<="1100110";WHEN "0101"=>DECL7S<="1101101";WHEN "0110"=>DECL7S<="1111101";WHEN "0111"=>DECL7S<="0000111";WHEN "1000"=>DECL7S<="1111111";WHEN "1001"=>DECL7S<="1101111";WHEN "1010"=>DECL7S<="1110111";WHEN "1011"=>DECL7S<="1111100";WHEN "1100"=>DECL7S<="0111001";WHEN "1101"=>DECL7S<="1011110";WHEN "1110"=>DECL7S<="1111001";WHEN "1111"=>DECL7S<="1110001";WHEN OTHERS=>NULL;END CASE;END PROCESS;END;顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sccbc_led ISPORT(B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);BT1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END;ARCHITECTURE CNT_ABC OF sccbc_led IS COMPONENT LIN_EDAPORT(ABC:IN STD_LOGIC_VECTOR(2 DOWNTO 0);BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT;COMPONENT OK_BPORT(CLK1:IN STD_LOGIC;Q:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0)); END COMPONENT;COMPONENT DECL7SPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END COMPONENT;COMPONENT ABC_HPORT(B1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT INTEGER RANGE 0 TO 15 );END COMPONENT;SIGNAL B:STD_LOGIC;SIGNAL A2:INTEGER;BEGINU1:ABC_H PORT MAP(B1=>B,A1=>A2);U2:DECL7S PORT MAP(A=>A2,LED7S=>LED7S1);U3:OK_B PORT MAP(CLK1=>CLK,Q=>B);U4:LIN_EDA PORT MAP(ABC=>B,BT=>BT1);END ARCHITECTURE CNT_ABC ;数据选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ABC_H ISPORT(B1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT INTEGER RANGE 0 TO 15 );END;ARCHITECTURE ABC_C OF ABC_H ISBEGINPROCESS(B1)BEGINCASE B1 ISWHEN "0000"=>A1<=0; WHEN "0001"=>A1<=1; WHEN "0010"=>A1<=2; WHEN "0011"=>A1<=3; WHEN "0100"=>A1<=4; WHEN "0101"=>A1<=5; WHEN "0110"=>A1<=6; WHEN "0111"=>A1<=7; WHEN "1000"=>A1<=8; WHEN "1001"=>A1<=9; WHEN "1010"=>A1<=10; WHEN "1011"=>A1<=11; WHEN "1100"=>A1<=12; WHEN "1101"=>A1<=13; WHEN "1110"=>A1<=14; WHEN "1111"=>A1<=15; WHEN OTHERS=>NULL; END CASE;END PROCESS;END;。
单片机课程设计--- 单片机动态扫描显示

单片机课程设计--- 单片机动态扫描显示哈尔滨学院工学院电子信息工程专业课程设计报告专业(电子)课程设计报告题目:单片机动态扫描显示院(系):工学院专业:电子信息工程年级:2010级姓名:黄任军学号:10043112指导教师:刘宏老师2013 年12 月××日电子信息工程专业10级学生单片机原理课程设计任务书(2013年季)摘要:本次课程设计是基于AT89S52单片机控制的8位LED动态扫描显示电路的设计及Proteus仿真。
首先本文对AT89S52单片机原理做了介绍,然后对max7219进行了概括,分析了动态扫描显示系统的工作原理,经过分析,设计出能实现动态扫描显示系统的硬件原理图和软件流程图。
最后利用Proteus仿真软件对该系统进行仿真,达到了预期效果。
关键词:AT89S52系统;max7219驱动;Proteus仿真。
1. 课程设计目的研究基于单片机控制动态扫描显示系统的工作原理,选用合适的单片机控制七段码显示器,运用动态扫描的原理和特点,设计相应的硬件电路,并配合相应的软件编程,使用Proteus仿真软件和伟福仿真软件,实现动态扫描显示。
具体目的与内容有:(1)掌握七段码显示系统的工作原理;(2)掌握一种单片机应用,如AT89S52;(3)掌握Keil程序设计软件;(4)掌握Proteus仿真软件;(5)设计相应的硬件电路;(6)编写相应的软件程序;使用Proteus仿真软件,实现动态扫描显示。
2. 系统结构及硬件电路设计2.1 系统的结构框图及工作原理图2.1 系统结构框图本系统采用单片机AT89S52为显示屏的控制核心,系统主要由四个模块:电源模块、AT89S52最小系统、LED 驱动模块、LED 显示模块构成:电源模块作为整个系统的各个模块提供稳定的电源。
AT89S52最小系统作为控制系统,控制着整个系统的功能实现。
max7219提供驱动和以及与单片机的控制接口。
十进制动态显示电路的设计、仿真及实验
课题二十进制数的动态显示电路设计、仿真与实验学习目标:熟悉常用MSI组合逻辑器件的功能和应用,掌握时序逻辑电路的一般设计方法;学会利用EDA软件(Proteus)对十进制数的动态显示电路进行仿真;掌握动态显示电路的安装及调试方法。
一、任务与要求设计由JK触发器、数据选择器、译码器和LED数码管构成的动态显示电路,研究十进制数的动态显示方法,学会MSI器件的应用设计;用Proteus软件仿真;实验测试逻辑功能。
具体要求如下:(1)用一个显示译码器驱动4个LED数码管,轮流显示4位十进制数。
(2)每位十进制数以8421BCD码形式输入。
(3)写出设计步骤,画出设计的逻辑电路图。
(4)对设计的电路进行仿真、修改,使仿真结果达到设计要求。
(5)安装并测试电路的逻辑功能。
二、课题分析及设计思路(1)动态显示电路的设计思路分析以上设计任务与要求,动态显示电路的实现框图如下:图1 动态显示电路的实现框图(2)控制电路的设计思路控制电路的主要功能是在CP 脉冲的作用下,控制“数据选择电路”依次输出4位8421BCD 码,并同时控制对应LED 数码管的阴极,使其接地而正常显示。
因此,控制电路的设计框图如下:图2 控制电路的实现框图图2中,2位二进制计数器的输出状态依次为00、01、10、11,作为“数据选择电路”的控制信号;同时也作为2位二进制译码器的输入信号,使其四个输出端依次为低电平。
有关“2位二进制计数器”的设计详见理论课教材。
三、集成电路及元件选择“数据选择电路”部分采用两片数据选择器74LS153,“显示译码电路”部分采用74LS48或CD4511,“控制电路”部分采用集成JK 触发器74LS76构成计数器,2位二进制译码器采用74LS139。
此外,LED 数码管采用共阴极数码管。
四、原理图绘制与电路仿真用proteus 软件绘制出该电路的原理图,对所设计的电路进行仿真实验。
在仿真实验过程中,要求能够实时改变4位十进制数,并验证电路的逻辑功能是否达到设计要求。
八位十进制数字频率计设计报告
主控单元设计
MCU选型 1
选择功能强大、低功耗的ARM Cortex-M处理器
时钟电路 2
采用高精度晶振提供稳定的系统时钟
外围接口 3
包括GPIO、ADC、定时器、串口等外设接口
电源管理 4
整合电源调节电路以提供稳定电源 主控单元是该频率计的核心,负责采集、处理和显示数据。我们采用性能强劲、功耗低的ARM Cortex-M系列MCU作为主控芯片,并设计高精度时钟电路, 同时集成丰富的外设接口和电源管理电路,以确保系统的稳定运行。
对设计、制造、使用环境等各个环节进行全面的可靠性分析 和评估。
识别可能出现的失效模式,并采取相应的防范措施。
3 加速寿命测试
通过加速寿命试验,预测产品的实际使用寿命。
4 环境适应性
评估产品在不同环境条件下的性能和可靠性表现。
成本分析
主要原材料成本 制造成本 研发成本 营销及管理成本
占总成本64% 占总成本25% 占总成本5% 占总成本6%
关键元器件选型
集成电路
根据系统功能需求,选择合适的微控 制器、放大器、逻辑门电路等集成电 路器件。
无源元件
选用合适的电阻、电容、电感等无源 元件,满足电路的电压、电流和频率 需求。
显示模块
根据显示内容和环境选择合适的LCD 、LED或OLED显示器件。
电源模块
选用适合的变压器、稳压器、开关电 源等电源系统元件。
系统可以在相对湿度10%至95%的环 境中稳定运行,确保设备在潮湿环境中 也能可靠使用。
海拔适应
设计可在海拔0-5000米的高度环境中 正常工作,适应不同地理环境的使用需 求。
振动测试
系统通过严格的振动测试,能够承受5500Hz范围内的随机振动,抗击震能力 强。
实验报告 - - 实验七 - 八段数码管显示实验
实验报告 - - 实验七 - 八段数码管显示实验EDA实验报告之实验七八段数码管显示实验1、实验目的1)了解数码管动态显示的原理。
2)了解用总线方式控制数码管显示2、实验要求:利用实验仪提供的显示电路, 动态显示一行数据.提示:把显示缓冲区(例如可为60H~65H作为缓冲区)的内容显示出来,当修改显示缓冲区的内容时,可显示修改后的内容(为键盘扫描、显示实验做准备)。
3、实验说明本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2021倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H,位码输出地址为0X002H。
此处X是由KEY/LED CS 决定,参见地址译码。
做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。
以便用相应的地址来访问。
例如,将KEY/LED CS接到CS0上,则段码地址为08004H,位码地址为08002H。
七段数码管的字型代码表如下表:a ----- f| |b | | ----- | g | e| |c -----d 。
h显示字形 g f e d c b a 段码 0 0 1 1 1 1 1 1 3fh 10 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 5bh 3 1 0 01 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 01 6dh 6 1 1 1 1 1 0 1 7dh 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h b1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h d 1 0 11 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 0 0 0 1 71h4、原理图及连线5、实验内容1) 使用仪器、仪表,开发平台型号本实验用到了WAVE 6000软件平台,电脑一台,LAB6000实验箱,示波器,若干连线,串行数据线。
8位8段led数码管动态扫描显示
项目名称:8位8段LED数码管动态扫描显示班级:09电二姓名:解健学号:09020313一.实验目的1.掌握数码管动态扫描显示原理及实现方法。
2.掌握动态扫描显示电路驱动程序的编写方法。
二.实验电路三.元器件元器件编号元器件名称说明U2 7445 集电极开路的BCD十进制译码器/驱动器U3 74HC245 8位总线驱动器U1 AT89C52 AT89C52单片机RP1 RESPACK8 具有公共端的排电阻7SEG-MPX8-CC-BLUE 共阴极8位7段LED蓝色显示器四.实验步骤第一步:先在Proteus软件中设计仿真电路原理图。
第二步:再在Keil C51软件中编写且编译程序,程序后缀必须是.c。
然后在打开的“Option for Target‘Target 1’”选项卡,“Target”标签下频率设置为“11.0592”,“Output”标签下,将“Creat HEX File”项打勾选中,设置生成一个.hex文件。
第三步:接着将.hex文件导入原理图中U1芯片。
双击U1,打开Edit Component对话框,选择生成的hex文件。
第四步:最后观察设计的电路图是否能得到预想的效果,若不能,进行检查,找到毛病且纠正。
流程图实验现象:显示器点亮所有段,持续约1s ,然后灭显示器,持续2s,最后显示“hello-93”,保持。
附:程序#include<intrins.h> #include<REGX52.H>#define TRUE 1 #define dataPort P0 #define ledConPort P2unsigned char code ch[8]={0x76,0x79,0x38,0x38,0x3f,0x40,0x6f,0x4f}; void time(unsigned int ucMs); void main(void) NNNN YYYY开始 选择段点亮所有位 Counter=0 I=0I++I<30灭显示器延时选择段按数值点亮位Counter=0延时Counter<8停止结束Counter++Counter<8Counter++延时{unsigned char i,counter=0;for(i=0;i<30;i++){for(counter=0;counter<8;counter++) { ledConPort=counter;dataPort=0xff;time(5);}}ledConPort=0xff;time(2000);while(TRUE){for(counter=0;counter<8;counter++){ ledConPort=counter;dataPort=ch[counter];time(5);}}}void delay_5us(void){_nop_();_nop_();}void delay_50us(void){ unsigned char i;for(i=0;i<4;i++){delay_5us();}}void delay_100us(void){delay_50us();delay_50us();}void time(unsigned int ucMs) {unsigned char j;while(ucMs>0){for(j=0;j<10;j++) delay_100us();ucMs--;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计报告课程名称电子技术基础I任课教师设计题目8位十进制数动态扫描显示控制电路班级8位十进制数数码动态扫描电路设计简介:所谓动态扫描显示,就是让各位LED按照一定的顺序轮流地发光显示。
只要每秒扫描次数大于24次以上,就观察不到闪烁现象,人眼看起来很稳定。
静态扫描显示与动态显示相比,有显著降低LED功耗,大大减少LED的外部引线等优点。
目前动态扫描显示技术已经被广泛应用于新型数字仪表、智能仪器和智能显示屏中。
本次课程实践中运用QuartusII软件,采用VHDL文本设计和原理图相结合的层次化方式实现数码8位动态扫描显示电路设计。
首先,分别用VHDL语言编写8位数码扫描显示电路程序和分频器程序,作为底层文件;顶层文件用原理图的设计方法,调用底层文件生成的符号,从而实现动态扫描显示。
用VHDL设计一个8位数码扫描显示电路,利用QuartusII9.0进行编辑输入、编译及时序仿真。
其中,由于分频器的分频系数过大时,在仿真波形上很难看出波形的变化,如本设计是从100MHz分频到1KHz,分频系数为一万,所以可以通过改变减小分频系数,如改为10分频,就得到变化的波形,来验证数码动态扫描显示电路设计的正误。
一、工作原理1、8位动态扫描显示的工作原理:输入信号:时钟信号CLK。
输出控制信号:段控制信号SG[6..0];位控制控制信号BT[7..0]。
8位数码管,其中每个数码管的8个段h、g、f、e、d、c、b、a(h是小数点)都分别连接在一起,8个数码管分别由8个选通信号k1~k8来选择。
被选通的数码管显示数据,其余关闭。
如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅为k3对应的数码管显示来自段信号端的数据,而其他7个数码管呈现关闭状态。
根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1~k8分别被选通,与此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
扫描显示程序中CLK是扫描时钟;SG为7段控制信号,由高到低为分别接g、f、e、d、c、b、a7个段;BT是位选控制信号,接下图(1)中的8个位选通信号:k1、k2…k8。
程序中CNT8是一个3位计数器,作扫描计数信号,有进程P2生成;进程P3是7断译码查表输出程序,进程P1是对8个数码管选通的扫描程序,例如当CNT8等于“010”时,K3对应的数码管被选通,同时,H被赋值3,再有进程P3译码输出“1001111”,显示在数码管上即为“3”;当CNT8扫变时将能在8个数码管上显示数据:12345678。
图(1)8位数码电路2、七段数码显示译码器的原理:7段数码是纯组合电路。
通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是二进制的,所以输出表达都是十六进制的。
为了满足十六进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA/CPLD中来实现。
注意,这里没有考虑表示小数点的发光管,如果要考虑需要增加h段,并且段输出SG[6..0]改为SG[7..0]。
本实验采用共阳数码管,其电路图见下图(2)图(2)共阴和共阳数码管及其电路3、分频器的工作原理:分频器的原理也就是计数器,对时钟进行偶数分频,使占空比为50%。
只要使用一个计数器,在计数器的前一半时间使输出为高电平,在计数器的后一半时间使输出为低电平,即可得到偶分频时钟。
二、功能模块1.8位数码扫描电路模块:CLK为时钟信号,SG为段控制信号,BT为位控制信号。
功能是进行8位数码管的控制和7段数码显示的控制。
2.分频器模块:CLKIN时钟信号输入,CLKOUT时钟信号输出。
功能是对时钟信号进行分频。
3.LED显示模块原理:LED有段码和位码之分,所谓段码就是让LED显示“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。
位码也就是LED的显示使能端,对于共阳极的LED而言,高电平使能。
要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应8位段码。
虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50HZ,将看不到闪烁现象。
本次试验不显示小数点,可把SG段控制信号向量变为8位(最高位代表小数点),并在最高位设置成恒0低电平。
三、总体设计用VHDL语言编写8位数码扫描显示电路程序和分频器程序,作为底层文件;顶层文件用原理图的设计方法,调用底层文件生成的符号,从而实现动态扫描显示。
模块设计图:四、模块仿真1.8位数码扫描电路模块仿真图2. 分频器仿真图五、总体仿真六、硬件实现1.引脚锁定将设计编程下载进选定的目标器件中,如EP1C6,作进一步的硬件测试,查询实验指导书可得8位十进制数数码动态扫描电路各引脚与目标器件中所对应的引脚:将CLK与目标器件EP1C6的第28脚相接,将m[6..0]的m[0]~m[5]按顺序与目标器件EP1C6的第164~169脚相接,m[6]接引脚号第173。
n[7..0]按顺序与目标器件EP1C6的第162,161,160,159,158,141,140,139相接。
2.锁定好引脚后下载到实验箱并进行测试。
七、结论采用扫描方式实现LED数码管的动态显示是,控制好数码管之间的时间延时是很重要的,根据人眼视觉暂留原理,LED数码管每秒导通24次以上,人眼就无法分辨LED数码管短暂的不亮,认为一直点亮的。
动态扫描显示方式是利用人眼的视觉暂留效应,把8个数码管按一定顺序(从左至右或者从右至左)进行点亮。
然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。
因此我们只要给数码管这样一个扫描频率,就可以实现两个以上的数码管同时点亮。
而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。
事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。
八、心得体会:通过此次动态扫描电路的设计,我们进一步学习了VHDL基本逻辑电路的综合设计应用,掌握VHDL语言的语法规范,掌握时序电路描述方法,掌握多个数码管动态扫描显示的原理及设计方法。
同时也熟悉掌握了Quartus II 的使用方法以及使用的各种流程。
明白了多个数码管动态扫描显示,是讲所有的数码管并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描频率大于50Hz,将看不到闪烁现象。
课程设计是培养学生综合能力,运用所学知识、发现、提出、分析和解决问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体实训和考查过程。
回顾这次课程设计,我们小组成员感慨万千,的确,从选题到定稿,从理论到实践,在这些日子里,我学到了很多东西,不仅可以复习以前学的知识,而且学到了很多书本上学不到的知识。
通过这次课程设计是我懂得如何把理论和实际相结合起来,从理论中的结论,把理论应用到实践中,才能真正的为社会服务,从而提高自己的实际动手能力和思考能力。
这次课程设计是对这学期学过的数字电子技术基本知识的应用,本来对数字电子技术中的有些东西就不太熟悉,但是通过这次实验报告,更深刻的了解了各种芯片的引脚、时序图、逻辑图以及功能表,能够用各种芯片以及触发器等组建逻辑电路。
这次的设计虽然短暂,但却是我们第一次自己动手设计的电路。
在设计过程中,也遇到了书本中不曾学到的情况。
这次的设计虽然短暂,但却是我们第一次自己动手设计的电路。
在设计过程中,也遇到了书本中不曾学到的情况。
在这次实验中遇到的问题总结和吸取的经验如下:1.在文件名必须与VHDL文件中的设计实体名保持一致。
2.掌握好电路原理图的例化及调出方式。
3.引脚锁定时,注意各个引脚是否连接正确及接触是否良好。
这次我们所做的实验是8位十进制数动态扫描显示控制电路,那何为扫描显示呢?扫描显示是通过把画面划分成很多很多帧来实现的。
每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。
刷新频率越快,由于人眼的视觉停留,就会得到想要的结果。
这就像是拍摄电影一样,在拍摄武打动作时,实际中两人的动作是很慢的,但播放时,人为的把速度放快,才得到了我们日常生活中喜欢的那种快动作效果。
通过此次实验报告我们小组也体会到数字电子技术对当代社会发展的重要性。
这次实验也教会了我们许多:1.学会小组之间的分工与合作。
小组之间分工要明确,这是实验成功的保障、2.遇事多动脑,并且注意学习其他人的长处,吸收老师和教导者的经验。
3.提高了动手能力。
这次实验报告,使我们动手能力得到很大的提高。
在生活中遇到一些小事情时自己动手解决,这样可以增强我们的自信心,对我们将来去适应陌生事物是有很大帮助的。
这次实验报告是短暂的,但留给我们的感受是深刻的。
我们没必要在怜惜什么,以为我已得到很多了。
自己现在该做的,就是当认识到自己的不足时,那就该如何去改造自己,如何完善自己。
大学的生活是丰富多彩的,大学中每个人要完成的事情是很多的,但那需要每个人的认真投入。
每个人不必再感叹世事的沧桑,不必遗憾岁月的来去匆匆,我们要做的那就是在这有限的时间内,完成自己应该完成的事,经历自己应该经历的事情。
九、附录代码:1.8位数码扫描电路模块VHDL语言LIBRARY IEEE;——库函数USE IEEE.STD_LOGIC_1164.ALL;——定义STD_LOGIC数据类型及相应运算USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY smdl IS——smml 为实体名PORT (CLK:IN STD_LOGIC;——时钟SG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);——段显示控制(gfedcba)BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));——数码管地址选择控制END;ARCHITECTURE one OF smdl ISSIGNAL CN:STD_LOGIC_VECTOR(2 DOWNTO 0);——变量,计数SIGNAL H:INTEGER RANGE 0 TO 9;BEGINP1:PROCESS(CN)——进程,CN变化时启动进程BEGINCASE CN ISWHEN"000"=>BT<="00000001";H<=1;——控制第一位数码管,并置数1WHEN"001"=>BT<="00000010";H<=2;WHEN"010"=>BT<="00000100";H<=3;WHEN"011"=>BT<="00001000";H<=4;WHEN"100"=>BT<="00010000";H<=5;WHEN"101"=>BT<="00100000";H<=6;WHEN"110"=>BT<="01000000";H<=7;WHEN"111"=>BT<="10000000";H<=8;WHEN OTHERS=>NULL;END CASE;END PROCESS P1;——结束进程P1P2:PROCESS(CLK)——进程,CLK变化时启动进程BEGINIF CLK'EVENT AND CLK='1' THEN CN<=CN+1;——当上升沿时,进行计数 END IF;END PROCESS P2;——结束进程P2P3:PROCESS(H)BEGINCASE H ISWHEN 0=>SG<="0111111";——“0”的输入码WHEN 1=>SG<="0000110";——“1”的输入码WHEN 2=>SG<="1011011";——“2”的输入码WHEN 3=>SG<="1001111";——“3”的输入码WHEN 4=>SG<="1100110";——“4”的输入码WHEN 5=>SG<="1101101";——“5”的输入码WHEN 6=>SG<="1111101";——“6”的输入码WHEN 7=>SG<="0000111";——“7”的输入码WHEN 8=>SG<="1111111";——“8”的输入码WHEN 9=>SG<="1101111";——“9”的输入码WHEN OTHERS=>NULL;END CASE;END PROCESS P3;——结束进程P3END;2.分频器VHDL语言LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenping ISPORT( CLKIN:IN STD_LOGIC; --时钟信号输入CLKOUT:OUT STD_LOGIC); --时钟信号输出END fenping;ARCHITECTURE one OF fenping ISSIGNAL DATA:INTEGER RANGE 0 TO 10;——定义动态扫描时钟信号输入SIGNAL Q:STD_LOGIC;——定义动态扫描时钟信号输出BEGINPROCESS(CLKIN)BEGINIF RISING_EDGE(CLKIN) THENIF(DATA=9) THEN——十分频DATA<=0;Q<=NOT Q;ELSEDATA<=DATA+1;END IF;END IF;CLKOUT<=Q;END PROCESS;——结束进程END one;。