haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 收音 无线电 > 晶体管收音机 >

DIY数码管收音机,看全手工刀刻电路板过程(2)

DIY数码管收音机,看全手工刀刻电路板过程(2)

DIY数码管收音机,看全手工刀刻电路板过程(2)

DIY数码管收音机,看全手工刀刻电路板过程(2)

DIY数码管收音机,看全手工刀刻电路板过程(2)

DIY数码管收音机,看全手工刀刻电路板过程(2)

DIY数码管收音机,看全手工刀刻电路板过程(2)

再来一张。。。。。。。
DIY数码管收音机,看全手工刀刻电路板过程(2)


今日烧友为贴正名,谢之,为名副其实,补C 码一段。
段选P2口gfabced-dp.{0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,0xa0,0x7f}
位选:p1.2-p1.7.

#include<reg52.h>
sbit SEG1=P2^7;       //小数点显示
sbit SEG2=P1^2;           //段时十位
sbit SEG3=P1^3;           //时个
sbit SEG4=P1^4;           //分十
sbit SEG5=P1^5;           //分个
sbit SEG6=P1^6;           //秒十
sbit SEG7=P1^7;           //秒个
unsigned char code num[]={0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,0xa0,0x7f};
int s=0,m=0,h=0;  //定义三个全局变量s,m,h,用于存放秒分时的数值
void timer(void) interrupt 1 using 1{
    int i;
    if(i==19)  //若i=20,则是1秒,我的如果是20的话会稍慢,所以改为19
    {
        s++;   //秒数自加1
        i=0;    //对i清零    
    }    
    if(s==60)    //如果到了60秒,则对秒数清零,并同时分加一
    {
        m++;
        s=0;
    }
    if(m==60)  //如果到了60分,则对分数清零,并同时时数加一
    {
        h++;   //时数自加1
        m=0;    //对分清零    
    }
    if(h==24)  //如果到了24q时,则对时数清零
    {

        h=0;    //对时清零    
    }        
    i++; //每中断一次,i的值加1
    TH0=(65536-52800)/256;      //再给定时器赋初始值
    TL0=(65536-52800)%256;
}

void init(void)//定时器初始函数,对定时器初始化
{
    EA=1;                    //允许所有的中断请求
    TMOD=0x01;                //设定时器0的工作模式为方式1 即16位定时器
    ET0=1;                    //允许定时器0的中断请求
    TH0=(65536-52800)/256;    //定时时间为50ms,初始值要根据具体情况微调
    TL0=(65536-52800)%256;
    TR0=1;                    //打开定时器0,开始定时
}
void main()
{
    unsigned int i;        //定义一个变量,用于数码管延时
    init();            //调用定时器初始化函数,对定时器进行初始化
    while(1)            //死循环,让数码管不断显示
    {
//下面是只让时十位显示,其他的关闭
        i=100;                //赋值给变量
        SEG2=0;                //三极管导通,只让该位显示,其他段关闭
        P2=num[h/10];          //分离出时的十位,让数码管显示
        while(i--);            //延时一下,让眼睛视觉残留
        SEG2=1;                //关闭该位

//下面是只让钟个位显示  ,其他的关闭
        i=100;                //重新赋值给变量       
        SEG3=0;                //三极管导通,只让该位显示,其他段关闭
        P2=num[h%10];        //分离出时的个位,让数码管显示
        SEG1=0;             //在该位显示小数点
        while(i--);            //延时一下,让眼睛视觉残留
        SEG3=1;                //关闭该位
        SEG1=1;
    //下面是只让分十位显示  ,其他的关闭
        i=100;                //赋值给变量
        SEG4=0;                //三极管导通,只让该位显示,其他段关闭
        P2=num[m/10];          //分离出分的十位,让数码管显示
        while(i--);            //延时一下,让眼睛视觉残留
        SEG4=1;                //关闭该位

//下面是只让分个位显示  ,其他的关闭
        i=100;                //重新赋值给变量
        SEG5=0;                //三极管导通,只让该位显示,其他段关闭
        P2=num[m%10];        //分离出分的个位,让数码管的显示
        SEG1=0;             //在该位显示小数点
        while(i--);            //延时一下,让眼睛视觉残留
        SEG5=1;                //关闭该位
        SEG1=1;
//下面是只让秒十位显示  ,其他的关闭
        i=100;                //赋值给变量
        SEG6=0;                //三极管导通,只让秒十位显示,其他段关闭
        P2=num[s/10];          //分离出秒的十位,让数码管的显示
        while(i--);            //延时一下,让眼睛视觉残留
        SEG6=1;                //关闭该位

//下面是只让秒个位显示  ,其他的关闭
        i=100;                //重新赋值给变量
        SEG7=0;                //三极管导通,只让秒个位显示,其他段关闭
        P2=num[s%10];        //分离出秒的个位,让数码管显示
        while(i--);            //延时一下,让眼睛视觉残留
        SEG7=1;                //关闭该位
    }
}



(责任编辑:admin)
haoDIY创好电子 版权所有,电话微信13977534587