初学51单片机时,常常有一些想法想去实现,但又担心实现不了而造成浪费(毕竟要花钱买一些硬件)。所以一直在想,如果能有个什么东西来仿真一下就好了,于是后来发现了Proteus这个仿真软件。相信大家对这个软件并不陌生,这里呢,我就分享一下如何使用Keil和Proteus实现一个心形流水等灯,希望能和大家多多交流,如有什么不当之处,还望指正。
工具/原料
Keil和Proteus软件。
第一步:在Proteus中搭建仿真硬件电路
1、放置单片机芯片(这里我选择的是AT89C52)。首先在搜索框中以关键字来搜索,然后再搜索结果中俣挫呲蹀找到并选中“AT89C52”,接哉捐岳觥着单击“OK”按钮,最后回到绘图界面中单击左键即可放置单片机。具体操作如下图所示:
2、放置LED灯。同样,先在搜索框中输入“LED”来搜素,再在搜索结果中选择LED-BIBY(当然你也可以选择其他的),最后放置在绘图区内合适的地方并摆成心形图样,具体情况如下图所示:
3、给LED灯连接导线。在Proteus中不用链接GND,只需链接VCC即可。这里我们使用16个LED,分别使用单片机的P0口和P2口,具体情况如下图所示:
第二步:在Keil中编写实现程序
1、建立工程。其中LED.c文件用于存放各个功能的子函数,而delay.c文件则用于存放延时函数,最后主函数直接调用前面的两个文件中的子函数即可。具体操作如下图所示:
2、在LED.c源文件中编写功能子函数,分别为turn_on(int i)、turn_off(int i)和turn_on_Only烫喇霰嘴(int i)。turn_on(int i)实现的功能是点亮对应位的LED灯,如turn_on(1)表示点亮第一个LED灯;turn_off(int i)实现的功能是熄灭对应位的LED灯,如turn_off(1)表示熄灭第一个LED灯;turn_on_Only(int i)实现的功能是仅点亮对应位的LED灯,其他灯不亮,如turn_on_Only(1)表示仅点亮第一个LED灯。具体情况如图:
3、在delay.c源文件中编写延时函数。具体情况如下图所示:
4、在main.c文件主函数中调用各个子函数来实现流水灯功能。具体情况如下图所示:
第三步:将Keil编译后生成的hex文件下载到单片机中
1、在Keil中编写完所有代码后,进行编译,使其生成hex文件。具体操作情况如下图:
2、在Proteus中双击单片机芯片,在弹出来的对话框中将生成的hex文件下载到单片机。具体操作情况如下图:
3、运行仿真电路,观察效果。具体操作情况如下图:
尾声:
1、如何使用Keil和Proteus实现一个心形流水灯,这里已经介绍完了,如果大家觉得还不错的话,记得给好评哦!