#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);
}
我想点亮STC8-8的点阵的第一个LED,为什么写完程序后点亮了第一列,下面是我写的,哪有错?谢谢
答案:3 悬赏:70 手机版
解决时间 2021-01-28 22:00
- 提问者网友:雨不眠的下
- 2021-01-28 13:21
最佳答案
- 五星知识达人网友:动情书生
- 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);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯