求助 51单片机,8*8点阵简单程序,有点问题
#include<STC12C5A60S2.H>//51头文件/*刚学单片机对于下面一段程序不知道那里有问题*//*暂时还不会用单片机的定时器和中断*///延时函数voi...
#include <STC12C5A60S2.H> //51头文件
/*刚学单片机 对于下面一段程序 不知道那里有问题*/
/*暂时还不会用单片机的定时器和中断*/
//延时函数
void sleep (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
//设置P1 和P2 为推挽输出
void set(void)
{
P1M1=0x00;
P1M0=0xff;
}
//共阳8 * 8 点阵,
unsigned char taba[8]={0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7};//心形
unsigned char tabi[8]={0xFF,0xC3,0xC3,0xE7,0xE7,0xC3,0xC3,0xFF};//英文I
unsigned char tabb[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//共阳段
void main(void)
{
unsigned int m=0;
unsigned int n;
while(1)
{
set();
m=0;
//显示英文I
while(m<6000)
{
for(n = 0; n < 8; n++)
{
P2=tabi[n];
P1=tabb[7-n];
if(n==7)
{
//使点阵熄灭
P1=0x00;
P2=0xff;
}
}
m++;
}
m=0;
sleep(1000);
//显示心型图像
while(m<6000)
{
for(n = 0; n < 8; n++)
{
P2=taba[n];
P1=tabb[7-n];
if(n==7)
{
//使点阵熄灭
P1=0x00;
P2=0xff;
}
}
m++;
}
sleep(1000);
}
}
/*****不知道为什么点阵第一行总是不对,不知道程序那里错了*/ 展开
/*刚学单片机 对于下面一段程序 不知道那里有问题*/
/*暂时还不会用单片机的定时器和中断*/
//延时函数
void sleep (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
//设置P1 和P2 为推挽输出
void set(void)
{
P1M1=0x00;
P1M0=0xff;
}
//共阳8 * 8 点阵,
unsigned char taba[8]={0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7};//心形
unsigned char tabi[8]={0xFF,0xC3,0xC3,0xE7,0xE7,0xC3,0xC3,0xFF};//英文I
unsigned char tabb[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//共阳段
void main(void)
{
unsigned int m=0;
unsigned int n;
while(1)
{
set();
m=0;
//显示英文I
while(m<6000)
{
for(n = 0; n < 8; n++)
{
P2=tabi[n];
P1=tabb[7-n];
if(n==7)
{
//使点阵熄灭
P1=0x00;
P2=0xff;
}
}
m++;
}
m=0;
sleep(1000);
//显示心型图像
while(m<6000)
{
for(n = 0; n < 8; n++)
{
P2=taba[n];
P1=tabb[7-n];
if(n==7)
{
//使点阵熄灭
P1=0x00;
P2=0xff;
}
}
m++;
}
sleep(1000);
}
}
/*****不知道为什么点阵第一行总是不对,不知道程序那里错了*/ 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询