标题:
一个点阵程序的小问题
[打印本页]
作者:
ckeai
时间:
2018-7-18 17:07
标题:
一个点阵程序的小问题
这是个点阵程序 重点就在那个date 为什么date为char型点阵才能显示0 为int型 点阵显示就不对
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define ucharunsigned char
sbit RCLK=P3^5;
sbit SRCLK=P3^6;
sbit SER=P3^4;
ucharledduan[]={0x00,0x00,0x7E,0x81,0x81,0x81,0x7E,0x00};
ucharledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(uintz);
void HC595(uchardate) //date必须是char 型
{
uint a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=date>>7;
date<<=1;
SRCLK=1;
SRCLK=0;
}
RCLK=1;
RCLK=0;
}
void main()
{
P0=0x7f;
while(1)
{ uchar i=0;
for(i=0;i<8;i++)
{
P0=ledwei[ i];
HC595(ledduan[ i]);
delay(1);
HC595(0x00);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
复制代码
作者:
关外秀才
时间:
2018-7-18 17:26
char是8位的,int是16位的,设置不一样吧?
作者:
goldfatherzuo
时间:
2018-7-18 20:42
这个要从数据类型说起,因为 char在计算机中占一个字节也就是8个位,int占4个字节也就是32个位。而你使用的点阵式8*8点阵,对应16个i/o口,如果用int型数据则要进行移位
作者:
ckeai
时间:
2018-7-18 22:23
goldfatherzuo 发表于 2018-7-18 20:42
这个要从数据类型说起,因为 char在计算机中占一个字节也就是8个位,int占4个字节也就是32个位。而你使用的 ...
可是这里面确实移位了
作者:
zhb003
时间:
2018-7-19 09:02
位数不对吧
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1