单片机控制电子产品项目开发 课件 37-1-学习课件:任务1.4 数码管初始化显示_第1页
单片机控制电子产品项目开发 课件 37-1-学习课件:任务1.4 数码管初始化显示_第2页
单片机控制电子产品项目开发 课件 37-1-学习课件:任务1.4 数码管初始化显示_第3页
单片机控制电子产品项目开发 课件 37-1-学习课件:任务1.4 数码管初始化显示_第4页
单片机控制电子产品项目开发 课件 37-1-学习课件:任务1.4 数码管初始化显示_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务1.4

数码管初始化显示作者:牛俊英任务1.4数码管初始化显示010203040506认识函数认识中断变量的作用域和生存期静态显示开发认识数组动态态显示开发1.认识函数任务1.4数码管初始化显示函数相当于子程序,用户可把自己的算法编成一个个相对独立的函数模块,然后调用函数完成执行的功能,程序通常由各式各样的函数构成函数使用三步骤定义:做了什么事声明:函数调用在定义之前,需要对函数声明调用:去做这件事1.认识函数任务1.4数码管初始化显示将代码段封装成函数的过程为函数定义:类型说明符

函数名(形式参数表){

局部变量说明;

语句;}函数定义都是平行的,在一个函数的函数体内,不能再定义另一个函数。C语言完整程序可以由多个文件组成,每个文件都可以单独编译,但一个函数不能跨越在两个文件中,在一个文件中必须保持完整。intsum(intm,intn){inti,s=0;for(i=m;i<=n;i++){s+=i;}returns;}1.认识函数任务1.4数码管初始化显示如果不返回任何数据,则类型说明符为void,可以不要return语句,如果使用reture语句,则”return;”相当于直接结束函数执行类型说明符是说明函数执行结果(返回数据)的数据类型函数的结果(返回值)是通过函数中的return语句获得的如果需要从被调用函数带回一个函数值,被调用函数中必须以“return结果”返回函数值,结果必须与类型说明符一致。将代码段封装成函数的过程为函数定义:类型说明符

函数名(形式参数表){

局部变量说明;

语句;}intsum(intm,intn){inti,s=0;for(i=m;i<=n;i++){s+=i;}returns;}1.认识函数任务1.4数码管初始化显示函数名是一个标识符,在程序中标识函数的名字,在一个程序中若有多个函数定义时不允许函数名重名。将代码段封装成函数的过程为函数定义:类型说明符

函数名(形式参数表){

局部变量说明;

语句;}int

sum(intm,intn){inti,s=0;for(i=m;i<=n;i++){s+=i;}returns;}1.认识函数任务1.4数码管初始化显示将代码段封装成函数的过程为函数定义:类型说明符

函数名(形式参数表){

局部变量说明; 语句;}intsum(intm,intn){inti,s=0;for(i=m;i<=n;i++){s+=i;}returns;}当函数不需要形式参数时,则可以写为“(void)”或者“()”。形式参数说明对形参表中每一个形参的类型逐个进行说明(但顺序允许不同)函数可以接收用户传递的数据,也可以不接收接收或者传递数据叫做形式参数形式参数说明之后在函数体中不必重新说明,函数体内可以同一般变量一样直接使用,形式参数的值在调用时给出接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数形式参数表中是用逗号(,)分隔的一组变量名称为形式参数,括号是绝对不可省略的0102030405061.认识函数任务1.4数码管初始化显示将代码段封装成函数的过程为函数定义:类型说明符

函数名(形式参数表){

局部变量说明; 语句;}intsum(intm,intn){

inti,s=0;for(i=m;i<=n;i++){s+=i;}returns;}用花括号括({})起来的是函数体部分,它是函数的主体,由C语言中的语句组成(空函数中没有任何语句,但花括号不能缺少)01定义在函数内部的变量称为局部变量(LocalVariable),它的作用域仅限于函数内部,离开该函数后就是无效的,再使用就会报错02函数体内部的局部变量说明部分与形式参数说明含义完全不一样,局部变量说明一个局部于函数体内的一般变量,形式参数说明函数之间的传递数据的形式变量031.认识函数任务1.4数码管初始化显示调用:函数名(实际参数表);变量=函数名(实际参数表);其它函数(函数名(实际参数表));sum(10,20);y=sum(10,20);xy(sum(10,20));main函数是主函数,它可以调用其它函数,而不允许被其它函数调用在程序中是通过对函数的调用来执行函数体的,C语言中,以使用表达式的形式调用函数函数之间允许相互调用,也允许嵌套调用,习惯上把调用者称为主调函数函数还可以自己调用自己,称为递归调用1.认识函数任务1.4数码管初始化显示调用:函数名(实际参数表);变量=函数名(实际参数表);其它函数(函数名(实际参数表));sum(10,20);y=sum(10,20);xy(sum(10,20));函数定义中指定的形式参数在未出现函数调用之时,它们不占用内存中的存储单元,只有在发生函数调用时才被分配内存单元,实参变量将数值传递给形参变量,调用结束后,形参所占的内存单元也被释放,因此实参变量对形参变量是单向“值”传递,并不返回调用函数时所用的参数称为实际参数(实参),实参与形式参数(形参)相结合,称为“形实结合”,此时必须遵循“三个一致”的原则,即类型一致,顺序一致,数量一致。实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式,各实参之间用逗号分隔对无参函数调用时则无实际参数表实参可以相同,也可以是表达式,例如max(a,a),但要求它们有确定的值,在调用时通常实参值传递给形参,形参不可以相同也不可以为表达式1.认识函数任务1.4数码管初始化显示声明:[返回类型]函数名(参数1类型

参数1,参数2类型

参数2,……);不可省略,除非没有形式参数可省略intsum(intm,intn);intsum(int,int);1.认识函数任务1.4数码管初始化显示intsum(int,int);//声明main(){...

y=sum(10,20);//调用...}int

sum(intm,intn)//定义{

inti,s=0;for(i=m;i<=n;i++){s+=i;}returns;}//先定义后使用的函数可以没有声明部分int

sum(intm,intn)//定义{inti,s=0;for(i=m;i<=n;i++){s+=i;}returns;}main(){...

y=sum(10,20);//调用...}1.认识函数任务1.4数码管初始化显示/**************************头文件区域*************************/#include<STC15.H>#include<intrins.h>/*************************函数声明*************************/voidMCU_Init(void);/*************************主函数模块*************************/main(void){ MCU_Init();//函数调用

while(1){ }}/*************************函数定义*************************/voidMCU_Init(void){IE&=~0x80;//关中断

WDT_CONTR=0x15; //关看门狗

//端口初始化

P3M0=0x00; P3M1=0x00; P3=0x00;}无参无返回值函数1.认识函数任务1.4数码管初始化显示/**************************头文件区域*************************/#include<STC15.H>#include<intrins.h>/***********************常量定义区域************************/#defineBUZP30/*************************变量定义区域*************************/unsignedcharCount_Time;/*************************函数声明*************************/voidMCU_Init(void);voidDelay(unsignedchar);//声明要声明参数的类型/*************************主函数模块*************************/main(void){ MCU_Init();while(1){

Count_Time=150;

Delay(Count_Time);//调用时Count_Time为实参

BUZ=!BUZ; }}/*************************函数*************************/voidMCU_Init(void)//初始化函数{

IE&=~0x80;//关中断

WDT_CONTR=0x15;

//端口初始化

P3M0=0x00; P3M1=0x00; P3=0x00;}voidDelay(unsignedcharCount)//延时函数定义时Count为形参{

while(Count!=0)Count--;}有参无返回值函数1.认识函数任务1.4数码管初始化显示/***************************头文件区域*************************/#include<STC15.H>#include<intrins.h>/***********************常量定义区域************************/#defineBUZP30/*************************变量定义区域*************************/unsignedcharCount_Time;/*************************函数声明*************************/voidMCU_Init(void);unsignedcharBUZ_Fun();/*************************主函数模块*************************/main(void){ MCU_Init();while(1){

BUZ=BUZ_Fun(); //调用时会返回数值}}/*************************函数定义*************************/voidMCU_Init(void)//初始化函数{

IE&=~0x80;//关中断

WDT_CONTR=0x15;

//关看门狗

//端口初始化

P3M0=0x00; P3M1=0x00; P3=0x00;}unsignedcharBUZ_Fun()//蜂鸣器函数有无符号字符型返回值{

Count_Time++;if(Count_Time<127)return0;elsereturn1;}有返回值函数2.认识中断任务1.4数码管初始化显示2.认识中断任务1.4数码管初始化显示无需调用无需声明满足中断条件自动进入中断函数即没有入口参数也没有返回值中断函数是特殊函数2.认识中断任务1.4数码管初始化显示定义void函数名()interrupt中断号中断类型标识符2.认识中断任务1.4数码管初始化显示定义void函数名()interrupt中断号中断类型标识符voidINT_Timer0()interrupt1

2.认识中断任务1.4数码管初始化显示/***************************头文件区域*************************/#include<STC15.H>....voidMCU_Init(void);/*************************主函数模块*************************/main(void){ MCU_Init();while(1) {..... }}voidMCU_Init(void){....... //定时器0初始化 AUXR&=~0x80; //定时器0为12T模式 TMOD=0x00; //模式0,16位自动重载TL0=0x40; //设置定时初值TH0=0xFF; //设置定时初值 TR0=1; //开始计时 ET0=1; //EnableTimer0interruptIE|=0x80;//开总中断}voidINT_Timer0()interrupt1//中断函数{ BUZ=!BUZ;}寄存器初始化设置中断条件中断函数满足中断条件要执行的程序2.认识中断任务1.4数码管初始化显示/***************************头文件区域*************************/#include<STC15.H>....voidMCU_Init(void);/*************************主函数模块*************************/main(void){ MCU_Init();while(1) {..... }}voidMCU_Init(void){....... //定时器0初始化 AUXR&=~0x80; //定时器0为12T模式 TMOD=0x00; //模式0,16位自动重载TL0=0x40; //设置定时初值TH0=0xFF; //设置定时初值 TR0=1; //开始计时 ET0=1; //EnableTimer0interruptIE|=0x80;//开总中断}voidINT_Timer0()interrupt1//中断函数{ BUZ=!BUZ;}寄存器初始化设置中断条件中断函数满足中断条件要执行的程序2.认识中断定时器溢出中断任务1.4数码管初始化显示符号描述地址位地址及其符号MSBLSB复位值TCONTimerConTR0l定时器控制寄存器88HTFlTRITF0TR0IElIT1IE0IT000000000BTMODTimerMode定时器模式寄存器89HGATEC/M1M0GATEC/M1M000000000BT1设置T0设置TL0TimerLow0T0计数初始值寄存器低八位8AH

00000000BTH0TimerHigh0T0计数初始寄存器高八位8CH

00000000BIEInterruptEnable中断允许寄存器A8HEAELVDEADCESET1EX1ET0EX000000000BAUXRAuxiliaiyregister辅助寄存器8EHT0xl2Tlxl2UARTM0x6T2RT2_C/T2xl2EXTRAMS1ST200000000B2.认识中断定时器溢出中断任务1.4数码管初始化显示寄存器名寄存器位含义TMOD

GATE控制定时器0,置1时只有在INT0脚为高及TR0控制位置1时才可打开定时器/计数器0C/T控制定时器0用作定时器或计数器,清零则用作定时器(对内部系统时钟进行计数),置1用作计数器(对引脚T0/P3.4的外部脉冲进行计数)MlM0定时器/计数器0模式选择0016位自动重装定时器,当溢出时将RL_TH0和RL.TL0存放的值自动重装入TH0和TL0中。0116位不可重装载模式108位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL011不可屏蔽中断的16位自动重装定时器2.认识中断定时器溢出中断任务1.4数码管初始化显示寄存器名寄存器位含义AUXRT0xl2定时器0速度控制位0,定时器为1T模式定时器时钟频率FT=系统时钟频率1,定时器为12T模式定时器时钟频率FT=系统时钟频率/12,即12分频定时器时钟频率就是定时器的计数频率,定时模式下每1/FT秒计数器加一。IEEACPU的总中断允许控制位,EA=1.CPU开放中断,EA=O,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成多级控制。即各中断源首先受EA控制;其次还受各中断源自己的中断允许控制位控制ET0T0的溢出中断允许位,ET0=1允许T0中断,ET0=0禁止T0中断2.认识中断定时器溢出中断任务1.4数码管初始化显示寄存器名寄存器位含义TCON

TF0T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置“1”TF0,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由査询软件清0)TR0定时器T0的运行控制位。该位由软件置位和清零。当GATE(TMOD.3)=0,TR0=1时就允许T0开始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=1且INTO输入高电平时,才允许T0计数,TR0=0时禁止T0计数IE0外部中断0请求源(INT0/P3.2)标志。IE0=l外部中断0向CPU请求中断,当CPU响应外部中断时,由硬件清“0”IE0(边沿触发方式)IT0外部中断源0触发控制位。IT0=0,上升沿或下降沿均可触发外部中断0。IT0=l,外部中断0程控为下降沿触发方式2.认识中断定时器溢出中断任务1.4数码管初始化显示寄存器名寄存器位含义TH0、TL08位自动重装载时只使用低八位TL0作为定时器计数初始值,计数器从该数值开始计算,每过一个定时器周期加1,允许中断的情况下八位计数器溢出时申请中断16位重载时使用十六位TH0:TL0作为定时器计数初始值,计数器从该数值开始计算,每过一个定时器周期加1,允许中断的情况下十六位计数器溢出时申请中断

TH0(二进制)TL0=TH0(二进制)

TH0(二进制)TL0=TH0(二进制)2.认识中断定时器溢出中断任务1.4数码管初始化显示2.认识中断定时器溢出中断任务1.4数码管初始化显示AUXR|=0x80;//定时器时钟1T模式 TMOD=0x00;//设置定时器模式 TL0=0x50;//设置定时初值 TH0=0xFB; //设置定时初值 TF0=0;//清除TF0标志 TR0=1;//定时器0开始计时定时器时钟就是单片机时钟时钟为16位自动重载计数初始值为TH0:TL0即0xFB50(64336)假设时钟为12M,则定时器中断周期为(65535-64336)*1/12M定时器中断周期100微秒2.认识中断定时器溢出中断任务1.4数码管初始化显示AUXR|=0x80;//定时器时钟1T模式 TMOD=0x00;//设置定时器模式 TL0=0x50;//设置定时初值 TH0=0xFB; //设置定时初值 TF0=0;//清除TF0标志 TR0=1;//定时器0开始计时voidINT_Timer0()interrupt1//中断函数{BUZ=!BUZ;}3.变量的作用域和生存期任务1.4数码管初始化显示[存储种类]数据类型[存储器类型]变量名表;//[内容]为非必需内容自动(auto)、外部(extern)、静态(static)、存储器(register)后续章节介绍,,默认为自动变量函数中的局部变量、自动变量,在调用该函数时系统会给他们分配存储空间,一旦函数调用结束这些存储空间就会自动释放。关键字“auto”可以省略,不写则隐含确定为“自动存储类别”,属于动态存储方式auto变量静态局部变量,在函数调用结束后不消失,反而保留当前的数据,在下一次该函数调用时,该变量现有的值就是上一次函数调用结束时的值static变量外部变量(即全局变量)是在函数的外部定义的,作用域为从变量的定义处开始,到本程序文件的结尾。可以在一个文件内声明外部变量extern声明外部变量一般变量的值都是存储在内存中,register变量允许将局部变量的值存放在寄存器中,这样需要时就直接搬用,不必再进行过内存,提高运算速度register变量4认识数组任务1.4数码管初始化显示一个数组可以分解为多个数组元素按序排列的同类数据元素的集合就是数组这些数组元素可以是基本数据类型或是构造类型数组必须先定义后使用数组4认识数组任务1.4数码管初始化显示一维数组的定义类型说明符

数组名[常量表达式];基本数据类型或构造数据类型自定义标识符,不能与其他变量名同名数据元素的个数,也称为数组的长度unsignedchara[10];//说明字节数组a,有10个字符元素a[0]a[1]…a[9]分配内存“;”不可少4认识数组任务1.4数码管初始化显示一维数组的初始化赋值类型说明符

数组名[常量表达式]={值,值...值};可以是所有数组元素的初始值,也可以是部分元素值unsignedchara[10]={0,1,2,3,4,5,6,7,8,9};//所有元素初始化a[0]=0,a[9]=9unsignedcharb[10]={0,0,0,0,0};//初始化前5个元素为0unsignedcharc[10]={0,1,2,,,,,7,8,9};//初始化第0、1、2、7、8、9元素unsignedchard[]={0,1,2,3,4};//默认数组长度为5有初始化赋值的数组,可省去数组长度定义,默认数组长度为初始化元素的个数4认识数组任务1.4数码管初始化显示一维数组的常数数组定义类型说明符const数组名[常量表达式]={值,值...值};unsignedcharconstadscrset[2]={0x24,0x23};非常数数组都存储在RAM(变量)区,常数数组将会存储在ROM区,ROM区比RAM区的空间要大很多,因此如果使用的数组为元素固定不变的数组最好定义为常数数组。4认识数组任务1.4数码管初始化显示一维数组的数组元素数组名[下标];已定义数组的数组名元素在数组中的序号,可以是常量或变量如a[5]a[i]a[i+2]C语言中只能逐个地使用下标变量,而不能一次引用整个数组4认识数组任务1.4数码管初始化显示一维数组的数组元素unsignedchara[10]={0,1};unsignedchark=0,i=0;//斐波拉契数列计算0,1,1,2,3,5,8,13,21,34for(i=2;i<=9;i++)a[i]=a[i-1]+a[i-2];内存名数值十进制

(十六进制)a[0]0(0x00)a[1]1(0x01)a[2]1(0x01)a[3]2(0x02)a[4]3(0x03)a[5]5(0x05)a[6]8(0x08)a[7]13(0x0D)a[8]21(0x15)a[9]34(0x22)k0(0x00)i10(0x00)内存名数值十进制

(十六进制)a[0]0(0x00)a[1]1(0x01)a[2]1(0x01)a[3]2(0x02)a[4]3(0x03)a[5]5(0x05)a[6]8(0x08)a[7]13(0x0D)a[8]21(0x15)a[9]34(0x22)k55(0x37)i10(0x00)4认识数组任务1.4数码管初始化显示一维数组的数组元素unsignedchara[10]={0,1};unsignedchark=0,i=0;//斐波拉契数列计算0,1,1,2,3,5,8,13,21,34for(i=2;i<=10;i++)a[i]=a[i-1]+a[i-2];内存名数值十进制

(十六进制)a[0]0(0x00)a[1]1(0x01)a[2]1(0x01)a[3]2(0x02)a[4]3(0x03)a[5]5(0x05)a[6]8(0x08)a[7]13(0x0D)a[8]21(0x15)a[9]34(0x22)k55(0x37)i11(0x00)4认识数组任务1.4数码管初始化显示5.静态显示开发

LED指示灯驱动任务1.4数码管初始化显示端口送低电平

点亮LED端口送高电平

熄灭LED5.静态显示开发LED指示灯驱动任务1.4数码管初始化显示/********头文件区域*********/#include<STC15.H>/*********常量定义区********/#defineP0_INIT0xCC#defineP0M1_INIT0x00#defineP0M0_INIT0x00//提高可读性的LED常量定义#defineLED0P00#defineLED1P01#defineLEDON0#defineLEDOFF1voidmain(){

/****端口初始化区****/

P0=P0_INIT;

P0M1=P0M1_INIT;

P0M0=P0M0_INIT;

/******主循环*******/

while(1)

{

LED1=LEDON;//点亮LED1

LED0=LEDOFF;//熄灭LED0

}}5.静态显示开发数码管驱动任务1.4数码管初始化显示将数码管显示的字符罗列,并从0开始对字符编号,再确定每个字符下的I/O端口数据01定义存放端口数据的数组,使得数组中第N个元素为能让数码管显示字符N的端口数据02程序运行过程中,根据数码管的显示要求,查询数组元素为I/O端口数据寄存器赋值03状态编号显示字符端口电平P2端口数据P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.000001000010x2111111110010xF922010000110x4333010100010x5144100110010x9955000101010x1566000001010x0577011110010x7988000000010x0199000100010x1110全灭111111110xFFP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3gP2.5P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.3P2.5gP2.4

eP2.6faP2.7c

P2.1bP2.2DPP2.0dP2.301将数码管显示的字符罗列,并从0开始对字符编号,再确定每个字符下的I/O端口数据5.静态显示开发数码管驱动任务1.4数码管初始化显示/********头文件区域*********/#include<STC15.H>/*********常量定义区********/#defineP2_INIT0xFF#defineP2M1_INIT0x00#defineP2M0_INIT0x00//数码管显示数组定义unsignedcharconstDsp_Seg[11]

=

{0x21,0xF9,0x43,0x51,0x99,0x15,0x05,0x79,0x01,0x11,0xFF};voidmain(){

/****端口初始化区****/P2=P2_INIT;

P2M1=P2M1_INIT;P2M0=P2M0_INIT;P2=Dsp_Seg[5];/******主循环*******/while(1){unsignedinti=0,j=0;

for(i=0;i<=10;i++) {

j=0;

while(j<=60000)j++;

P2=Dsp_Seg[i]; }}}定义存放端口数据的数组,使得数组中第N个元素为能让数码管显示字符N的端口数据02程序运行过程中,根据数码管的显示要求,查询数组元素为I/O端口数据寄存器赋值036.动态显示开发-电路设计任务1.4数码管初始化显示动态由行线和列线组成,行线列分别连入芯片引脚,LED位于行、列线的交叉点逐行扫描,轮流给行线输出高电平,然后根据需要显示的状态列线输出低电平就可点亮对应LED6.动态显示开发-电路设计任务1.4数码管初始化显示控制芯片驱动电流的不足时,特别是行线的输出能力不足时,需要用三极管作为开关驱动LED的显示例:I/O1~I/O8进行笔段显示控制,而I/O9和I/O10则用于选通数码管位6.动态显示开发-电路设计任务1.4数码管初始化显示三极管驱动引脚驱动6.动态显示开发-电路设计任务1.4数码管初始化显示当所需驱动LED数量很多,而控制芯片引脚数目不足且驱动能力不够,需要使用额外的驱动芯片。6.动态显示开发-电路设计任务1.4数码管初始化显示6.动态显示开发-电路设计任务1.4数码管初始化显示驱动芯片TM1616符号引脚名称说明DIN数据输入在时钟上升沿输入串行数据,从低位开始STB片选在上升或下降沿初始化串行接口,随后等待接收指令。STB为低后的第一个字节作为指令,当处理指令时,当前其它处理被终止。当STB为高时,CLK被忽略CLK时钟输入在上升沿读取串行数据,下降沿输出数据SEG1~SEG7输出(段)段输出(也用作键扫描),p管开漏输出GRID1~GRID4输出(位)连接公共端,N管开漏输出VDD逻辑电源5V±10%GND逻辑地接系统地6.动态显示开发-程序设计任务1.4数码管初始化显示显示什么:高层管理程序决定显示的内容怎么显示:底层管理程序处理I/O端口状态显示程序6.动态显示开发-程序设计任务1.4数码管初始化显示分时复用,轮流点亮,高频切换选中显示的行获取显示机会又叫做片选多位数码管共用了位段端端口资源根据要显示的内容设置列线底层程序6.动态显示开发-程序设计任务1.4数码管初始化显示1分析电路图,数码管位段端显示符号对应端口数据2定义相应全局变量和数组3编写底层程序代码4编写高层程序代码6.动态显示开发-程序设计任务1.4数码管初始化显示1分析电路图,数码管位段端显示符号对应端口数据2定义相应全局变量和数组3编写底层程序代码4编写高层程序代码编号显示字符端口电平P2端口数据P2.7aP2.6fP2.5bP2.4eP2.3dP2.2dpP2.1cP2.0g0000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论