从零开始:用Proteus和Keil搦起51单片机流水灯之旅

一、仿真环境:

  • Proteus 8.9
  • Keil5
  • 具体软件安装方法参考论坛上其他文章
  • 二、模型搭建

    1、打开Proteus软件,主界面点击“新建工程”

     2、在弹出的窗口中修改工程名称、保存路径,默认选择“新工程”,点击“下一步”

      3、 选择“DEFAULT”,点击“下一步”

     4、默认配置,不需要修改,直接点击“下一步”

     5、默认配置,不需要修改,直接点击“下一步”

     6、点击“完成”,弹出原理图绘制窗口

     

     7、点击“元件模式”按钮,点击“P”按钮,在弹出的窗口左上角Keyword中输入“89C51”,在右侧窗口中显示的Devices中选择第一个,点击右下角“确定”

     8、将芯片移动到绘制界面的中央,单击鼠标左键,将芯片符号放置在绘制界面中

     9、按照同样方式,在“元件模式”中搜索“resistor”和“LED”,选择相应的元件,添加到绘制界面中

     

     10、复制粘贴,将LED、电阻、单片机P0引脚连接

     11、在左侧点击“终端模式”,选择“POWER”元件,拖入绘制界面,与LED正极相连

     12、计算R1~R8阻值

    1)双击LED1,看元件参数,主要是导通电压和工作电流

     2)计算电阻值

    R1=\frac{5V-2.2V}{10mA}=280\Omega

    R2~R7的计算过程类似

    3)分别双击R1~R8,修改阻值  

    三、代码编写

    1、打开Keil软件,点击Project -> New uVision Project,选择文件夹,输入Project名称,点击“确定”

     2、在弹出的窗口中,选择“AT89S51”芯片,点击“OK”

     3、弹出窗口中点击“否”

    4、 点击File -> New…,在Text1中输入代码 

    #include <reg51.h>
    #include <intrins.h>
    
    #define LED P0
    
    void delay(void)
    {
    	unsigned char i, j;
    	
    	for(i = 0; i < 200; i++)
    		for(j = 0; j < 200; j++);
    }
    
    void main()
    {
    	unsigned char LED_Count;
    	
    	while(1)
    	{
    		for(LED_Count = 0; LED_Count < 8; LED_Count ++)
    		{
    			LED = _crol_(0xfe, LED_Count);
    			delay();
    		}
    		LED = 0xff;
    	}
    }

     5、点击File -> Save,在弹出窗口中输入文件名,注意一定要加“.c”后缀,点击“保存”

     6、右击“Source Group 1”,选择“Add Existing Files to Group 'Source Group 1'…”,选择刚刚保存的C文件,点击“Add”和“Close”

     

     7、点击魔术棒,在Output栏中选中“Create HEX File”,点击“OK”

     8、点击“Rebuild”,底部窗口显示编译无错误

     四、仿真结果

    1、回到Proteus界面,双击单片机图标,在弹出的窗口中,按照51Test -> 01 -> Objects,找到LED.hex文件,选中,点击“打开” 

    2、点击“确定”

    3、点击左下角“运行”按钮,可以观察到LED的流水灯效果 

    实际效果:

    test01_LED – Proteus 8.9

    物联沃分享整理
    物联沃-IOTWORD物联网 » 从零开始:用Proteus和Keil搦起51单片机流水灯之旅

    发表评论