keil吧 关注:14,988贴子:30,312
  • 4回复贴,共1

新手求教大家一个关于点阵的问题

只看楼主收藏回复

#include <REG51.H>
#include "array.h"
//--重定义函数变量--//
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//--定义SPI要使用的 IO--//
sbit MOSIO = P3^4;
sbit R_CLK = P3^5;
sbit S_CLK = P3^6;
//--全局函数声明--//
void HC595SendData( uchar BT3, uchar BT2,uchar BT1,uchar BT0);
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
int k, i, ms;
//--定义一个指针数据指向汉字--//
uchar *p[] = {
tab1, tab2, tab3, tab4, tab5, tab6, tab7, tab8,
tab9, tab10, tab11, tab12, tab13, tab14, tab15};
while(1)
{
for(i = 0; i < 15; i++)//总共15个字
{
for(ms = 50; ms > 0; ms--)//显示50次,即肉眼可识别的停留时间
{
for(k = 0; k < 16; k++)//显示一个字
{
//--因为字模软件取的数组是高电平有效,所以列要取反--//
HC595SendData(~(*(p[i] + 2*k + 1)),~(*(p[i] + 2*k )),
tab0[2*k],tab0[2*k + 1]);
}
HC595SendData(0xff,0xff,0,0);//清屏
}
}
}
}
/*******************************************************************************
* 函 数 名 : HC595SendData
* 函数功能 : 通过595发送四个字节的数据
* 输 入 : BT3:第四个595输出数值
* * BT2: 第三个595输出数值
* * BT1:第二个595输出数值
* * BT0:第一个595输出数值
* 输 出 : 无
*******************************************************************************/
void HC595SendData( uchar BT3, uchar BT2,uchar BT1,uchar BT0)
{
uchar i;
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT3 >> 7 ;//从高位到低位
BT3 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT2 >>7;//从高位到低位
BT2 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT1 >> 7;//从高位到低位
BT1 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--发送第一个字节--//
for(i=0;i<8;i++)
{
MOSIO = BT0 >> 7;//从高位到低位
BT0 <<= 1;
S_CLK = 0;
S_CLK = 1;
}
//--输出--//
R_CLK = 0; //set dataline low
R_CLK = 1; //片选
R_CLK = 0; //set dataline low
}


1楼2015-08-20 17:02回复
    请问在点阵中HC595SendData(~(*(p[i] + 2*k + 1)),~(*(p[i] + 2*k )),tab0[2*k],tab0[2*k + 1]);什么意思?


    2楼2015-08-20 17:02
    回复
      tab1, tab2, tab3, tab4, tab5, tab6, tab7, tab8,tab9, tab10, tab11, tab12, tab13, tab14, tab15在array.h中,是字模生成的数组


      3楼2015-08-20 17:04
      回复
        我也在研究这个,这个事实上是取字幕里面的值。上下滚动实现了,但是左右滚动怎么搞?没研究出来,还在折腾呢


        IP属地:江苏4楼2016-06-03 16:03
        回复
          这个tab0是干嘛的,看不懂


          5楼2017-08-07 14:38
          回复