1858|9

4

帖子

0

资源

一粒金砂(初级)

51单片机程序问题 [复制链接]

用51单片机P3.3~P3.7控制五个灯,怎样能不分开赋值,然后又不影响P3.0~P3.2的功能
此帖出自51单片机论坛

回复

5923

帖子

209

资源

版主

用与,或,取反等位操作来实现。
个人签名

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


回复

26

帖子

0

资源

一粒金砂(中级)

先把P3口的数据读取出来,用逻辑运算指令把需要的数据写入P3就可以了

回复

368

帖子

1

资源

一粒金砂(高级)

如果想几位同时操作,那就用逻辑运算,比如同时给第6、7位置1,就是P3 |=0xC0,两个都置0的话就是P3&= ~0xc0。不过最好用个变量,像楼上说的那样,读出来,操作完赋给端口,最好别直接用端口来进行运算

回复

14

帖子

0

资源

一粒金砂(初级)

直接整体赋值

回复

4

帖子

0

资源

一粒金砂(初级)

飞翔荷兰人号 发表于 2017-2-10 23:26
如果想几位同时操作,那就用逻辑运算,比如同时给第6、7位置1,就是P3 |=0xC0,两个都置0的话就是P3&= ~0xc ...

如果要写旋转灯,把要显示的汉子写进数组里面,数组里面有16个16进制的元素,然后要实现我上面说的操作,应该怎么写呢??麻烦了,谢谢。

点评

你是要在LED矩阵上显示汉字,然后让汉字移动吗,这样的话就得每次重新刷新了,其实不需要保留原来的不变吧,直接移位,然后每一帧重新刷一遍  详情 回复 发表于 2017-2-11 10:01

回复

368

帖子

1

资源

一粒金砂(高级)

陽光下的星星 发表于 2017-2-11 09:15
如果要写旋转灯,把要显示的汉子写进数组里面,数组里面有16个16进制的元素,然后要实现我上面说的操作, ...

你是要在LED矩阵上显示汉字,然后让汉字移动吗,这样的话就得每次重新刷新了,其实不需要保留原来的不变吧,直接移位,然后每一帧重新刷一遍

回复

4

帖子

0

资源

一粒金砂(初级)

飞翔荷兰人号 发表于 2017-2-11 10:01
你是要在LED矩阵上显示汉字,然后让汉字移动吗,这样的话就得每次重新刷新了,其实不需要保留原来的不变 ...

IMG20170211100719.jpg 写这种旋转灯,但是其中一种颜色的灯接到P3的高五位,可是写数据的时候不能影响51P3口的外部中断位。所以不太清楚应该怎么写。试过 P3|=(g1<<3) 但好像不行

回复

368

帖子

1

资源

一粒金砂(高级)

哦,是这种的啊。我还以为你原先是只要求赋1或者赋0,这样不能直接用|=,因为比如你上一次赋完值是10000000,下一次想变成01000000,用|=就变成了11000000。另外,51的P3口开了第二功能的话,最好用位操作吧,如果嫌慢,你可以试试整个端口赋值,我也没试过开了外部中断后赋值对它的影响,但是你最好把低三位变成1或者0再试,感觉不对低位做处理可能有问题

回复

1万

帖子

143

资源

版主

在内存中定义一个缓冲寄存器,根据初始显示先赋值给该寄存器,再将该寄存器的值赋值给IO控制LED。当需要改变显示时,可以改变该寄存器的赋值,再送显即可。改变赋值时,可以用逻辑运算法,即根据低电平驱动或高电平驱动,以逻辑或或者逻辑与运算后改变赋值。
个人签名上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

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

最新文章 更多>>
    关闭
    站长推荐上一条 1/4 下一条

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

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

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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