电子产业一站式赋能平台

PCB联盟网

搜索
查看: 5382|回复: 14
收起左侧

hc6800-es v2.0开发板的数码管太奇怪了

[复制链接]

633

主题

1927

帖子

8108

积分

联盟顾问

Rank: 3Rank: 3

积分
8108
发表于 2023-2-8 15:50:33 | 显示全部楼层 |阅读模式
#include<reg51.h>
#define port P0
sbit lsa=P2^2;
sbit lsb=P2^3;
sbit lsc=P2^4;
void Delay(int c);
void main(){
  int i=0;//计数器
  lsa=0;
lsb=0;
lsc=0;
while(1){
  lsa=1;
  lsb=0;
  lsc=0;
  port=0x5b;
  Delay(10);
  lsa=0;
  lsb=0;
  lsc=0;
  port=0x7d;
  //port=0x06;
  Delay(10);
  //i++;
  //if(i==10) i=0;
}
}
void Delay(int c){
  unsigned a,b;
for(;c>0;c--)
  for(b=38;b>0;b--);
   //for(a=130;a>0;a--);
}


我一直以为数码管静态显示只需要p2.2,p2.3,p2.4付一次值就好了,但这个单片机不行,必须要三个位改变,也就是至少两个晶体管显示才行,而且还要不断地循环才行,也就是不断地给P0口和p2.2,2.3,2.4口赋值才行,这太奇怪了,谁能给我解释一下?而且我居然还找到方法让它显示了。。。。。。。。。。。。。。
回复

使用道具 举报

0

主题

829

帖子

622

积分

二级会员

Rank: 2

积分
622
发表于 2023-2-8 15:51:16 | 显示全部楼层
用了译码器?
回复 支持 反对

使用道具 举报

2851

主题

4614

帖子

2万

积分

官网认证

Rank: 3Rank: 3

积分
25793

活跃会员热心会员推广达人优秀版主

发表于 2023-2-8 15:51:26 | 显示全部楼层
我刚买的这板子,做动态也遇到点问题,不急慢慢研究,译码器一个时刻只有一个地址是有效的,也就是说不能同时控制两个或以上的数码管,看你的动态程序你掌握的不错
回复 支持 反对

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-2-8 15:51:40 | 显示全部楼层
顺便说说我的问题吧,动态显示是第八位总是常亮,无法显示数字....aiai
回复 支持 反对

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-2-8 15:52:38 | 显示全部楼层
dynamic_display(){uchar i;for(i=0;i<8;i++){P2=位码;P0=段码;delay_nms(1);}}
回复 支持 反对

使用道具 举报

0

主题

825

帖子

683

积分

二级会员

Rank: 2

积分
683
发表于 2023-2-8 15:53:34 | 显示全部楼层
原理图
hc6800-es v2.0开发板的数码管太奇怪了-1.jpg

hc6800-es v2.0开发板的数码管太奇怪了-2.jpg
回复 支持 反对

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-2-8 15:54:03 | 显示全部楼层
建议你用switch函数进行位选
回复 支持 反对

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-2-8 15:54:48 | 显示全部楼层
138译码器用的是BCD码吧?
回复 支持 反对

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-2-8 15:55:31 | 显示全部楼层
我开始也是遇到过这些问题,不过自己慢慢琢磨就自然懂了,这样记忆也牢固些。
回复 支持 反对

使用道具 举报

2

主题

849

帖子

722

积分

二级会员

Rank: 2

积分
722
发表于 2023-2-8 15:55:36 | 显示全部楼层
#define GPIO_DIG P0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
//RAM,ROM
unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
//0~9段码
//0:0011_1111
/*******************************************************************************
* 函 数 名         : main
* 函数功能     : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
LSA=0;
LSB=0;
LSC=0;//我们可以理解为打开某一个数码管打开
while(1)
{
  GPIO_DIG=DIG_CODE[6];
}   
}
回复 支持 反对

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表