资讯详情

数码管显示

数码管显示

一、实验目的: 了解数字管的结构和功能; 2.学会如何区分三极管的三个引脚,正确使用三极管。 3.学会运用星光实验原理控制数字管的发光,为后续试验打下良好的基础(制作电子钟、电压表、温度计)。 二、实验设备: C8051F330单片机,0.5K电阻八个,10K9013三极管有六个电阻(NPN类型)个,三个共阳极双数字管,稳压电源,跳线,插槽,电烙铁,锡丝 三、实验电路图:

数字管动态显示驱动 让我们介绍一下数字管的显示原理。每个数字管有八个,即A、B、C、D、E、F、G、DP(即小数点),每个人实际上相当于一个发光二极管。当数码管的共阳极连接到电源的正极时,如果每个数码管的引脚连接到电源的负极,相应的位置就会发光(当然要注意选择合适的电压,否则会烧坏数码管)。当我们让这八个人中的一些人按照一定的规则同时发光时,我们可以显示我们需要的数字。在这个实验中,我们使用它P0来控制显示数字笔画。 接下来,我们需要做的是同时让多个数字管闪闪发光。在星光照明实验中,当我们将延迟时间降低到一定程度时,我们会观察到四个二极管同时发光,这是利用人的视觉暂留现象。事实上,这四个二极管同时发光的,只是因为延迟时间太短,发光太快,根本分不清我们的视觉。利用这个原理,我们也可以让多个数字管看起来同时发光。 从图中可以看出,三个共阳极双数字管的每一个(A、B、C……)它是连接在一起的,六个三极管相当于每个数字管(每个双数字管是由L/R由两个数字管组成的开关相当于在每个并联支路上并联并添加六个数字管。当开关关闭时,支路的数字管将显示数字。三极管的开关功能是通过控制基极电位来实现的。当基极增加电位时,基极与发射极之间PN当基极加低电位时,结将被打开PN结。我们在这个实验中使用它P控制基极电位。 如图所示,A——P0.0;B——P0.1;C——P0.2;D——P0.3;E——P0.4;F——P0.5;G——P0.6;DP——P0.7.从左到右控制六个数字管P1引脚分别是P1.5、P1.4、P1.3、P1.2、P1.1、P1.0; 以下是如何使用数字管的八位来显示值。以显示1为例。当显示1时,我们需要让位B和C亮,其余的不亮,所以我们想P0.1与P0.2置0(低电平),其余设置1(高电平)P0=1111 1001,即16进制P0=0XF我们可以得到同样的道理: 0——0XC0(1100 0000);1——0XF9(1111 1001);2——0XA4(1010 0100);3——0XB0(1011 0000);4——0X99(1001 1001);5——0X92(1001 0010);6——0X82(1000 0010);7——0XF8(1111 1000);8——0X80(1000 0000);9——0X90(1001 0000);

四、范例程序: #include<c8051f330.h> unsigned i,j,m; void sys(void) ///设置系统时钟 { CLKSEL=0X00; OSCICL=0X2D; OSCICN=0XC2; }

void pio(void) //设置I/0端口 { XBR0=0X00;XBR1=0X40; P0MDIN=0XFF;P0MDOUT=0X00;P0SKIP=0XFF; P1MDIN=0XFF;P1MDOUT=0X00;P1SKIP=0XFF; }

void delay(m) //延迟程序 { for(i=0;i<10;i ) for(j=0;j<m;j ) {;;} }

main() { PCA0MD&=~0X4D; sys(); pio(); while(1) { P0=0XC0;P1=0XFE;delay(100);//P0=1100 0000;P1=1111 1110 P0=0XF9;P1=0XFD;delay(100);//P0=1111 1001;P1=1111 1101 P0=0XA4;P1=0XFB;delay(100);//P0=1010 0100;P1=1111 1011 P0=0XB0;P1=0XF7;delay(100);//P0=1011 0000;P1=1111 0111 P0=0X99;P1=0XEF;delay(100);//P0=1001 1001;P1=1110 1111 P0=0X92;P1=0XDF;delay(100);//P0=1001 0010;P1=1101 1111 }//自左向右显示的数量为543210 } 五、实验总结: 虽然实验原理大致相同,但硬件电路明显复杂,所以在焊接硬件部分必须小心,如果只有速度和粗心焊接实验板,所以如果线路焊接问题,将花更多的精力检查错误,所以请仔细查看电路图,耐心焊接电路细节决定成败。 2.3.4实验三 定时器/计数器实验-红外计数器 一、实验目的 掌握红外发射接收器,LM324操作放大器的工作原理,并熟练运用。理解和掌握C8051f330单片机的计数器和中断功能,实现程序控制。 二、实验设备 C8051f330单片机模板,LED红外发射接收器显示模板,LM324N,各一个电位器,电源,杜邦线。 三:实验原理 1.红外发射接收器 红外接收器由发射头和接收头组成,发射头为白色,接收头为黑色,原理图如下:

当发射头DS1导通后,会发出人眼看不见的红外光;接受头D2当未接收红外光时,电阻非常大,趋于截止(断开)状态。一旦接收到红外光,电阻将迅速降低。电阻值与光强度有关。光越强,电阻值越小(可趋于0)。D2处于导通状态,所以实际应用中要加限流电阻。

2.LM324N LM324N对于四个运输集成电路,采用14英尺双柱直接插入塑料包装。它包含四组形式完全相同的操作放大器了共享电源外,四组相互独立。 如图所示:

芯片LM324N一般采用5V供电。在每一路操作放大器中, 号表示同相输入端,号表示反相输入端。通常,当同相输入端为中间电压值(如2)时V),如果反向输入端电压高于同相输入端,则输出高电平,如果反向输入端电压低于通向输入端,则输出低电平。

3.电位器 我们需要的电压可以通过电位器分压原理输出。

4.C8051f330单片机模板和LED前面已经介绍了显示模板,这里就不赘述了。 5.实验电路图

5.编程引导 仔细阅读C8051f关于330数据手册I/O口(P95),定时器(P141),中断(P64)相关内容 定时器:(P146-P161) C8051f330/C8051f310单片机只有定时器0/1有计数功能,定时器2/3 没有计数功能。因此,本实验不能选择定时器2/3。以定时器1为例: 定时器1(T1)有3种工作方式,这里我们用2(8位自动重装计数器/定时器)。T方法2原理框图为:

其中TL0为计数起始值,TH在运行过程中,TL0累加计数,中断256溢出,单片机自动TH0的值装载到TL0中,再计数,溢出再中断,再装载,等等。 在TCON允许定时器1,其他关闭。

在TMOD定时器1由外引脚负跳变为1,并在自动重装模式下工作。

在CKCON选择定时器的工作频率,这里选择系统时钟12分频,也可酌情选择其它分频方式。

TL0和TH0的设置与何时溢出中断有关。在这里,我们应该实现,当数字管显示数字加1时,即指定时间器加1溢出,而不是多次溢出。因此,计数值和重载值应设置为255,加1后溢出。

关于中断:(P64-P71) 在中断设置中,在IE内部开放中断,允许定时器1TF1中断请求:

在IP定时器1设置为高优先级,其他设置为低优先级:

关于EIE1和EIP因为它们所包含的功能没有使用,所以可以不设置。 在中断服务程序中,如果是定时器1中断,则在中断列表中选择3 void P00(void) interrupt 3。

关于输入输出口:(P95-P106) 在输入输出接口设置中,首先要仔细阅读交叉开关的功能介绍,从这里开始P0.0脚输入外部计数脉冲XBR1中连接T1到端口引脚。

P0.5和P0.6控制数字管的通断,使用P1脚控制不同的数字显示,因此P0.0应设置为数字输入模式,其背面P0和P交叉开关跳过一只脚。

P0.5和P0.6.控制级负载能力强,设置泄漏输出模式,P1脚显示数字高低电平变化快,设置为推拉输出模式。

四、注意事项 实验模块之间的连接应根据自己的电路图和程序进行应用I/O脚连线,不要复制其他例子,以免出错。 五:范例程序 ///红外计数实验 定时器1的外部计数功能。 //实现功能:每次红外被遮挡,计数一次,总数显示在数字管上。 //P0.0脚输入 P0.6和P0.7控制显示 P八脚控制数字1。 #include <c8051f310.h> #include <stdio.h> #include <math.h> #define uint unsigned int

sbit a0=P0^0.//输入脚 sbit a6=P0^6.//数字管控制级 sbit a7=P0^7.//数码管十控级 int a,b;//显示的个位和十位 unsigned int h[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //0~9

void sysclk(void) //内部晶振 { OSCICL=0x2d; //20MHZ OSCICN=0xc2; //10MHZ CLKSEL=0x00; //内部晶振 }

void pio(void)//I/O初始化。 { P0MDIN=0xff; //P0.0是数字输入 P0MDOUT=0x00;//0000 0000,注意位0必须是要开漏0 位6和7要是开漏的 负载能力强 P0SKIP=0xfe; //1111 1110,P0.0用到数字资源T1

P1MDIN=0xFF; //P0.6口是取外设的高低电平,所以还是数字输入 P1MDOUT=0xff;//1111 1111,注意推挽(开关能力强) P1SKIP=0xff;

XBR0=0x00; XBR1=0xe0; //1110 0000,交叉开关使能,注意T1使能(位5),外部引进计数脉冲,所以要连接到端口引脚. }

void t1(void)//定时器1初始化,P146→P161。 { TCON=0x40; //0100 0000,定时器控制寄存器,位6对定时器1允许 TMOD=0x60; //0110 0000,定时器方式寄存器,高4位对定时器1的设置[选择计数器功能(定时器1由外部输入引脚T1的负变加1),选择方式2],低4位是对定时器0的设置

CKCON=0x00; //由于TMOD位6设置位1,这个寄存器被忽略,可以不设置

TL1=255;//计数值255 TH1=255;//重载值255 加1溢出 }

void intt (void)//中断初始化,P64→P71 { IE=0x88;//1000 1000,选择中断寄存器,位7允许所有中断,位3定时器1中断允许 IP=0x08;//0000 1000,中断优先级寄存器,位3定时器1高优先级 }

void delay(uint m) {uint i,j; for(i=0;i<200;i++) { for(j=0;j<m;j++) {;;} } }

main() { PCA0MD &=~0x40;// 关狗 sysclk(); pio(); t1(); intt(); a0=1;//先置高电平 a=0; b=0; while(1) {a6=0;a7=1;P1=h[a];delay(1); a6=1;a7=0;P1=h[b];delay(1); } }

void P00(void) interrupt 3 //此时数满了,溢出,就自动使TF1=1,执行中断 { TR1=0;//定时器1运行控制,0为禁止 a++; if(a==10)//满十进位 {a=0;b++;} TF1=0;//定时器1不溢出(溢出就要执行中断),会自动置0,可以不写该语句 TR1=1;//定时器1运行控制,1为允许 } 程序运行过程解析: 程序从main()处开始执行,首先调用各个头文件,再向下执行,关闭看门狗,看门狗其实就是一种出错自动复位定时器,此实验中不需要用复位,关闭。然后调用sysclk(),对系统时钟进行初始化,设定想要的工作频率,再调用pio()初始化,设置正确的输入输出,再调用t1()和intt(),对定时器和中断进行初始化,void P00(void) interrupt 3是中断入口程序,interrupt 3的3是定时器1的中断入口号,在产生定时器溢出中断后程序自动跳转到这里,执行一次这里的程序后再跳回到主程序继续执行主程序。初始化完了以后,这时定时器已经开始计数了。接着进入while()死循环,保证程序一直在执行。 一旦红外发射接收器的红外光线被遮挡来回6次,返回至接收头,由于10k电阻几乎占据了所有电压(分压),P0.0脚电压几乎为0(低电平),定时器1检测到P0.0脚低电平, TL1加1,达到256产生溢出中断,程序跳转到void P00(void) interrupt 3里,执行里面的程序a3取反即p0.3接的发光二极管跳变。再跳回到主程序继续计数。

七:应用与扩展:

工厂流水线包箱(数24件装一箱);测速:给电机装上叶片或码盘,通过红外传感器进行计数,在用算法算出真实速度;红外传感的应用就更广了,比如超市的自动门,电梯,在机器人应用中也很广泛,如光电开关,红外巡线……

标签: 直插稳压三极管lm2596t放大电路数码管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台