multisim+keil仿真单片机一(流水灯)

(学习笔记)
目标图。
multisim+keil仿真单片机一(流水灯)_第1张图片
1、找排阻,需要一线作为公共电位(接VCC电源),八线作为8位输入(分别接8个LED灯),所以选择8Line。
multisim+keil仿真单片机一(流水灯)_第2张图片
2、找8位D型锁存器。
proteus软件仿真的图给的是74HC573,当时没找到,用了74273。(后来找到,叫74F573PC。)
Q端(输出端)分别连接LED灯,D端(输入端)分别连接单片机P1的8个管脚(跟代码对应,可选)。
11号端口需要接VCC电源保持工作状态,CLK时钟端口接到了单片机的P2.5端口(跟代码对应,可选)。
multisim+keil仿真单片机一(流水灯)_第3张图片

3、接下来就是51单片机了,虽然这里用了52芯片不过不影响。
multisim+keil仿真单片机一(流水灯)_第4张图片

放置元件后会弹出设置向导,第一步设置名字和路径,根据个人情况。第二步,如果使用 Multisim里的51头文件,是8051.h ,不是 reg51.h,这里选择外部HEX文件,用KEIL软件编译生成,具体使用参照郭天祥的单片机教学。(单片机,10天征服你)
multisim+keil仿真单片机一(流水灯)_第5张图片

4、还有LED灯(任选)
multisim+keil仿真单片机一(流水灯)_第6张图片

5、电源和地。
VCC和GROUND。
6、连线吧。(毫无美感哭)
multisim+keil仿真单片机一(流水灯)_第7张图片
7、程序。
双击51芯片,选择“代码”,“属性”,选择“项目一”(个人起的名字)
multisim+keil仿真单片机一(流水灯)_第8张图片
multisim+keil仿真单片机一(流水灯)_第9张图片

右边选择HEX文件。
一路确定,开始仿真。

#include
#include 
#define uint unsigned int 
#define uchar unsigned char 
uchar temp,num;
sbit p2=P2^5;	
void delay(uint);
void check();//用于启动时检查灯的好坏,仿真就没用处。
void clock();//74273上升沿触发,此函数用来锁存。

void main()
{
	check();
	temp=0xfe;
	while(1)
	{	
		
		for(num=0;num<8;num++)
			{
				
				P1=temp;
				clock();
				delay(10);
				temp=_crol_(temp,1);
				P1=0xff;
				clock();
				delay(10);	
			}

			temp=0x7f;
		for(num=0;num<8;num++)
			{
				P1=temp;
				clock();
				delay(10);
				temp=_cror_(temp,1);
				P1=0xff;
				clock();
				delay(10);	
			}
		}
}

void delay(uint z)
{
	uint x,y;
	for(x=z/4;x>0;x--)
		for(y=z/2;y>0;y--);	
}

void check()
{
	uchar t=0x00;
	P1=t;
	p2=0;
	clock();
	delay(50);
}

void clock()
{ 
	p2=1;
	delay(10);
	p2=0;
}
	

你可能感兴趣的:(学习)