找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3268|回复: 11
打印 上一主题 下一主题
收起左侧

这个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);       
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:19715 发表于 2014-11-11 10:38 | 只看该作者

回复

使用道具 举报

板凳
ID:67992 发表于 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);        
}
回复

使用道具 举报

地板
ID:67992 发表于 2014-11-11 11:13 | 只看该作者
普中板吧?
回复

使用道具 举报

5#
ID:67992 发表于 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);        
}
回复

使用道具 举报

6#
ID:65770 发表于 2014-11-11 21:04 | 只看该作者
dgahz 发表于 2014-11-11 11:12
#include
#include
sbit ser=P3^4;  //(14脚)串行数据输入

大神啊   我爱死你了   非常非常感谢     我之前别人给我的程序都不能关闭LED你这个可以,还请教大神一个问题,ser=1和=0是什么意思?
回复

使用道具 举报

7#
ID:67992 发表于 2014-11-11 21:27 | 只看该作者
hc595说明书中讲得太简单,我照做也不行。0XFF输入失灵也是你讲我才知道。想想试一下先输入0X00,延时一下,再变为0FF,周而复始,灯可正常闪烁。奇怪了,为什么单单输入0XFF又不行呢?难道数据输入端输入数据之前要先给它个低电平提示一下,告诉hc595我要输数据了,你接收吧!有这想法立马验证,果然如此啊!
ser就是串行数据输入端。
回复

使用道具 举报

8#
ID:65770 发表于 2014-11-12 07:08 | 只看该作者

这里的ser等于1和0,有什么意义   是怎么等 于1 的
回复

使用道具 举报

9#
ID:67992 发表于 2014-11-12 08:06 | 只看该作者
ser接在P3^4,怎样操作P端口不用说了吧?假如接的是LED,怎样让它亮灭会吧!单片机上电后P口电平默认为高电平,只要你后续不操作它它永远为高电平。同时ser也是595的信号输入端,至于先给它低电平再送信号你就当是595的要求吧!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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