電路很簡單,我就不畫圖了,四位數(shù)碼管 通過2個74hc595連起來,1個595負責段選,1個595負責位選,利用單片機的定時器中斷實現(xiàn)0-100數(shù)字的循環(huán)顯示.程序已經(jīng)通過本人測試通過
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rck=P0^0;
sbit sck=P0^1;
sbit si=P0^2;
uchar num[]={0x80,0xed,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08};
uint b=0,i=0,j=0,k;
void write_595(uchar x)//對595芯片進行設(shè)初始化
{
for(k=0;k<8;k++) //移位寄存器
{
x>>=1;
sck=0;
si=CY;
sck=1;
}
}
void date_danpianji()//對單片機計時器進行初始化
{
EA=1;//總中斷開啟
ET1=1;//定時器開啟
TMOD=0X10;//選擇定時器工作模式
TH1=(65536-33333)/256;//除整賦給高八位
TL1=(65536-33333)%256;//除余賦給第八位
TR1=1; //啟動定時器
}
void main()//主函數(shù)
{
date_danpianji();//調(diào)用定時器中斷
while(1)//循環(huán)
{
if(b==20)//檢測中斷函數(shù)是否滿足b==20,如果滿足則執(zhí)行
{
b=0;
i++;
if(i==10)
{
i=0;
j++;
if(j==10)j=0;
}
}
write_595(num[j]);
write_595(num[i]);
rck=0;
rck=1;
}
}
void ext() interrupt 3 using 1 //定時器中斷
{
TH1=(65536-33333)/256;
TL1=(65536-33333)%256;
b++;
}
