51单片机控制数码管循环显示0到9,延时2秒,到9后重新开始.
#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0x3f...
#include<reg51. h>
#define uchar unsi gned char #define uint unsigned int
uchar code table []= {0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f}; void delay(unsigned int i) {
unsigned int k
for(k=0;k<i;k++)
}
void main ()
while(1)
{
int i;
for (i=0;i<10;i++)
P0=tab1e[i];
delay (500); }
}
这样哪有问题吗 我找书上改的 我是初学者 大家说的详细点哈 展开
#define uchar unsi gned char #define uint unsigned int
uchar code table []= {0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f}; void delay(unsigned int i) {
unsigned int k
for(k=0;k<i;k++)
}
void main ()
while(1)
{
int i;
for (i=0;i<10;i++)
P0=tab1e[i];
delay (500); }
}
这样哪有问题吗 我找书上改的 我是初学者 大家说的详细点哈 展开
5个回答
展开全部
单片机有很多种,编程要根据不同单片机进行。
编程思想为:
main{
设置单片机上与数码管相连的引脚为输出,
设置单片机中断接口(即中断按钮)的中断控制寄存器里的中断使能,
设置整体中断使能,
循环子程序xunhuan(); 显示0到9,
}
xunhuan(){
循环子程序具体怎么循环
};
ISR_zhongduan(){
此处为中断时要做的事。
比如楼主说的,可以将输出只为0,然后延时一段时间
}
//解释如下:
主程序一开始设置一些基本的输入输出寄存器的值,比如数码管的输出,按钮的输入,然后是中断的提前设置(那个脚触发中断,上升沿还是下降沿中断),然后就是一直运行循环子程序了,直到中断一次运行一次中断子程序,然后回到原来跳出来的地方接着循环。
循环子程序可以不编,直接写在主程序里用for或while循环,但是写子程序比较容易修改。
中断子程序就是按钮按下之后要做的事情,做完又回到循环子程序跳出来的那个地方接着循环了,直到下次又按下按钮。
这是一个思想,对任何一种单片机都适用,但具体下来就要去看单片机的datasheet,说明书了。 如果想学可以直接从如下关键字去学只是块: 中断原理, GPIO, P0, P1, P2, 单片机最基本主程序构成.....
编程思想为:
main{
设置单片机上与数码管相连的引脚为输出,
设置单片机中断接口(即中断按钮)的中断控制寄存器里的中断使能,
设置整体中断使能,
循环子程序xunhuan(); 显示0到9,
}
xunhuan(){
循环子程序具体怎么循环
};
ISR_zhongduan(){
此处为中断时要做的事。
比如楼主说的,可以将输出只为0,然后延时一段时间
}
//解释如下:
主程序一开始设置一些基本的输入输出寄存器的值,比如数码管的输出,按钮的输入,然后是中断的提前设置(那个脚触发中断,上升沿还是下降沿中断),然后就是一直运行循环子程序了,直到中断一次运行一次中断子程序,然后回到原来跳出来的地方接着循环。
循环子程序可以不编,直接写在主程序里用for或while循环,但是写子程序比较容易修改。
中断子程序就是按钮按下之后要做的事情,做完又回到循环子程序跳出来的那个地方接着循环了,直到下次又按下按钮。
这是一个思想,对任何一种单片机都适用,但具体下来就要去看单片机的datasheet,说明书了。 如果想学可以直接从如下关键字去学只是块: 中断原理, GPIO, P0, P1, P2, 单片机最基本主程序构成.....
追问
有程序嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个程序非常简单,建立一个0~9的for循环,直接把循环变量做段码数组下标送段码,再调用延时2S的子程序就OK了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2021-01-09
展开全部
请设计一个单静态数码管从0-9间隔2秒自动轮流显示的程序
#include <reg51.h>
unsigned char show[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit P32=P3^2;
int j,num;
gr()interrupt 1 using 3
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
if(j==40)
{j=0;
num++;
if(num==10)
num=0;
}
}
main()
{ET0=1;
EA=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
P0=show[num];
}
}
#include <reg51.h>
unsigned char show[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit P32=P3^2;
int j,num;
gr()interrupt 1 using 3
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
if(j==40)
{j=0;
num++;
if(num==10)
num=0;
}
}
main()
{ET0=1;
EA=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
P0=show[num];
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机有很多种,编程要根据不同单片机进行。
追问
at89c51的那种
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询