1471|0

1708

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

MSP430单片机实例6-LED数码管显示 [复制链接]

一、任务要求

使用MSP430F247单片机实现单个8段共阳极LED数码管的显示,依次循环显示0~15的十六进制数,即依次显示“0~F”。

二、分析说明

可设置P4端口的8个引脚分别控制共阳极数码管的8段,当I/O端口输出高电平“1”或低电平“0”时,数码管对应的那一段的LED熄灭或点亮。


三、硬件电路说明

P4.1端口接共阳极数码管的a段,P4.2引脚接数码管的b段,以此类推

四、程序设计


#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)) 

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

unsigned char const Led_Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,

0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

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

函数名称:主函数

函数功能:共阳极数码管显示

入口参数:无

出口参数:无

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

main()

unsigned char ucCounter=0;

_DINT(); //关中断

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

P4DIR=0xff;

P4OUT=0xff;

delay_ms1M(500);

while(1)

for(ucCounter=0;ucCounter<16;ucCounter++)

{

P4OUT = Led_Tab[ucCounter];

delay_ms1M(500);

}

}

}

五、程序说明

程序中,由于数字字型的编码没没有规律,可以使用数组存储这些预先定义的常数,程序中数组Led_Tab[]内有16个元素,为显示字型“0~F”的段码。当时用程序语句P4OUT = Led_Tab[ucCounter];时,即可将数组中的对应元素直接赋给P4端口。

使用关键字const定义数组,这样可以把它定义在单片机的内部FLASH中,从而节省RAM存储器。
 

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表