8只数码管滚动显示单个数字

合集下载

八位数码管动态显示程序

八位数码管动态显示程序

八位数码管动态显示程序这个是51hei 开发板专区里转来的一个程序,注释很详细,运行也没有问题,原文地址:51hei/bbs/dispbbs.asp?boardid=10id=4140/*动态数显的设计思路,首先是我们要先知道怎样才能使哪个位亮,显示的段是什么数值,接下来就是中断时间的问题了,设计步骤如下,如果要让八个数码管静态显示1 到8,我们可以修改中断时间,如把50000 改成100 或更低*/#includereg52.h #includeintrins.h#define uint unsigned int#define uchar unsigned charsbit duan=P2;sbit wei=P2;uchar a,numw,numd;uchar code tabled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /*第二步骤,创建段显数值的对码表0~9 数值.如果要显示1~8 数值,最好多加前后两位数0 跟9,因为后面++移位时就能按我们常规顺序亮下去,至于如何显示对应数值请先看数码显示电路图*/ uchar code tablew[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //第二步骤,创建位显,就是显示的位置,这个码表相对简单,用二进制表示11111110~01111111,是0 的为八位数显管的位置void main(){a=0; //定义个时间函数numw=0; //附位显初值为0 位numd=0; //附段显初值为0 位TMOD=0X01;//第四步骤,附中断暂存器初值TH0=(65535-50000)/256; //附中断请求时间初值,高8 位TL0=(65536-50000)%256; //附中断请求时间初值,低8 位EA=1; //开启总中断ET0=1; //开启定时中断TR0=1; //启动定时中断while(1){ if(a==10) //第三步骤,执行速度,如果等20 差不多是1 秒,则往下执行,相当于单位数值亮的时间{a=0; //重新附值初值0 numd++; //段显值++ if(numd==9) //如果段值在对码表第9 位则转下执行numd=1; /*重新附值段显值对应对码表第1 位,因为++所以0位并不在数码管中显示. 如果要显示,也会因为++而在第二轮中显示出*/ duan=1;//开启段显端P0=tabled[numd];//附段显P0 值对应段显值对码表duan=0; //锁存wei=1; //开启位显端P0=tablew[numw];//附位显P0 值对应位显值对码表wei=0; //锁存numw++; //相当于位显移位if(numw==8) //如果位显值到对应位显对码表第八位则转下执行numw=0; //重新附值位显值对应对码表第0 位起/*下面是简单的单个数码管显示例证第一骤, 修改后在第三步骤内#include”reg52.h”#include”intrins.h”sbit duan=P2;//段显端口sbit wei=P2;//位显端口void main(){//P0=0xff; 数码管不显示任何信号,默认情况下通电本身就不显示, 可以不写duan=1; //开启段显端口P0=0x06; //附值段显数值为1,可以查阅数码管电路图相对应显示的对码表duan=0; //锁存,保持上一步段显状态,硬件说明请查阅74HC573 功能wei=1; //开启位显端口P0=0xfe; //附值位显位置,01111111,左边第一位,为0 的显示wei=0; //锁存,保持上一步位显状态,硬件说明请查阅74HC573 功能}*/ } } }void timer0() interrupt 1 /*第四步骤,中断时间函数这个相当于移位数显的速度, 速度够快,人眼就会有余辉效应, 感觉8 位数显一直在亮着,相当于正在播放的电影胶卷*/{TH0=(65536-50000)/256;TL0=(65536-50000)%256;a++;}/*以上有什么地方还需要改进的还请老师明示*/tips:感谢大家的阅读,本文由我司收集整编。

8位数码管滚动显示单个数字

8位数码管滚动显示单个数字
uchar Num[]={10,10,10,10,10,10,10,10,2,9,8};
//ቤተ መጻሕፍቲ ባይዱ时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
//主程序
void main()
{
uchar i,j,k=0,m=0x80;
while(1)
/*名称:8只数码管动态显示多个不同字符
说明:数码管动态扫描显示0~7。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
{
uchar i,wei=0x80;
while(1)
{
for(i=0;i<8;i++)
{
P2=0xff;//关闭显示
wei=_crol_(wei,1);
P0=DSY_CODE[i]; //发送数字段码
P2=wei;//发送位码
DelayMS(300);
}
}
}
08 8只数码管动态显示多个不同字符
电路如上图
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//延时
void DelayMS(uint x)

数码管流动显示12345678

数码管流动显示12345678

学号天津城建大学嵌入式系统及应用课程设计设计说明书数码管流动显示12345678起止日期:2015 年11月15日至2015 年11月27 日学生姓名班级成绩指导教师(签字)计算机与信息工程学院2015年11 月27 日课程设计报告书题目: 数码管流动显示12345678学生姓名:学生学号:院名:专业:任课教师:目录摘要 (II)第一章课设总述 (1)1.1单片机概述 (1)1.3课题研究的目的和意义 (1)1.4课题的主要研究工作 (1)第二章系统硬件介绍及设计 (2)2.1AT89C51简介 (2)1.2数码管7SEG-COM-AN-BLUE介绍(7段数码管) (3)2.2硬件电路图 (4)2.3元件清单 (4)第三章系统软件设计 (5)3.1程序描述 (6)3.2程序流程图 (6)第四章系统调试 (7)4.1在PROTEUS中仿真 (7)参考文献 (7)摘要1.内容:利用动态扫描让八位数码管稳定的显示1、2、3、4、5、6、7、82.目标:(1)掌握单片机控制八位数码管的动态扫描技术,包括程序设计和电路设计,本任务的效果是让八位数码管稳定的显示12345678。

(2)用PROTEUS进行电路设计和实时仿真3.知识点链接(1)数码管动态扫描(动态扫描的定义以及与静态显示的区别)动态显示的特点是将所有位数码管的段选线s一位数码管有效。

选亮数码管采用动态扫描显示。

所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。

(2)总线的应用元器件与总线的连线P0口的接线采用总线方式,详细如电路图1所示。

①选择总线按钮②绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。

如果终点在空白处,左键双击结束连线。

画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。

此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。

8位数码管动态显示电路设计

8位数码管动态显示电路设计

电子课程设计——8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:自动化姓名:学号:指导教师:2014年12月目录一、设计任务与要求...................... 错误!未定义书签。

二、总体框图............................ 错误!未定义书签。

2.1、设计思想....................... 错误!未定义书签。

2.2、设计方案....................... 错误!未定义书签。

2.3、对方案的分析................... 错误!未定义书签。

三、选择器件 (4)3.1、实验所需器件: (4)3.2、器件说明: (4)四、功能模块 (7)4.1、脉冲模块设计 (7)4.2、扫描电路模块设计 (8)4.3、显示电路模块设计 (9)五、总体设计电路图 (10)5.1总体设计原理 (10)5.2、总体设计电路图 (11)5.3、仿真结果 (11)5.4、硬件实验 (13)六、心得体会 (14)8位数码管动态显示电路设计一、设计任务与要求1.设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。

(第一至第八个数码管依次显示1、2、3、4、5、6、7、8)2.要求在某一时刻,仅有一个LED数码管发光。

3.该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。

4.当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。

5.研究循环地址码发生器的时钟频率和显示闪烁的关系。

二、总体框图2、1、设计思想电路有八种显示状态,在第一脉冲周期内,第一个数码管显示1;第二个脉冲周期内,第二个数码管显示2;在第三脉冲周期内,第三个数码管显示3;第四个脉冲周期内,第四个数码管显示4;在第五脉冲周期内,第五个数码管显示5;第六个脉冲周期内,第六个数码管显示6;在第七脉冲周期内,第七个数码管显示7;第八个脉冲周期内,第八个数码管显示8。

南邮电工电子课程设计报告

南邮电工电子课程设计报告

南邮电工电子课程设计报告通信与信息工程学院/ 年第 1 学期课程设计II 实验报告模块名称八只数码管动态显示单个数字专业通信工程(嵌入式系统开发)学生班级 1000学生学号 1000学生姓名指导教师报告内容摘要功能简介:1内容:利用动态扫描让八位数码管稳定的显示1、2、3、4、5、6、7、82目标:(1)掌握单片机控制八位数码管的动态扫描技术,包括程序设计和电路设计,本任务的效果是让八位数码管稳定的显示12345678。

(2)用PROTEUS进行电路设计和实时仿真3知识点链接(1)数码管动态扫描(动态扫描的定义以及与静态显示的区别)动态显示的特点是将所有位数码管的段选线s一位数码管有效。

选亮数码管采用动态扫描显示。

所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉仿佛各位数码管同时都在显示。

(2)总线的应用元器件与总线的连线P0口的接线采用总线方式,详细如图------所示。

①选择总线按钮②绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。

如果终点在空白处,左键双击结束连线。

画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。

此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。

在画斜线时,需要关闭线路自动路径功能才好绘制。

Proteus的线路自动路径功能简称WAR,当选中两个连接点后,WAR将选择一个合适的路径连线。

WAR可经过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也能够在菜单栏的“Tools”下找到这个图标。

③给与总线连接的导线贴标签PART LABELS与P0口相连的线标签名依次为P00—P06,本电路中的P0口的上拉电阻经过总线与P0口相连,数码管也是经过总线与P0口相连,这些都需要标注,以表明正确的电气连接。

单击绘图工具栏中的导线标签按钮,使之处于选中状态。

将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“×”号,表明找到了能够标注的导线,单击鼠标左键,弹出编辑导线标签窗口,如图---所示。

8位数码管动态显示电路设计

8位数码管动态显示电路设计

电子课程设计—8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月目录一、设计任务与要求................................................. (3)二、总体框图................................................. (3)三、选择器件................................................. (3)四、功能模块................................................. (9)五、总体设计电路图................................................. . (10)六、心得体会.................................................. .. (12)8位数码管动态显示电路设计一、设计任务与要求1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。

2. 要求在某一时刻,仅有一个LED数码管发光。

3. 该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。

4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。

5、研究循环地址码发生器的时钟频率和显示闪烁的关系。

二、总体框图设计的总体框图如图2-1所示。

图2-1总体框图三、选择器件 1、数码管数码管是一种由发光二极管组成的断码型显示器件,如图1所示。

U13DCD_HEX图1 数码管数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形。

数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮。

8位动态LED数码管显示实验(精)

8位动态LED数码管显示实验(精)

8位动态LED数码管显示实验(精)8位动态LED数码管显示实验2008-03-18 18:048.1 实物图与原理图本实验仪配置带8位动态扫描显示模块一个。

实物图如下:为减少IO的使用,我们采用串入并出芯片CD4094来扩展了IO 口,即采用3个IO来实现数据的传输。

原理图如下:所以,我们占用3个IO来传输数据,8个IO来进行8个LED数码管的位选。

在本实验仪中链接管教分布如下:STK-----P2.5DAT-----P2.6CLK-----P2.7B0、B1、B2、B3、B4、B5、B6、B7接P0口(P0.0 P0.1 P0.2 P0.3 P0.4 P0.5P0.6 P0.7)由于上一节已经讲述了CD4094驱动一位LED数码管的问题,这里我们讲如何来扫描8位数码管。

8.2 LED动态显示原理根据原理图管脚连接,我们知道P0口控制了8个LED数码管的位选中,所以如果想让8个数码管都亮起来,我们可以逐位扫描8位数码管。

动态显示原理:原理上同一时刻只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是常说的动态扫描显示。

动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。

如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,所以一般均取几个ms左右为宜。

8.3 DG3000 动态显示头文件display_s.h//----------------------------------------------------------//程序作用:显示头文件display_s.h//----------------------------------------------------------#ifndef _display_#define _display_#includesbit SDA=P2^6; //定义显示管脚sbit CLK=P2^7;unsigned char data display_bit;unsigned char codeled[20]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x 89,0x8C };//定义段码//延时程序void delay(unsigned int k){ unsigned int i,j;for(i=0;i<k;i++)< bdsfid="131" p=""></k;i++)<>for(j=0;j<100;j++);}//数据传输void send(unsigned char a){unsigned char i;for(i=0;i<8;i++){if(_crol_(a,i)&0x80)SDA=1;elseSDA=0;CLK=0;CLK=1;}}//显示程序 8位LED数码管扫描void display(unsigned chardisplay_buffer[8]){unsigned char i,k;display_bit=0xfe;for(i=0;i<8;i++){k=led[display_buffer[i]];send(k);P0=display_bit;delay(0x01);P0=0xff;display_bit=_crol_(display_bit,1);}display_bit=0xfe;8.4 8位数码管动态显示01234567(C51程序)//----------------------------------------------------------//程序作用:动态扫描显示01234567//---------------------------------------------------------- #include#include //调用显示头文件main(){unsigned chara[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6, 0x7};//显示01234567 while(1){display(a); //显示数据}}。

数码管动态显示教案

数码管动态显示教案

电子综合设计实训题目数码管动态显示 _ 姓名专业学号指导教师郑州科技学院电气工程学院目录摘要 (I)1背景 (1)1.1介绍 (1)1.2设计步骤 (2)2 设计思路 (3)2.1方案对比 (3)3元件的选择 (6)3.1单片机 (6)3.2 显示元器件的选择 (6)4 设计原理及功能说明 (8)4.1 各部分功能说明 (8)5 装配与调试 (14)5.1装配 (14)5.2调试 (14)6 总结 (15)附录 (17)附录一:元件清单 (17)附录二:电路源程序 (17)数码管动态显示的设计摘要本文介绍了一种基于AT89C51单片机的8个数码管滚动显示单个数字的设计,让八位数码管滚动显示0、1、2、3、4、5、6、7,我们以液晶显示技术的发展为背景,选择了比较常用的液晶数码管显示模块,利用了单片机控制数码管模块的显示机理。

研究学习AT89C51单片机其功能,对学习过的单片机,C语言课程进行巩固,设计一款在8只数码管上流动显示单个数字的程序,并用PROTEUS进行电路设计和实时仿真。

该电路有两部分组成:AT89C51单片机和显示模块组成。

AT89C51单片机具有超低功耗和CPU外围的高度整合性;显示模块数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极,方便易用。

实际应用中不需要外部任何元器件即可实现,具有接口电路简单、可靠,易于编程的特点,抗干扰性好等特点。

单片机技术使我们可以利用软硬件实现数码管准确显示各种数码。

而且这种技术相对简单,性价比较高,在我们生活中应用很广泛,具有一定的发展前景。

关键词:AT89C51单片机;数码管;滚动显示1背景1.1介绍随着电子技术的发展,特别是新型集成电路、分立元件的不断投入市场,使得人们对电子技术应用的关注程度已大大超过了电子技术本身。

在计时,自动报时及自动控制等领域发挥着重要的作用,在人们的日常生也愈加离不开数字化的各种生活用品,电子技术深入到社会生活的各个角落。

用汇编语言实现八段数码管显示

用汇编语言实现八段数码管显示

用汇编语言实现八段数码管显示一、实验要求利用实验仪提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。

2. 了解用总线方式控制数码管显示三、实验线路及连线四、实验说明1.本实验仪提供了6 位8段码LED 显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。

显示共有6位,用动态方式显示。

8位段码、6位位码是由两片74LS374输出。

位码经MC1413或ULN2003倒相驱动后,选择相应显示位。

本实验仪中 8位段码输出地址为0X004H ,位码输出地址为 0X002H 。

此处X 是由KEY/LED CS 决定,参见地址译码。

做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。

以便用相应的地址来访问。

例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。

位选通信号 (0x002H)段码输出 (0x004H)数据总线七段数码管的字型代码表如下表:五、程序框图程序代码OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75h ;ljmp StartLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ;mov r2, #00100000b ;Loop:mov dptr, #OUTBITmov a, #0movx @dptr, a ;mov a, @r0mov dptr, #OUTSEGmovx @dptr,amov dptr, #OUTBITmov a, r2movx @dptr, a ;mov r6, #01call Delaymov a, r2 ;rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ;retStart:mov sp, #40hmov Num, #0MLoop:inc Nummov a, Nummov b, amov r0, #LEDBufFillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, @a+dptr ;mov @r0,a ;inc r0inc bcjne r0, #LEDBuf+6, FillBufmov DelayT,#0DispAgain:call DisplayLED ;djnz DelayT,DispAgain ljmp MLoopend。

用汇编语言实现八段数码管显示

用汇编语言实现八段数码管显示

⽤汇编语⾔实现⼋段数码管显⽰⽤汇编语⾔实现⼋段数码管显⽰⼀、实验要求利⽤实验仪提供的显⽰电路,动态显⽰⼀⾏数据.⼆、实验⽬的1. 了解数码管动态显⽰的原理。

2. 了解⽤总线⽅式控制数码管显⽰三、实验线路及连线四、实验说明1.本实验仪提供了6 位8段码LED 显⽰电路,只要按地址输出相应数据,就可以实现对显⽰器的控制。

显⽰共有6位,⽤动态⽅式显⽰。

8位段码、6位位码是由两⽚74LS374输出。

位码经MC1413或ULN2003倒相驱动后,选择相应显⽰位。

本实验仪中 8位段码输出地址为0X004H ,位码输出地址为 0X002H 。

此处X 是由KEY/LED CS 决定,参见地址译码。

做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。

以便⽤相应的地址来访问。

例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。

位选通信号 (0x002H)段码输出 (0x004H)数据总线七段数码管的字型代码表如下表:五、程序框图程序代码OUTBIT equ 08002h ; 位控制⼝OUTSEG equ 08004h ; 段控制⼝LEDBuf equ 60h ; 显⽰缓冲Num equ 70h ; 显⽰的数据DelayT equ 75h ;ljmp StartLEDMAP: ; ⼋段管显⽰码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0djnz r7, DelayLoop djnz r6, DelayLoop ret DisplayLED:mov r0, #LEDBuf mov r1, #6 ;mov r2, #00100000b ; Loop:mov dptr, #OUTBIT mov a, #0movx @dptr, a ;mov a, @r0mov dptr, #OUTSEG movx @dptr,amov dptr, #OUTBIT mov a, r2movx @dptr, a ;mov r6, #01call Delaymov a, r2 ;rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBIT mov a, #0movx @dptr, a ;retStart:mov sp, #40hmov Num, #0 MLoop:inc Nummov a, Nummov r0, #LEDBufFillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, @a+dptr ;mov @r0,a ;inc r0inc bcjne r0, #LEDBuf+6, FillBufmov DelayT,#0DispAgain:call DisplayLED ;djnz DelayT,DispAgain ljmp MLoop end。

8位数码管动态显示电路设计

8位数码管动态显示电路设计

电子课程设计—8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月目录一、设计任务与要求................................................. (3)二、总体框图................................................. (3)三、选择器件................................................. (3)四、功能模块................................................. (9)五、总体设计电路图................................................. . (10)六、心得体会.................................................. .. (12)8位数码管动态显示电路设计一、设计任务与要求1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。

2. 要求在某一时刻,仅有一个LED数码管发光。

3. 该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。

4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。

5、研究循环地址码发生器的时钟频率和显示闪烁的关系。

二、总体框图设计的总体框图如图2-1所示。

图2-1总体框图三、选择器件1、数码管数码管是一种由发光二极管组成的断码型显示器件,如图1所示。

U13DCD_HEX图1 数码管数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。

数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。

而共阳极就是将八个LED的阳极连在一起。

8段数码管动态显示详解

8段数码管动态显示详解

原理图:8个数码管它的数据线并联接到JP5, 位控制由8个PNP型三级管驱动后由JP8引出。

相关原理:数码管是怎样来显示1,2,3,4呢?数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。

我们分别把他命名为A,B,C,D,E,F,G,H。

搞懂了这个原理, 我们如果要显示一个数字2, 那么 A,B,G,E,D这5个段的发光管亮就可以了。

也就是把B,E,H(小数点)不亮,其余全亮。

根据硬件的接法我们编出以下程序。

当然在此之前,还必须指定哪一个数码管亮,这里我们就指定最后一个P2.7。

LOOP:CLR P2.7 ;选中最后的数码管SETB P0.7 ;B段不亮SETB P0.5 ;小数点不亮SETB P0.1 ;C段不亮CLR P0.2 ;其他都亮CLR P0.3CLR P0.4CLR P0.6CLR P0.0JMP LOOP ;跳转到开始重新进行END把这个程序编译后写入单片机,可以看到数码管的最后一位显示了一个数字2。

也许你会说:显示1个2字就要10多行程序,太麻烦了。

显示数字2则是C,F,H(小数点)不亮,同时由于接法为共阳接法,那么为0(低电平)是亮为1(高电平)是灭。

从高往低排列,(p0.7_p0.0)写成二进制为01111110, 把他转化为16进制则为A2H。

我们可以根据硬件的接线把数码管显示数字编制成一个表格, 以后直接调用就行了。

有了这个表格上面显示一个2的程序则可简化为:LOOP:CLR P2.7 ;选中左边的数码管MOV P0,#0A2H ;送数字2的代码到P0口JMP LOOP ;跳转到开始重新进行END原理图中把所有数码管的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。

CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,由8个PNP的三极管,来控制这8位哪一位工作,例如上面的例子中我们选中的是P2.7.就是最后的一位亮了. 同样的如果要第一位亮, 只需要把程序CLR P2.7改为CLR P2.0即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档