网站大量收购独家精品文档,联系QQ:2885784924

学习情境2单片机控制数码管的显示-项目2-3知识扩展作.pptx

学习情境2单片机控制数码管的显示-项目2-3知识扩展作.pptx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

学习情境2-单片机控制数码管的显示

知识扩展

数码管移位操作

杜邦线连接(用杜邦线连接单片机IO和模块接口)

单片机IO口

模块接口

杜邦线数量

功能

PO

J3

8

共阳数码管数据端

P2.2(段锁存)

J2(B)

1

段锁存

P2.3(位锁存)

J2(A)

1

位锁存

任务要求:

数字0~7分别在最右端出现,然后向左移动到最左端依次停下来,最终形成0,1,2,3,4,5,6,7的排列,并一直循环。

main()

|{

unsigned

unsigned

while(1)

{

j++;

if(j==20)//Display函数每执行20次,进入if判断

{

0(;k==0)

for(s=0;s10;s++)//完全循环完成后清零所有缓冲区DisplayData[s]=0;

/把需要显示的字符依次送缓冲区

Difiip-t)a)[8+1-i]=0;//不需要显示的区域清零

{i=0;

+(;k==8)

k=0;

}

Display(0,8);//从第一位显示,共显示8位

}

if

k+

f

=

voidDelay(unsignedintt)

{

while(--t);

显示函数,用于动态扫描数码管

FirstBit表示需要显示的第一位,

Num表示需要显示的位数,如需要显示两位数值则该值输入2

voidDisplay(unsignedcharFirstBit,unsignedcharNum)

{

unsignedchari;

for(i=0;iNum;i++)

{

DataPort=0;//清空数据,防止有交替重影

Duan_LATCH=1;//段锁存

Duan_LATCH=0;

DataPort=WeiMa[i+FirstBit];//取位码

Wei_LATCH=1;//位锁存

Wei_LATCH=0;

DataPort=DisplayData[i];//取显示数据,段码

Duan_LATCH=1;//段锁存

Duan_LATCH=0;

Delay(200);//扫描间隙延时,时间太长会闪烁,太短会造成重影}

sbitWei_LATCH=P2^3;

ccharDuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

CcharWeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsignedcharDisplayData[10];//存储显示值的数组

voidDelay(unsignedintt);

voidDisplay(unsignedcharFirstBit,unsignedcharNum);

}

DisplayData[8-i]=DuanMa[k];/

i,j,k;s;

int

char

,

任务要求:

数字0~7分别在最左端出现,然后向右移动到最右端依次停下来,从右往左形成0,1,2,3,4,5,6,7的排列,并一直循环。

任务10数码管的右移

#defineDataPortPO

sbitWei_LATCH=P2^3;

unsignedcharcodeDuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharcodeWeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsignedcharDisplayData[10];//存储显示值的全局变量

voidDelay(unsignedintt);//函数声明

voidDisplay(unsignedcharFirstBit,unsignedcharNum);

main()

{

unsignedinti,k,j;

unsignedchars;

while(1)

{

for(s=0;s10;S++)//完全循环完成后清零所有缓冲区

DisplayData[s]=0;

}

DisplayData[8-i]=DuanMa[k];//把需要显示的

您可能关注的文档

文档评论(0)

乐毅淘文斋 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8121131046000040

1亿VIP精品文档

相关文档