标题: 这个595程序那里错了,不能运行 [打印本页]

作者: 董亚伟    时间: 2014-11-11 07:58
标题: 这个595程序那里错了,不能运行
#include<reg52.h>
#include<intrins.h>

sbit ser=P3^4;  //(14脚)串行数据输入
sbit rclk=P3^5;  //(12脚)并行输出控制
sbit srclk=P3^6;  //(11脚)移位时钟控制
void hc595(unsigned int send)
{
unsigned int i;
for(i=0;i<8;i++)
        {
                if((send<<i)&0x80)
                {
                        ser=1;
                }
                else
                {
                        ser=0;       
                }
                srclk=0;
                _nop_();
                srclk=1;
        }
            rclk=0;
                _nop_();
                rclk=1;
}
void main()
{
hc595(0xf0);       
}


作者: 明白    时间: 2014-11-11 10:38


作者: dgahz    时间: 2014-11-11 11:12
#include<reg52.h>
#include<intrins.h>
sbit ser=P3^4;  //(14脚)串行数据输入
sbit rclk=P3^5;  //(12脚)并行输出控制
sbit srclk=P3^6;  //(11脚)移位时钟控制
void hc595(unsigned char send)
{
unsigned char i;
   rclk=0;
   ser=0;
for(i=0;i<8;i++)
        {
                if((send<<i)&0x80)
                {
                        ser=1;
                }
                else
                {
                        ser=0;        
                }
                srclk=0;
                _nop_();
                srclk=1;
                               
        }
            rclk=0;
                _nop_();
                rclk=1;
}
void main()
{
hc595(0xff);        
}
作者: dgahz    时间: 2014-11-11 11:13
普中板吧?
作者: dgahz    时间: 2014-11-11 12:22
#include<reg52.h>
#include<intrins.h>
sbit ser=P3^4;  //(14脚)串行数据输入
sbit rclk=P3^5;  //(12脚)并行输出控制
sbit srclk=P3^6;  //(11脚)移位时钟控制
void hc595(unsigned char send)
{
unsigned char i;
   rclk=0;
   ser=0;
for(i=0;i<8;i++)
        {
               ser=(bit)((send<<i)&0x80);
                srclk=0;
                _nop_();
                srclk=1;
        }
                rclk=0;
                _nop_();
                rclk=1;
}
void main()
{
hc595(0xf0);        
}
作者: 董亚伟    时间: 2014-11-11 21:04
dgahz 发表于 2014-11-11 11:12
#include
#include
sbit ser=P3^4;  //(14脚)串行数据输入

大神啊   我爱死你了   非常非常感谢     我之前别人给我的程序都不能关闭LED你这个可以,还请教大神一个问题,ser=1和=0是什么意思?
作者: dgahz    时间: 2014-11-11 21:27
hc595说明书中讲得太简单,我照做也不行。0XFF输入失灵也是你讲我才知道。想想试一下先输入0X00,延时一下,再变为0FF,周而复始,灯可正常闪烁。奇怪了,为什么单单输入0XFF又不行呢?难道数据输入端输入数据之前要先给它个低电平提示一下,告诉hc595我要输数据了,你接收吧!有这想法立马验证,果然如此啊!
ser就是串行数据输入端。
作者: 董亚伟    时间: 2014-11-12 07:08
明白 发表于 2014-11-11 10:38

这里的ser等于1和0,有什么意义   是怎么等 于1 的
作者: dgahz    时间: 2014-11-12 08:06
ser接在P3^4,怎样操作P端口不用说了吧?假如接的是LED,怎样让它亮灭会吧!单片机上电后P口电平默认为高电平,只要你后续不操作它它永远为高电平。同时ser也是595的信号输入端,至于先给它低电平再送信号你就当是595的要求吧!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1