|
//在STC15W204S单片机上测试已正常工作,内部RC振荡器6M
#include<REG52.h>
#include<stdio.h>
#include<intrins.h>
#define dissetmode 0x02 //显示模式设置
#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 0x8f //显示控制
#define uchar unsigned char
uchar a[]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //1,2,3,4,5,6,7,8,9
unsigned long TmData;
unsigned int i;
sbit STB =P3^7; //定义端口
sbit CLK =P3^6;
sbit DIN =P1^1;
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;
}
_nop_();_nop_();
CLK=1;
p=p>>1;
}
_nop_();_nop_();
}
void display()
{
uchar temp[4];
temp[3]=TmData%10000/1000;
temp[2]=TmData%1000/100;
temp[1]=TmData%100/10;
temp[0]=TmData%10;
DIN=1;
CLK=1;
STB=1; //初始化
indate(writedatamode_g);
STB=1;
for(i=0;i<4;i++)
{
indate(startaddress+i*2); //传起始地址
indate(a[temp[i]]); //传数据
STB=1;
}
indate(disconmode); //显示控制命令
STB=1;
}
void main()
{
while(1)
{
TmData=1234;
display();
}
}
|
|