永发信息网

我想点亮STC8-8的点阵的第一个LED,为什么写完程序后点亮了第一列,下面是我写的,哪有错?谢谢

答案:3  悬赏:70  手机版
解决时间 2021-01-28 22:00
  • 提问者网友:雨不眠的下
  • 2021-01-28 13:21
#include"reg51.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;

sbit SER=P3^6;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;

void LEDdianzhen(u8 dat)
{
u8 a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=dat>>7;
dat<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void main()
{
LEDdianzhen(0x80);
P0=0x7f;
while(1);

}
最佳答案
  • 五星知识达人网友:动情书生
  • 2021-01-28 13:59
把主方法中的while(1);去掉再试试,另外开头那里定义管教的时候也有错,sbit SER=P3^6;改成sbit SER=P3^4; 下载程序的时候,注意将JP595短接(就是插上插帽),JOE接GND(就是插到右边两个脚)
全部回答
  • 1楼网友:何以畏孤独
  • 2021-01-28 15:48
主函数中,while(1) { LEDdianzhen(0x80); P0=0x7f; } 我也是同样的问题,是这样解决的。 再看看别人怎么说的。
  • 2楼网友:胯下狙击手
  • 2021-01-28 15:14
#include"reg51.h" // 供参考 #include"intrins.h" typedef unsigned char u8; typedef unsigned int u16; sbit ds=P3^4; // hc595 串转并 sbit sh_cp=P3^5; sbit st_cp=P3^3; void LEDdianzhen(u8 dat) { u8 a; for(a=0;a<8;a++) { sh_cp=0; st_cp=0; dat<<=1; ds=CY; _nop_(); _nop_(); sh_cp=1;//sh_cp上升沿 移位 _nop_(); _nop_(); st_cp=1;//st_cp上升沿 存储 } } void main() { LEDdianzhen(0x80); P1=0x7f; while(1); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯