2909|9

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

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

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

最新回复

在内存中定义一个缓冲寄存器,根据初始显示先赋值给该寄存器,再将该寄存器的值赋值给IO控制LED。当需要改变显示时,可以改变该寄存器的赋值,再送显即可。改变赋值时,可以用逻辑运算法,即根据低电平驱动或高电平驱动,以逻辑或或者逻辑与运算后改变赋值。  详情 回复 发表于 2017-2-11 17:18
点赞 关注
 

回复
举报

6040

帖子

195

TA的资源

版主

沙发
 
用与,或,取反等位操作来实现。
此帖出自51单片机论坛
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
先把P3口的数据读取出来,用逻辑运算指令把需要的数据写入P3就可以了
此帖出自51单片机论坛
 
 
 

回复

366

帖子

1

TA的资源

一粒金砂(高级)

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

回复

14

帖子

0

TA的资源

一粒金砂(初级)

5
 
直接整体赋值
此帖出自51单片机论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

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

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

点评

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

回复

366

帖子

1

TA的资源

一粒金砂(高级)

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

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

回复

3

帖子

0

TA的资源

一粒金砂(初级)

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

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

回复

366

帖子

1

TA的资源

一粒金砂(高级)

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

回复

1万

帖子

141

TA的资源

版主

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

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表