找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13708|回复: 11
打印 上一主题 下一主题
收起左侧

单片机按键实现0-9999计数器程序+仿真 4位一体数码管显示

  [复制链接]
楼主
ID:95809 发表于 2021-2-22 10:03 来自触屏版 | 显示全部楼层
zhangleixbyl 发表于 2021-2-20 16:36
用stc89c52怎么改程序啊

不用改,直接用,实在手痒愿意改把头文件改成REG52。
回复

使用道具 举报

沙发
ID:95809 发表于 2021-2-26 20:08 | 显示全部楼层
zhangleixbyl 发表于 2021-2-23 05:41
89c52显示器全亮没倒计时显示,没按按键显示都是零,按了按键显示都是888是什么问题?不兼容吗

检查你的数码管驱动电路,他是直接驱动共阳数码管,用89C52可能亮度不够,用12或15单片机,用推挽模式驱动就好了。
回复

使用道具 举报

板凳
ID:95809 发表于 2021-2-27 20:20 | 显示全部楼层
zhangleixbyl 发表于 2021-2-26 23:36
小白初学者不会改啊,谢谢大神指点。

看代码的19-20行,{0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; 这是共阳数码管的段码,分别对应数字0-9,既然是共阳数码管,在显示的时候就要在每位数码管的阳极接通高电平才能点亮。

再看37-48行,



  • P2=0X08;
  •                 P0=table[m%10];   //显示个位
  •                 delayms(5);
  •                 P2=0X04;
  •             P0=table[m/10];          //显示十位
  •                 delayms(5);
  •             P2=0X02;
  •                 P0=table[n%10];          //显示百位
  •                 delayms(5);
  •                 P2=0X01;
  •                 P0=table[n/10];          //显示千位
  •                 delayms(5);
这里表明显示的时候分别往数码管阳极输出高电平,如果能的电路用了三极管扩流驱动数码管,那么就需要输出低电平,也就是“取反“,不然就是你那种现象,该亮的不亮,不该亮的全亮。如果你使用的是12或15单片机,可以在函数后加上
P0M1 = 0x00; P0M0 = 0xFF; //P0(00000000B,11111111B)
P2M1 = 0x00; P2M0 = 0x0F; //P2(00000000B,00001111B)
使用单片机推挽模式直接驱动数码管。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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