找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

为什么这个89C52单片机程序只显示255,不显示num值?

查看数: 4146 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-15 16:17

正文摘要:

单片机源程序如下:#include "reg51.h" #define uint unsigned int #define uchar unsigned char sbit SDA = P2^0; sbit SCL = P2^1; /*共阳数码管的4位控制端口*/ sbit LSA = P2^2; sbit LSB = P2^3; ...

回复

ID:24758 发表于 2020-6-16 18:44
第一张是没加延时,读出来0xFF


第二张加了延时,读出和写入数据一致0x19(25)
ID:24758 发表于 2020-6-16 18:40
楼主的意思是存放的数据是25,但读出来的数据是255,而不是25。

我用proteus简单仿真了I2C器件(没接数码管),发现从I2C读出的数据为0xFF(即255)。
试了多次发现,在主函数里对I2C读写操作太快,以至于无法稳定的读出25(0x19)(具体原因不清楚)。

你可以在 AT24C02_Write(1,num); 和 display_num = AT24C02_Read(1); 这两句后面都加个延时 Delay(100);

这样就可以从I2C里面正确读出数据了。但我没接数码管,不知道数码管上能不能正常显示。
后面我贴两个图,你看看,希望能有帮助。

如果没看到图的话,就是审核没通过
ID:155507 发表于 2020-6-15 22:31
uchar num = 25;           //存放数据
uchar display_num = 0;  //读出数据


display_num 数据类型最大就是255

uchar是8位的,占一个寄存器,  无符号字符型,范围(0-255)
unsigned char的取值范围是0-255
char是有长度的,你好好看看书,会有详细的解释



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

Powered by 单片机教程网

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