6个数码管轮流显示数字
数码管的显示原理
数码管的显示原理
数码管的显示原理是通过控制流经其内部的电流来发光。
数码管内部有多个发光二极管,每个发光二极管都代表一个数字或字母。
当通过特定的电路将电流传递到相应的发光二极管时,它们就会发光,显示出对应的数字或字母。
传统的七段数码管由7个发光二极管组成,分别代表数字0-9。
每个发光二极管都有一个引脚,用来连接电路。
数码管内部还有一个共阳或共阴的引脚,用来控制整个数码管的亮暗状态。
在共阳数码管中,当共阳引脚接通电流时,通过控制每个发光二极管的引脚接通电流,即可选择要亮的数字或字母,并显示出来。
同时,其他未选中的发光二极管的引脚不接通电流,使其保持熄灭状态。
在共阴数码管中,当共阴引脚接通电流时,与共阳数码管相反,通过控制每个发光二极管的引脚断开电流,即可选择要亮的数字或字母,并显示出来。
其他未选中的发光二极管的引脚保持接通电流,使其保持亮着的状态。
通过快速切换不同的发光二极管的引脚状态,可以实现多个数字或字母的连续显示。
例如,当需要显示四位数时,只需按照一定的时间顺序循环切换不同的数字或字母,以呈现给用户。
总之,数码管的显示原理是通过控制流经其内部的电流来发光,通过引脚的接通或断开来选择要显示的数字或字母。
数码管的动态显示与静态显
• 按发光二极管单元连接方式分为共阳极数码 管和共阴极数码管。
a
共阴阳极接到一起形成公共阳 极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,
当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
• 通常将数码管的各段连接到单片机的8位I/O 口,如P2口,P2口的8位分别连接数码管的 abcdefg各段,通过控制P2口各位的电平, 控制数码管各段的亮灭。
a
数码管显示方式
• 数码管有两种显示方式:静态显示、动态显 示。
• 静态显示:静态驱动是指每个数码管的每一 个段码都由一个单片机的I/O口进行驱动
a
delaynms(2); }
num++; if(num>99) num=0;
}
例如需要显示数字“12”时,先输出位选信号, 选中第一个数码管,输出1 的段码,延时一 段时间后选中第二个数码管,输出2 的段码。 把上面的流程以一定的速度循环执行就可以 显示出“12”,由于交替的速度非常快,人眼 看到的就是连续的“12”
在动态显示程序中,各个位的延时时间长 短是非常重要的,如果延时时间长,则会出 现闪烁现象;如果延时时间太短,则会出现 显示暗且有重影。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴极数码管则与之相反
我们平时所看到的0-9这样的数字,通过控制不同的LED的亮灭 来显示出这些字形的。为了显示数字或字符,必须对数字或字 符进行编码。因此为LED显示器提供的编码正好是一个字节。
比如对于共阳极数码管,显示“0”。则abcdef各段led灯亮, 其余灭。对于共阳极,则在相应的阴极部分加低电平0即可。
单片机控制装置与调试任务六 数码管显示应用
该数组共有5个元素,每个元素由不同的下标表示,分别为buffer[0],buffer[1],buffer[2],buffer[3]和buffer[4]。
为了稳定发光,再延时一段时间,之后加人熄灭数码管进行消隐,主要防止显示有拖尾现象。
{ cs1=0;cs2=1;
//选中段码锁存IC
for(i=0;i<9;i++)
效,然后送数据,先送段选,然后再送位选,最后CP脉冲高电平使的
数据输出。
2.动态扫描的基本流程 以从高位到低位扫描显示为例, 动态扫描的基本流
程是: (1)送段码
①送最高位的段码到总线。
②拉低cs1,置位cs2。 ③用wr线发送锁存脉冲。 (2)送位码 ①送第七个通道(Q8)位选数据到总线。 ②拉低cs2,置位cs1。 ③同样用wr线发送锁存脉冲。第七个通道(Q8)导通, 第一位数码管点亮。
/例* 8如位,数一码个管3从位左数到字右变依量次tem显p示要“D在n0高L,阻ED1态,七2段,数3码,管4,显×↑,示5其,“6,百7、”十八HH、个个数”字各的个C语位××言上程的序数字*/ 。无无输输出出
port=tab[disbuf[i]];wr=1;wr=0;
//送段码,锁存数据
图5-1所示为常见的各种数码管的外形。
{ while(1)
//while循环
disbuf[1]=tab[1];
//分别为"0、1、2、3、4、5、6、7"
(2) 定义共阳极字形编码表(数字0~9)
在建立数组的时候,注意字型码的排列次序,段码对表头的偏移位置就是该数值的段码,这种排列方法很便于显示数据
因此可将LED各段码与数据位建立如表4-1所示的对应关系。
2024年单片机实验心得体会_3
2024年单片机实验心得体会2024年单片机实验心得体会1这是我经过我们的不断努力,我们终于实现了简单的跑马灯的运行,便是两个灯地交替闪烁。
我们感到兴奋极了。
但是我们并没有满足于当前,我们又编写了三个灯地交替闪烁,四个及多个。
当我们一步步实现我们的目的时,我得到莫大成就感和自信。
在这次实验中,我体会到了合作的重要性。
一个人也可能实现这一系列的过程,但是要花费很多精力和时间。
群策群力,分工明确,可以使我们更好、更快地完成我们的工作。
在此期间,你可以更好知道自己的不足和缺陷,来得到改正。
还可以知道自己的优势所在,把握好自己的优势。
附送:无论是作为一名业余的电子爱好者还是一名电子行业的相关从业人员,掌握单片机技术无疑可以使您如虎添翼,为您的电子小制作或者开发设计电子产品时打开方便的大门!而且现在学习单片机技术的热潮正在不断升温,时下多家电子类的报刊杂志如:《电子制作》《无线电》《电子报》《电子世界》都开设了详细的单片机学习专栏,对于想学习单片机的朋友来说帮助很大,可以说现在的单片机学习环境是最好的,经过一段时间的努力,采用单片机来开发设计电子产品已经不再是专业电子工程师的“专利”!作为一个普通的电子爱好者完全可以通过一番努力后熟练掌握!国外的电子爱好者采用单片机来设计小制作非常普及,一些智能机器人、智能自动装置内部都离不开单片机的身影~~~站长的单片机技术也是通过网络自学学会的,因为站长的专业不是电子专业,所以单片机对于我来说是完全陌生的,自从上网后才知道有个叫单片机的好东东,看了平凡的单片机上的单片机教程后开始自学51单片机技术。
平凡的单片机上有非常详细的51单片机基础知识教程,写得非常生动朴实,对我来说帮助极大,站长是先看了平凡老师的教程才对单片机有一些了解,然后购买了一些单片机的书刊,加以不断试验才初步掌握单片机的。
学习单片机技术有一定的难度,不花费一番努力是很难学会的,但是只要不断努力就一定能成功,套用一句广告歌词:努力总有回报!学习单片机最好从51系列开始,易看懂,不过确实很有用,很有嚼头,可以先大致看一遍,不消化的可以以后在试验实践中反复研究。
6位数码管轮流显示0~9
(亲,就一分,别用软件下载吧,都是纯手打,自己的作业啊,完全使用于慧净单片机其他单片机开发板只需改改就好了)6位数码管轮流显示0~9MOV P0,#00H ;p0初始输出低电平MOV P2,#00H ;p2初始输出低电平CPL P2.3 ;关闭蜂鸣器MOV B,#0FEH ;数码管选择数BCPL P2.7 ;p2.7引脚取反,变高电位,使锁存器2有效,可以开始选择MOV P0,B ;选择数码管1CPL P2.7 ;锁存器锁存,保持选择数码管1CPL P2.6 ;p2.6引脚取反,变高电位,使锁存器1有效MOV R3,#00H ;数码管计数位R3MOV DPTR,#TAB ;MAIN: MOV R2,#00H ;显示数据位R2DSUP:MOV A,R2 ;查表输出R2MOVC A,@A+DPTR ;MOV P0,A ;PUSH ACC ;ACC入栈保存LCALL DELAY ;延时INC R2 ;R2加1INC R3 ;计数位R3加1CPL P2.6 ;p2.6引脚取反,变低电位,使锁存器1无效MOV A,B ;B的值给ARL A ;A左移MOV B,A ;左移后的A值给B,即B左移一位CPL P2.7 ;MOV P0,A ;选择下一位数码管CPL P2.7 ;保持选择POP ACC ;ACC出栈CPL P2.6 ;p2.6引脚取反,变高电位,使锁存器1有效CJNE R3,#06H,NEXT ;R3等于6时顺序执行;不等于6时,执行NEXT;执行6次输出后MOV B,#0FEH ;B复原MOV R3,#00H ;R3复位CPL P2.6CPL P2.7MOV P0,B ;重新选择第一个数码管CPL P2.7CPL P2.6NEXT:CJNE R2,#0AH,DSUP ;输出数据次数R2等于10时,顺序执行;否则返回DSUP LCALL MAINDELAY: M OV R7,#200MOV R6,#10D1: MOV R5,#200D2: DJNZ R5,D2DJNZ R7,D1DJNZ R6,D1RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND。
数码管显示(全面)
• 程序设计内容
由于显示的数字0-9的字形码没有规律可循,只能采用 查表的方式来完成P0口对数码管的控制。方法是找出 共阴极数码管显示0-9的字形码,按着数字0-9的顺序, 把这十个字形码放入数组table[]中。
• C语言源程序 • 调试与仿真
4.3 I/O口应用实例与仿真
例4.6 动态数码管显示的proteus仿真及C语言 程序设计
4.3 I/O口应用实例与仿真
• 程序设计内容
(1)动态扫描方法:动态扫描采用各数码管循环轮流 显示的方法,本例中,先让左边第一位数码管显示数 字“1”,延时一定时间后,第二位显示“2”,以此类 推,到第五位显示“5”后,又从“1”开始循环显示。 当循环显示频率较高时,利用人眼的暂留特性,我们 看到这五位数码管仿佛在同时显示,而看不出闪烁显 示现象。这种显示需要一个接口完成字形码的输出 (字形选择),另一接口完成各数码管的轮流点亮 (数位选择)。需要注意一点,由于电路的特性,在 点亮每一位数码管之前,一定要对整个数码管清屏 (场消隐),即让所有位选信号都处于不被选中状态。
g f GND a b a a f e d g b c dp b c d e f g dp a b c d e f g dp
+5V
·
e d GND c dp
(a)
共阴极
(b)
共阳极
使用LED显示器时,要注意区分这两种不同的接法。为了显 示数字或字符,必须对数字或字符进行编码。七段数码管加上一 个小数点,共计8段。因此为LED显示器提供的编码正好是一个字 节。TX-1B实验板用共阴LED显示器,根据电路连接图显示16进制
数码管是如何显示出字符的 数码管静态显示与动态显示原理
显示器及其接口
矩阵键盘显示,六位数码管滚动显示
南京邮电大学课程设计报告设计类别: EDA-VHDL专业名称: 通信工程班级学号: B09010504 学生姓名: 张嫣艳基本题 : 矩阵键盘按键的数码管显示综合题 : 数码管学号滚动显示同小组成员:学号:B09010502姓名:沈沁芳指导教师: 王奇、梅中辉、周晓燕、孔凡坤日期:2012年3月5日—3月30日目录一矩阵键盘按键的数码管显示1.实验目的--------------------------------------------------------------------- 3 2.实验所用仪器及元器件----------------------------------------------------3 3.实验任务要求----------------------------------------------------------------34. 设计思路-----------------------------------------------------------------------35. 模块分析-----------------------------------------------------------------------36. 逻辑仿真图及功能分析-----------------------------------------------------47. 调试过程与问题--------------------------------------------------------------88. 实验总结-----------------------------------------------------------------------89. 附录(VHDL源程序)-----------------------------------------------------8二数码管学号滚动显示1.实验目的----------------------------------------------------------------------12 2.实验所用仪器及元器件----------------------------------------------------12 3.实验任务要求----------------------------------------------------------------134. 设计思路----------------------------------------------------------------------135. 模块分析----------------------------------------------------------------------136. 逻辑仿真图及功能分析----------------------------------------------------167. 调试过程与问题-------------------------------------------------------------188. 实验总结----------------------------------------------------------------------189. 附录(VHDL源程序)----------------------------------------------------18一矩阵键盘按键的数码管显示1.实验目的(1).使学生全面了解如何应用该硬件描述语言进行高速集成电路设计;(2).通过软件设计环节与仿真环节使学生熟悉Quartus II设计与仿真环境;(3).通过对基本题、综合题的设计实践,使学生掌握硬件系统设计方法(自底向上或自顶向下),熟悉VHDL语言三种设计风格,熟悉其芯片硬件实现的过程。
数码管显示数字
在第6课里,我们讲到数码管的静态显示,利用静态显示法,通过控制位选和段选,可以让数任意几位数码管显示任意字符,但由于所有位数码管的相同的段选全部接在一起,所以只能同时显示相同的数字,例如8位同时显示8字,1、3、5位同时显示3字。
但大家想一下,如果我们要让数码管同一时刻显示不同的数字,如图1所示的现象,用静态显示的方法就不能够实现,这里就只能用到动态显示的方法,今天这一节我们主要讲解数码管动态显示的原理的程序实现的方法。
图1 数码管同时显示123456在讲解动态显示方法之前,我们先介绍在种数码管及单片机程序开发过程常用的方法-数组编码法。
1、数组编码在跟数码管相关的程序中,可以对位进行编码,也可对段进行编码,这里我们以段编码进行讲解。
通过第8课的程序我们知道,在位选确定后,要显示数字8时,P0=0x80,显示数字3时P0=0xb0,也就是0xb0,0x80分别可以表示数字3和8,按此方法,我们把在数码管上显示0-f,16个数字全部用16制度表示出来,这16个16进制数就称为数码管可显示0-f的相应的编码,如图2所示(注意共阳和共阴极数码管相应的编码有所不同,这里以实验板上共阳极的为例)。
图2 共阳极数码管编码在编程中,编码的表示方法如下:unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e };这里编码表示的方法与C语言中数组定义的方法基本一样。
table是数组名,后面需加[],中括号中需加上数组中元素的个数,也可以不写。
等号的右边用一个大括号将所有元素包含起来,里面的元素之间用“,”隔开,在大括号外用“;”结束。
等号左边的unsigned char 是数据元素的数据类型,这里定义为无符号字符型,也就是元素的值范围只能是0-255之间。
第3章 数码管显示输出
第3章数码管显示输出3.1 概述3.1.1 数码管简介数码管是一种广泛应用在仪表、时钟、车站、家电等场合的半导体发光器件,它由多个发光二极管封装在一起,组成“8”字型的器件,颜色有红、绿、蓝、黄等。
图3-1是1位、2位、3位和4位数码管的实物图。
可以看到,每1位数码管都由7个线段型和1个小数点型发光二极管组成,这8个发光二极管在数码管中称之为“段”,平常所说的7段或8段(小数点也算1段)数码管,就指这个意思。
图3-2是从正面观察(数码管正面面对读者,小数点位于右下角)1位数码管时,数码管8个段的名称及引脚图,其中,引脚3和引脚8是公共端com。
图3-1 数码管实物图图3-2 1位数码管各段名及引脚图3.1.2 数字和字符的数码管显示图样从数码管的结构可知,只要有序地组织,让数码管的7段(或者8段)中部分或全部点亮,就可以显示数字或者字符等信息。
图3-3是数字0~9和字母A~F在数码管上显示时对应的图样,其中的字母b和d是小写字母。
图3-3 数字0~9、字母A 、b 、C 、d 、E 、F 在数码管上显示的图样3.1.3 共阳和共阴数码管数码管按照极性可分为共阳数码管和共阴数码管两类。
所谓共阳数码管,从字面理解,就是数码管8个发光二极管的阳极并联在一起,是公共的,称为公共端com ,而各个阴极彼此独立,如图3-4所示;相反,共阴数码管的8个发光二极管的阴极并联在一起,是公共端com ,而各个阳极彼此独立;如图3-5所示。
实际工作中,怎样判别拿在手里的这个数码管是共阳还是共阴呢?一个简便方法就是使用万用表的二极管档去测量。
选择万用表的二极管档,用万用表的红表笔搭接数码管的公共端com(引脚3或引脚8),而黑表笔依次搭接其它引脚,如果此时数码管各段发光,说明该数码管是共阳的;如果数码管的各段都不发光,则交换红黑表笔,用黑表笔搭接公共端com ,用红表笔依次搭接其它引脚,若数码管各段发光,说明该数码管就是共阴的。
6位7段LED数码管显示.
目录1. 设计目的与要求..................................................... - 1 -1.1 设计目的...................................................... - 1 -1.2 设计环境...................................................... - 1 -1.3 设计要求...................................................... - 1 -2. 设计的方案与基本原理............................................... - 2 -2.1 6 位 8 段数码管工作原理....................................... - 2 -2.2 实验箱上 SPCE061A控制 6 位 8 段数码管的显示................... - 3 -2.3 动态显示原理.................................................. - 4 -2.4 unSP IDE2.0.0 简介............................................ - 6 -2.5 系统硬件连接.................................................. - 7 -3. 程序设计........................................................... - 8 -3.1主程序......................................................... - 8 -3.2 中断服务程序.................................................. - 9 -4.调试............................................................... - 12 -4.1 实验步骤..................................................... - 12 -4.2 调试结果..................................................... - 12 -5.总结............................................................... - 14 -6.参考资料........................................................... - 15 - 附录设计程序汇总.................................................... - 16 -1.设计目的与要求1.1 设计目的1. 了解 6 位 7 段 LED数码管的工作原理。
矩阵键盘显示,六位数码管滚动显示
南京邮电大学课程设计报告设计类别: EDA-VHDL专业名称: 通信工程班级学号: B09010504 学生姓名: 张嫣艳基本题 : 矩阵键盘按键的数码管显示综合题 : 数码管学号滚动显示同小组成员:学号:B09010502姓名:沈沁芳指导教师: 王奇、梅中辉、周晓燕、孔凡坤日期:2012年3月5日—3月30日目录一矩阵键盘按键的数码管显示1.实验目的--------------------------------------------------------------------- 3 2.实验所用仪器及元器件----------------------------------------------------3 3.实验任务要求----------------------------------------------------------------34. 设计思路-----------------------------------------------------------------------35. 模块分析-----------------------------------------------------------------------36. 逻辑仿真图及功能分析-----------------------------------------------------47. 调试过程与问题--------------------------------------------------------------88. 实验总结-----------------------------------------------------------------------89. 附录(VHDL源程序)-----------------------------------------------------8二数码管学号滚动显示1.实验目的----------------------------------------------------------------------12 2.实验所用仪器及元器件----------------------------------------------------12 3.实验任务要求----------------------------------------------------------------134. 设计思路----------------------------------------------------------------------135. 模块分析----------------------------------------------------------------------136. 逻辑仿真图及功能分析----------------------------------------------------167. 调试过程与问题-------------------------------------------------------------188. 实验总结----------------------------------------------------------------------189. 附录(VHDL源程序)----------------------------------------------------18一矩阵键盘按键的数码管显示1.实验目的(1).使学生全面了解如何应用该硬件描述语言进行高速集成电路设计;(2).通过软件设计环节与仿真环节使学生熟悉Quartus II设计与仿真环境;(3).通过对基本题、综合题的设计实践,使学生掌握硬件系统设计方法(自底向上或自顶向下),熟悉VHDL语言三种设计风格,熟悉其芯片硬件实现的过程。
数码管学号滚动显示
南京邮电大学通达学院课程设计报告设计类别: EDA-VHDL专业名称: 通信工程班级学号:基本题 : 数字时钟设计综合题 : 数码管学号滚动显示同小组成员:学号:姓名:指导教师: 王奇、梅中辉、周晓燕,孔凡坤日期:2011年11月7日—11月18日一、数码管学号滚动显示1.实验目的(1)掌握VHDL语言的语法规范,掌握时序电路描述方法(2)掌握多个数码管动态扫描显示的原理及设计方法2.实验所用仪器及元器件(1)计算机(2)直流稳压电源(3)数字系统与逻辑设计实验开发板3.实验任务要求要求学生在六个数码管滚动显示自己的学号(六位),每隔一定时间循环移位一次,学号为奇数则左移,学号为偶数则右移。
间隔时间可由开关选择1秒,2秒,3秒和4秒。
4.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。
动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
各位数码管的相同段是并联的,段码的输出对各位数码管来说都是相同的。
因此在同一时刻如果各位数码管都处于点亮状态,6位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位处于点亮状态,而其它各位处于灭灯状态。
同时,段码输出相应位要显示字符的字型码。
这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉匰象就会戯连续稳定地显示。
总之,多个数码管动态扫描显示,是将所有数码管犄相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个敠码管,并利用人眼的视觉暂留现象,Ꮺ要扫描的频率大于50Hz,将看不到闪烁现象。
数码管的显示方式
数码管的显示方式有两种:静态显示和动态显示。
1.静态显示方式。
所谓静态显示就是指无论是多少位数码管,同时处于显示状态。
如图2.19所示。
图2.19 4个共阳极数数码管静态显示时的连接方式与显示状态当单片机系统中使用静态数码管显示时,需要在每一个数码管上添加一个锁存器,当需要某个数码管显示其他内容时,只需要修改与其相连的锁存器的值即可。
由图2.19中可以看出,当数码管处于静态显示方式时,所有位选线(数码管的公共端)连接在一起,而各个数码管的段选线(数码管上各笔段的引出线)是相互分离的。
静态显示的优点是:数码管显示无闪烁,亮度高,软件控制比较容易;缺点是:需要的硬件电路较多(每一个数码管都需要一个锁存器),如果在全国大学生电子设计竞赛中使用,将造成很大的不便,同时由于所有数码管都处于被点亮状态,所以需要的电流很大,当数码管的数量增多时,对电源的要求也就随之增高。
所以,在大部分的硬件电路设计中,很少采用静态显示方式。
2.动态显示方式。
所谓动态显示,是指无论在任何时刻只有一个数码管处于显示状态,每个数码管轮流显示。
如图2.20所示。
图2.20 4个共阴极数码管动态显示时的连接方式与显示状态由图2.20中可以看出,当数码管处于动态显示时,所有位选线分离,而每个数码管的各条段选线相连。
当需要显示数字或字符时,需要将所有数码管轮流点亮,这时对每个数码管的点亮周期有了一个较严格的要求:由于发光体从通入电流开始点亮到完全发光需要一定的时间,叫做响应时间,这个时间对于不同的发光材质是不同的,通常情况下为几百微秒,所以数码管的刷新周期(所有数码管被轮流点亮一次的时间)不要过短,这也与数码管的数量有关,一般的数码管的刷新周期应控制在5ms~10ms,即刷新率为200Hz~100Hz,这样既保证了数码管每一次刷新都被完全点亮,同时又不会产生闪烁现象。
动态显示的优点是:硬件电路简单(数码管越多,这个优势越明显),由于每个时刻只有一个数码管被点亮,所以所有数码管消耗的电流较小;缺点是:数码管亮度不如静态显示时的亮度高,例如有8个数码管,以1秒为单位,每个数码管点亮的时间只有1/8秒,所以亮度较低;如果刷新率较低,会出现闪烁现象;如果数码管直接与单片机连接,软件控制上会比较麻烦等。
用六位数码管动态显示计数器的计数结果
北华航天工业学院《EDA技术综合设计》课程设计报告重写报告题目:用六位数码管动态显示计数器的计数结果作者所在系部:电子工程系作者所在专业:自动化作者所在班级:B08221班 03号作者姓名:肖茂林指导教师姓名:崔瑞雪完成时间:2010年12月1日课程设计任务书课题名称用六位数码管动态显示计数器的计数结果完成时间2010年11月30日指导教师崔瑞雪职称教授学生姓名肖茂林班级B08221总体设计要求和技术要点①总体设计要求:设计一个能在7段数码管上动态刷新显示十进制、十二进制、六十进制、四位二进制计数器计数结果的VHDL语言程序并在EDA实验开发系统上实现该功能。
②技术要点:VHDL语言编辑程序、共阴7段数码管及FPGA可编程芯片的工作原理与连线。
工作内容及时间进度安排2010年11月18日—28日编辑VHDL语言程序2010年11月29日在教二实验室调试程序2010年11月30日在实验室答辩验收课程设计成果1.与设计内容对应的软件程序2.课程设计报告书3.成果使用说明书4.设计工作量要求内容摘要用VHDL语言在MAX+PLUS2环境下设计一个带使能输入、进位输出及同步清零的十进制计数器。
设计一个带使能输入及同步清零的十二进制计数器。
设计一个带使能输入及同步清零的六十进制加法计数器。
设计一个四位二进制可逆计数器。
设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。
最后在EDA实验开发系统实验操作。
关键词计数器、EDA实验开发系统、动态显示目录一、课程设计要求 (1)二、题目分析 (1)三、设计思路 (1)四、VHDL语言程序设计 (2)五、顶层文件截图 (7)六、在EDA实验开发系统上的功能实现 (8)七、实验总结 (8)八、参考文献 (8)一、课程设计要求用VHDL语言在MAX+PLUS2环境下设计一个带使能输入、进位输出及同步清零的十进制计数器。
设计一个带使能输入及同步清零的十二进制计数器。
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失电。
2051单片机6位数字钟
2051单片机6位数字钟51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机教程者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。
常见的电子钟程序由显示部分,计算部分,时钟调整部分构成,这样程序就有了一定的长度和难度。
这里我们为了便于大家理解和掌握单片机,我们把时钟调整部分去除,从而够成了这个简单的电子钟程序。
时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。
10秒位到5后,即59秒,分钟加1,10秒位回0。
依次类推,时钟最大的显示值为23小时59分59秒。
这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。
开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。
电路原理图:为了节省硬件资源,电路部分采用6位共阳极动态扫描数码管,数码管的段位并联接在51单片机的p0口,控制位分别由6个2N5401的PNP三极管作驱动接在单片机的p2.1, p2.2,p2.3,p2.4,p2.5,p2.6口。
从标号star开始把这些位全部清除为0,从而保证了开始时显示时间为0时0分0秒。
然后是程序的计算部分:inc a_bit(秒位),这里用到了一个inc指令,意思是加1,程序运行到这里自动加1。
然后把加1后的数据送acc:mov a,a_bit (秒位),这时出现了一个问题,如果不断往上加数字不会加爆?所以有了下面的一句话cjne a,#10,stlop; 如果秒位到10那么转到10秒处理程序。
cjne 是比较的意思,比较如果a等于10 就转移到10秒处理程序,实际上也就限定了在这里a的值最大只能为9,同时mov a_bit,#00h,这时a_bit(秒位)被强行清空为0,又开始下一轮的计数。
基于单片机的电子时钟6位LED数码管显示
数码管显示电子时钟设计一.功能要求1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。
2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。
二.方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.数码管显示方案方案一:静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
实测通过6位数码管显示程序
0.1~10累加控制数码管低2位显示从0.1到9.9累加,步进为0.1实验源程序://***************************************************************************** ******//主函数//***************************************************************************** ******void main() //主函数{num=0; //初始化段码为0while(1) //进入while死循环{scan(); //数码管扫描函数}}//***************************************************************************** ******//动态扫描函数//***************************************************************************** ******scan(){uchar i;for(i=0;i<10;i++){//显示个位P1=0xbf; //0xbf=1011 1111,即选通个位LE1=1; //锁存位LE1=0; //断开锁存,位选573的Q7~Q0仍保持wei=num*10;P1=dis[wei/10] | 0x80; //dis[wei/10]为0~9的编码,0x80为小数点LE2=1; //锁存段码LE2=0; //断开锁存,段选573的Q7~Q0仍保持delay(100); //延时保持一下,延时过大会闪动,延时过小会有重影P1=0x00;LE2=1;LE2=0; //清除P1口数据,以免造重影//显示十分位P1=0x7f; //0xbf=0111 1111,即选通十分位LE1=1; //锁存位LE1=0; //断开锁存,位选573的Q7~Q0仍保持wei=num*10;P1=dis[wei%10]; //0~9的编码LE2=1; //锁存段码LE2=0; //断开锁存,段选573的Q7~Q0仍保持delay(100); //延时保持一下,延时过大会闪动,延时过小会有重影P1=0x00;LE2=1;LE2=0; //清除P1口数据,以免造重影}if(num==9.9)num=0; //扫描到显示9.9时,重新开始扫描num+=0.1; //num加0.1}/****************************************************************************** *****以下各个程序是实测通过的6位共阳数码管显示程序(c51) 2014.08.20.实测通过仿TX-3C 实验板晶振为 11.0592M******************************************************************************* *****//****************************************************************************** *****共阴led数码管码表:(20140820)/*code uchar shu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管段选码(0-f)*/******************************************************************************* *****//***********************************************************************************高位(7) ---- 低位(0)位 0 0 0 0 0 0 0 0 共阳数码管段选码(0-f) 笔画 h g f e d c b a (小数点不亮码):0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1,0x86, 0x8e};0 1 2 3 4 5 6 7 8 9 a b cd e f//共阳数码管段选码(0-f) (高位减8即可,在段码中加上'&0x7f'即:P0=table[ge]&0x7f;) (带小数点亮码)://P0=table[ge]&0x7f; 或 P0=table[ge]&0x80; 该位小数点也亮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wela=0;
P0=0x7b; //数码管位选
wela=1;
wela=0;
delay(5);
break;
case 3:
dula=0;
delay(5);
break;
}
delay(200);
delay(200);
i++;
if(i>=6) i = 0;
wela=1;
wela=0;
delay(5);
break;
case 2:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
uchar i=0;
while(1){
switch (i){
case 0:
dula=0;
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=5;
P0=0x5f; //数码管位选
wela=1;
wela=0;
wela=0;
delay(5);
break;
case 4:
dula=0;
P0=table[i]; //送数字8到段码端口 dula=1; } Nhomakorabea}
break;
case 1:
dula=0;
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x7d; //数码管位选
/*6位数码管轮流显示*/
#include<reg51.h>
#define uchar unsigned char
sbit dula=P2^6; //数码管段选,锁存器控制信号
sbit wela=P2^7; //数码管位选,锁存器控制信号
unsigned char j,k;
/*1MS为单位的延时程序*/
void delay(uchar x)
{
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}
//
/*定义数码管显示字符跟数字的对应数组关系*/
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管显示编码(1-F)
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x7e; //数码管位选
wela=1;
wela=0;
delay(5);
dula=0;
wela=0;
P0=0x6f; //数码管位选
wela=1;
wela=0;
delay(5);
break;
case 5:
P0=table[i]; //送数字8到段码端口
dula=1;
dula=0;
wela=0;
P0=0x77; //数码管位选
wela=1;