/****STC15W408AS驱动P10板显示两个三角形***/
/*********l95 code354*********************/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NOP _nop_()
sbit OE=P1^1; //74HC245 A1
sbit A1=P1^0; //74HC138A
sbit B1=P3^7; //74HC138B
sbit SHCP=P1^7; //11脚 移位时钟
sbit STCP=P1^4; //12脚 锁存时钟
sbit SDATA=P1^5; //14 脚数据输入
/*******************************************************************************************/
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=300;j>0;j--);
}
/*******************************************************************************************/
/*******************************************************************************************/
//数据串行输入
void serial_input(uchar dat)
{
uint m;
for(m=0;m<8;m++)
{
if(dat & 0x80)
SDATA=1;
else
NOP;
NOP;
SHCP=0;
NOP;
NOP;
dat=dat<<1;
}
}
/***********************并出********************************************************************/
void serial_output()
{
STCP=1;
NOP;
NOP;
STCP=0;
}
/*******************************************************************************************/
/*******************************************************************************************/
//行显控制
void HC138_scan(uchar temp)
{
OE=1;
A1=0x01&temp;
B1=0x01&(temp>>1);
}
/*******************************************************************************************/
//整屏显示
void display()
{
uint i,j,k;
for(k=0;k<4;k++) //显示的四行
{
for(j=0;j<2;j++) //显示3、4列
{
for(i=0;i<2;i++) // 显示1、2列
{
serial_input(~table[j][3*8+2*k+i]);
serial_input(~table[j][2*8+2*k+i]);
serial_input(~table[j][1*8+2*k+i]);
serial_input(~table[j][0*8+2*k+i]);
}
}
serial_output();
HC138_scan(k);
}
}
/*******************************************************************************************/
void main()
{
delay(200);
while(1) //
{ //
display(); //开始移动显示
}
}
P10单元板输入数据测试
于 2019-05-10 05:52:44 首次发布