请c语言高手帮忙,写一个程序,51单片机显示1234,2S后显示5678 ,一直循环! 用51单片机C语言编写程序实现6位共阴极数码管循环显示012...

作者&投稿:麻褚 (若有异议请与网页底部的电邮联系)

#include<reg51.h>

#define uchar unsigned char

bit flag=1;

uchar j,k;

uchar code tab[]={

                      

        0x06,/*1*/

        0x5B,/*2*/

        0x4F,/*3*/

        0x66,/*4*/

        0x6D,/*5*/

        0x7D,/*6*/

        0x07,/*7*/

        0x7F,/*8*/

        

             };

sbit P2_0=P2^0;

sbit P2_1=P2^1;

sbit P2_2=P2^2;

sbit P2_3=P2^3;

void delay(unsigned int ms)

{

uchar i;

while(ms--)

for(i=0;i<123;i++);

}

void disp()

{

if(flag)

k=0;

else

k=4;

P0=tab[k+0];

P2_0=0;

delay(1);

P2_0=1;

P0=tab[k+1];

P2_1=0;

delay(2);

P2_1=1;

P0=tab[k+2];

P2_2=0;

delay(2);

P2_2=1;

P0=tab[k+3];

P2_3=0;

delay(2);

P2_3=1;

}

void t0init()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void main()

{  

t0init();

while(1)

disp();

}

void t0int() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

j++;

if(j==40)

{

j=0;

flag=!flag;

}

}



段口和位口各声明一个数组。数码管编码一个数组。动态扫描就是。
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{
dula=1;
P0=table[a];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);

dula=1;
P0=table[b];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);

dula=1;
P0=table[c];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);

dula=1;
P0=table[d];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(1);

dula=1;
P0=table[e];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay(1);

dula=1;
P0=table[f];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(1);
}
上面这段是我以前写得。table是数码管的编码表。dula和wela是锁存器的片选。只用一个IO口控制数码管。

具体 硬件怎么连接 还真不知道 你的led 的 引脚 接口啊 显示 发光二极管的 顺序也不知道

最好看下说明书

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code LED_W[8] = {0,1,2,3,4,5,6,7};
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}

/********************************************************************
* 名称 : Main()
* 功能 : 数码管的显示
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
uchar i = 0,j = 0;
while(1)
{
P0 = table[i+1]; // i 值的 个位数
P2 = LED_W[j]; //点亮第一位数码管
Delay(2);
j++;
i++;
if(j == 8) //利用 j 值的变化,来控制数码管数值变化间隔的时间
{
j = 0;
i = 0;
}
}
}

看一下 看看有没有什么启发 可以 建个 表 然后 指针去查询的

用51单片机C语言帮我写一个显示1234的程序。~

你好!只是显示 1234,没有其他要求吗

# include# define uint unsigned int# define uchar unsigned charcode uchar shu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, /* 0 1 2 3 4 56 7*/0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数码管段选 /* 8 9a b c def*/code uchar wen[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//数码管位选uchar huancun[] = {0x00,0x00,0x00,0x00,0x00,0x00};//数码管段选缓存sbit duan = P2^6;//段选sbit wei = P2^7;//位选void delay(uchar x)//延时函数{uchar i,j;for(i = 0; i9)//移到最后面 回到初始状态{ j = 0;}}}照着你给你电路图写的,有问题请追问

编写一个c语言程序,输入5个数,求它们中最大值和最小值并输出
答:void main( ){ int i = 0 , num[5], max = 0 , min = 0 ; /* max:用于存放最大值;min:用于存放最小值 */ for( i = 0 ; i < 5 ; i ++ )scanf("%d", &num[i]) ; /* 循环地将输入的五个数存入 num[5] 数组中 */ for( i = 0 ; i < 5 ; i ++ ) /* ...

C语言课,编写一个程序,任意输入5个数,求这5个数的平均数,再将这5
答:include <stdio.h>void main(){ int i, j; float a[5], aver, t, s = 0.0; printf ("输入五个数:\n"); for (i = 0; i < 5; i++) { scanf ("%f", &a[i]); s += a[i]; } aver = s / 5; printf ("这五个数的平均数:%f\n", aver); printf ("排...

有没有C语言大神啊,帮写个程序呗。输入一个五位数的正整数,按顺序输出...
答:1.从个位开始输出 include <stdio.h> int main(int argc, char *argv[]){ int a,n;printf("输入一个五位数正整数:");scanf("%d",&a);while(a>0){n=a%10;printf("%d\n",n);a=a/10;} return 0;} 2.从最高(万)位开始输出 include <stdio.h> int main(int argc, char *...

怎么用C语言编写一个程序,它从键盘上输入5个整数,然后输出它们的积...
答:printf(“请输入5个数字:”);、int i ;int a[4];for(i=0;i<5;i++ ){ scanf("%d",a[i]);} printf("The answer is:");printf("%d\n",a[0]*a[1]*a[2]*a[3]*a[4]);

C语言,编写一个程序,从键盘输入5个数,算出总和及平均值!急!!!_百度知...
答:include<stdio.h> int main(){ int i,x;int sum=0;for(i=0;i<5;i++){ printf("请输入第%d个数:",i+1);scanf("%d",&x);sum+=x;} printf("和为%d,平均值为%.2f",sum,sum/5.0);return 0;}

C语言怎么写!!编写一个程序,读入5个整数,然后确定并显示这组数种的最...
答:int array[5];// 输入整数 void input(){ int i;printf("Please input 5 number:\n");for(i=0;i<5;i++){ scanf("%d",&array[i]);//每输入完一个数据,请回车。} printf("Thank you ,input is end!\n");} // 显示函数 void display(){ int j;printf("the number you ...

请高手帮忙设计一下这个c语言程序,用多种方式!
答:任取3位数中的一个为5(以下代码令个位数取5),计算符合是3的倍数的个数设为num,将该数乘以3倍后3*num,扣掉多计算两遍的555,以及3个数有且有两个数为5的情况,共有2*(1+3)=8种。即符合要求的数有3*num-8个 / include "stdio.h"void main(){ int num=0,a,b,c=5;for (a...

用c语言编写一个程序要求输入一个5位数的整数,然后空3格依次输出。比如...
答:void main(){ long num; int indiv,ten,hundred,thousand,ten_thousand,place;printf("请输入一个5位整数:");scanf("%ld",&num);ten_thousand=(int)(num/10000);thousand=(int)(num%10000/1000);hundred =(int)(num%1000/100);ten =(int)(num%100/10);indiv=(int)(num%10);printf(...

用C语言写程序输出要求控制每行输出五个数,怎么控制?
答:在C语言写程序输出时,要控制每行输出数据的个数,可以通过自定义计数器来完成。如:// 输出自然数1-30,每5个数为一行main(){ int i;int cnt=0; // 定义cnt用作输出数据的计数器,初始为0for( i=1;i<=30;i++ ) // 循环30次{ printf("%5d",i); // 输出数据值cnt++;...

用C语言编写一个程序,在主函数输入5个成绩,通过调用自定义函数实现输出...
答://满意请采纳#include<stdio.h>void prin(int*a);int main(){int a[5]={0},n,i,sum=0;for(i=0;i<5;i++){scanf("%d",&a[i]);}prin(a);return 0;}void prin(int*a){int i,n=0;for(i=0;i<5;i++){if(a[i]<60)n++;}printf("%d\n",n);} ...