注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
tiankai001的个人空间 https://home.eeworld.com.cn/space-uid-139222.html [收藏] [复制] [分享] [RSS]
日志

基于Proteus的MSP430单片机仿真实例1-跑马灯

已有 6747 次阅读2018-1-10 16:38 |个人分类:Proteus for msp 430| proteus, msp430, 仿真

说明:本系列文章是基于proteus仿真环境下的MSP单片机程序设计实例。每个例子都配有电路图和源码,所有程序和电路都在Proteus环境下仿真通过。需要指出的是,该系列电路只是在Proteus环境下的电路,不能作为实际电路使用。

一、任务要求

使用单片机的I/O端口实现8个LED发光二极管的跑马灯控制。

二、硬件电路

在Proteus环境下新建一个工程,添加本电路所用元件,单片机MSP430F247,蓝色发光二极管,电阻,电容,排阻等。

添加元件方法如下。

基于Proteus的MSP430单片机仿真实例1-跑马灯

添加电源、地等电气符号。

基于Proteus的MSP430单片机仿真实例1-跑马灯

电路原理图如下图所示

基于Proteus的MSP430单片机仿真实例1-跑马灯

电路图绘制完成后,如果需要修改元件名称和参数,左键双击元件,设置相应参数。

基于Proteus的MSP430单片机仿真实例1-跑马灯

三、程序设计

跑马灯要实现8个LED发光二极管按照一定时间间隔顺序点亮。8个LED接到单片机的8个I/O端口上,通过一个8位二进制数来控制I/O端口的输出。从上面的电路图可以看出,8个LED的负极与单片机的端口相连,也就是说,只有单片机端口输出低电平,LED才会发光。

一个循环周期分为8个时间段,每一时间段送至I/O端口相应数据,实现8个发光二极管依次点亮的效果。

程序代码如下

#include "msp430f247.h"

#include "stdlib.h"

#include "string.h"

/*****************************************软件延时,主频1M*******************/

#define CPU_F1 ((double)1000000)

#define delay_us1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000000.0))

#define delay_ms1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000.0))

/****************************************************************************/

/************************************************

函数名称:主函数

函数功能:跑马灯实验

入口参数:无

出口参数:无

描述:

作者:老马识途单片机

日期:2018年1月2日

************************************************/

main()

{

unsigned char j,k;

_DINT(); //关中断

WDTCTL = WDTPW + WDTHOLD;//关看门狗

P4DIR = 0xff;//设置P4端口为输出端口

while(1)

{

k = 1;

for(j=0;j<8;j++)//循环8次,即D1~D8轮流点亮

{

P4OUT = ~k;//反相输出,低电平点亮LED

delay_ms1M(300);//延时

k=k<<1;//左移一位

}

}

}

四、MSP430编译环境IAR的工程建立

在IAR环境下建立一个MSP430的工程,配置单片机型号,输出文件类型等参数。如下图所示

基于Proteus的MSP430单片机仿真实例1-跑马灯

五、程序加载

鼠标放在单片机元件上,单击鼠标右键,添加程序文件。如下图所示。

基于Proteus的MSP430单片机仿真实例1-跑马灯

六、仿真和调试

运行结果如下图所示。


评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章