云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 东南大学MCU第三四次实验

东南大学MCU第三四次实验

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 21:35:24

图4-2实验开发板LED数码管对应关系图

TM1638的各引脚定义如图4-3所示。

图4-3TM1638各引脚定义

(2) TM1638接收数据

串行数据传输格式:读取和接收1个BIT都在时钟的上升沿操作。 数据接收(写数据)时序如图4-4所示。

图4-4TM1638数据接收时序图

以下写数据代码仅作为参考。(更多关于TM1638的程序请参考给出的TM1638.h和TM1638.c两个文件以及芯片说明书)

voidTM1638_Write(unsignedcharDATA)//写数据函数 {

unsignedchari; DIO_OUT;

//将DIO配置为输出状态

for(i=0;i<8;i++) {

CLK_low;

if(DATA&0x01) {

DIO_high; } else { DIO_low; }

CLK_high;

DATA>>=1;//数据左移一位 }

}

(3) LED数码管显示

图4-5共阴极数码管连接图

图4-5给出一个共阴数码管的连接示意图,如果让该数码管显示“0”,那你需要在GRID1为低电平的时候让SEG1,SEG2,SEG3,SEG4,SEG5,SEG6为高电平,SEG7为低电平,即在00H地址单元里面写数据3FH就可以让数码管显示“0”。

共阴极LED数码管编码如表4-1所示。

表4-1共阴极LED数码管编码表

0 3F

(4) 开发板上LED地址

开发板共有8个LED数码管,从左至右其地址分别为:08h,0ah,0ch,0eh,00h,02h,04h,06h。 例如:

constuint8_tDisp[8]={0,8,0,1,2,1,4,0};//要显示的学号

constuint8_tNum[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//段码

constuint8_tAddr[8]={08h,0ah,0ch,0eh,00h,02h,04h,06h};//地址 WriteDATA(Addr[0],Num[Disp[0]]);//最左边的数码管显示第一位学号

(5) ACLK设置

初始化时,需要设置ACLK引脚输出,即 P1DIR|=BIT0; P1SEL|=BIT0; 1 06 2 5B 3 4F 4 66 5 6D 6 7D 7 07 8 7F 9 6F A 77 B 7C C 39 D 5E E 79 F 71 三、实验步骤

1.将PC与开发板相连; 2. 建立CCS工程; 3. 选择

对该工程进行编译链接,生成.out 文件。然后选择

全速运行程序,也可以选择

,将程序下载到实验板中。

单步调试程序,

程序下载完毕之后,可以选择

选择 F3 查看具体函数。也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。再按下实

验板的复位键,运行程序。

四、实验现象

按下按键1显示08012202,按下按键2显示08012208。

五、实验代码

#include #include \

const uint8_t Disp1[8]={0,8,0,1,2,2,0,2}; const uint8_t Disp2[8]={0,8,0,1,2,2,0,8};

const uint8_t Num[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F, 0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//段码

const uint8_t Addr[8]={0x08,0X0a,0X0c,0X0e,0X00,0X02,0X04,0X06};//地址

//原始

void main(void) {

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P3DIR |= BIT2+BIT4+BIT5; init_TM1638(); unsigned char i; while(1) { for(i = 0; i < 8; i++) { Write_DATA(Addr[i],Num[Disp1[i]]); } } }

//进阶

void main(void) {

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P3DIR |= BIT2+BIT4+BIT5; init_TM1638();

Write_DATA(Addr[0],Num[Disp1[0]]); unsigned char i;

unsigned char stu=1; P4REN |= BIT2+BIT3; P4OUT |= BIT2+BIT3; while(1) { if((P4IN&BIT2)==0)//没有按下 stu=1; if((P4IN&BIT3)==0) stu=2; for(i=0;i<8;i++) { if(stu==1) { Write_DATA(Addr[i],Num[Disp1[i]]); } else if(stu==2) { Write_DATA(Addr[i],Num[Disp2[i]]); } //_delay_us(1); } } }

六、预习思考

掌握LED数码管的显示控制,并说明采用TM1638是如何实现段控和位控的。

答:通过管脚的电平高低来进行设置。其中,SEG9~SEG10为输出(段),控制段输出,P管开漏输出。 GRID1~GRID8为输出(位),控制位输出,N管开漏输出。

七、实验总结

本次实验了解了TM1638芯片工作原理与使用方法,和LED 数码管的动态显示控制。

实验程序能够顺利运行。

搜索更多关于: 东南大学MCU第三四次实验 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

图4-2实验开发板LED数码管对应关系图 TM1638的各引脚定义如图4-3所示。 图4-3TM1638各引脚定义 (2) TM1638接收数据 串行数据传输格式:读取和接收1个BIT都在时钟的上升沿操作。 数据接收(写数据)时序如图4-4所示。 图4-4TM1638数据接收时序图 以下写数据代码仅作为参考。(更多关于TM1638的程序请参考给出的TM1638.h和TM1638.c两个文件以及芯片说明书) voidTM1638_Write(unsignedcharDATA)//写数据函数 { unsignedchari; DIO_OUT; //将DIO配

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com