普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1390|回复: 0

51单片机I/O扩展(串转并)

[复制链接]

3

主题

4

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2022-3-12 22:09:55 | 显示全部楼层 |阅读模式
问题:程序烧录后,LED点阵没有显示图像。

代码如下
#include <REGX52.H>
typedef unsigned int u16;
typedef unsigned char u8;
//&#182;¨ò&#229;74595&#191;&#216;&#214;&#198;1ü&#189;&#197;
sbit SER=P3^4;//ò&#198;&#206;&#187;&#188;&#196;′&#230;&#198;ê±&#214;ó÷ê&#228;è&#235;
sbit SRCLK=P3^5;//′&#230;′¢&#188;&#196;′&#230;&#198;÷ê±&#214;óê&#228;è&#235;
sbit rCLK=P3^6;//′&#174;DDêy&#190;Yê&#228;è&#235;
//&#182;¨ò&#229;μ&#227;&#213;óáD&#191;&#216;&#214;&#198;&#182;&#203;&#191;ú
#define LEDDZ_COL_PROT        P0
u8 ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//&#209;ó3ùoˉêy
void delay_10us(u16 ten_us)
{
        while(ten_us--);
}
void delay_ms(u16 ms)
{
u16 i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
//&#207;ò74595ê&#228;è&#235;êy&#190;Y
void hc595_write_data(u8 dat)
{
                u8 i=0;
          for(i=0;i<8;i++)
          {
                        SER=dat>>7;
                        dat<<=1;
                        SRCLK=0;
                        delay_10us(1);
                        SRCLK=1;
                        delay_10us(1);
          }
                rCLK=0;
    delay_10us(1);
                rCLK=1;
}
void main()
{
        u8 i=0;
        LEDDZ_COL_PROT=0x00;
        while(1)
        {

                for(i=0;i<8;i++)
                {
         hc595_write_data(0x00);
         hc595_write_data(ghc595_buf[i]);
         delay_ms(500);
          }
  }
}

希望大佬能帮我指出错误的地方

回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-14 20:52 , Processed in 0.082369 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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