【补作业】msp430单片机(一)控制LED灯的亮灭

硬件描述

板卡实物图
两个LED灯:
P1.0接LED1(红),P4.7接LED2(绿).
电路图
IO口输出高电平时,LED亮
IO口输出低电平时,LED灭

点亮红灯

(ccs中的c语言代码,用430进行调试)

P1口八个引脚
.7 .6 .5 .4 .3 .2 .1 .0

P1.0 红色LED1
控制:P1.7 6 5 4 3 2 1 0
二进制 : 0 0 0 0 0 0 0 1
八进制 : 0x01
输出:P1DIR = 0x01;
输出寄存器:P1OUT = 0x01;

#include<msp430.h>
int main(void)
{
	//关闭看门狗
	WDTCTL=WDTPW | WDTHOLED;
	//设置P1.0为输出
	P1DIR = 0x01;
	//设置P1.0为高电平,点亮LED灯
	P1OUT = 0x01;
	//设置P1.0为低电平,熄灭LED灯
	P1OUT = 0x00;
	//设置P1.0为高电平,点亮LED灯
	P1OUT = 0x01;
}

点亮绿灯

P4口八个引脚
.7 .6 .5 .4 .3 .2 .1 .0

P4.7 绿色LED2
控制:P4.7 6 5 4 3 2 1 0
二进制 : 1 0 0 0 0 0 0 0
八进制 : 0x80
输出:P4DIR = 0x80;
输出寄存器:P4OUT = 0x80;

#include<msp430.h>
int main(void)
{
	//关闭看门狗
	WDTCTL=WDTPW | WDTHOLED;
	//设置P4.7为输出 
	P4DIR = 0x80;
	//设置P4.7为高电平,点亮LED灯
	P4OUT = 0x80;
	//设置P4.7为低电平,熄灭LED灯
	P4OUT = 0x00;
	//设置P4.7为高电平,点亮LED灯
	P4OUT = 0x80;
}

红色LED灯的闪烁

亮→灭→亮 (每个中间需要有时间延时)

#include<msp430.h>
int main(void)
{
	unsigned int T_deley;
	//关闭看门狗
	WDTCTL = WDTPW | WDTHOLED;
	//设置P1.0的方向为输出 
	P1DITR = 0x01;
	while(1)
	{
		P1OUT = 0x01;
		//时间延时
		for(T_deley=0;T_deley<50000;T_deley++);
		P1OUT = 0x00;
		for(T_deley=0;T_deley<50000;T_deley++);
	}
}

绿色LED灯的闪烁

#include<msp430.h>
int main(void)
{
	unsigned int T_deley;
	//关闭看门狗
	WDTCTL = WDTPW | WDTHOLED;
	//设置P4.7的方向为输出 
	P4DIR = 0x80;
	while(1)
	{
		P4OUT = 0x80;
		//时间延时
		for(T_deley=0;T_deley<50000;T_deley++);
		P4OUT = 0x00;
		for(T_deley=0;T_deley<50000;T_deley++);
	}
}

红绿灯交替闪烁

#include<msp430.h>
int main(void)
{
	unsigned int T_deley;
	//关闭看门狗
	WDTCTL = WDTPW | WDTHOLED;
	//设置P1.0的方向为输出 
	P1DIR = 0x01;
	//设置P4.7的方向为输出 
	P4DIR = 0x80;
	while(1)
	{
		P1OUT = 0x01;
		P4OUT = 0x00;
		for(T_deley=0;T_deley<50000;T_deley++);
		P1OUT = 0x00;
		P4OUT = 0x80;
		for(T_deley=0;T_deley<50000;T_deley++);
	}
}

呼吸灯

亮灯频率超前,灭的频率降低就行,具体原理还未深刻理解,只会照猫画虎
注:以下代码仓促写完,未调试,可能会有小问题

#include<msp430.h>
int main(void)
{
	WDTCTL = WDTPW | WDTHOLD;
	unsigned int de1,de2,deley,i;
	i=0;
	de1=0;
	de2=500-de1;
	P1DIR=0x01;
	while(1)
	{
		if(i==0)
		{
			P1OUT=0x01;
			for(deley=0;deley<de1;deley++)
			{
				if(de1!=500)
					de1++;
				if(de1==500)
					i=1;
			}
			P1OUT=0x00;
			for(deley=0;deley<de2;deley++);
		}
		if(i==1)
		{
			P1OUT=0x01;
			for(deley=0;deley<de1;deley++)
			{
				if(de1!=0)
					de1--;
				if(de1==0)
					i=0;
			}
			P1OUT=0x00;
			for(deley=0;deley<de2;deley++);
		}
	}
}

补作业原因

寒假老师布置作业,但只学会了控制灯的开关,没有学多少,这几天会补到老师要求的地方

  • 15
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MSP430是德州仪器公司(Texas Instruments)出品的一款超低功耗、低成本的单片机。基于MSP430单片机可以实现各种应用,包括LED控制等。 LED控制MSP430单片机的一个常见应用之一,可以通过控制MSP430单片机的GPIO口来实现对LED控制。下面是一个基于MSP430单片机LED控制的实验分析: 1. 实验目的 通过实验掌握MSP430单片机的GPIO口控制技术,了解LED控制原理和方法,掌握单片机控制LED的方法和技巧。 2. 实验器材 MSP430单片机开发板、LED、杜邦线等。 3. 实验步骤 (1)连接电路:将MSP430单片机的GPIO口与LED连接。 (2)编写程序:使用MSP430单片机开发工具编写控制LED的程序。 (3)下载程序:将程序下载到MSP430单片机开发板上。 (4)运行程序:通过按键或其他方式触发LED控制程序,实现对LED控制。 4. 实验结果 通过实验,我们可以成功地控制LED,并且能够通过程序来实现不同模式下的闪烁、变化等效果。实验中还可以通过其他传感器、按键等外部设备来触发LED控制程序,实现更为复杂的功能。 5. 实验结论 MSP430单片机是一款功能强大、低功耗、低成本的单片机,可以用于各种应用,包括LED控制等。通过本次实验,我们掌握了MSP430单片机的GPIO口控制技术,了解了LED控制原理和方法,掌握了单片机控制LED的方法和技巧,为后续的应用开发奠定了基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值