风风雨雨二十载,多少bug在心间。
代码编译不通过,急得抓耳直挠腮。
回想当年恩师讲,基础知道全忘干。
忙里偷闲回首看,权当引玉的抛转。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
电路图
2、程序设计
(1)不用中断设计
#include
#define uchar unsigned char
#define uint unsigned int
uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};
void delay(uint t)
{
uchar i;
while(t--)
for(i=0;i<120;i++);
}
void main()
{
int j,l;
P1=0xde;
for(j=20;j>-1;j--)
{
for(l=0;l<300;l++) //延时功能
{
P3=a[j/10];
P2=0x01;
delay(1);P2=0x00;P3=0xff;
P3=a[j%10];
P2=0x02;
delay(1);P2=0x00;P3=0xff;
}
}
P1=0xed;
for(j=3;j>-1;j--)
{
for(l=0;l<300;l++)
{
P3=a[j/10];
P2=0x01;
delay(1);P2=0x00;P3=0xff;
P3=a[j%10];
P2=0x02;
delay(1);P2=0x00;P3=0xff;
}
}
P1=0xf3;
for(j=20;j>-1;j--)
{
for(l=0;l<300;l++)
{
P3=a[j/10];
P2=0x01;
delay(1);P2=0x00;P3=0xff;
P3=a[j%10];
P2=0x02;
delay(1);P2=0x00;P3=0xff;
}
}
P1=0xed;
for(j=3;j>-1;j--)
{
for(l=0;l<300;l++)
{
P3=a[j/10];
P2=0x01;
delay(1);P2=0x00;P3=0xff;
P3=a[j%10];
P2=0x02;
delay(1);P2=0x00;P3=0xff;
}
}
}
(2)用中断设计
#include
#define uchar unsigned char
#define uint unsigned int
uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};
uchar j=20,v,m;
void delay(uint t)
{
uchar i;
while(t--)
for(i=0;i<120;i++);
}
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(m==0) P1=0xde; //m值不同,亮的灯不同
if(m==1) P1=0xed;
if(m==2) P1=0xf3;
if(m==3) P1=0xed;
P3=a[j/10];
P2=0x01;
delay(1);P2=0x00;P3=0xff;
P3=a[j%10];
P2=0x02;
delay(1);P2=0x00;P3=0xff;
}
}
void t0() interrupt 1
{
v++;
if(v==10) //50*10=500ms
{
v=0;
j--;
if(j==-1)
{
m++; //改变m,从而改变亮的灯
if(m==1) j=3;
if(m==2) j=20;
if(m==3) j=3;
if(m==4)
{
m=0; j=20; //回到初始状态
}
}
}
}
3、下载程序并调试
以下补充PROTEUS中标签法画图的方法。
在左侧的快捷栏里有LBL,
在引脚上加点线然后点那个选项,
把光标放在线上的时候会出现一个叉号,
点一下就出现一个对话框,
输入要标的名字“1”就好了
在想与之相连接的线路上标注同样的标签,则表示此两处线路是相连接的。
此种方法极大的将线路简洁化,尤其当所要求的设计电路较为复杂的情况下,使用起来非常方便。
图中的汉字是怎么出来的呢?
左下角A选中,鼠标移动至面板单击出现如图对话框,在string中输入你想要显示的汉字或者字符即可。
文章评论(0条评论)
登录后参与讨论