飞思卡尔数码管循环显示
PLC设计数码管循环显示
设计任务及指标:用LED数码管间隔显示数字,按下S0依次间隔2s循环显示0~9十个数字,按S1依次间隔2s显示0~9中奇数,5秒后,依次间隔2s显示0~9中偶数,并且实现奇偶的循环。
在显示的过程中,只要有一键按下,就立即实现该键的功能,且计数初值为相应循环的初值。
设计思路:设计可以分为循环模式切换的控制部分、间隔2s的循环控制部分、编码部分和输出部分四大模块。
1.循环模式切换的控制部分:定义:X000:0~9循环X001:奇偶循环M200:用来切换显示模式的中间继电器M203:用来恢复初值的中间继电器工作过程:按下X000时,M200不得电,M200的触点不工作,实现0~9循环的所有中间继电器接通,并且在X000的启动下,其中的显示0的中间继电器M0开始工作;当按下X001时,M200得电,M200的触点工作,使奇偶循环的所有中间继电器接通,实现切换。
同时,当X000与X001中只要任意一个按下时,M203得电,M203的常闭触点断开,使第2~10组控制显示的中间继电器与时间继电器失电,从而保证只有第一组能工作,防止在切换过程中出现两组同时工作导致乱码。
梯形图如下:2.间隔2s的循环控制部分:定义:控制显示的部分M0显示0、M1显示1、M2显示2、M3显示3、M4显示4、M5显示5、M6显示6、M7显示7、M8显示8、M9显示9;M10显示1、M11显示3、M12显示5、M13显示7、M14显示9、M15显示0、M16显示2、M17显示4、M18显示6、M19显示8;间隔2s的循环部分:T0~T9的延迟时间为2s,T10的延迟时间为5s ;工作过程:起动时按下X000,M0开始工作,显示0,T0也开始工作;2s后T0的常开触点闭合,M1开始工作,显示1,同时M1的常闭触点断开,使得M0失电。
重复上述过程,即可实现0~9的循环显示;此时按下X001,M200、M203工作,M203的常闭触点断开使M1~M9、M11~M19、T1~T9失电,M200的常开触点闭合,常闭触点断开,使得M0~M9一直处于断开,M10~M19接通;与此同时,X001按下使得M10上电显示1,其工作过程与0~9循环时一样,区别在于此时T4处于断开T10接通代替T4工作,以此来实现奇偶变换时5s 的延时。
飞思卡尔程序调试技巧
一、前言调试程序,是软件开发过程中的一个必不可少的环节。
这篇帖子,匠人试着来整理一下一些调试的技巧。
说到“技巧”,这个词自从被所长批臭之后,匠人就吓得不敢再提,生怕一不小心就暴露了思想的浅薄和眼光的局限,呵呵。
所以咱们不叫“技巧”,干脆低调点,就叫“雕虫小技”吧。
这里所讨论的“调试”技巧,有些是必须结合开发工具本身的功能来实现,而有些可以通过烧录芯片来验证。
各种开发工具,提供的功能多少强弱也不尽相同,这些方法也未必都能套用。
仅供参考吧。
最后说明一下,这是没有草稿的帖子,匠人仍然以不定期连载的方式,边写边发边改。
可能结构会比较混乱。
欢迎大家一起参与讨论。
二、磨刀不误砍柴功在调试之前,需要掌握以下一些基本功:1、熟悉当前的开发(调试)环境,比如:设置断点、单步运行、全速运行、终止运行,查看RAM、查看堆栈、查看IO口状态……总之,要熟练掌握基本操作的方法,并深刻了解其中意义。
2、了解芯片本身的资源和特性。
3、了解一点汇编语言的知识。
(本来匠人是准备写“精通”的,但考虑到现状,还是“放低”这方面的要求罢了)。
4、掌握基本的电路知识和排错能力。
(软件调试有时也会牵涉到硬件原因。
总不能连三极管的好坏都不能识别吧?)5、万用表、示波器、信号发生器……这些工具总该会用吧?6、搜索、鉴别资料的能力。
(内事问百度、外事问古狗、有事没事上21ic网)7、与人沟通,描述问题的能力。
(调试36计的最后一计——就是向他人讨教。
当然,你得把话说明白才行)差不多了,如果上述7把砍柴刀磨好了,就可以开始调试了。
接下来,请调入你的程序……三、优先调试人机界面面对程序中的一大堆模块,无从下手是吗?好吧,匠人告诉你,先调显示模块,然后是键盘。
为什么要先调显示模块?道理很简单,我们说“眼睛是心灵的窗户”,同样,“显示是程序的窗户”。
一旦把显示模块调试好了,就可以通过这个窗口,偷窥(天呐,这两个居然是敏感字!)程序内部的数据和状态了。
然后紧接着,就是调试键盘模块。
数码管循环数字显示器
1.2 设计目标
数码管循环数字显示器主要是以四个数字集成电路和一个七段共阴数码管构成以及相关器件构成,实现0~9十个数字的循环输出。
5 结论...........................................18
6 致谢...........................................19
7 参考文献.......................................20
附录...........................................21
3.2 特殊器件的介绍................................9
4 系统调试.......................................15
4.1 调试环境.....................................15
4.2 硬件调试.....................................16
课程设计说明书
课程设计名称:
电子技术课程设计
题目:
数码管循环数字显示器
学院:
电气与电子信息学院
学生姓名:
专业:
电气工程及其自动化
学号:
指导教师:
日期:2016年 7 月 4 日
数码管循环数字显示器
摘要:
本次课程设计是以电子技术为基础的数码管循环数字显示器,该设计实现了循环显示0~9十个数字。电路主要是以四个数字集成电路和一个七段共阴数码管构成。555定时器构成多谐振荡器作为电路的脉冲发生器,74LS161和74LS00中的一个与非门构成的计数器,实现对脉冲的计数和循环,最后是由74HC4511七段数码显示译码器和七段共阴数码管构成的译码显示部分,将电路的运行结果通过数码管显示出来。
单只数码管循环显示0~9教学文稿
项目一:单只数码管循环显示0~9一、设计要求:用汇编语言编写程序实现51单片机控制1只数码管,循环显示0~9。
并用仿真软件仿真出实验结果。
最后,用51单片机开发板实现一支数码管循环显示0到9。
二、设计原理:数码管显示原理:我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
本实验用到的共阳极0到9编码:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HP0口:P0.0—P0.7: 双向I/O (内置场效应管上拉),寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。
PO结构图如下:四、设计仿真图:五、源代码:ORG 0000HSJMP MAINORG 030HMAIN: MOV R1,#00HMOV A,R1D1: ANL A,#0FHMOV DPTR,#TABMOVC A,@A+DPTR ;查表MOV P0,A ;P0口输出,显示数字ACALL DELAYINC R1MOV A,R1 ;A加1CJNE A,#10,D1 ;判断A是否到达10LJMP MAIN ;当A达到10跳回主函数,重新赋值为0 DELAY: MOV R2,#05H ;延时D2: MOV R3,#0FFHD3: MOV R4,#0FFHDJNZ R4,$DJNZ R3,D3DJNZ R2,D2RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;数值1到9的共阳极编码END 六、结果:数码管循环显示0、1、2、3、4、5、6、7、8、9。
编写程序使实验板上八段数码管循环显示0 到9 字符
编写程序使实验板上八段数码管循环显示0 到9 字符1.八段数码管嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
结构八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母。
见图1。
图1 八段数码管的结构类型八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管。
工作原理以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。
电平信号按照dp,g,e…a 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表如下:表1 常用字符的段码表显示方式八段数码管的显示方式有两种,分别是静态显示和动态显示。
静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。
动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。
基础知识地址0x10000004为数码管的数据寄存器,控制数码管的段码输出.数码管扫描控制地址为0x10000006,8位访问Bit0 –控制数码管0 –低电平有效Bit1 –控制数码管1 –低电平有效Bit2 –控制数码管2 –低电平有效Bit3 –控制数码管3 –低电平有效Bit4 –控制数码管4 –低电平有效Bit5 –控制数码管5 –低电平有效实验说明1、制作LED字符与码段对应表unsigned char seg7table[16] = {/* 0 1 2 3 4 5 6 7*/0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e };2、扫描控制*((U8*) 0x02000006) = 0x3E; /* 使能第一个数码管 */段码输出*((U8*) 0x02000004) = seg7table[0]; /* 输出数据 0 */思考:简述LED的显示原理以及LED的显示办法静态显示和动态显示各有什么优缺点设计"HELLO"的码表,编写程序循环显示"HELLO"。
单只数码管循环显示0~9
单只数码管循环显示0-9报告设计题目:单只数码管循环显示0~9设计要求:单片机控制1只数码管,循环显示0~9需求分析:本设计要求单只数码管循环显示0~9,这里采用的是共阴极数码管。
让数码管显示数字的步骤为:1)使数码管的公共端接地(共阴极)上。
2)将显示码送到单片机的P0口,向数码管的各个段输出不同的电平,使单个数码管循环显示0-9这10个数字。
复位电路:在上电或复位过程中,控制CPU的复位状态:这段时间让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。
无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。
而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。
许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。
基本的复位方式单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
设计原理:一、数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
飞思卡尔单片机教程
注 : A/D模块的时钟频率要在500KHz和2MHz之间, 所以在选择分频因子时一定要注意。
采样时间选择
SMP [1 :0]
采样时间
00
2个 A/D时钟周期
01
4个A/D时钟周期
ATDclock= ( (BusClock) / (PRS+1) ) /2
10
8个A/D时钟周期
11
16个A/D时钟周期
设CCBCA = 000,转换序列从通道
0开始;ATD0DR0,
ATD0DR1,ATD0DR2存放转换结果
设CCBCA = 0 10,转换序列从通道 2开始。 仍然是ATD0DR0,
ATD0DR1,ATD0DR2存放转换结果
S8C 、S4C 、S2C 、S1C:定义转换队列的长度 。默认长度为4。 FIFO: 结果寄存器先进先出模式 。1=FIFO模式 ,转换结果是连续 存放的;0=非FIFO模式 ,转换结果放在对应的寄存器中。 FRZ1、FRZ0:背景调试冻结模式允许 。这两个控制位就决定了,
{ while (ATD1STAT0_SCF ==0) ;
ad_value [0] = ATD1DR0; ad_value [4] = ATD1DR4;//使用 PORTB= (byte) ad_value [4] ;
}}
void ATDInit(void)
{ATD1CTL2=0xC0;//AD模块上电,快速清零,无等待模式,禁止外部触发, 中断禁止 // ADPU AFFC AWAI ETRIGLE --- ETRIGP ETRIGE ASCIE ASCIF
PRS=3
ATD1CTL5=0xA4; //右对齐无符号 ,单通道采样 ,通道0
飞思卡尔s12单片机-动态数码管显示与键盘模块 共23页PPT资料
PTP=DisplayDecode[showdata[DisplayNumber]];
if(DisplayNumber==2) PTP&=0x7f;
switch(DisplayNumber) {
case 0:
PTT=0xfe;
break;
case 1:
PTT=0xfd;
break;
case 2:
PTT=0xfb;
利用视觉暂留现象,定时更改
位控制信息和段控制信息,得
到稳定的数字显示
位控制
多个LED同时点亮的电流都经 过公共端,MCU的IO无法承受 ,必须使用三极管
为了减小MCU的灌入电流,段 注:所有引脚都是低电平有效
控制端都连接了输出驱动器
74LS07
Page 4
第十四章数码管的显示与键盘识别 —数码管的显示
12 11 10 9 8 7 6 5 4 3 2 1 T3 P0 P5 T2 T1 P1 T0 P6 P2 P7 P3 P4
Page 5
第十四章数码管的显示与键盘识别 —数码管的显示
14.1.4 数码管显示软件设计
显示一位数字: const unsigned char DisplayDecode[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07, ~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71}; //0-9 ABCDEF
Page 6
第十四章数码管的显示与键盘识别 —数码管的显示
示例程序 //unsigned char showdata[4];
void Show(){
unsigned char DisplayNumber;
PLC设计数码管循环显示教学内容
P L C设计数码管循环显示设计任务及指标:用LED数码管间隔显示数字,按下S0依次间隔2s循环显示0~9十个数字,按S1依次间隔2s显示0~9中奇数,5秒后,依次间隔2s显示0~9中偶数,并且实现奇偶的循环。
在显示的过程中,只要有一键按下,就立即实现该键的功能,且计数初值为相应循环的初值。
设计思路:设计可以分为循环模式切换的控制部分、间隔2s的循环控制部分、编码部分和输出部分四大模块。
1.循环模式切换的控制部分:定义:X000:0~9循环 X001:奇偶循环M200:用来切换显示模式的中间继电器M203:用来恢复初值的中间继电器工作过程:按下X000时,M200不得电,M200的触点不工作,实现0~9循环的所有中间继电器接通,并且在X000的启动下,其中的显示0的中间继电器M0开始工作;当按下X001时,M200得电,M200的触点工作,使奇偶循环的所有中间继电器接通,实现切换。
同时,当X000与X001中只要任意一个按下时,M203得电,M203的常闭触点断开,使第2~10组控制显示的中间继电器与时间继电器失电,从而保证只有第一组能工作,防止在切换过程中出现两组同时工作导致乱码。
梯形图如下:2.间隔2s的循环控制部分:定义:控制显示的部分M0显示0、M1显示1、M2显示2、M3显示3、M4显示4、M5显示5、M6显示6、M7显示7、M8显示8、M9显示9;M10显示1、M11显示3、M12显示5、M13显示7、M14显示9、M15显示0、M16显示2、M17显示4、M18显示6、M19显示8;间隔2s的循环部分:T0~T9的延迟时间为2s,T10的延迟时间为5s ;工作过程:起动时按下X000,M0开始工作,显示0,T0也开始工作;2s后T0的常开触点闭合,M1开始工作,显示1,同时M1的常闭触点断开,使得M0失电。
重复上述过程,即可实现0~9的循环显示;此时按下X001,M200、M203工作,M203的常闭触点断开使M1~M9、M11~M19、T1~T9失电,M200的常开触点闭合,常闭触点断开,使得M0~M9一直处于断开,M10~M19接通;与此同时,X001按下使得M10上电显示1,其工作过程与0~9循环时一样,区别在于此时T4处于断开T10接通代替T4工作,以此来实现奇偶变换时5s的延时。
数码管显示控制设计—间隔1s依次显示数字0(PLC设计课件)
T5
TON
Time
IN
Q
PT
ET
T6
TON
Time
IN
Q
PT
ET
T7
TON
Time
IN
Q
PT
ET
T8
TON
Time
IN
Q
PT
ET
T9
TON
Time
IN
Q
PT
ET
二、梯形图设计-比较指令
M0.0
T#4S
T1
TON
Time
IN
Q
PT
ET
T1.ET
T1.ET
Q0.0
A灯
T#1S
T#2S
M0.0启动后,T1定时器开始定时,ET值开始发生变化;此时ET值小于2s,
01 01 01 01 01 01 01 01
16#55 T1.Q
16#aa T2.Q
16#ff
T3.Q 16#00
I0.1
T#1S
T1
T2
TON
Time
IN
Q
TON
Time
IN
Q
PT
ET
PT
ET
T#1S
T#1S
T3
TON
Time
IN
Q
PT
ET
项目四:数码管显示控制设计
任务一
间隔1s依次点亮各段
9876543210
9S 8S 7S 6S 5S 4S 3S 2S 1S
开 始
二、梯形图设计-知识回顾
M0.0 T1.Q
Q0.0
T2.Q T4.Q
T5.Q
使用多个定时器实现
数码管实现00到99循环工作原理
数码管实现00到99循环工作原理
数码管显示00到99的循环工作原理可以简述如下:
1. 数字生成:使用计数器或者其他逻辑电路,生成00-99的数字,输出给数码管控制电路。
2. 数码管控制电路:根据输入的数字,选择对应的数码管段进行驱动,使其显示出数字的相应部分。
3. 数码管段的驱动:数码管由七段或者十六段LED组成,分别对应数字的各个部分。
驱动电路会根据输入的数字,使不同的LED点亮或者熄灭,来显示出对应的数字。
4. 循环实现:当数码管驱动显示数字99时,计数器或者其他逻辑电路会自动将计数值归零,重新开始计数,从而实现00-99的循环工作。
需要注意的是,为了保证数码管的正常工作,需要适当控制每个LED的亮度和电流,以及使用适当的电容和电阻进行防抖降噪等措施。
同时,为了方便调试和使用,可以在控制电路中添加按钮或者旋转编码器等输入设备,以便手动调节显示数字。
(完整word版)数电实验实验报告(Quartus)数码管循环显示
实验101、结果:同时显示012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sweep ISPORT(clk,clr:IN STD_LOGIC; --clk输入时钟;clr状态清零a:OUT STD_LOGIC_VECTOR (6 DOWNTO 0); --输出数码管相同段sweep:OUT STD_LOGIC_VECTOR (5 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep;ARCHITECTURE sweep_arch OF sweep ISSIGNAL sweep_arc:STD_LOGIC_VECTOR (5 DOWNTO 0); --声明内部信号(选通控制信号)SIGNAL b:STD_LOGIC_VECTOR (6 DOWNTO 0); --声明内部信号(相同段信号)BEGINPROCESS(sweep_arc)BEGINIF (clk'event and clk='1') THENIF clr='0' THEN --状态清零sweep_arc <="011111" ; b <="0000000";ELSEcase sweep_arc IS --选通控制信号WHEN"011111" => sweep_arc <="111110";WHEN"111110" => sweep_arc <="111101";WHEN"111101" => sweep_arc <="111011";WHEN"111011" => sweep_arc <="110111";WHEN"110111" => sweep_arc <="101111";WHEN"101111" => sweep_arc <="011111";WHEN OTHERS => sweep_arc <="011111";END CASE;CASE sweep_arc IS --相同段信号WHEN"011111" => b <="1011011";WHEN"101111" => b <="0110011";WHEN"110111" => b <="1111001";WHEN"111011" => b <="1101101";WHEN"111101" => b <="0110000";WHEN"111110" => b <="1111110";WHEN OTHERS => b <="0000000";END CASE;END IF;END IF;sweep<=sweep_arc;a<=b;END PROCESS;END;仿真:管脚:2、(1)结果:循环显示:012345—123450—234501—345012—450123—501234—012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sweep2 ISPORT(clk:IN STD_LOGIC; --clk输入时钟sweep2:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --输出数码管相同段a:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep2;ARCHITECTURE arc_sweep2 OF sweep2 ISSIGNAL number:INTEGER RANGE 0 TO 6; --状态声明(6种状态,7种状态值)SIGNAL n:INTEGER RANGE 0 TO 6; --声明数码管(6个管,7个值)SIGNAL flag:INTEGER RANGE 0 TO 50; --同一状态运行次数BEGINPROCESS(clk)BEGINIF (clk'event AND clk='1') THENIF n>5 THENn<=0;ELSE n<=n+1;flag<=flag+1;END IF;IF flag>20 THENflag<=0;number<=number+1;IF number>5 THENnumber<=0;END IF;CASE number ISWHEN 0=> --状态0,输出012345CASE n ISWHEN 0=>sweep2<="011111"; a<="1111110";WHEN 1=>sweep2<="101111"; a<="0110000";WHEN 2=>sweep2<="110111"; a<="1101101";WHEN 3=>sweep2<="111011"; a<="1111001";WHEN 4=>sweep2<="111101"; a<="0110011";WHEN 5=>sweep2<="111110"; a<="1011011";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 1=> ----状态1,输出123450 CASE n ISWHEN 0=>sweep2<="011111"; a<="0110000";WHEN 1=>sweep2<="101111"; a<="1101101";WHEN 2=>sweep2<="110111"; a<="1101101";WHEN 3=>sweep2<="111011"; a<="1111001";WHEN 4=>sweep2<="111101"; a<="0110011";WHEN 5=>sweep2<="111110"; a<="1111110";WHEN OTHERS=>sweep2<="111111";WHEN 2=> --状态2,输出234501 CASE n ISWHEN 0=>sweep2<="011111"; a<="1101101";WHEN 1=>sweep2<="101111"; a<="1111001";WHEN 2=>sweep2<="110111"; a<="0110011";WHEN 3=>sweep2<="111011"; a<="1011011";WHEN 4=>sweep2<="111101"; a<="1111110";WHEN 5=>sweep2<="111110"; a<="0110000";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 3=> --状态3,输出345012 CASE n ISWHEN 0=>sweep2<="011111"; a<="1111001";WHEN 1=>sweep2<="101111"; a<="0110011";WHEN 2=>sweep2<="110111"; a<="1011011";WHEN 3=>sweep2<="111011"; a<="1111110";WHEN 4=>sweep2<="111101"; a<="0110000";WHEN 5=>sweep2<="111110"; a<="1101101";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 4=> --状态4,输出450123 CASE n ISWHEN 0=>sweep2<="011111"; a<="0110011";WHEN 1=>sweep2<="101111"; a<="1011011";WHEN 2=>sweep2<="110111"; a<="1111110";WHEN 3=>sweep2<="111011"; a<="0110000";WHEN 4=>sweep2<="111101"; a<="1101101";WHEN 5=>sweep2<="111110"; a<="1111001";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN 5=> --状态5,输出501234CASE n ISWHEN 0=>sweep2<="011111"; a<="1011011";WHEN 1=>sweep2<="101111"; a<="1111110";WHEN 2=>sweep2<="110111"; a<="0110000";WHEN 3=>sweep2<="111011"; a<="1101101";WHEN 4=>sweep2<="111101"; a<="1111001";WHEN 5=>sweep2<="111110"; a<="0110011";WHEN OTHERS=>sweep2<="111111";END CASE;WHEN OTHERS=>sweep2<="111111";END CASE;END IF;END PROCESS;END arc_sweep2;仿真:仿真时将循环次数改为1方便观察波形,共6种状态管脚:2、(2)结果:循环显示:012345—12345X—2345XX—345XXX—45XXXX —5XXXXX—XXXXXX—XXXXX0—XXXX01—XXX012—XX0123—X01234—012345代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sweep3 ISPORT(clk:IN STD_LOGIC; --clk输入时钟sweep3:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --输出数码管相同段a:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) --输出cat(数码管选通控制信号)端);END sweep3;ARCHITECTURE arc_sweep3 OF sweep3 ISSIGNAL number:INTEGER RANGE 0 TO 12; --状态声明(12种状态,13种状态值)SIGNAL n:INTEGER RANGE 0 TO 6; --声明数码管(6个管,7个值)SIGNAL flag:INTEGER RANGE 0 TO 50; --同一状态运行次数BEGINPROCESS(clk)BEGINIF clk'event AND clk='1' THENIF n>5 THENn<=0;ELSE n<=n+1;flag<=flag+1;END IF;IF flag>20 THENflag<=0;number<=number+1;END IF;IF number>11 THENnumber<=0;END IF;CASE number ISWHEN 0=> --状态0,输出012345 CASE n ISWHEN 0=>sweep3<="011111"; a<="1111110";WHEN 1=>sweep3<="101111"; a<="0110000";WHEN 2=>sweep3<="110111"; a<="1101101";WHEN 3=>sweep3<="111011"; a<="1111001";WHEN 4=>sweep3<="111101"; a<="0110011";WHEN 5=>sweep3<="111110"; a<="1011011";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 1=> --状态1,输出12345X CASE n ISWHEN 0=>sweep3<="011111"; a<="0110000";WHEN 1=>sweep3<="101111"; a<="1101101";WHEN 2=>sweep3<="110111"; a<="1101101";WHEN 3=>sweep3<="111011"; a<="1111001";WHEN 4=>sweep3<="111101"; a<="0110011";WHEN 5=>sweep3<="111111"; a<="1111110";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 2=> --状态2,输出2345XX CASE n ISWHEN 0=>sweep3<="011111"; a<="1101101";WHEN 2=>sweep3<="110111"; a<="0110011";WHEN 3=>sweep3<="111011"; a<="1011011";WHEN 4=>sweep3<="111111"; a<="1111110";WHEN 5=>sweep3<="111111"; a<="0110000";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 3=> --状态3,输出345XXX CASE n ISWHEN 0=>sweep3<="011111"; a<="1111001";WHEN 1=>sweep3<="101111"; a<="0110011";WHEN 2=>sweep3<="110111"; a<="1011011";WHEN 3=>sweep3<="111111"; a<="1111110";WHEN 4=>sweep3<="111111"; a<="0110000";WHEN 5=>sweep3<="111111"; a<="1101101";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 4=> --状态4,输出45XXXX CASE n ISWHEN 0=>sweep3<="011111"; a<="0110011";WHEN 1=>sweep3<="101111"; a<="1011011";WHEN 2=>sweep3<="111111"; a<="1111110";WHEN 3=>sweep3<="111111"; a<="0110000";WHEN 4=>sweep3<="111111"; a<="1101101";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 5=> --状态5,输出5XXXXX CASE n ISWHEN 0=>sweep3<="011111"; a<="1011011";WHEN 1=>sweep3<="111111"; a<="1111110";WHEN 2=>sweep3<="111111"; a<="0110000";WHEN 3=>sweep3<="111111"; a<="1101101";WHEN 4=>sweep3<="111111"; a<="1111001";WHEN 5=>sweep3<="111111"; a<="0110011";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 6=> --状态6,输出XXXXXX CASE n ISWHEN 0=>sweep3<="111111"; a<="1111110";WHEN 1=>sweep3<="111111"; a<="0110000";WHEN 2=>sweep3<="111111"; a<="1101101";WHEN 3=>sweep3<="111111"; a<="1111001";WHEN 4=>sweep3<="111111"; a<="0110011";WHEN 5=>sweep3<="111111"; a<="1011011";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 7=> --状态7,输出XXXXX0WHEN 1=>sweep3<="111111"; a<="1101101";WHEN 2=>sweep3<="111111"; a<="1101101";WHEN 3=>sweep3<="111111"; a<="1111001";WHEN 4=>sweep3<="111111"; a<="0110011";WHEN 5=>sweep3<="111110"; a<="1111110";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 8=> --状态8,输出XXXX01 CASE n ISWHEN 0=>sweep3<="111111"; a<="1101101";WHEN 1=>sweep3<="111111"; a<="1111001";WHEN 2=>sweep3<="111111"; a<="0110011";WHEN 3=>sweep3<="111111"; a<="1011011";WHEN 4=>sweep3<="111101"; a<="1111110";WHEN 5=>sweep3<="111110"; a<="0110000";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 9=> --状态9,输出XXX012 CASE n ISWHEN 0=>sweep3<="111111"; a<="1111001";WHEN 1=>sweep3<="111111"; a<="0110011";WHEN 2=>sweep3<="111111"; a<="1011011";WHEN 5=>sweep3<="111110"; a<="1101101";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 10=> --状态10,输出XX0123 CASE n ISWHEN 0=>sweep3<="111111"; a<="0110011";WHEN 1=>sweep3<="111111"; a<="1011011";WHEN 2=>sweep3<="110111"; a<="1111110";WHEN 3=>sweep3<="111011"; a<="0110000";WHEN 4=>sweep3<="111101"; a<="1101101";WHEN 5=>sweep3<="111110"; a<="1111001";WHEN OTHERS=>sweep3<="111111";END CASE;WHEN 11=> --状态11,输出X01234 CASE n ISWHEN 0=>sweep3<="111111"; a<="1011011";WHEN 1=>sweep3<="101111"; a<="1111110";WHEN 2=>sweep3<="110111"; a<="0110000";WHEN 3=>sweep3<="111011"; a<="1101101";WHEN 4=>sweep3<="111101"; a<="1111001";WHEN 5=>sweep3<="111110"; a<="0110011";WHEN OTHERS=>sweep3<="111111";WHEN OTHERS=>sweep3<="111111";END CASE;--END IF;END IF;END PROCESS;END arc_sweep3;仿真:仿真时将循环次数改为1方便观察波形,共12种状态管脚:。
数码管循环数字显示器
成绩课程设计说明书课程设计名称:电子技术课程设计题目:数码管循环数字显示器学院:电气与电子信息学院学生姓名:专业:电气工程及其自动化学号:指导教师:日期:2016年 7 月 4 日西华大学课程设计说明书数码管循环数字显示器摘要:本次课程设计是以电子技术为基础的数码管循环数字显示器,该设计实现了循环显示0~9十个数字。
电路主要是以四个数字集成电路和一个七段共阴数码管构成。
555定时器构成多谐振荡器作为电路的脉冲发生器,74LS161和74LS00中的一个与非门构成的计数器,实现对脉冲的计数和循环,最后是由74HC4511七段数码显示译码器和七段共阴数码管构成的译码显示部分,将电路的运行结果通过数码管显示出来。
关键词:循环显示,555定时器,多谐振荡器,计数器,译码显示Abstract:The curriculum design is based on electronic technology digital tube digital display,also designed to realize the circulation display 0 ~ 9. Mainly four digital integrated circuit and a seven segment digital tube, a total of Yin. Composition multivibrator as 555 timer circuit of the pulse generator, a nand gate in 74LS00 and 74LS161 counter that implementation of pulse count and cycle, the last is made up of 74HC4511 seven digital display decoder consisting of seven segment digital tube, a total of Yin decoding display section, to display circuit operation result.Keywords:SCAN,555 timer,multivibrator, counter, coding display目录1前言 (1)1.1设计背景 (1)1.2设计目标 (1)1.3实施计划 (1)1.4必备条件 (2)2总体设计方案 (3)2.1方案比较 (3)2.2 方案选择 (4)3单元模块设计 (5)3.1各单元模块介绍及电路设计 (5)3.2特殊器件的介绍 (9)4系统调试 (15)4.1调试环境 (15)4.2硬件调试 (16)5结论 (18)6致谢 (19)7参考文献 (20)附录 (21)1 前言当代电子技术的迅速发展,为人们的文化物质生活提供了优越的条件,数码摄像机,家庭影院,空调,电子计算机等,都是典型的电子技术应用实例,可谓琳琅满目,异彩纷呈。
数码管循环点亮
可编程逻辑控制器课程设计课程设计题目:数码管显示姓名:专业:电气自动化技术班级:10电气一班学号:20101114110指导教师:日期:2011.12.28目录一、实验目的二、实验器材三、实训要求四、实验原理五、心得体会一、实验目的掌握PLC的基本逻辑指令的应用熟练掌握PLC编程的基本方法和技巧熟练掌握编程软件的基本操作掌握PLC的外部接线及操作二、实验器材可编程序控制器1台实训控制台1个东方明珠模板1个基础实验模板1个计算机1台连接导线若干三、实训要求设计一个用PLC基本逻辑指令来控制数码管循环显示数字0、1、2、3……9的控制系统。
其制要求如下:程序进行后显示0,延时Ts;显示1,延时Ts;显示2……;显示9,延时Ts;再显示0,……,如此循环。
按停止按钮时,程序停止运行。
四、实验原理(一)梯形图(二)指令表(三)I/O分配X000:停止按钮;X001:启动按钮;Y001~Y007:数码管的a~g.(四)梯形图方案设计根据控制要求,可采用时间继电器连续输出并累积计时方法,这样可使数码管的显示由时间来控制,使编程的思路变得简单。
数码管的显示是通过输出点来控制的,显示的数字与各输出点的对应关系:a(Y001)b(Y002)c(Y003)d(Y004)e(Y005)f(Y006)g(Y007 );数字与各输出点的对应关系如下图所示:(五)实验现象按下启动按钮SB1,数码管依次循环显示数字0、1、2、3、4、5、6、7、8、9、0、1……,为了增加美观度,我将八段数码管分别接到东方明珠和彩灯控制模板上,则彩灯控制模板和东方明珠模板上的灯也循环亮……五、心得体会此次PLC可课程设计实训,使得我更加熟练地掌握了PLC基本逻辑指令的应用和编程的基本方法和技巧。
之前上课期间的实验中,我觉得在接线方面我有很大的缺陷,在此次实训中得到了显著地提高,这让我感到很高兴。
并且,在此次实训中,我们每个同学所做的实验都是不能相同的,让我们告别了“大锅饭”时代,自己动手找实训材料,自己编程,自己接线,调试等等。
数码顺序循环显示控制器
电子技术课程设计--------数码顺序循环显示控制器学院:电子信息工程学院专业班级:自动化051501姓名:学号:200515040114同组者:指导老师:闫晓梅2008年1月数码顺序循环显示控制器一、设计任务与要求数码顺序循环显示控制器任务与要求:1、实现两位数码顺序显示功能:(1)、两个数码管顺序显示以下四组数码字符:8、7;6、5;4、3;2、1。
每组字符两个数码管从左到右顺序显示。
(2)、任意时刻只有一个数码管显示数字,且顺序显示结束时,用一开关控制右边的数码管显示并停在“1”。
即顺序显示几组数码字符后应停在最后一个字符。
2、实现两位数码循环显示功能:在实现第一项所要求的功能的基础上,实现四字数码字符的循环顺序显示。
即两个数码管循环顺序显示“8、7;6、5;4、3;2、1”四组字符。
要求应开关K1手动控制是否循环显示。
要求完成的任务如下:1.画出整体电路图2.利用设计软件对可编程器件进行设计输入、设计仿真和器件编程,使器件具有所规定的逻辑功能。
3.安装调试所设计的电路,使之达到技术指标要求。
4.分析实验结果,写出设计说明书。
二、总体框图1、数码顺序循环显示控制器系统组成电路的总体框图如下图所示:信号控制模块与地址选择模块。
根据此逻辑框图我们可以得到几种实验方案:这是第一种构思利用数字选择功能器件实现课题要求,但是其中在0、1停止一项不够完善,前部分利用数字选择使得输入变为连续且循环的脉冲信号,后部分利用74LS153四选一数据选择器实现数码管的顺序循环显示,想比较最后选的此电路。
另外一种是:此电路选择的是用计数器实现的数码顺序循环显示器,利用向上端无效与向下有效实现数码的顺序显示再经过上图左方装置使得当计数器输出为0001的时候激活计数器的输入口,使得输出回到1000,从而实现循环输出,但是,在数码管口端遇到难题,无法找到合适正确的译码器使得输出为题目要求,因而放弃。
另外:仍然是数码管端显示问题,无法正常显示,从而放弃二、设计思路以及模块功能为了实现此课题的目标,我们需要首先提供一个脉冲信号提供输入信号,然后利用地址选择端使其输入信号得以循环输入,最后在经过译码装置来显示实验结果。
设计一个数码显示器,实现间隔1秒循环显示0~9的功能项目分析
设计一个数码显示器,实现间隔1秒循环显示0~9的功能项目分析
实现该功能的数码显示器需要具备以下几个主要组成部分:
1. 数码管:用于显示数字的显示模块,常用的有共阳数码管和共阴数码管两种。
2. 时钟:控制数字的刷新速度,可以使用晶振或者计时芯片。
3. 驱动模块:驱动数码管显示数字,一般使用74HC595或CD74HC4511等驱动芯片。
4. 控制器模块:用于控制时钟和驱动模块,可以使用单片机、FPGA等控制芯片。
软件实现:
1. 初始化数码管显示模块、时钟模块、驱动模块和控制器模块。
2. 设置一个变量用来计数,初始化为0。
3. 在主循环中,通过控制器模块的时钟模块,计时1秒。
4. 每当计时1秒时,将变量加1。
5. 如果变量大于9,则将变量重置为0。
6. 将变量通过驱动模块,驱动数码管显示相应的数字。
7. 重复以上步骤,实现间隔1秒循环显示0~9的功能。
值得注意的是,在代码中需要进行防抖处理,以确保显示的数字不会出现抖动、闪烁的情况。
同时,应该合理控制时钟的精度,以确保数字的显示稳定性。
数码管(STC89C52)- 第一个数码管循环显示0~F
数码管(STC89C52): 第一个数码管循环显示0~F
一.硬件设计说明:
选通一个数码管分两步,
第一步是位选,即选择哪个数码管亮,这里位选是通过锁存器U2 的WE1~WE6 来选择第一个数码管到第六个数码管,由于数码管为共阴极(相对于8 位数码管), 那么这里WE 端为0 代表位选选通,
第二步是段选,即选择数码管的哪位亮,这里段选是通过锁存器U1 的a~h 来选择数码管的8 位管子,这里DUAN 端为1 代表段选选通.
二.程序设计
1.程序功能
第一个数码管循环显示0~F
2. 程序源码
#include
#define ucha1[0]);
void delayms(uint xms);
void main()
{
uchar i;
wela = 1;
P0 = 0xfe;
wela = 0;
while (1)。