您的位置:首页 > 产品设计 > UI/UE

protues仿真 51点亮点阵

2013-11-18 20:41 239 查看
电路图



程序

/*==============================
点亮点阵心形
================================*/
#include <REGX51.H>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit st_cpA = P1^4;
sbit sh_cpA = P1^7;
sbit dsA = P1^6;

sbit st_cpB = P1^2;
sbit sh_cpB = P1^0;
sbit dsB = P1^1;

void sendMessageA(uchar messageA);//发送一个字节到移位寄存器中    列
void outputMessageA();//输出到存储寄存器中
void sendMessageB(uchar messageB);                                  //行
void outputMessageB();
void delay(uchar time_delay);

uchar code rows[] = { 0x01, 0x02, 0x04, 0x08,
0x10, 0x20, 0x40, 0x80};
uchar code cols[] = { 0xc9, 0xb6, 0xbe, 0xdd,
0xeb, 0xf7, 0xff, 0xff};
void main()
{
uchar i = 0;
while(1)
{
//扫描显示
for(i = 0; i < 8; i++)
{
sendMessageB(rows[i]);
outputMessageB();
sendMessageA(cols[i]);
outputMessageA();
//delay(5000);
}
}
}

void sendMessageA(uchar messageA)
{
uchar i = 0;
for(; i < 8; i ++)
{
sh_cpA = 0;
dsA = messageA & 0x80;//先写入最高位
messageA = messageA << 1;//左移移位
sh_cpA = 1;
}
}
void sendMessageB(uchar messageB)
{
uchar i = 0;
for(; i < 8; i ++)
{
sh_cpB = 0;
dsB = messageB & 0x80;//先写入最高位
messageB = messageB << 1;//左移移位
sh_cpB = 1;
}
}
void outputMessageA()
{
st_cpA = 0;
_nop_();
st_cpA = 1;
}
void outputMessageB()
{
st_cpB = 0;
_nop_();
st_cpB = 1;
}
//延时函数
void delay(uchar time_delay)
{
uchar x,y;
for(x = time_delay; x > 0; x --)
for(y = time_delay; y > 0; y--)
{}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: