数码管显示数字

数码管显示数字
数码管显示数字

在第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之间。Code表示把这个数组定义为编码,这样定义的好处是其元素转化成二进文件后可能直接存储到程序存储器中,当然这里也可以不加code,但是这样编译后会将其直接存储到数据存储器中,要知道单片机中数据存储器的容量是非常有限的,定义为code后可节约单片机数据存储器的空间。

调用程序的方法如下,

P0=table[1];

这里表示将数组中的第2个元素(注意第一个是table[0])0xf9赋给P1口,

即P0=0xf9;也就是此时位被选通的数码管会显示数字2.

下面利用编码的方法让6个数码管以间隔1秒的时间循环显示0-f。相应程序如例1.

例1:6个数码管循环显示0-f

#include

#define uint unsigned int

#define uchar unsigned char

sbit duan=P2^6;

sbit wei=P2^7;

uchar num;

unsigned char code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e };

void delay(uint);

void main()

{

wei=1;

P0=0xfe;

wei=0;

for(num=0;num<16;num++)

{

duan=1;

P0=table[num];

delay(150);

duan=0;

}

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=500;y>0;y--); }

下载到实验板后实验现象如图3所示。

图3 6个数码管依次从0-f变化

2、数码管的动态显示

明白了数组编码后,现在我们正式介绍数码管的动态显示,为了更利于大家理解,我们先用前面介绍过的静态显示法写一个程序,功能为:让6个数码管间隔一秒依次显示1、2、

3、4、5、6。程序如例2.

例2数码管依次显示1、2、3、4、5、6

#include

#define uint unsigned int

#define uchar unsigned char

sbit duan=P2^6;

sbit wei=P2^7;

uchar num;

uchar code table[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uint);

void main()

{

while(1)

{

for(num=1;num<7;num++)

{

if(num==1)

{

wei=1;

P0=0xfe;

wei=0;

duan=1;

P0=table[num];

delay(1000);

duan=0;

}

else if(num==2)

{

wei=1;

P0=0xfd;

wei=0;

duan=1;

P0=table[num];

delay(1000);

duan=0;

}

else if(num==3)

{

wei=1;

P0=0xfb;

wei=0;

duan=1;

P0=table[num];

delay(1000);

duan=0;

}

else if(num==4)

{

wei=1;

P0=0xf7;

wei=0;

duan=1;

P0=table[num];

delay(1000);

duan=0;

}

else if(num==5)

{

wei=1;

P0=0xef;

wei=0;

duan=1;

P0=table[num];

delay(1000);

duan=0;

}

else if(num==6)

{

wei=1;

P0=0xdf;

wei=0;

duan=1;

P0=table[num];

delay(1000);

duan=0;

}

}

}

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

main函数内的意思num从1开始,一直加到6,然后不断的循环 (程序为

for(num=1;num<7;num++),当num=1时,先打开第一位数码管,再让第一位数码管显示1(程序P0=table[num],即P0=table[1]),然后进行1s的延时(程序为delay(1000);)。紧接着当num=2时,打开第二位数码管,并让其显示2,延时1s……,一直到num=6时,打开第六位数码管,并让其显示6,延时1s,再重复前的的程序。这个我们就可以在实验板上看到数码管从第一位开始依次以1s的时间间隔依次显示123456.

下面的程序下载到实验板现象如图4所示。

图4数码管依次显示123456

现在我们把延时程序缩短(注意上面是延时1s,依次100ms 10ms 1ms ….一直到10us,然后把每次改后的程序下载到实验板,.当短到10us时,可看到如下现象:

也就是此时我们看到的现象是6个数码管在同一时刻按位依次显示123456,可能大家马上要提出疑问了,在上面不是说过利用静态的写法不是实现不了这种效果吗?这里就是数码管的动态显示。

所谓动态显示,就是依次向每位位数码管同时送出字形码和相应的位选,位与位之间利用延时程序进行延时,当延时程序非常短时,由于发光管的余辉和人眼视觉暂留作用,此时

我们的人眼就分辨不出位与位之间有延时存在,此时就感觉各位数码管同时都在显示,这样我们实现在静态不能实现的功能。

实验三 数码管显示实验

实验十九数码管显示实验 一、实验目的 1、了解数码管的显示原理; 2、掌握数码管显示的编程方法。 二、实验内容 1、编写数码管显示程序,循环显示0-F字符 三、实验设备 1、硬件: JX44B0实验板; PC机; JTAG仿真器; 2、软件: PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2; Multi-ICE V2.2.5(Build1319); 四、基础知识 1、掌握在ADS集成开发环境中编写和调试程序的基本过程。 2、了解ARM 应用程序的框架结构; 3、了解数码管的显示原理; 五、实验说明 1、LED显示原理 发光二极管数码显示器简称LED显示器。LED显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,目前广泛应用于各类电子设备之中。 7段LED由7个发光二极管按“日”字排列。所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。一般共阴极可以不需要外接电阻。 其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g端加上高电压,其它加低电压。这样如果按照dp、g、fe、d、c、b、a的顺序排列的话对应的码段是:6DH。其它的字符同理可以得到。

2、数码管显示驱动 数码管的显示一般有动态显示和静态显示两大类,另外按照驱动方式又分串行驱动和并行驱动两种方式。串行驱动主要是提供串-并转换,减少控制线数量;并行驱动对每一个段提供单独的驱动,电路相对简单。这方面参看数字电路相关内容。 下面主要介绍静态显示和动态显示: 1)静态显示: LED数码管采用静态接口时,共阴极或共阳极节点连接在一起地或者接高电平。每个显示位的段选线与一个8位并行口线相连,只要在显示位上的段选位保持段码电平不变,则该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O口,也可以采用串行驱动。相应的电路如下: 很明显采用静态显示方式要求有较多的控制端(并行)或较复杂的电路(串行)。但是在设计中对器件的要求低。

数码管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

LED数码管显示电子钟设计

《单片机原理及应用》 课程设计说明书 题目LED数码管显示电子钟设计系(部) 专业(班级) 姓名 学号 指导教师 起止日期 课程设计任务书

系(部): 专业:

目录 一、摘要 单片机全称为单片机微型计算机(Single Chip Microsoftcomputer).从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容

易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础.在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 二、设计内容 2.1、任务要求 本次设计时钟电路,使用了A TC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求. 2。2、设计程序方案 设计程序思路: 1.实现8位数码管动态扫描显示 void Display_1Code(unsigned char pos,unsigned char code1); void Display_2Num(unsigned char pos,unsigned char num,unsigned char point); 数码管动态扫描就是: 段显位选延时显示消影 因为我们用的是共阳数码管,而段码表用的共阴的,所以对code1取反 共阳数码管高电平点亮,所以P2移位后不用取反,从高位开始是第1个数码管 掩饰显示1ms,P2给全0全部熄灭,消影作用. 2。时间显示 采用实时时钟芯片DS1302,读芯片的datasheet,根据时序等说明编写驱动程序。 1)初始化 void DS1302_Init(void) 2)底层基本读写函数 void DS1302_WriteByte(unsigned char byte) unsigned char DS1302_ReadByte(void) 3)对芯片寄存器的读写函数 void DS1302_WriteData(unsigned char addr,unsigned char mdata) unsigned char DS1302_ReadData(unsigned char addr) 4)修改时间函数

数码管显示程序(汇编语言)

实验三数码显示 一、实验目的 了解LED数码管动态显示的工作原理及编程方法。 二、实验内容 编制程序,使数码管显示“DJ--88”字样。 三、实验程序框图 四、实验步骤 联机模式: (1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM

文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)数码管显示“DJ--88”字样。 脱机模式: 1、在P.态下,按SCAL键,输入2DF0,按EXEC键。 2、数码管显示“DJ--88”字样。 五、实验程序清单 CODE SEGMENT ;S6.ASM display "DJ--88" ASSUME CS:CODE ORG 2DF0H START: JMP START0 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB ?,?,?,?,?,? data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0 c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1 CON1: CALL DISP JMP CON1 DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL MOV CL,0DFH ;显示子程序 ,5ms MOV BX,OFFSET BUF DIS1: MOV AL,[BX] MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB

单片机数码管显示系统课程设计

数码管显示与键盘扫描系统 摘要: 现如今已经跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。这种计算机的最小系统只用了一片集成电路,就可进行简单运算和控制。因为它体积小,通常都是放置在一个机械装置的内部。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。数码管显示与键盘扫描系统是单片机系统中十分典型的应用,可将4×4键盘的按键对应显示在数码管上。 关键词:单片机数码管 一、绪论 1. 研究意义 用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。静态显示数据稳定,占用很少的CPU 时间。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。LED数码管的外围电路一般需要一个限流电阻和加大驱动电流的晶体管。 LED数码管是由发光二级管显示字段组成的显示器,有“8”字段和“米”字段之分,这种显示器有共阳极和共阴极两种。实际上不用驱动电路即可达到正常亮度,为了可靠性设计可采用晶体管构成驱动电路。 2. 设计目的 在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LED数码管的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计能力。

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段显示管上滚动显示自己的电话号码 三、实验要求:编写程序模块,用仿真器检测模块设计得正确与否,并给出

数码管显示变化数字

/*----------------------------------------------- 名称:单个共阳数码管动态显示变化数字 内容:通过循环赋值给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); }

DS1302数码管显示程序

/************************************************************************/ // huaqinMCU DS1302 实验程序数码管显示时钟设置说明 // "8键"为时钟设置、时分切换、保存"0键"为加"4键"为减 /************************************************************************/ #include #define uchar unsigned char #define uint unsigned int //===以下IO定义请根据您硬件的连接修改=== sbit T_RST=P3^5;//ds1302-5 sbit T_IO=P3^4;//ds1302-6 sbit T_CLK=P3^6;//ds1302-7 sbit ACC0=ACC^0; sbit ACC7=ACC^7;//累加器A 51单片机原理中有介绍 sbit up=P3^1; sbit down=P3^2; sbit set=P3^0; uchar a,b,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg; int hour,mie,sei; uchar clk_time[3]; //秒,分,时寄存器初始值 code uchar ledmap[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40}; //数码管段码 /******************DS1302:写入操作(上升沿)*********************/ void write_byte(uchar da) { uchar i; ACC=da; for(i=8;i>0;i--) { T_IO=ACC0; T_CLK=0; T_CLK=1; ACC=ACC>>1; } } /******************DS1302:读取操作(下降沿)*****************/ uchar read_byte(void) { uchar i;

LED_数码管显示设计(单片机)

键盘和LED 数码管显示设计 一、预备知识 有关 LED 数码管、滑动变阻器控制的具体编程原理见单片机课程教材。 二、设计目的 掌握 LED 数码管的使用,熟悉单片机人机接口设计,提高实际应用 的能力。 三、设计内容 1、设计LED 数码管显示电路原理图; 2、设计程序流程图; 3、编程调试; 四、参考接线 1、人机接口补丁板,可通过选择跳线,选择数码管段选输入是并行或串行输入; 2、不要忽略从实验箱主板上接+5V、GND 到人机接口补丁板; 3、具体接线参见人机接口补丁板原理图。 五、设计步骤 程序: LED_0 EQU 30H ;存放三个数码管的段码 LED_1 EQU 31H LED_2 EQU 32H ADC EQU 35H ;存放转换后的数据

ST BIT P3.2 OE BIT P3.0 EOC BIT P3.1 ORG 00H START: MOV LED_0,#00H MOV LED_1,#00H MOV LED_2,#00H MOV DPTR,#TABLE ;送段码表首地址 SETB P3.4 SETB P3.5 CLR P3.6 ;选择ADC0808的通道3 WAIT: CLR ST SETB ST CLR ST ;启动转换 JNB EOC,$ ;等待转换结束 SETB OE ;允许输出 MOV ADC,P1 ;暂存转换结果 CLR OE ;关闭输出 MOV A,ADC ;将AD转换结果转换成BCD码 MOV B,#100 DIV AB MOV LED_2,A MOV A,B MOV B,#10 DIV AB MOV LED_1,A MOV LED_0,B LCALL DISP ;显示AD转换结果 SJMP WAIT DISP: MOV A,LED_0 ;数码显示子程序 MOVC A,@A+DPTR CLR P2.3 MOV P0,A LCALL DELAY SETB P2.3 MOV A,LED_1 MOVC A,@A+DPTR CLR P2.2 MOV P0,A

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

数码管显示不正常的调试方法与步骤总结 分类:单片机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 今天帮同学调了一下这个程序,在这里记下一笔,做个小结。

51单片机并行口驱动LED数码管显示电路及程序

51单片机并行口驱动LED数码管显示电路及程序 介绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。 1 硬件电路 多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法,图1所示是该电路的硬件原理图。其中,74LS138是3线-8线译码器,74LS164是8位并行输出门控串行输入移位寄存器,LED采用L05F型共阴极数码管。 显示时,其显示数据以串行方式从89C52的P12口输出送往移位寄存器74LS164的A、B 端,然后将变成的并行数据从输出端Q0~Q7输出,以控制开关管WT1~WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1~LED8。位选码由89C52的P14~P16口输出并经译码器74LS138送往开关管Y1~Y8的基极,以对数码管LED1~LED8进行位选控制,这样,8个数码管便以100ms的时间间隔轮流显示。由于人眼的残留效应,这8个数码管看上去几乎是同时显示。

<51单片机并行口驱动LED数码管显示电路> 2 软件编程 该系统的软件编程采用MCS-51系列单片机汇编语言完成,并把显示程序作为一个子程序,从而使主程序对其进行方便的调用。图2所示是其流程图。具体的程序代码如下:

<51单片机并行口驱动LED数码管显示程序>

实验四八位七段数码管动态显示电路的设计

八位七段数码管动态显示电路的设计 一、实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、学习VHDL的CASE语句及多层次设计方法。 二、实验原理 七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。其单个静态数码管如下图4-4-1所示。 图4-1 静态七段数码管 由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相么。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。 三、实验内容 本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。在实验中时,数字时钟选择1024HZ作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。 四、实验步骤 1、打开QUARTUSII软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。 3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光 盘中提供的示例程序。 4、编写完VHDL程序后,保存起来。方法同实验一。

5、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。 6、编译仿真无误后,根据用户自己的要求进行管脚分配。分配完成后,再进行全编译 一次,以使管脚分配生效。 7、根据实验内容用实验导线将上面管脚分配的FPGA管脚与对应的模块连接起来。 如果是调用的本书提供的VHDL代码,则实验连线如下: CLK:FPGA时钟信号,接数字时钟CLOCK3,并将这组时钟设为1024HZ。 KEY[3..0]:数码管显示输入信号,分别接拨动开关的S4,S3,S2,S1。 LEDAG[6..0]:数码管显示信号,接数码管的G、F、E、D、C、B、A。 SEL[2..0]:数码管的位选信号,接数码管的SEL2、SEL1、SEL0。 8、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与 自己的编程思想一致。 五、实验现象与结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块的时钟选择为1464HZ,拨动四位拨动开关,使其为一个数值,则八个数码管均显示拨动开关所表示的十六进制的值。

数码管显示原理 (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 };

数码管显示程序

数码管显示程序 一、程序X1 1、程序X1的功能:最右边的数码管显示“0” 2、程序: ORG 0 LJMP STR ORG 0100H STR: MOV P3, #0FEH ;送最低位有效的位码 MOV P0, #0C0H ;送“0”的段码“0C0H” SJMP STR END 二、程序X2: 用查表方式显示某个显示缓冲器中的数字 1、查表显示的预备知识 设从右到左各显示器对应的显示缓冲器为片内RAM79H~7EH

3、 实例: 例:已知(79H )= 0 7H , 查段码表在最右边的数码管显示79H 中的 “7”; 注:共阳极的段码表: TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH 若:(A )= 0XH 则数字“X ”对应的段码在段码表中的表地址 = TAB + X ORG 0 LJMP STR ORG 0100H ① 各显示器与显示缓冲器地址对应关系 显示缓冲器: 7EH 7DH 7CH 7BH 7AH 79H 对应显示 器: ② 显示缓冲器的值与显示数字的关系: 显示缓冲器中的值 对应段码表地址 显示的数字 0XH 表首址+OXH X

STR: MOV P3, #11111110B ;送最低位有效的位码 MOV 79H , #07H ;送要显示的数据到显示缓冲器 MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0) SJMP STR TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH END 例2:. 查段码表在最右边的数码管循环显示“0”~“F” ORG 0 LJMP STR ORG 0100H STR: MOV P3, #11111110B ;送最低位有效的位码 LP0: MOV 79H , #0H ;送要显示的数据的初值到显示缓冲器MOV R3 , #6 ; 送要显示的数据的个数 LP: MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0)

PLC控制数码管显示程序设计

? PLC控制数码管显示程序设计》 学院名称:信息工程学院 专业名称:电气自动化技术 班级名称:电气1204 班 姓名:赵传锋 学号:1205130425 指导教师:汪清平 完成时间:2014年06 月01 日

摘要 数码管显示是一个典型的PIC教学项目。在交通灯、电梯、抢答器等系统的控制中都融入了数码管显示。 本设计就是利用PLC作为核心部件用对数码管显示进行设计,让学生在学习过程中更熟练地掌握PIC的编程技巧,提高编程能力。 利用PLC控制数码管的显示过程,并且给出了接线图、梯形图。 关键词:PLC编程设计;接线图:梯形图

、系统组成 1. 设计要求: 先按下“开”按钮,再按“循环显示”按钮,数码管就会从0~9循环显示。按下“置数”按钮,数码管实时显示8 4、2、1编码开关所置数值。用“循环显示”和“置数”按钮来切换数码管的循环显示和置数状态。 2. 系统组成及工作原理: 系统由pic硬件系统和梯形图程序组成。 PLC的控制方式是由继电器控制方式演化而来,由PLC内部的微电子电路构成的软元件线圈和触点取代了硬件继电器的线圈和触点,用PLC的程序指令取代继电器控制的连接导线,将各个元件按照一定的逻辑关系连接起来,PLC内部的中央控制器(CPU)根据输入条件和预定的程序,控制各个软元件的状态,并输出到外部执行部件,控制设备运行。 3. 硬件原理图: +24 v COM 数 管

4.程序流程图:

二、系统设计 设计可以分为循环模式与置数模式的切换控制部分、循环与置数控制部分和输出部分三大模块。 1. 输出部分: 定义: 编码部分中间继电器的常开触点接法: 将Mxx中低位数字相同的中间继电器的常开触点并联接到一起;输出的接法: Y000接a段、Y001接b段、Y002接c段、Y003接d段、 Y004 接e 段、Y005接f 段、Y006接g 段、Y007接dot 段。 工作过程:当编码部分中的某一组工作时,该组中的中间继电器相应的常开触点闭合,从而使相对应的Y00x有输出,这样与输出相连的段就发亮,并组合形成数字。

数码管显示

数码管显示 第3讲数码管显示 第3讲数码管显示 一、数码管显示原理 我们最常用的是七段式和八段式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。可以看出两个编码的各位正好相反。如下图。

二、点亮一个数码管 下面以七段共阴数码管为例讲述如何点亮一个数码管。 l 51系列单片机的P0口没有上拉电阻(其他端口有),所以如果直接接数码管的段选线,那么不能将其点亮。我们需要为其加上220欧姆的上拉电阻,注意,上拉电阻阻值不能过大。实验原理图如下。 其中,7SEG-COM-CAT-GRN为七段共阴数码管,显示为绿色。RES为电阻。查找电阻时,需要选中下面的Resistors,如下图。

PLC数码管显示课程设计

PLC课程设计论文 级专业班 题目:数码管显示 学号: 姓名: 指导老师: 二零年月日

加信号 一 任务要求实现的功能 数码管显示0~9十个数字,有三个控制按钮,一个是‘加’按钮SQ1,一个是'减'按钮SQ2,另一个是复位按钮SB 。按一下SQ1数码管显示数据加1,当加到9如果再按下SQ1就显示0;当按一下SQ2时数码管显示数字减1,当减到0如果再按下SQ2就显示9。当按下SB 时,数码管显示0. 二 1.描述功能框图 2.虚拟实物图: - 复位信号 判断是哪种类型的信号 数码管显示的数字加1 减信号 数码管显示的数据减1 数码管显示的数据清零 清零 +

三 流程图 N Y 小于9? 大于0? 启 动 加信号? 复位信号? 显示数字0 Y N D0减1 D0=9 D0复位 N D0加1 Y Y N

四 输入输出分配表 输 入 低压电器 PLC X 元件 输 出 低压电器 PLC Y 元件 清零按钮SQ X0 数码管显示 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 加按钮SB1 X1 减按钮SB2 X2 五 梯形图 六 指令表

七总结体会 这次课程设计是用PLC编程语言设计实现数码管显示。在老师布置题目的时候觉得我们这个题目简单,但是当真的去写的时候因为忘记一条指令,而不知道要怎么实现数码管显示的功能,在同学的相互配合下,我们完成了梯形图的绘制。 在梯形图的绘制过程中,每一个步骤都要认真。通过这次的课程设计,熟悉了PLC系统设计的流程、PLC编程软件,加深了对PLC 工作原理的理解,更加熟悉相关指令的编写方法,在实践中加深了对PLC编程的喜爱。仿真的过程是检验编程是否正确的方法。从开始的一无所知,到后来的慢慢熟悉,我感到很兴奋,明白只有全面的考虑问题才能做出系统而严谨的设计。 按照指导老师的要求,我们两个同学一组,我们相互配合,交流对题目的理解,对程序的分析,动手实践能力和团结协作能力都得到了提高。

第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 数码管显示输出 如何有效地控制数码管各个引脚的电平,使其按照我们的预想显示输出呢?以下就共阳和共阴数码管分别给予说明。

单片机控制数码管显示设计

毕业设计与论文注意: 1.选题要求:选题内容应与所学专业相关 2.论文正文:字数3000字以上 3.字体:中文为宋体,西文和数字为New Roman,字符间距标准,正文行距为单倍行距(五号字) 4.页面A4,页边距上下2,左边2.5,右2 5.图和表、公式的编号方法:图1-1xxx,图1-2xxx….;表1-1xxx,表1-2xxx;…….(小五号字) 6.页码1、2、3…..居中从正文开始编排 7.开题报告内容包括毕业论文题目的确定、选题的意义、论文综述、论文大纲。字数要求在1000字以上。 8.应列入主要的文献可6篇及以上。 9.章节编号方法应采用分级阿拉伯数字编号方法,第一级为?、?、?等,第二级为??、?金、??等,第三级为?金?、?金金、?金?等,但分级阿拉伯数字的编号一般不超过三级,两级之间用下角圆点隔开,每一级的末尾不加标点。 各层标题均单独占行书写。正文中对总项包括的分项采用⑴、⑵、⑶…单独序号,对分项中的小项采用①、②、③…的序号或数字加半括号,括号后不再加其他标点。

绍兴职业技术学院 毕业论文 (2011届) 单片机控制数码管显示设计 学生姓名 学号 系别 专业指导教师 完成日期

2 / 25 绍兴职业技术学院 毕业设计综合实践任务书 岗位名称 岗位职责 岗位能力要求 课题任务名称 本课题完成的条件 1、按照自己所学的单片机进行设计和开发; 本课题任务要求 <一> 技术应用设计要求 1、从设计实际需要出发,选择设计方案; <二> 进程安排要求 1、熟悉毕业任务书要求。 2、开题,确定设计方案,并进行方案论证。 3、汇编语言,绘制电路路图 4、进行实验,是否能够实现显示控制。 5、撰写毕业论文。 6、指导教师的过程指导和初稿的审评,提出修改意见并反馈。 7、资料整理并上交论文(制作的演示实物或图样成果),参加答辩。 1 / 25 毕业设计(论文)工作进度计划表 计(文)90121234 12341234123412341234123412341234 熟悉毕业任务书要求,或根据岗位1展调研选题和查阅文献资 开题,确定设计方案,并进行方案2 证设计计算、绘图、编制工艺、编制3 工程序、生产制造、装配测试等产品或设计方案(图样)的优化与4 进撰写毕业论文5 指导教师的过程指导和初稿的审评6提出修改意见并反馈。资料整理并上交论文(制作的演示实 7 ,参加答辩。物或图样成果) 8

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

《单片机设计与实训》 设计报告 题目:数码管滚动显示控制 姓名:王伟杰 班级:自动化四班 学号: 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系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。结构图如下:

相关文档
最新文档