用C语言编程 怎么用单片机使2位数码管动态显示00---99? P1口接1个二位数码管 P30和P31控制位选!急用 怎样在单片机中用C语言编写一个2位数码管显示0到99。管脚接...

\u7528C\u8bed\u8a00\u7f16\u7a0b \u600e\u4e48\u7528\u5355\u7247\u673a\u4f7f2\u4f4d\u6570\u7801\u7ba1\u52a8\u6001\u663e\u793a00---99\uff1f

\u6211\u6709\u4e2a\u7a0b\u5e8f,\u4e0d\u8fc7\u662f0~9 \u4f60\u53ef\u4ee5\u4fee\u6539\u4e0b\uff1a
#include
unsigned char code1[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int a;
void delay()
{
unsigned int i,j;
for(i=100;i>1;i--)
for(j=0;j<100;j++);
}
main()
{
while(1)
{
for(a=0;a<=9;a++)
{
P0=code1[a];
delay();
}
}
}

//8\u5b57\u6bb5\u5b9a\u4e49
//\u5148\u8fdb\u884c\u5b8f\u5b9a\u4e49\uff0c\u7136\u540e\u8fdb\u884c\u67e5\u8868\uff0c\u8f93\u51fa\u5c31OK\u4e86
unsigned int i ;
#defineSEGA0x04
#defineSEGB0x08
#defineSEGC0x10
#defineSEGD0x80
#defineSEGE0x20
#defineSEGF0x02
#defineSEGG0x01//
#defineSEGDP0x40//
#defineNSEGG0x7f//\u65e0\u89e3
#defineNUM_0SEGA + SEGB + SEGC + SEGD + SEGE + SEGF
#defineNUM_1SEGB + SEGC
#defineNUM_2SEGA + SEGB + SEGG + SEGE + SEGD
#defineNUM_3SEGA + SEGB + SEGC + SEGD + SEGG
#defineNUM_4SEGF + SEGG + SEGB + SEGC
#defineNUM_5SEGF + SEGG + SEGC + SEGD + SEGA
#defineNUM_6SEGA + SEGF + SEGE + SEGD + SEGC + SEGG
#defineNUM_7SEGA + SEGB + SEGC
#defineNUM_8SEGA + SEGB + SEGC + SEGD + SEGE + SEGF + SEGG
#defineNUM_9SEGA + SEGB + SEGC + SEGD + SEGF + SEGG
const unsigned char tNUMBER[] = {NUM_0,NUM_1,NUM_2,NUM_3,NUM_4,NUM_5,NUM_6,NUM_7,NUM_8,NUM_9};
if(i==9)
{P2 = tNUMBER[9];}
else
{P2 = 0x00;}
\u5177\u4f53\u95ee\u9898\u4f60\u4e5f\u63cf\u8ff0\u7684\u4e0d\u8be6\u7ec6\uff0c\u6240\u4ee5\u53ea\u80fd\u5199\u5230\u8fd9\u4e2a\u5730\u65b9\u4e86\u3002

#include<reg51.h>
#include<stdlib.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
unsigned char buffer[6];
bit flag;
unsigned int n;
unsigned char j =0;
void delay(int ms)
{ int i;
while(ms--)
for(i=0;i<200;i++);
}
handle(unsigned int n)
{
unsigned char i;
for(i=0;i<6;i++)
{
buffer[i]=n%10;
n=n/10;
}
}
void jinzhi()
{
if(n<100)

{ n++;

if(n==99)
{
n=0;
}
flag=0;
}

}
void xianshi()
{
unsigned char i,weixuan;
weixuan=0x80;
for(i=0;i<6;i++)
{
P2=weixuan;
P3=tab[buffer[i]];
delay(0);
weixuan>>=1;
}
}
void main()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
n=0;
handle(n);
while(1)
{ handle(n);
xianshi();
if(flag==1)
jinzhi();

}
}
int0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
if(j==20)
{
j=0;
flag=1;
}
}

不要上来就问怎么做,要自己动手搞一搞,遇到具体问题提出来,大家都会帮助你的,整个一个命题,要说的太多了

我觉得你应该自己写,因为很简单,不懂脑筋是学不好的。虽然我的话不中听,但希望你能接受。

把要显示的数分成十位和个位,分别显示,至于0-99变化,你用延时或定时器都行。

半年过去了,兄弟 我还在想 你教教我。

扩展阅读:c++编程 ... 为什么不建议孩子学编程 ... 学编程一年大概多少钱 ... c++和python先学哪个 ... 单片机入门基础知识 ... 初学编程必背50个 ... 51单片机入门编程语言 ... 52单片机c语言实例 ... 单片机计数器编程实例 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网