您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 项目3-数码管显示专题.
《单片机原理与应用》专题课件数码管显示二、项目资讯——数码管基础知识1.数码管常用封装2011年3月16日32.数码管的分类(1)尺寸0.3~0.8寸1.0~2.3寸3.0寸以上(2)内部连接方式共阳极(CommonAnode)共阴极(CommonCathode)二、项目资讯——数码管基础知识3.数码管内部结构图二、项目资讯——数码管基础知识共阳:com端接高电平,段码输入高电平亮。共阴:com端接低电平,段码输入低电平亮。共阴极(CC)共阳极(CA)2011年3月16日54.数码管的字形码数码管显示原理:要显示某个字形,需将此字形对应的笔段点亮,因而要送不同的电平组合数据至数码管引脚,该数据称为字形码或段码。abcdefgdpcomabfgcomcdpde笔段dpgfedcba共阳极10100100共阴极01011011数据位D7D6D5D4D3D2D1D0“2”的段码:共阳极:0xA4、共阴极:0x5B二、项目资讯——数码管基础知识数字共阳极七段码共阴极七段码00xc00x3f10xf90x0620xa40x5b30xb00x4f40x990x6650x920x6d60x820x7d70xf80x0780x800x7f90x900x6f4.数码管的字形码表二、项目资讯——数码管基础知识1.数码管静态显示原理图分析P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7STC89C52abcdefgdpcom+5V470R×8共阳连接方式:对于共阳极数码管其公共端接电源,每个数码管的段码A~H、DP分别与P0.0~P0.7相连。通过PO输出不同的数据组合,即可在数码管上显示不同的数字。静态显示方式,每一个数码管都需要单独占用一个单片机P口。二、项目资讯——数码管静态显示10011111低电平点亮相应笔段“1”的段码为0XF91.数码管静态显示原理图分析共阴连接方式:对于共阳极数码管其公共端接地,每个数码管的段码A~H、DP分别与P2.0~P2.7相连。通过P2输出不同的数据组合,即可在数码管上显示不同的数字。二、项目资讯——数码管静态显示P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7STC89C52abcdefgdpcom470R×801100000高电平点亮相应笔段“1”的段码为0X06位驱动段驱动P0.0+5Vcom1com2com3com4com5com6abcdefgdpP0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.28位共阳极数码管模块相同的段驱动端都并联在一起。com7com8P2.1P2.02、单片机学习开发板数码管连接图二、项目资讯——数码管静态显示3、在单片机学习开发板显示一个数字二、项目资讯——数码管静态显示位驱动段驱动P0.0+5Vcom1com2com3com4com5com6abcdefgdpP0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.2com7com8P2.1P2.00100100111111110位驱动P2口输出“11111110”段驱动P0口输出“5”的段码“10010010B”#includereg51.hmain(){P2=0XFE;P0=0X92;while(1);}//接通公共端电源//送数码管段码在单片机学习开发板上最右边的数码管上显示数字“5”二、项目资讯——数码管静态显示在右边第3个数码管上循环显示数字0~9,每个数据显示1秒钟,请画出程序流程图并编写程序在实验板上实现上述要求功能。4.数码管静态显示程序设计练习思考:如何在右边2个数码管上显示1个2位数呢?如显示68。二、项目资讯——数码管动态显示1、单片机学习开发板数码管内部结构图四位一体共阴型四位一体共阳型四位一体数码管位驱动段驱动P0.0+5Vcom1com2com3com4com5com6abcdefgdpP0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.28位共阳极数码管模块相同的段驱动端都并联在一起。com7com8P2.1P2.02、单片机学习开发板数码管连接图二、项目资讯——数码管动态显示二、项目资讯——数码管动态显示3.数码管动态显示原理图多个数码管相同的段连在一起,共1个IO口。各数码管的公共端通过独立的IO口,控制与电源或地接通。如学习开发板原理图所示:位驱动段驱动P0.0+5Vcom1com2com3com4com5com6abcdefgdpP0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.2com7com8P2.1P2.00100100111111110二、项目资讯——数码管动态显示4.数码管动态显示程序设计如何在右边2个数码管上显示1个2位数呢?如显示68。程序流程图开始送字型“8”段码延时1S选通第2位数码管电源送字型“6”段码延时1S选通第1位数码管电源#includereg51.hmain(){while(1){P2=0XFE;//第1个数码管接通电源P0=0x80;//输出个位8的七段码Delay(1000);P2=0XFD;//第2个数码管接通电源P0=0x82;//输出十位6的段码Delay(1000);}}程序代码二、项目资讯——数码管动态显示5.数码管动态显示原理在上述的程序示例中大家看到了什么效果?现在我们把延时间改成5ms看一下有什么效果?为什么?(实验演示)数码管动态电路一般将几个数码管(学习开发板是8个)相同的笔段引脚并联在一起,相同笔段共用IO口。各数码管的位选端(公共端)通过一个独立的IO口控制,由数码管的位选来控制哪一位数码管有效。所谓动态扫描显示就是轮流向各位数码管送出字形码(段码)和相应的位选数据,只要各个数码管之间的切换速度比较快,利用发光管的余辉和人眼视觉暂留作用,使人感觉好像几个数码管同时都在显示。二、项目资讯——数码管动态显示6.数码管动态显示练习在实验板上8个数码管显示20121201,要求显示稳定无明显闪烁感,画出程序流程并编写程序上机调试。二、项目资讯——数码管动态显示7.数码管显示方法比较(1)在静态显示单片机只送一次数据至数码管即可保持字形的显示优点:程序简单,不占用CPU时间缺点:硬件复杂,占用单片机IO多,显示位数较多时需要使用锁存器,硬件成本高(2)动态显示单片机不断扫描数码管,分时送出数据,利用“视觉暂留”的现象进行显示优点:硬件简单,占用单片机IO少、硬件成本低缺点:程序复杂,需单片机不断扫描数码管,极大占用CPU时间二、项目资讯——数码管动态显示思考:如何在数码管上显示一个变量的值?例如有一个整形变量。二、项目资讯——数码管动态显示(1)在上次课的思考题:如何在数码管上显示一个整形变量的值?要实现上述功能,在显示程序中,每个数码管的显示数据肯定不能赋一个常量值。对于1个整形变量y我们可以通过前面学习的运算符和表达式可以求出每1位数的值(如个位为y%10,十位数为y%100/10,依次类推),但怎么得到它的七段码呢?在实际中常用查表的方法来实现。8、C51数组的使用(2)什么是表?怎么查表?表是在存储器中开辟的一组地址连续的存储空间,用来存放一些数据的集合,查表就是以一定方式找到数据集合中所需的数据。在C51中,表是以数组的形式来实现,以数组下标的进行数据元素的查找。(3)数组的定义与引用相关知识见C51专题PPT的数组部分。二、项目资讯——数码管动态显示(4)数组应用举例编写程序在数码管上显示一个5位整型变量题目分析:(1)将数码管0~9的段码定义成一个表(数组形式存储0~9段码)(2)通过表达式计算出每位的数值(3)用每位的数值作为数组下标,查表得到每位的数值的段码(4)动态扫描显示每位数据8、C51数组的使用程序流程图开始送个位数段码延时5ms选通第2位数码管电源送十位数段码延时5ms选通第1位数码管电源送百位数段码延时5ms选通第4位数码管电源送千位数段码延时5ms选通第3位数码管电源选通第5位数码管电源送万位数段码延时5ms二、项目资讯——数码管动态显示#includereg51.hcodeunsignedcharSEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};main(){inty;y=20123;while(1){P2=0xfe;P0=SEGMENT[y%10];Delay(5);P2=0xfd;P0=SEGMENT[y%100/10];Delay(5);P2=0xfb;P0=SEGMENT[y%1000/100];Delay(5);P2=0xf7;P0=SEGMENT[y%10000/1000];Delay(5);P2=0xef;P0=SEGMENT[y/10000];Delay(5);}}(5)源程序上述程序每位显示都是三个语句,可以使用循环语句对程序进行优化!二、项目资讯——数码管动态显示(6)优化后的源程序#includereg51.hcodeunsignedcharSEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};codeunsignedcharSELECT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};main(){inty=20123,x;chari;while(1){x=y;for(i=0;i5;i++){P2=SELECT[i];P0=SEGMENT[x%10];Delay(5);x/=10;}}二、项目资讯——数码管动态显示8、课堂练习已知有3个变量y,m,d分别存放当天的日期,请编写程序在8个数码上显示出来。其中y为4位整型变量,m、d为二位字符型变量。二、项目资讯——数码管动态显示9、数码管显示函数编写在实际项目中,可能有多地方需要显示,所以我们可以把显示部分单独编写成一个函数,要显示的内容通过参数传递来实现。本函数涉及我们前面所学的带参数的函数定义、调用及静态变量相关知识,在这里不再重复,请大家见C51专题PPT函数部分和变量的存储类型。(1)函数功能任务分析:已知有3个变量y,m,d分别存放当天的日期,其中y为4位整型变量,m、d为二位字符型变量。显示的数据在3个变量中,所以函数需要三个形参,该函数不需要返回值。二、项目资讯——数码管动态显示课堂练习回顾:已知有3个变量y,m,d分别存放当天的日期,请编写程序在8个数码上显示出来。其中y为4位整型变量,m、d为二位字符型变量。把上述课练堂习题改成函数形式实现。9、数码管显示函数编写二、项目资讯——数码管动态显示Display(inty,charm,char,d){staticcharnum=0;//num表示8个数码管序号,值为0-7P2=0xff;//消影switch(num){case0:P0=SEGMENT[d%10];break;case1:P0=SEGMENT[d/10];break;case2:P0=SEGMENT[m%10];break;case3:P0=SEGMENT[m/10];break;case4:P0=SEGMENT[y%10];break;case5:P0=SEGMENT[y%100/10];break;case6:P0=SEGMENT[y%1000/100];break;case7:P0=SEGMENT[m/1000];break;}P2=SELECT[num];//开位显示num++;num%=8;//8个数码管显示完后,num清0,重新计数0-7}(2)函数代码二、项目资讯——数码管动态显示#includereg51.hcodecharSEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82
本文标题:项目3-数码管显示专题.
链接地址:https://www.777doc.com/doc-1961574 .html