|
楼主 |
发表于 2014-1-10 21:20:51
|
显示全部楼层
终于搞定了,上传全部代码,供其他人参考,程序写的不好,还请高手指教。
/************************************************************
测试环境:STC12C5A16S2 晶振:12M
************************************************************/
#include<reg52.h>
#define uchar unsigned char
uchar a[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
sbit STB=P1^3; //定义端口
sbit CLK=P1^2;
sbit DIN=P1^0;
void indate(unsigned char p)
{
unsigned int i;
STB=0;
for(i=0;i<8;i++)
{
CLK=0;
if((p&0x01)!=0)
{
DIN=1;
}
else
{
DIN=0;
}
CLK=1;
p=p>>1;
}
}
void display()
{
DIN=1;
CLK=1;
STB=1; //初始化
indate(0x44); //固定地址方式
STB=1;
indate(0xc0); //传第一位地址
indate(a[0]); //传第一位数据
STB=1;
indate(0xc2); //传第二位地址
indate(a[1]); //传第二位数据
STB=1;
indate(0xc4); //传第三位地址
indate(a[2]); //传第三位数据
STB=1;
indate(0xc6); //传第四位地址
indate(a[3]); //传第四位数据
STB=1;
indate(0xc8); //传第五位地址
indate(a[4]); //传第五位数据
STB=1;
indate(0xca); //传第六位地址
indate(a[5]); //传第六位数据
STB=1;
indate(0x8f); //传显示控制命令
STB=1;
}
void main(void)
{
DIN=1;
CLK=1;
STB=1;
indate(0x02);//设置显示模式
STB=1;
display(); //传送地址和数据
while(1);
} |
|