6位数码管显示

6位数码管显示
6位数码管显示

6位数码管显示

2008年03月29日下午 07:48

/******************************************************************** *

公司名称:智佳精控技术小组

模块名称:segment_led.c

功能:六位七段数码管显示模块

说明:

程序设计:kaixinlaohe

设计时间:2008.03.29

版本号: 20080329

程序说明: 使用环境为AT89S52,兼容51型单片机,晶振12M

使用方法:定义一个6位的数组,将数组首地址作参数调用Display_LED(dsi[]) ********************************************************************* /

#ifndef SEGMENT_MACRO

#define SEGMENT_MACRO

#include

#define uchar unsigned char

//段码的端口

#define Segment_Port P0 //端口从高到低定义为:dp,g,f,e,d,c,b,a

//位码的端口,第一位在最左边,在程序中左到右依次显

sbit Segment_Bit1=P2^2;

sbit Segment_Bit2=P2^3;

sbit Segment_Bit3=P2^4;

sbit Segment_Bit4=P2^5;

sbit Segment_Bit5=P2^6;

sbit Segment_Bit6=P2^7;

//延时10ms

void delay();

//用数码管显示数据

void Display_LED(unsigned char dis[6]);

#endif

//--------------------------------------------------------------end

///////////////////////////////////////////////////////////////////// ///////////////////////

/******************************************************************** *

公司名称:智佳精控技术小组

模块名称:segment_led.c

功能:六位七段数码管显示模块

说明:支持0-F的显示及全开能和全关断的显示

程序设计:kaixinlaohe

设计时间:2008.03.29

版本号: 20080329

程序说明: 使用环境为AT89S52,兼容51型单片机,晶振12M

使用方法:定义一个6位的数组,将数组首地址作参数调用Display_LED(dsi[]) 若要显示1,则在数组中直接写入1即可

若要显示A,则在数组中写入10或0xA

若要开通和关断,在数组中写入16,17

********************************************************************* /

#include

#include "segment_LED.h"

//共阳数码管的段码,若为共阳型,将数值取反

code uchar

led_code[18]={0xC0,0x0F9,0xA4,0xB0,0x99,0x92, //0,1,2,3,4,5

0x82,0x0F8,0x80,0x90,0x88,0x83, //6,7,8 ,9,A,b

0xC6,0xA1,0x86,0x8E,0xFF,0x00}; //C,d,E,f,全关断,全通

/********************************************************************

函数名:delay()

功能:延时10ms

说明:

入口参数:无

返回值:元

设计:kaixinlaohe 日期:2008-03-29

修改:日期:

********************************************************************* **/

void delay()

{

uchar x,y;

for (x=0;x<22;x++)

{

for (y=0;y<30;y++)

{

;

}

}

}

/********************************************************************

函数名:Display_LED(display_data[])

功能:用数码管显示数据

说明:

入口参数:6位数组的首地址

返回值:元

设计:kaixinlaohe 日期:2008-03-29

修改:日期:

********************************************************************* **/

void Display_LED(unsigned char display_data[])

{

unsigned char l;

for(l=0;l<83;l++)

{

Segment_Port=led_code[display_data[5]]; //**查显示码

*******

Segment_Bit1=0; //**置显示位*******

delay(); //**延时10ms*******

Segment_Bit1=1; //**清显示位*******

Segment_Port=led_code[display_data[4]];

Segment_Bit2=0;

delay();

Segment_Bit2=1;

Segment_Port=led_code[display_data[3]];

Segment_Bit3=0;

delay();

Segment_Bit3=1;

Segment_Port=led_code[display_data[2]];

Segment_Bit4=0;

delay();

Segment_Bit4=1;

Segment_Port=led_code[display_data[1]];

Segment_Bit5=0;

delay();

Segment_Bit5=1;

Segment_Port=led_code[display_data[0]];

Segment_Bit6=0;

delay();

Segment_Bit6=1;

}

}

//--------------------------------------------------- end

用6位数码管显示时间

#include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; sbit fm=P2^3; uchar num,num1,num2,num3,temp; void init(); void keyscan(); //void jianpan(); void delay(uint a) { uint x,z; for(x=a;x>0;x--) for(z=10;z>0;z--); } uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, }; unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef}; void display1(uchar numdi) //秒钟显示函数 { uchar fen,miao; fen=numdi/10; miao=numdi%10; dula=1; P0=table[fen]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(20); dula=1;

P0=table1[miao]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(20); } void display(uchar numdis)//分钟显示函数{ uchar shi,ge; shi=numdis/10; ge=numdis%10; dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(20); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(20); } void display2(uchar numd2)//小时显示函数{ uchar xshi,xfen; xshi=numd2/10; xfen=numd2%10; dula=1; P0=table[xshi]; dula=0; P0=0xff; wela=1; P0=0xfe;

数码管0到9滚动显示

ORG 00H JMP START START:MOV DPTR,#TABLE ;取地址CLR A ;清零 MOV P2,A ;清零 MOV P3,A ;清零 MOVC A,@A+DPTR ;取数值LOOP: MOV P1,#11111110B;P1口左移一位 MOV P0,# 0FCH ;输出0 CALL DELAY ;延迟 MOV R0,#20 ;循环20次LOOP1:MOV P1,#11111110B;P1口左移一位MOV P0,#60H ;1 CALL delay1 ;延迟 MOV P1,#11111101B;P1口左移一位 MOV P0,#0FCH ;0 CALL delay1 ;延迟 DJNZ R0,LOOP1 ;跳转 MOV R0,#20 ;循环20次LOOP2:MOV P1,#11111110B;P1口左移一位MOV P0,#0DAH ;2 CALL delay1 ;延迟 MOV P1,#11111101B;P1口左移一位 MOV P0,#60H ;1 CALL delay1 ;延迟 MOV P1,#11111011B;P1口左移一位 MOV P0,#0FCH ;0 CALL DELAY1 ;延迟 DJNZ R0,LOOP2 ;跳转 MOV R0,#20 ;循环20次LOOP3:MOV P1,#11110111B;P1口左移一位MOV P0,# 0FCH ;0 CALL delay1 ;延迟 MOV P1,#11111011B;P1口左移一位 MOV P0,#60H ;1 CALL delay1 ;延迟 MOV P1,#11111101B;P1口左移一位 MOV P0,#0DAH ;2

数码管显示倒计时时间的交通灯控制设计

第1章总体设计方案 1.1.设计思路 课程设计的目的 (1).进一步熟悉和掌握单片机的结构及工作原理。 (2).掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 (3).通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。 (4).通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 (5).通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应开发打下基础。 设计任务和内容 1设计任务 单片机采用用AT89C51芯片,使用LED(红,黄,绿)代表各个路口的交通灯,用8段数码管对转换时间进行倒时(东西路口,南北路口各10秒,黄灯时间3秒)。 2设计内容 (1)设计并绘制硬件电路图。 (2)编写程序并将调试好的程序在proteus软件中仿真 。 3方案设计与论证 显示界面方案 该系统要求完成倒计时、状态灯等功能。按照任务要求采用数码管和MAX7219驱动芯片 设计方框图 整个设计以AT89C51单片机为核心,由数码管显示,LED数码管显示,MAX驱动芯片。 硬件模块入图2-1。

4交通管理的方案论证 东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。指示灯燃亮的方案如表2。 表2说明: (1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯, 此道车辆通过,行人禁止通行。时间为5秒。 (2)黄灯5秒,警示车辆和行人红、绿灯的状态即将切换。 (3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过, 行人通行。时间为5秒。 (4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全 畅通的通行。 5芯片简介 1)AT89C51单片机简介 AT89C51单片机 LED 数码管显示 LED 红绿灯 MAX 驱动芯片

LED数码管的结构及工作原理

LED数码管的结构及工作原理 LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图。 图1 这是一个7段两位带小数点10引脚的LED数码管 图2 引脚定义

每一笔划都是对应一个字母表示 DP 是小数点. 数码管分为共阳极的LED 数码管、共阴极的LED 数码管两种。下图例举的是共阳极的LED 数码管,共阳就是7段的显示字码共用一个电源的正。led 数码管原理图示意: 图3 引脚示意图 从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT 端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。 共阳极LED 数码管的内部结构原理图图4: 图4 共阳极LED 数码管的内部结构原理图 a b c d e f g dp

共阴极LED数码管的内部结构原理图: a b c d e f g dp 图5 共阴极LED数码管的内部结构原理图 表1.1 显示数字对应的二进制电平信号 LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。 A、静态显示驱动:

7段显示管上滚动显示自己的电话号码

FPGA实训报告 课程名称:7段显示管上滚动显示自己的电话号码 目录 一、前言 (2) 二、实验选题 (2) 三、实验设计要求 (2) 四、程序设计说明 (2) 五、实验原理图 (6) 六、引脚分配 (6) 七、部分效果图 (7) 八、实训小结 (8) 九、参考文献 (8)

前言 电子设计自动化(Electronics Design Automation—EDA)技术是现代电子工程领域的一门新技术。它提供了基于计算机和信息技术的电路系统设计方法。 EDA技术就是依赖功能强大的计算机,对用电路描述语言描述的设计文件,自动地完成编译、化简、分割、综合、布线、优化、仿真等,直至实现既定的电子电路系统的功能。 EDA技术打破了软件设计和硬件设计间的壁垒,是一门综合性学科,一种新的技能技术。它将设计效率和产品性能合二为一,代表了电子设计技术和电子应用技术的发展方向。 VHDL的全名是Very High Speed Integrated Circuit Hardware Description Language,于83年由美国国防部发起创建,由IEEE(The Institute of Electrical and Electronics Engineers 电气与电子工程师学会)进一步发展,在87年作为“IEEE标准1076”发布,93年被升级为“IEEE1164”。 硬件描述语言是EDA技术的重要组成部分,VHDL作为电子设计的主流硬件描述语言,被多个EDA公司所引用。 VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,具有良好的移植性和适应性,从而大大简化了硬件设计任务,提高了电子系统设计的效率和可靠性。 用VHDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。 此次课程设计我们组的项目是“出租车计价器”。我们小组通过老师一个星期的知识讲解并自学了《FPGA设计基础》,应用Quartus Ⅱ软件进行了设计和编辑。 二、实验选题:7段显示管上滚动显示自己的电话号码 三、实验要求:编写程序模块,用仿真器检测模块设计得正确与否,并给出

数码管显示原理 (1)

数码管显示原理 我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。 其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。如下图。

共阳极的数码管0~f的段编码是这样的:unsigned char code table[]={ //共阳极0~f数码管编码0xc0,0xf9,0xa4,0xb0,//0~3 0x99,0x92,0x82,0xf8,//4~7 0x80,0x90,0x88,0x83,//8~b 0xc6,0xa1,0x86,0x8e //c~f }; 共阴极的数码管0~f的段编码是这样的:unsigned char code table[]={//共阴极0~f数码管编码0x3f,0x06,0x5b,0x4f, //0~3 0x66,0x6d,0x7d,0x07, //4~7 0x7f,0x6f,0x77,0x7c, //8~b 0x39,0x5e,0x79,0x71 //c~f };

数码管显示变化数字

/*----------------------------------------------- 名称:单个共阳数码管动态显示变化数字 内容:通过循环赋值给P1,让数码管显示特定的字符或者数字 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; // 显示数值表0-9 void Delay(unsigned int t); //函数声明 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255 while (1) //主循环 { for(i=0;i<10;i++) //加入for循环,表明for循环大括号中的程序循环执行10次 { P1=dofly_table[i]; //循环调用表中的数值 Delay(60000); //延时,方便观看数字变化 } //主循环中添加其他需要一直工作的程序 } }/*------------------------------------------------ 延时函数,含有输入参数unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); }

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 -

数码管显示不正常的调试方法与步骤总结

数码管显示不正常的调试方法与步骤总结 分类:单片机2011-10-12 21:50 1940人阅读评论(0) 收藏举报 数码管显示不正常大概有以下几种现象: 1,完全不显示; 2,显示部分段码; 3,显示部分位码; 4,显示闪烁; 5,以上几种综合。 解决办法: 步骤: 1,确定数码管是共阴还是共阳 2,检查数码管每段是否完好. 如果上面两条没问题,则: 若完全不显示: 检查电压是否加反,共阴的位选送低电平,共阳的位选送高电平

若某一位只显示部分段: 检查程序所送段码是否正确,注意共阴的段选送高电平,共阳的段选送低电平 若有一位或几位完全不显示: (1)若静态显示(所有位显示一样的数):只需检查程序这几位送的电平是否正确 (2)若动态显示(扫描显示不同的数):若数字滚动显示或闪烁,则动态扫描速度过慢,应减少延时,加快扫描 若显示的数字缺胳膊少腿或三头六臂: 这种现象只存在于动态扫描情况下,称为鬼影。 原因是扫描过快导致上一个字符(视觉暂留结果)显示在当前字符上产生重叠 解决办法: 增长延时,减慢扫描 还有一种情况 若采用同时送段码和位码,则注意送段码前数据口要清零,如下 [cpp]view plaincopyprint?

1.INT_T0: 2.MOV TH0,#(65536-2000) / 256 ;2ms 2000us 3.MOV TL0,#(65536-2000) MOD 256 4.MOV P0,#00h;新加该程序最大的Bug在这里,之所以显 示不全是因为前几次显示加在后一次显示上导致重叠 5. ; 或影藏,解决办法是每次显示之前 将所有段码清零 6.MOV A,#DISPBUF 7.ADD A,DISPBIT ;DISPBIT+DISPBUF=40H-48H 8.MOV R0,A 9.MOV A,@R0 10.M OV DPTR,#TABLE 11.M OVC A,@A+DPTR 12.M OV P0,A ;段选 13. 14.M OV A,DISPBIT 15.M OV DPTR,#TAB 16.M OVC A,@A+DPTR 17.M OV P2,A ;位选 18. 19.I NC DISPBIT 20.M OV A,DISPBIT 21.C JNE A,#08H,KNA ;08h 22.M OV DISPBIT,#00H 今天帮同学调了一下这个程序,在这里记下一笔,做个小结。

数码管滚动显示

/******************************************* 文件:SMG.C 环境:编译为ICC A VR6.25A,仿真为A VR Studio4.10 硬件:ATMEGA16芯片 日期:2006年12月10日 功能:驱动开发板上的数码管,滚动显示1、2、3、4、5、6 备注:参考《A VR系列单片机C语言编程与应用实例》(清华大学出版社) /******************************************/ #include //包含型号头文件 #include //包含"位"操作头文件 #include //标准输入输出头文件 #include //包含自定义常量头文件 #pragma data:code const SEGMENT[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//将BCD码转换成数码管扫描码的数组 /******************************************* 函数名称: One_smg_display 功能: 指定的数码管显示指定的内容 参数: data--显示的内容(0-15) number--指定的数码管(1-6) 返回值: 无 /********************************************/ void One_smg_display(uchar data,uchar number) { PORTB|=0x3F; //输出位选 PORTA|=BIT(BITLK); //更新位选 Delayus(50); //调整时序 PORTA&=~BIT(BITLK); //锁存位选 PORTB=SEGMENT[data]; //输出段选 PORTA|=BIT(SEGLK); //更新段选 Delayus(50); //调整时序 PORTA&=~BIT(SEGLK); //锁存段选 number=~BIT(number-1); //调整位选(指定时是1~6,而操作的时候是0~5)PORTB=number; //输出位选 PORTA|=BIT(BITLK); //更新位选 Delayus(50); //调整时序 PORTA&=~BIT(BITLK); //锁存位选 } /*******************************************

数码管的驱动原理

数码管的驱动原理 所谓共阳共阴,是针对数码管的公共脚而言的。一个1位典型的数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。各个段码实际上是一个发光二极管,既然是发光二极管,就有正负极。所谓共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合形成我们看到的数字或字母。共阴刚好相反,也就是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。 1位数码管是这样,更多位的数码管也基本跟这个原理类似。 共阴共阳与电路接线密切相关,决定了驱动电路的接法,因此在电路设计前要考虑好数码管的类型,否则就不能实现显示的效果了。 驱动共阴数码管一般用PNP,共阳的用NPN 图一低电平有效,图二高电平有效

现在让我们用实验板上的两个数码管来做一个循环显示00~99数字的实验,先来完成必要的硬件部分, 数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同,并且相应的0~9的显示代码也正好相反。 首先我们来介绍两位共阳数码管的单片机驱动方法,电路如下图: 网友可以看到:P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。 因为要显示两位不同的数字,所以必须用动态扫描的方法来实现,就是先个位显示1 毫秒,再十位显示1毫秒,不断循环,这样只要扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到两位不同的数字稳定显示。 下面我们再介绍一种共阴数码管的单片机驱动方法,电路如下图: 网友可以看到:+5V通过1K的排阻直接给数码管的8个段位供电,P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,相应的位可以吸入电流。单片机的P0口输出的数据相当于将数码管不要显示的数字段对地短路,这样数码管就会显示需要的数字。

八位共阴极数码管动态显示时间,可调节,调节的数闪烁显示

8位共阴极数码管动态显示时间,可调节,调节的数闪烁显示 //本例程为共阴极数码管; //在普中单片机上通过实验; //8位数码管动态显示时间,可调节, //调节时间时,调节的数闪烁显示; //比较两种闪烁的方法; #include #define uint unsigned int #define uchar unsigned char sbit tiaojie=P3^0; sbit jia=P3^1; sbit jian=P3^2; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40}; uchar a,b,num1,num2,flag100ms,flag1s,flagtj; uchar miao,fen,shi,flagjia,flagjian; bit flag_1s; uchar code wela[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar dula[8]={0,0,1,1,2,2,3,3}; void delay(uint z); void intc(); void keyscan(); void disp(); void main() {intc(); while(1) { keyscan(); disp(); } } //================ void intc() { TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256;

6位7段LED数码管显示实验

6位7段LED数码管显示实验 【实验要求】1)初始化时,使6位LED均显示8,显示时间为1s。2)从第一个LED开始,从0显示到9,0.5s刷新一次。直到最后一个LED。【实验目的】1)熟悉并进一步掌握定时器中断的使用和时基信号的使用。2)进一步巩固I/O口的使用方法。3)了解6位7段LED数码管的使用。【实验设备】1)装有u’nsp IDE仿真环境的PC机一台。2)μ’nSP?十六位单片机实验箱一个。【实验原理】通过对I/O口的控制,初始化时点亮所有的数码管,即6位LED数码管均显示8。1s 后,从第一位数码管开始从0显示到9,刷新时间为0.5s。直到最后一个数码管。1s的时间使用定时器A (FIQ);0.5s的时间使用2HZ的时基信号(IRQ5)。【硬件连接图】A0—A6 接A---G A8—A13 接CS1—CS6 B0—B7 接KEY 【实验步骤】⑴按硬件电路原理图进行连接。⑵画程序流程图。⑶编写程序。⑷调试程序。⑸结合硬件调试,实现最终功能。【主程序流程图】 广告灯设计(利用取表方式) 桂林电子工业学院孙安青 https://www.360docs.net/doc/5110945882.html, 1.实验任务 利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。 2.电路原理图 3.系统板上硬件连线 把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L 1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。 4.程序设计内容 在用表格进行程序设计的时候,要用以下的指令来完成 (1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。 (2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。 因此,只要把控制码建成一个表,而利用MOVC工,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:

第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 ,用红表笔依次搭接其它引脚,若数码管各段发光,说明该数码管就是共阴的。 图3-4 共阳数码管原理图 图3-5 共阴数码管原理图 3.2 数码管显示输出 如何有效地控制数码管各个引脚的电平,使其按照我们的预想显示输出呢?以下就共阳和共阴数码管分别给予说明。

单片机课设 数码管显示滚动控制

《单片机设计与实训》 设计报告 题目:数码管滚动显示控制 姓名:王伟杰 班级:自动化四班 学号: 2014550430 指导老师:张莹 提交日期:2016年10月29日

目录 一、设计题目与要求 (3) 1.1设计题目 (3) 1.2设计要求 (3) 二、系统方案设计 (3) 2.1硬件电路设计 (3) 1.单片机最小系统简介 (3) 2.数码管显示电路 (6) 2.3硬件选型及说明 (6) 1.ST89C51单片机 (6) 2.四位一体七段共阴极显示数码管 (8) 三、系统原理图设计与仿真 (9) 3.1系统仿真图 (9) 3.2系统仿真结果 (10) 四、程序设计 (11) 4.1程序设计 (11) 4.2程序流程图 (12) 五、系统调试 (14) 5.1系统硬件调试 (14) 5.2系统软件调试 (14) 六、总结与体会 (14) 附录一 (16) 附录二 (17) 附录三 (27)

一、设计题目与要求 单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机内部资源及外部IO 口的功能扩展,使制作的单片机系统具有一定的功能。 1.1设计题目 数码管滚动显示控制 1.2设计要求 自制一个单片机最小系统,包括串口下载、复位电路,采用两个四位一体数码管作为显示器件,通过按钮选择实现四种滚动显示模式,例如从左至右,从右至左,内缩,外扩等,滚动信息可以是数字或有意义的英文字符。 二、系统方案设计 2.1硬件电路设计 本设计的硬件电路主要包括的模块有:单片机最小系统、七段数码管显示模块、 1.单片机最小系统简介 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。结构图如下:

数码管完整版

例程18.数码管显示实验 数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),本实验所使用的是八段数码管。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。 数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。本实验用的是共阴极的数码管,共阴数码管在应用时应将公共极接到GND,

当某一字段发光二极管的阳极为低电平时,相应字段就点熄灭。当某一字段的阳极为高电平时,相应字段就点亮。介绍完原理, 我们开始准备实验用元器件。 八段数码管*1 220Ω直插电阻*8 面包板*1 面包板跳线*1 扎 我们参考实物连接图按原理图连接好电路。

数码管共有七段显示数字的段,还有一个显示小数点的段。当让数码管显示数字时,只要将相应的段点亮即可。例如:让数码管显示数字1,则将b、c 段点亮即可。将每个数字写成一个子程序。在主程序中每隔2s 显示一个数字,让数码管循环显示1~8 数字。每一个数字显示的时间由延时时间来决定,时间设置的大些,显示的时间就长些,时间设置的小些,显示的时间就短。 参考程序源代码:

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 时间:2012-09-10 13:52:26 来源:作者: /* 8位数码管显示时间格式 05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,second; //定义并初始化为 12:30:00 void delay(unsigned int cnt) { while(--cnt); } /******************************************************************/ /* 显示处理函数 */ /******************************************************************/ void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //显示"-" StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示"-" StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main()

数码管显示原理及实例

数码管显示电路原理 (1)元件需求以及选型 8个八段数码管,8个PNP三极管,8个电阻,数码管内部由8个发光二极管组成,排 成一个8字,可以组成0到9数字以及A-F字符的表示形式,分共阴和共阳两种,共 阴表示8个二极管公共极接的是二极管的负极,共阳表示公共极接的是发光二极管的 正极。我们选的是共阳的数码管,三极管(8550)用来做片选,增加驱动,电阻的作 用在于限流,由于基极电流很大,所以需要一个电阻来限流,防止烧坏单片机IO口。 阻值选择用1K。建议使用1K。 (2)程序原理 数码管要亮,必须满足里面的二极管导通,有两个条件,片选打开,数据口要置低(视硬件而定)。首先要得到0到9十个数据的断码。即按硬件的排布,画出对应的0到9形状,标出对应的二极管控制IO口,得到数值,可以参照我们提供的数据。 片选:片选就是开关,控制数码管亮或不亮的,每个数码管都有自己的片选。 数据口: 数据口就直接接到了IO口上面,低电平有效,灌电流。数码管的显示分为两种:静态显示和动态显示。 静态显示: 只能显示一个数码管或者几个数码管而且只能同时显示同一个数字,静态显示不需要扫描的,就是说打开片选后不需要关闭,只需要跟换数据口出来的数据就可以改变显 示的内容。一般静态显示用的比较少,只用在数码管只有一个的情况下。

动态显示: 动态显示用的很普遍,动态显示可以任意数码管随意显示想要显示的内容。动态显示需要不断的对数码管进行扫描。原理是开一个片选送一个字节显示,延时一些时间(注:延时时间很重要,没有的话就会显示一片红,超过的话数码管就会闪烁,一般 一个数码管延时显示1MS左右就可以了)。然后关闭第一个片选,开启第二个片选, 送另外的一个数据,延时,然后关闭低二个片选,送数值,延时……循环,那么就可 以看到几个数码管显示出不同的数值了。 每个显示数字共用数据线,每个分别有一个使能管脚,显示数据采用隐消的编程方法,即每一位显示一段时间再轮换。 实验内容: 在四位数码管上显示8051

时钟芯片DS1302 8位数码管显示

时钟芯片DS1302 8位数码管显示 [日期:2011-03-19 ] [来源:本站编辑作者:佚名] [字体:大中小] (投递新闻) ;8位数码管显示 ;P0 为段码口、P2 为位码口 ;时钟芯片:DS1302 ;-------------------------------------- DS1302 端口位定义: IO_DA TA→P1.1 ; 数据传送总线 SCLK →P1.0 ; 时钟控制总线 RST →P1.2 ; 复位总线 ;--------------------------------------- 24C04 端口位定义: SDA→P3.6 ;24C01的串行数据线 SCLK →P3.7 ;24C01的串行时钟线 ;--------------------------------------- K1 →P1.4 ;独立键 K2 →P1.5 K3 →P1.6 K4 →P1.7 ;--------------------------------------- BEEP →P3.3 ;蜂鸣器 ;--------------------------------------- 使用8位数码管显示: 段码→P0 位码→P2 ;--------------------------------------- 开机显示: 08-48-58 ;实时时间的显示,时、分、秒 K1: →切换显示内容键,每按一下可切换显示内容,最后返回实时时间的显示。 05-03-06 ;显示年、月、日 ;-------------------------------------------------------------------- K2: →时间与日期设定键, K3: →选择键(位移键) 每按一下可切换设定内容,最后返回实际时间的显示。在设定过程中,被选中的设定位闪动。选择顺序:时→分→日→月→年→返回 K1: →UP 键 K2: →DOWN 键

单片机课程设计报告——16x16LED滚动显示

16x16LED滚动显示课程设计:单片机课程设计 专业名称:电气工程及其自动化 学号: 学生姓名: 同组人员: 指导教师: 2014年12月8日

课程设计任务书 2014 ~2015 学年第1学期 学生姓名: 专业班级:电气工程及其自动化2012级(2)班 指导教师:工作部门: 一、课程设计题目:16x16LED滚动显示 二、课程设计内容 1. 根据具体设计课题的技术指标和给定条件,以单片机为核心器件,能独立而正确地进行方案论证和电路设计,完成仿真操作。要求概念清楚、方案合理、方法正确、步骤完整; 2. 熟悉、掌握各种外围接口电路芯片的工作原理和控制方法; 3. 熟练使用单片机汇编语言或C51进行软件设计; 4. 熟练使用Proteus、Keil软件进行仿真电路测试; 5. 熟练使用Protel软件设计印刷电路板; 6. 学会查阅有关参考资料和手册,并能正确选择有关元器件和参数; 7. 编写设计报告,参考毕业设计论文格式。 (1)根据课题要求确定系统设计方案; (2)绘制系统框图、系统仿真原理图(印刷电路板图),列出元器件明细表; (3)计算电路参数和选择元器件,画出软件框图,列出程序清单; (4)打印仿真结果,根据测试结果进行误差分析与修改调整; (5)对设计进行全面总结。 三、进度安排

2.执行要求 单片机应用课程设计共9个选题,学生可自选课题。每组不超过2人,为避免雷同,在设计中每个同学所采用的方案不可一样。 四、课程设计考核办法与成绩评定 六、课程设计参考资料 [1]贺哲荣.AT89S51单片机硬件设计与编程实例.北京:中国电力出版社.2012 [2]李泉溪.单片机原理与应用实例仿真.北京:北京航空航天大学出版社,2012. [3]王平.单片机应用设计与制作.北京:清华大学出版社, 2012. [4]彭为等.单片机典型系统设计实例精讲. 北京:电子工业出版社,2007 [5]王庆利等.单片机设计案例实践教程.北京:北京邮电大学出版社,2008 [6]韩志军等.单片机应用系统设计——入门向导与设计实例.北京:机械工业出版社,2005 [7]皮大能等. 单片机课程设计指导书. 北京:北京理工大学出版社,2010 指导教师: 2014年12月8日 教研室主任: 2014年12 月8 日

相关文档
最新文档