|
大佬们,请问如何将max7219芯片加到这张电路图里面,用它来驱动数码管。。。。。。
代码部分如下
#include <reg52.h>
#define uchar unsigned char //宏定义
#define uint unsigned int
/*引脚定义*/
sbit START=P2^0; //开始、停止键 低电平有效
sbit RST=P2^1; //复位键
sbit wei1=P2^4; //定义位选
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
/*定义全局变量*/
uint time; //时间变量
uchar tt;
/*数码管字模,对应 0-9*/
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
uchar code tabledp[]={
0xbf,0x86,0xdb,0xcf,
0xe6,0xed,0xfd,0x87,
0xff,0xef,0xf7,0xfc,
0xb9,0xde,0xf9,0xf1}; //带小数点共阴极数码管编码
/*延时函数*/
void Delay(uint ms) //毫秒级延时函数
{
uint i, j;
for(i =ms; i>0; i--)
for(j =110; j>0; j--);
}
/*中断*/
void time0() interrupt 1
{
TH0 = 0xdc; //晶振11.0592Mhz
TL0 = 0x00;
tt++;
if(tt >= 100)
{
tt = 0;
time++;
if(time>99) //到99后在从00开始
time = 0;
}
}
/*显示函数*/
void Display(uchar sum)
{
uchar shi, ge,shifen,baifen;
shifen=tt%100/10;
baifen=tt%10;
shi=sum%100/10;
ge=sum%10;
P0=table[shi]; //使用动态扫描的方法实现数码管显示
wei1=0;
Delay(1);
wei1=1;
P0=tabledp[ge];
wei2=0;
Delay(1);
wei2=1;
P0=table[shifen];//使用动态扫描的方法实现数码管显示
wei3=0;
Delay(1);
wei3=1;
P0=table[baifen];
wei4=0;
Delay(1);
wei4=1;
}
/*按键扫描*/
void keyscan()
{
if(START==0) //开始、停止
{
Delay(10); //消抖
if(START==0)
{
TR0 =!TR0;
while(!START) Display(time);
}
}
if(RST==0) //复位
{
Delay(10); //消抖
if(RST==0)
{
time=0;
tt=0;
TR0=0;
while(!RST)Display(time);
}
}
}
//主函数
void main()
{
EA = 1; //中断开关
ET0 = 1;
TMOD = 0x01;
TH0 = 0xdc; //晶振11.0592Mhz
TL0 = 0x00;
TR0 = 0;
while(1)
{
keyscan();
Display(time);
}
}
有哪些地方要修改的。。求大家帮帮忙。。
|
|