找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

八路抢答器仿真单片机代码数码管是共阴的如何改成共阳的?

查看数: 1725 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-12-26 00:10

正文摘要:

代码怎么把共阴改成共阳啊,还有这个仿真图还需要改什么呀,单片机代码如下: #include<at89x51.h> #define uchar unsigned char #define uint unsigned int char s; uchar num=0; char time=20;&nb ...

回复

ID:1107013 发表于 2023-12-29 09:07
将dispcode[]部分是数字显示的控制,输出时取反。将dispbitcode[]部分是数字显示的控制,输出时取反。还需要将电路中驱动的三极管由PNP改成NPN接地。
ID:57657 发表于 2023-12-27 18:21
共阴数码管:段码高电平,位码低电平点亮,共阳则相反。
ID:883242 发表于 2023-12-27 16:57
18531215831 发表于 2023-12-26 23:42
这样改了还是不行啊,仿真之后显示四个J然后按键之后直接蜂鸣器就会响然后就乱码

输出是对的,第一图P0的值是~0x71。在数据表格里面。是你把表格对应共阴还是共阳弄反了。
ID:1106358 发表于 2023-12-26 23:56
csmyldl 发表于 2023-12-26 09:01
P0=tabledu[num];  //显示几号抢到了
P2=tablewe[0];
把这两名改为:

改完也不行啊,所有的P0和P2都改吗还是只有后面是tablewe和tabledu的才改,
ID:883242 发表于 2023-12-26 15:09
cnos 发表于 2023-12-26 08:58
把所有的P0=tabledu替换为P0=~tabledu
把所有的P2=tablewe替换为P2=~tablewe

你的回答虽然对,但是~运算是在单片机执行时进行的,代码数量以及代码执行时间都有所增加。
  1. uchar code tabledu[]={~0x3f,~0x06,~0x5b,~0x4f,
  2. ~0x66,~0x6d,~0x7d,~0x07,
  3. ~0x7f,~0x6f,~0x77,~0x7c,
  4. ~0x39,~0x5e,~0x79,~0x71
  5. };
  6. uchar code tablewe[]={~0XFE,~0XFD,~0XFB,~0XF7};
复制代码

这样改,~运算是编译期间进行的,单片机不会进行运算,改之前和改之后,代码数量和运算时间都不会改变,跟原来一样,效率更高。
ID:1106416 发表于 2023-12-26 11:13
把字模取反就好了
ID:235200 发表于 2023-12-26 09:01
P0=tabledu[num];  //显示几号抢到了
P2=tablewe[0];
把这两名改为:
P0=~tabledu[num];  //显示几号抢到了
P2=~tablewe[0];
ID:688692 发表于 2023-12-26 08:58
把所有的P0=tabledu替换为P0=~tabledu
把所有的P2=tablewe替换为P2=~tablewe

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表