普中开源电子分享网

 找回密码
 立即注册
搜索

想请教大家一个问题?欢迎进来

已有 291 次阅读2017-4-6 09:56 |个人分类:单片机点阵程序问题

/**************************************************************************************
*              8*8LED点阵———点亮一个点实验  *
实现现象:下载程序后点阵左上角第一个点点亮
注意事项:一定要将74HC595模块上的JP595短接片短接,并且将JOE短接片短接到GND端。  
***************************************************************************************/

#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>

typedef unsigned int u16;  //对数据类型进行声明定义
typedef unsigned char u8;

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


/*******************************************************************************
* 函数名         : Hc595SendByte(u8 dat)
* 函数功能   : 向74HC595发送一个字节的数据
* 输入           : 无
* 输出         : 无
*******************************************************************************/
void Hc595SendByte(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;
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能 : 主函数
* 输    入       : 无
* 输    出     : 无
*******************************************************************************/
void main()
{
Hc595SendByte(0x80);
P0=0x7f;
while(1);
}
上面这个程序是点亮一个8X8点阵左上角一个点,但实际结果确是点亮第一列;
下面的程序就可以点亮左上角一个点阵;请大家看下面的程序,看一下两者的区别在哪里,为什么显示的结果不同。
不同的地方在主函数。
/**************************************************************************************
*              8*8LED点阵———点亮一个点实验  *
实现现象:下载程序后点阵左上角第一个点点亮
注意事项:一定要将74HC595模块上的JP595短接片短接,并且将JOE短接片短接到GND端。  
***************************************************************************************/

#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>

typedef unsigned int u16;  //对数据类型进行声明定义
typedef unsigned char u8;

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


/*******************************************************************************
* 函数名         : Hc595SendByte(u8 dat)
* 函数功能   : 向74HC595发送一个字节的数据
* 输入           : 无
* 输出         : 无
*******************************************************************************/
void Hc595SendByte(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;
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能 : 主函数
* 输    入       : 无
* 输    出     : 无
*******************************************************************************/
void main()
{
P0=0x7f;
while(1)
{
Hc595SendByte(0x80);
}
}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

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

GMT+8, 2024-5-9 08:45 , Processed in 0.058146 second(s), 25 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部