標題:
單片機控制點陣 為什么我這個函數(shù)正確,卻不能正確顯示0啊
[打印本頁]
作者:
咻咻修
時間:
2018-4-13 08:26
標題:
單片機控制點陣 為什么我這個函數(shù)正確,卻不能正確顯示0啊
為什么我這個函數(shù)正確,卻不能正確顯示0啊
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit SRCLK=P3^6; //宏定義sbit RCLK=P3^5;
sbit SER=P3^4;
void delay(u16 i) //延時函數(shù)
{
while(i--);
}
u8 ledduan[]=(0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00); //段選 橫向選中一排
u8 ledwei[]=(0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfb,0xfe); //位選 縱向選中一列
void hc595sendbaty(u8 dat)
{ u8 a;
SRCLK=0; //為上升沿做準備 RCLK=0; for(a=0;a<8;a++) {} SER=dat>>7;
dat<<=1;
SRCLK=1; //產(chǎn)生上升沿 _nop_();
_nop_();
SRCLK=0; //為下一個上升沿做準備 }
RCLK=1;
_nop_();
_nop_();
RCLK=0;}void main()
{ u8 i; P0=0x7f; //不理解為什么要先點亮第一排??
while(1) { for(i=0;i<8;i++)
{ P0=ledwei[i]; hc595sendbaty(ledduan[i]); delay(100);
hc595sendbaty(0x00); } } }
復(fù)制代碼
作者:
HC6800-ES-V2.0
時間:
2018-4-13 09:52
你的程序正確才怪。。。!
第一:編譯有錯:RCLK沒申明。所以沒能編譯出可執(zhí)行文件.HEX,你真的下載起了?那么就不是這個程序,當然不會顯示正確了。
第二:主函數(shù)都沒有,還說“函數(shù)正確”
不知道是不是你沒有發(fā)全部程序。顯示0的程序我也有一個,看看吧。
#include<reg51.h>
#include<intrins.h>
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
unsigned char code TAB[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char code CHARCODE[20][8]=
{
{0x00,0x00,0x00,0x3E,0x41,0x41,0x41,0x3E}, //0
{0x00,0x00,0x00,0x00,0x21,0x7F,0x01,0x00}, //1
{0x00,0x00,0x00,0x21,0x43,0x45,0x49,0x31}, //2
{0x00,0x00,0x00,0x42,0x41,0x51,0x69,0x46}, //3
{0x00,0x00,0x00,0x0C,0x14,0x24,0x7F,0x04}, //4
{0x00,0x00,0x00,0x72,0x51,0x51,0x51,0x4E}, //5
{0x00,0x00,0x00,0x1E,0x29,0x49,0x49,0x06}, //6
{0x00,0x00,0x00,0x40,0x40,0x4F,0x50,0x60}, //7
{0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36}, //8
{0x00,0x00,0x00,0x30,0x49,0x49,0x4A,0x3C}, //9
{0x00,0x00,0x01,0x1F,0xE4,0x3C,0x07,0x01}, //A
{0x00,0x00,0x00,0x81,0xFF,0x91,0x91,0x6e}, //B
{0x00,0x00,0x00,0x7E,0x81,0x81,0x81,0xc2}, //C
{0x00,0x00,0x00,0x81,0xFF,0x81,0x81,0x7e}, //D
{0x00,0x00,0x00,0x81,0xFF,0x91,0xb9,0xc3}, //E
{0x00,0x00,0x00,0x81,0xFF,0x91,0xb8,0xc0}, //F
{0x00,0x00,0x3C,0x42,0x81,0x89,0xce,0x08}, //G
{0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00}, //中
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //全滅
{0x3C,0x62,0xB1,0xAB,0x87,0xB1,0x62,0x3C}//人臉
};
void delay(unsigned int time)//0.0001766s延時,約0.2ms
{
unsigned int j;
for(time;time>0;time--)
for(j=0;j<20;j++);
}
void Hc595SendByte(unsigned char dat)
{
unsigned char a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
if ((dat<<a)&0x80)
{
SER=1;
}
else
{
SER=0;
}
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void main ()
{
unsigned char i,j,k;
P0=0xff;
while (1)
{
for (i=0;i<20;i++)
{
for (j=0;j<100;j++)
{
for (k=0;k<8;k++)
{
P0=0xff;
Hc595SendByte(CHARCODE[i][k]);
P0=TAB[k];
delay(5);
}
}
}
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1