目录
一、利用keil 5软件创建源文件
1.新建立一个工程文件
注意 这里要选择STM32芯片
2.输入以下代码,并加入工程文件中
#include "reg52.h"
sbit hr=P1^0;
sbit hy=P1^1;
sbit hg=P1^2;
sbit sr=P1^3;
sbit sy=P1^4;
sbit sg=P1^5;
sbit h1=P2^0;
sbit h2=P2^1;
sbit s1=P2^2;
sbit s2=P2^3;
int count=0;
int time=0;
int num[10]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(int t)
{
int x,y;
for(x=0;x<t;x++)
{
for(y=0;y<100;y++);
}
}
void main()
{
P1=0xff;
hg=0;
sr=0;
P2=0x00;
TMOD=0x01;
TL0=0x3C;
TH0=0xB0;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(time<30)//ºáÂÌ Êúºì
{
h1=1;P0=num[((30-time)/10)];delay(10);h1=0;
h2=1;P0=num[((30-time)%10)];delay(10);h2=0;
s1=1;P0=num[((33-time)/10)];delay(10);s1=0;
s2=1;P0=num[((33-time)%10)];delay(10);s2=0;
}
else if(time<33)//ºá»Æ Êúºì
{
h1=1;P0=num[((33-time)/10)];delay(10);h1=0;
h2=1;P0=num[((33-time)%10)];delay(10);h2=0;
s1=1;P0=num[((33-time)/10)];delay(10);s1=0;
s2=1;P0=num[((33-time)%10)];delay(10);s2=0;
}
else if(time<63)//ºáºì ÊúÂÌ
{
h1=1;P0=num[((66-time)/10)];delay(10);h1=0;
h2=1;P0=num[((66-time)%10)];delay(10);h2=0;
s1=1;P0=num[((63-time)/10)];delay(10);s1=0;
s2=1;P0=num[((63-time)%10)];delay(10);s2=0;
}
else if(time<66)//ºáºì Êú»Æ
{
h1=1;P0=num[((66-time)/10)];delay(10);h1=0;
h2=1;P0=num[((66-time)%10)];delay(10);h2=0;
s1=1;P0=num[((66-time)/10)];delay(10);s1=0;
s2=1;P0=num[((66-time)%10)];delay(10);s2=0;
}
}
}
void timer() interrupt 1
{
TH0=0x3C;
TL0=0xB0;
count=count+1;
if(count==20)
{
count=0;
time=time+1;
//led
if(time==30)
{
P1=0xff;hy=0;sr=0;
}
else if(time==33)
{
P1=0xff;hr=0;sg=0;
}
else if(time==63)
{
P1=0xff;hr=0;sy=0;
}
else if(time==66)
{
time=0;
P1=0xff;hg=0;sr=0;
}
}
}
3.最后编译就可以生成一个.hex文件
至此完成所有软件准备工作
二、利用Protues 8.9进行硬件仿真
1.建立原理图设计
2.选择所需要的器件
3.设计电路图
注意 所选芯片型号为STM32F103R6
4.点击芯片
选择刚刚生成的.hex文件,将它放入芯片中
运行看一下结果:
由于代码设置的时间间隔太短,所以LED点亮跳变较快,但是最后还是成功了。