#include<REG52.h>
#include<stdio.h>
#include<intrins.h>
//#define tm1620 4
//#define icmodel tm1620
//#elif icmodel==tm1620
//#define seg 8
//#define grid 7
//#define dismodel 3
#define dissetmode 0x03 //显示模式设置
#define writedatamode_z 0x40 //自动加一方式显存
#define writeledmode_z 0x41 //自动加一方式写LED显存命令
#define readkeymode 0x42 //读按键命令
#define readswmode 0x43 //读SW命令
#define writedatamode_g 0x44 //固定模式
#define writeledmote_g 0x45 //固定模式写LED显存命令
#define startaddress 0xc0 //起始地址
#define disconmode 0x8c //显示控制
//#define datacount
#define uchar unsigned char
uchar a[4]={0x3f,0x06,0x5b,0x4f};
unsigned int i;
sbit STB =P1^4; //定义端口
sbit CLK =P1^7;
sbit DIN =P1^5;
void delay(int k) //延迟程序
{ unsigned char i,j;
for(;k>0;k--)
for(j=255;j>0;j--)
for(i=255;i>0;i--);
}
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(writedatamode_z); //自动加1方式
STB=1;
for(i=0;i<4;i++)
{
indate(startaddress); //传起始地址
indate(a[i]); //传数据
}
STB=1;
indate(disconmode); //显示控制命令
STB=1;
}
void main()
{
DIN=1;
CLK=1;
STB=1;
indate(0x00);
STB=1;
display();
delay(10);
}