论文部分内容阅读
摘要:本文基于STC89C52RC单片机P2口应用为核心,实现单片机对数码管的控制。数码管采用共阳型结构,利用锁存器U2控制数码管的位选端,利用锁存器U3对多个数码管的段选端控制,达到节省单片机I/O口的目的。用KeiluVision4软件进行程序编译和调试。
关键字:STC89C52RC;共阳型七段数码管;锁存器
引言
随着科技的飞跃发展,单片机的应用逐渐增多,以单片机为核心的电器产品已经进入寻常家庭,例如:电冰箱,空调,洗衣机,电磁炉,微波炉等,大多数家用电器带有数字显示功能,例如:电冰箱和空调的温度设置,电磁炉的温度显示等。数字显示主要依靠数码管,数码管需要硬件电路和驱动程序下才能完成我们预设的要求。
1 单片机及其工作电路
单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),单片机芯片常用英文字母的缩写MCU 表示单片机,单片机又称单片微控制器[1]。单片机由程序存储器,数据存储器,定时计数器,中断系统,并行I/O口,串行通信口等组成。单片机利用I/O口对外设进行控制,本文利用P2和P3口对数码管和锁存器进行控制。STC89C52RC单片机是深圳宏晶科技生产的8051内核,具有8K Flash程序存储器和512字节的RAM数据存储器,指令代码完全兼容传统8051单片机。图2是一款双列直插式DIP封装单片机。
2 数码管的工作原理
数字显示最常用的是七段数码管,七段数码管通常由七个条形的发光二极管和一个小数点组成。按顺时针方向,七个发光二极管成为a、b、c、d、e、f、g。按照七个发光二极管的公共端不同,数码管有共阳极和共阴极两种。由于本文采用共阳型七段数码管,所以只介绍共阳型七段数码管的结构和用法,如图1所示,发光二极管有极性之分,当正极电压大于负极电压时,有电流通过,发光二极管的电流一般为3mA—10 mA。让七个二极管中的若干个发光,可以显示从0到9和a、b、c、d、e字母。本文采用5161共阳型数码管。
图1
3 74HC573锁存器工作原理
74HC573是一款高速CMOS器件,由八路D 型透明锁存器构成,含有8个输入端,8个输出端,锁存使能端(LE)和输出使能端(OE)。8个锁存器保持各自的D 型输入。8个锁存器同时连接到锁存使能(LE)端和一个输出使能(OE)端。当LE为高电平(1)和OE为低电平(0)时,数据直接从输入端(Dn)输入到锁存器的输出端(Qn),也就是说,锁存器的输出端的状态将会随着输入端的输入状态的变化而改变。当OE为高时,无论LE是高电平还是低电平,输出进入高阻态。
4电路图的构成和程序设计
在Proteus软件中设计电路图,两个30pF无极性电容和一个12MHz晶振构成时钟电路。一个10uF极性电容和10K电阻构成复位电路。2个74HC573锁存器控制数码管,开关一端直接与地连接另一端与INTO端连接和一个10K电阻构成中断系统。电路图如图2所示。在KeiluVision4软件进行程序编译,在外部中断没有发生时,即图中的按钮开关没有被按下,设计的程序使数码管从右向左依次显示1、2、3,并且延时1秒。当开关按钮被按下,P3.2低电平,发生外部中断,3个数码管同时显示0,并且延时2秒,然后返回中断点,继续显示1、2、3。程序如下所示。
图2 数码管控制设计
#include //单片机的头文件
#define uint unsigned int
#define uchar unsigned char
sbit wei=P3^1; sbit duan=P3^0;
uchar code tablewe[]={0X01,0x02,0x04};
uchar code tableduan[]={0xf9,0xa4,0xb0};
void delay(uint z); void delay 1(uint s);
uint nwe,nduan;
void main() //主函数
{ EA=1; EX0=1; nwe=0; nduan=0;
while(1)
{wei=1;P2=tablewe[nwe];wei=0; nwe++;
if(nwe==3) nwe=0;
duan=1; P2=tableduan[nduan];
duan=0; nduan++;
if(nduan==3)
nduan=0;
delay(1000); //延时1秒
}
}
void delay(uint z) //延时函数
{ uint x,y;
for(x=z;x>0;x--)
{for(y=110;y>0;y--)
{ if(INT0==0)
{ wei=1;P2=0x07; wei=0;
duan=1; P2=0xc0;
duan=0; delay1(2000); /
}
}
}
}
void delay1(uint s) //延时函数
{ uint x,y;
for(x=s;x>0;x--)
for(y=100;y>0;y--);
}
5 总结
本文设计实现了3个数码管的自右而左依次显示数字的演示,同样的方法和原理还可以使用单片机控制更多的数码管,并且可以显示更多的数字。通过编写程序可以使我们更好地理解锁存器和数码管的的工作原理,更能使初学者理解怎样使用单片机的I/O口控制。
参考文献
[1] 朱艳梅. 基于单片机的流水灯的设计与实现[J]. 电子科技, 2000, (60).
[2] 杨欣,张延强. 实例解读51单片机完全学习与应用(第三、五章)[M]. 北京:电子工业出版社,2011.
关键字:STC89C52RC;共阳型七段数码管;锁存器
引言
随着科技的飞跃发展,单片机的应用逐渐增多,以单片机为核心的电器产品已经进入寻常家庭,例如:电冰箱,空调,洗衣机,电磁炉,微波炉等,大多数家用电器带有数字显示功能,例如:电冰箱和空调的温度设置,电磁炉的温度显示等。数字显示主要依靠数码管,数码管需要硬件电路和驱动程序下才能完成我们预设的要求。
1 单片机及其工作电路
单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),单片机芯片常用英文字母的缩写MCU 表示单片机,单片机又称单片微控制器[1]。单片机由程序存储器,数据存储器,定时计数器,中断系统,并行I/O口,串行通信口等组成。单片机利用I/O口对外设进行控制,本文利用P2和P3口对数码管和锁存器进行控制。STC89C52RC单片机是深圳宏晶科技生产的8051内核,具有8K Flash程序存储器和512字节的RAM数据存储器,指令代码完全兼容传统8051单片机。图2是一款双列直插式DIP封装单片机。
2 数码管的工作原理
数字显示最常用的是七段数码管,七段数码管通常由七个条形的发光二极管和一个小数点组成。按顺时针方向,七个发光二极管成为a、b、c、d、e、f、g。按照七个发光二极管的公共端不同,数码管有共阳极和共阴极两种。由于本文采用共阳型七段数码管,所以只介绍共阳型七段数码管的结构和用法,如图1所示,发光二极管有极性之分,当正极电压大于负极电压时,有电流通过,发光二极管的电流一般为3mA—10 mA。让七个二极管中的若干个发光,可以显示从0到9和a、b、c、d、e字母。本文采用5161共阳型数码管。
图1
3 74HC573锁存器工作原理
74HC573是一款高速CMOS器件,由八路D 型透明锁存器构成,含有8个输入端,8个输出端,锁存使能端(LE)和输出使能端(OE)。8个锁存器保持各自的D 型输入。8个锁存器同时连接到锁存使能(LE)端和一个输出使能(OE)端。当LE为高电平(1)和OE为低电平(0)时,数据直接从输入端(Dn)输入到锁存器的输出端(Qn),也就是说,锁存器的输出端的状态将会随着输入端的输入状态的变化而改变。当OE为高时,无论LE是高电平还是低电平,输出进入高阻态。
4电路图的构成和程序设计
在Proteus软件中设计电路图,两个30pF无极性电容和一个12MHz晶振构成时钟电路。一个10uF极性电容和10K电阻构成复位电路。2个74HC573锁存器控制数码管,开关一端直接与地连接另一端与INTO端连接和一个10K电阻构成中断系统。电路图如图2所示。在KeiluVision4软件进行程序编译,在外部中断没有发生时,即图中的按钮开关没有被按下,设计的程序使数码管从右向左依次显示1、2、3,并且延时1秒。当开关按钮被按下,P3.2低电平,发生外部中断,3个数码管同时显示0,并且延时2秒,然后返回中断点,继续显示1、2、3。程序如下所示。
图2 数码管控制设计
#include
#define uint unsigned int
#define uchar unsigned char
sbit wei=P3^1; sbit duan=P3^0;
uchar code tablewe[]={0X01,0x02,0x04};
uchar code tableduan[]={0xf9,0xa4,0xb0};
void delay(uint z); void delay 1(uint s);
uint nwe,nduan;
void main() //主函数
{ EA=1; EX0=1; nwe=0; nduan=0;
while(1)
{wei=1;P2=tablewe[nwe];wei=0; nwe++;
if(nwe==3) nwe=0;
duan=1; P2=tableduan[nduan];
duan=0; nduan++;
if(nduan==3)
nduan=0;
delay(1000); //延时1秒
}
}
void delay(uint z) //延时函数
{ uint x,y;
for(x=z;x>0;x--)
{for(y=110;y>0;y--)
{ if(INT0==0)
{ wei=1;P2=0x07; wei=0;
duan=1; P2=0xc0;
duan=0; delay1(2000); /
}
}
}
}
void delay1(uint s) //延时函数
{ uint x,y;
for(x=s;x>0;x--)
for(y=100;y>0;y--);
}
5 总结
本文设计实现了3个数码管的自右而左依次显示数字的演示,同样的方法和原理还可以使用单片机控制更多的数码管,并且可以显示更多的数字。通过编写程序可以使我们更好地理解锁存器和数码管的的工作原理,更能使初学者理解怎样使用单片机的I/O口控制。
参考文献
[1] 朱艳梅. 基于单片机的流水灯的设计与实现[J]. 电子科技, 2000, (60).
[2] 杨欣,张延强. 实例解读51单片机完全学习与应用(第三、五章)[M]. 北京:电子工业出版社,2011.