在51系列单片中P1使用七段数码显示管,实现00到60显示输出

作者&投稿:水往 (若有异议请与网页底部的电邮联系)
利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。~

共阳数码管中断程序:
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x83,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uint num,a;
uchar bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
{
init();
while(1)
{
display(fb(),fs(),fg());
}
}
void init()
{
num=0;
a=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(ucharbai,ucharshi,ucharge)
{
P1=0xfd;
P0=table[bai];
delay(1);
P1=0xfb;
P0=table[shi];
delay(1);
P1=0xf7;
P0=table[ge];
delay(1);
}
void timeoff() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65526-50000)%256;
a++;
if(a%20==0)
{
num++;
if(num==999)
{
num=0;
}
}
}void delay(uint z){
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint fb()
{
bai=num/100;
return bai;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}

扩展资料
2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
一个全双工串行通信口
外部数据存储器寻址空间为64kB
外部程序存储器寻址空间为64kB
逻辑操作位寻址功能·双列直插40PinDIP封装
单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
参考资料来源:百度百科-51单片机


在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去
代码如下:
#include; //用的是单独操作,没有用总线
sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit led6 = P1^5;
sbit led7 = P1^6; //看清楚自己的管脚,不一定对应,这里采用P0对应段选
code unsigned char led_paly[5] = {0x76,0x79,0x38,0x38,0x5c};// H E L L Ovoid delay(unsigned int um)//延时函数
{
int i,j;
for(i = 0;i < um;i++){for(j = 0;j < 200;j++);}}void display(){P0 = led_paly[0];//显示Hled2 = 0;delay(50);led2 = 1;P0 = led_paly[1];//显示Eled3 = 0;delay(50);led3 = 1;P0 = led_paly[2];//显示Lled4 = 0;delay(50);led4 = 1;P0 = led_paly[3];//显示Eled5 = 0;delay(50);led5 = 1;P0 = led_paly[4];//显示Oled6 = 0;delay(50);led6 = 1; }void main(void){while(1){display();}}

扩展资料:
51单片机的接口作用
P0口:可以被定义为数据/地址的低八位,能够用于外部程序/数据存储器。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:标准输入输出I/O,P1口管脚写入1后,被内部上拉为高,可用作输入。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:既可用于标准输入输出I/O,也可用于外部程序存储器或数据存储器访问时的高八位地址。
P3口:既可以做标准输入输出I/O,也可作为AT89C51的一些特殊功能口。

要显示00到60,就要用两位数码管,用两位一体的共阴数码管画仿真图如下:

程序如下:

#include<reg51.h>

unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管段码表

unsigned char num;

void delay()

{

unsigned int j;

for(j=400;j>0;j--);

}

void display()

{

P3=0x7F;

P1=tab[num/10];

delay();

P3=0xBF;

P1=tab[num%10];

delay();

}

void main()

{

unsigned char x;

while(1)

{

display();

x++;

if(x>=80)

{

x=0;

num++;

if(num>=61)

num=0;

}

}

}




51单片机P0、 P1、 P2、 P3有什么功能?
P0口第一个功能是数据接口,第二个功能是地址低八位,P2口第二个功能是地址高八位。另外除了P0口没有内部上拉电阻外,其他三个都有内部上拉电阻。P1就没多少功能,就是个准双向I\/O口。最重要的就是P3口了,他除了是个准双向I\/O口外,第二功能很重要:P3.0 (RXD)串行数据接收端;P3.1 (TX...

在51系列单片中P1使用七段数码显示管,实现00到60显示输出
程序如下:include<reg51.h> unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};\/\/共阴数码管段码表 unsigned char num;void delay(){ unsigned int j;for(j=400;j>0;j--);} void display(){ P3=0x7F;P1=tab[num\/10];delay();P3=0xBF;P1=ta...

在C51编程中P1到底是什么,又控制灯亮,又控制蜂鸣器
P1是51系列单片机的一个8位端口,根据你的电路决定这8位能干什么,如:几位输入,几位输出,灯和蜂鸣器都是输出,输出又有高有效还是低有效,例如LED负极经过1K电阻到P1_1,LED正极接VCC,那么P1_1输出低时,LED就会亮。蜂鸣器要响可能还需要一个三极管驱动。如果P1的几位作输入,则可以识别键盘的几...

MCS-51系列单片机复位后其P1口的输出状态
FFH。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms,晶振频率为1MHz,起振时间则为10ms。在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全l态。如果系统在上电...

51单片机P1端口可以做哪些操作指令
P1口属于特殊功能寄存器,可以有以下几种操作指令:1、直接输入立即数:MOV P1,#22H 2、用A来输入:MOV P1,A 3、位操作:SETB P1.0

51单片机中设置P1M0=0x60;P1M1=0x00怎么理解
将P1M0=0X60和P1M1=0X00译成二进制代码是P1M0=0110 0000,P1M1=0000 0000.按照I\/O口工作模式设置规定都为0时为准双向口(传统8051单片机I\/O口模式)为0,1时为推挽(强上拉输出),为1,0时为高阻(仅输入),为1,1时为开漏(内部上拉断开,须外加上拉电阻)。你选择的是P1M0和P1M1所以...

51单片机库reg51.h中P1是地址还是值啊
P1既是特殊功能寄存器,又是8位输入输出端口 作为输入时,要先向将其置1 因此 P1=0xff,但P1接两个开关,开关按下时,再读就不是0xff 了

MCS-51单片机p0,p1,p2,p3端口的字节地址是多少?
MCS-51单片机p0,p1,p2,p3端口的字节地址是:P0:80H P1:90H P2:0A0H P3:0B0H

51单片机指令p1=~p1的功能是
p1=~p1;实现的是:将P1口8位数据取反,并通过P1口输出。比如假设原来P1口都是高电平,则P1=0FFH,执行p1=~p1后,P1=00H。

简单回答51系列单片机的4条控制线的第一功能是什么?
51系列单片机的4个I\/O口(p0--p3)的第一功能是均是普通I\/O口 第二功能分别是:p0口,地址\/数据总线 p1口,不太明显,主要作新功能外部引脚的再定义,如C\/T2的计数器外部脉冲输入,WDT ,ISP、JTAG的信号线定义等 p2口,地址总线的高8位 p3口,串口输入输出、外中断输入、计数器外部脉冲输入...

方山县18598198894: 利用51单片机控制一位七段数码管. -
韩尹苯西: void main() {uchar tab[]={}//定义数码管 EX0=1; EA=1; IT0=1; while(1) {P1=tab[m];} } void into()interrupt 0 {m++; while(INT0==0); if(m==10)m=0;} 程序大概是这样,因为使用手机,不方便输入!

方山县18598198894: 请问怎么用51单片机实现七段数码外围六段发光二极管一段一段地循环显示
韩尹苯西: 比如将共阳极数码管接在P1口的话,七段数码管的编号一般是从上A到右B、C再到下D最后到左E、F,横着的是G. 按你的要求的话就是要让A、B、C、D、E、F接P1口的P1.0-P1.5,然后编程依次让其输出低电平.每个P1口输出低电平后,可以设置一个延时子程序,不然会出现没有点亮的情况,因为间隔时间太短了,人的肉眼来不及反应. 在主程序里,你就依次令P1.0-P1.5的值等于0,在它们之间,调用延时子程序就可以了.

方山县18598198894: 用51单片机程序显示3位7段数码管,求具体程序 -
韩尹苯西: 假设为共阴极数码管,驱动输入端接单片机P1口,共阴极接P2口的0.1.2.脚.我的程序如下,当前显示数字123 #include <reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; typedef long int uint32; code uint8 number[]={0x3f,0x06,0...

方山县18598198894: AT89S51单片机P1口接有1个7段LED数码管,初始显示0. -
韩尹苯西: 要看是共阴还是共阳数码管,它们的编码是相反的,甚至你还可以高低位顺序颠倒,还有带小数点与不带小数点,编码都是不一样的.

方山县18598198894: 51单片机中,用八个开关控制一个7段数码管,按一个开关显示一个数,用C语言怎么编程 -
韩尹苯西: sfr key=P1;//定义八个开关接单片机的p1口的八个引脚,int suma[9]={0x3B,0x4D,,,};//根据数码管的驱动芯片接入单片机接口,查表输出要显示的数字,其中第九个为不显示即清空显示.unsigned char Scankey() {int i,j; i=key; if(key!=0xFF...

方山县18598198894: 单片机如何在p1口用8按键输入,在p0口用七段led输出 求编程 -
韩尹苯西: 首先:如果这个图中使用的是51单片机一般不用共阴极LED,而用共阳极,因单片机高电平输出电流有限,而低电平吸收电流能力较强其次:在LED部分,外接排电阻不知何用?如果接限流电阻,也应当串联于CPU引脚与LED引脚之间...

方山县18598198894: 求7段数码管单片机实验程序的编写. 内容,用p1口输出口,作为7段数码... -
韩尹苯西: /***数显秒表,范围0~999999***/ /***源程序默认硬件环境:52单片机,12MHz晶振,6位共阳数码管,P1 口段选,P30~P35 高电平位选(NPN三极管驱动),P35为最高位数码管***/ #include"reg52.h" //包含52头文件 #define TRUE 1 //定义布...

方山县18598198894: 51单片机,P1.0 - P1.7八个按键,P2口接七段LED,编写汇编程序扫描键盘,将按下的键送七段LED显示 -
韩尹苯西: MOV A,P1 CPL A MOV P2,A 如果你的按键不按下时为高电平,按下为低电平的话,P2口接7个LED 如果接了一位7段数码管,那还要看你按键和显示如何对应了

方山县18598198894: 51单片机控制三位七段数码增减显示,显示范围000~999,一个增按钮,一个减按钮,一个转换数位按钮
韩尹苯西: ORG 0000H LJMP MAIN ORG 030H MAIN: MOV R4,#51H MOV R1,#0FFH D1: MOV R3,#0FFH INC R1 D2: MOV A,R1 DA A MOV R1,A ANL A,#0FH ACALL CHA MOV P2,#0E7H ACALL DELAY MOV A,R1 SWAP A ANL A,#0FH ACALL CHA ...

方山县18598198894: 89C51单片机的p3口接一个共阳极的数码管 -
韩尹苯西: //电路说明如下. //单片机:使用51系列兼容的即可; //4*4矩阵键盘:接在P1口; //两位数码显示器: P0口输出七段码,P2口输出位选码. //============================================================== //C语言程序如下. /***...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网