这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » phimas MCU DIY进程帖

共20条 2/2 1 2 跳转至
助工
2011-12-08 09:13:55     打赏
11楼



助工
2011-12-08 09:19:16     打赏
12楼
 由于数码管是共阳的,也懒得再去换了,直接把74138换成74HC238了,输出正好是负,虽然对应的码值会变,不过也无所谓。
DS1302 手头没有SOIC封装的,只有dip的 也先没焊,调试了下没什么问题,串口能下载,今天继续调试,把流水灯弄出来

助工
2011-12-09 10:41:41     打赏
13楼
流水灯

助工
2011-12-09 10:43:13     打赏
14楼
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num,num1;
sbit beep=P2^3;
void delay(uint);

void main()
{
       
        temp=0xfe;
    while(1)
    {   
    for(num1=0;num1<3;num1++)
        {   
        for(num=0;num<8;num++)
        {
            P1=temp;
            beep=0;
            delay(100);
            temp=_crol_(temp,1);
            P1=0xff;
            beep=1;
            delay(100);   
        }
        }
for(num1=0;num1<3;num1++)
        {   
        for(num=0;num<8;num++)
        {
            P1=temp;
            beep=0;
            delay(100);
            temp=_cror_(temp,1);
            P1=0xff;
            beep=1;
            delay(100);   
        }
        }
        while(1);
    }
}

void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);   
}

助工
2011-12-10 09:30:04     打赏
15楼

助工
2011-12-14 08:59:32     打赏
16楼
介绍下公阳数码管的接法,公阳数码管的接法基本和共阴的是相反的,这样来看,片选的时候就要用低电平,所以进不能用74138 ,74238和74138的输出正好是相反的,也就相当于74138加上非门正好完成了74238的功能,正好可以拿来驱动公阳的数码管
不过还有一些需要注意的,数码管的段码共阴和 共阳也是正好相反的,所以再单片机定义段码时候,也要诸位取反,这样显示的数字才是正确的。

助工
2011-12-14 09:37:31     打赏
17楼
加油哦!

助工
2011-12-24 10:50:30     打赏
18楼
到期末忙的不可开交啊,没时间写代码了 等过了12月估计就有时间了

助工
2012-01-09 00:29:09     打赏
19楼
矩阵键盘的代码

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
uchar temp,t0,t1,bai,shi,ge,flag,flag1;
uint shu;
void init();
void display(uchar,uchar,uchar,uchar,uchar,uchar);
void delay(uint z)
{
    uint t1,y;
    for(t1=z;t1>0;t1--)
        for(y=110;y>0;y--);
}
void main()
{
    init();
    while(1)
    {
        if(flag1!=1)
            display(7,6,5,bai,shi,ge);
        else
            display(16,17,18,18,19,20);   
    }
}

void init()
{
    shu=432;
    temp=0xfe;
    P1=temp;
    TMOD=0x11;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    TH1=(65536-50000)/256;
    TL1=(65536-50000)%256;
    EA=1;
    ET0=1;
    ET1=1;
    TR0=1;
    TR1=1;
}

void timer0() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    t0++;
    if(flag!=1)
        {
        if(t0==10)
            {
                t0=1;
                temp=_crol_(temp,1);
                P1=temp;
            }
        }
    else
        {
            if(t0%4==0)
                P1=~P1;
            if(t0==60)
            {
                TR0=0;
                P1=0xff;
                flag1=1;
            }
        }   
}

void timer1() interrupt 3
{
    TH1=(65536-50000)/256;
    TL1=(65536-50000)%256;
    t1++;
    if(t1==2)
        {
            t1=0;
            shu--;
            bai=shu/100;
            shi=shu%100/10;
            ge=shu%10;
            if(shu==398)
                {
                    TR0=0;
                    TH0=(65536-50000)/256;
                    TL0=(65536-50000)%256;
                    TR0=1;
                    flag=1;
                    t0=0;
                    P1=0xff;
                    TR1=0;
                }   
        }   
}

void display(uchar aa,uchar bb,uchar cc,uchar ba,uchar sh,uchar g)
{
        dula=1;
        P0=table[aa];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfe;
        wela=0;
        delay(1);

           dula=1;
        P0=table[bb];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfd;
        wela=0;
        delay(1);

       dula=1;
        P0=table[cc];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfb;
        wela=0;
        delay(1);
        dula=1;
        P0=table[ba];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xf7;
        wela=0;
        delay(1);

        dula=1;
        P0=table[sh];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xef;
        wela=0;
        delay(1);

        dula=1;
        P0=table[g];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xdf;
        wela=0;
        delay(1);
}

助工
2012-01-09 00:30:54     打赏
20楼
串口通信代码

#include<reg52.h>
unsigned char flag,a;
void main()
{

    TMOD=0x20;//设置定时器1为工作方式2
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;
    REN=1;
    SM0=0;
    SM1=1;
    EA=1;
    ES=1;
    while(1)
        {
        /*    if(RI==1)
            {
            RI=0;
            P1=SBUF;
            }*/
            if(flag==1)
                {
                    ES=0;
                    flag=0;
                    SBUF='1';//28;   
                    while(!TI);   
                    TI=0;
                    SBUF='2';//28;   
                    while(!TI);   
                    TI=0;
                    SBUF='3';//28;   
                    while(!TI);   
                    TI=0;
                    ES=1;
                }
        }
}

void ser() interrupt 4
{
    RI=0;
//    P1=SBUF;
    a=SBUF;
    flag=1;
}

共20条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]