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

共20条 2/2 1 2 跳转至
菜鸟
2011-11-29 22:55:14     打赏
11楼

开始焊起来了,今天就焊这些吧,过来SHOW一个


菜鸟
2011-12-01 22:35:36     打赏
12楼
继续更新焊接,下次来个高清版的

菜鸟
2011-12-20 22:08:16     打赏
13楼

悲剧啊,沉到10楼了,之前都没来回帖的原因程序下载不了,纠结啊,终于解决了,主要是晶振是坏的,用内部晶体振不能下载,那个郁闷啊,最后换了个晶振就好了,还好还有几天可以爆发;好久没玩MCU生疏了。


菜鸟
2011-12-20 22:14:03     打赏
14楼

话说怎么上传视频的,各位大侠,求教啊


菜鸟
2011-12-20 22:15:57     打赏
15楼

不知道怎么上传视频先上跑马灯代码一段:


#include<STC12C5A.h>
#include <intrins.h>

#define  uchar  unsigned char 
#define  uint  unsigned int

sbit     led_0= P1^0;   
sbit     led_1= P1^1;
sbit     led_2= P1^2;
sbit     led_3= P1^3;
sbit     led_4= P1^4;
sbit     led_5= P1^5;
sbit     led_6= P1^6;
sbit     led_7= P1^7;

uint tt;
void delay(uint time);


 void main()
 { 
   P1M1=0X00;
   P1M0=0X00;
  tt=5;
   while(1)
   {
     P1=0X0FF;
 //delay(100);
     //P1=0X00 ;
 // delay(100);
  
    delay(81*tt); 
    led_3=0;
    led_4=0;
    delay(81*tt);
    led_3=1;
    led_4=1;
    delay(81*tt);
    led_2=0;
    led_5=0;
    led_3=0;
    led_4=0;
    delay(27*tt);
    led_3=1;
    led_4=1;
    delay(27*tt);
    led_3=0;
    led_4=0;
    delay(27*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    delay(81*tt);
    led_1=0;
    led_6=0;
    led_2=0;
    led_5=0;
    led_3=0;
    led_4=0;
    delay(9*tt);
    led_3=1;
    led_4=1;
    delay(9*tt);
    led_3=0;
    led_4=0;
    delay(9*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    delay(27*tt);
    led_2=0;
    led_5=0;
    led_3=0;
    led_4=0;
    delay(9*tt);
    led_3=1;
    led_4=1;
    delay(9*tt);
    led_3=0;
    led_4=0;
    delay(9*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    led_1=1;
    led_6=1;
    delay(81*tt);
    P1=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    delay(9*tt);
    led_3=0;
    led_4=0;
    led_2=0;
    led_5=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    led_1=1;
    led_6=1;
    delay(27*tt);
    led_3=0;
    led_4=0;
    led_2=0;
    led_5=0;
    led_1=0;
    led_6=0;
   
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    delay(9*tt);
    led_3=0;
    led_4=0;
    led_2=0;
    led_5=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3);
    P1=0XFF;
    delay(81*tt);
    P1=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    delay(9*tt);
    led_3=0;
    led_4=0;
    led_2=0;
    led_5=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    led_1=1;
    led_6=1;
    delay(27*tt);
    led_3=0;
    led_4=0;
    led_2=0;
    led_5=0;
    led_1=0;
    led_6=0;
   
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    led_2=1;
    led_5=1;
    delay(9*tt);
    led_3=0;
    led_4=0;
    led_2=0;
    led_5=0;
    delay(3*tt);
    led_3=1;
    led_4=1;
    delay(3*tt);
    led_3=0;
    led_4=0;
    delay(3*tt);
    //P1=0XFF;
      
   }
  
 }

 void delay(uint time)
{ uint tim1,tim2;
 for(tim1=0;tim1<time;tim1++)
   {
   for(tim2=0;tim2<100;tim2++)
     {
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  }
   }
}


菜鸟
2012-01-10 00:08:01     打赏
16楼

数码管与4x4按键

菜鸟
2012-01-10 00:10:34     打赏
17楼

源代码(数码管与4X4按键)

#include<STC12C5A.h>
#include <intrins.h>

#define  uchar  unsigned char 
#define  uint  unsigned int

sbit     wei_0= P2^0;   
sbit     wei_1= P2^1;
sbit     wei_2= P2^2;
sbit     key_o1= P3^0;
sbit     key_o2= P3^1;
sbit     key_o3= P3^2;
sbit     key_o4= P3^3;
sbit     key_i1= P3^4;
sbit     key_i2= P3^5;
sbit     key_i3= P3^6;
sbit     key_i4= P3^7;
sbit     led= P1^0;

 


bit only=0;

code uchar Dis_num[20]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00,};
uchar wn[8];

uint tt;
uchar wi=0;


void Key_int();

void Display_Num_led();
void delay(uint time);


 void main()
 { 
   P0M1=0X00;
   P0M0=0X00;
   P2M1=0X00;
   P2M0=0X00;
   P3M1=0X00;
   P3M0=0X00;

  
  tt=100;
  wn[0]=10;//A
  wn[1]=11;//b
  wn[2]=12;//C
  wn[3]=13;//d
  wn[4]=14;//E
  wn[5]=15;//F
  wn[6]=16;//_
  wn[7]=2;
 
   while(1)
   {
     Display_Num_led();
     Key_int();  
   }
  
 }

 void Key_int()
 {
 
    P3=0X0FF;
    key_o1=0;
    if(key_i1==0)
     {
      wn[wi]=12; //S13
     }
    if(key_i2==0)
     {
         wn[wi]=8;//S9
     }
    if(key_i3==0)
     {
       wn[wi]=4;//S5
     }
    if(key_i4==0)
     {
          wn[wi]=0;//S1
     }
   // else;

    //
    P3=0X0FF;
    key_o2=0;
    if(key_i1==0)
     {
      wn[wi]=13; //S14
     }
    if(key_i2==0)
     {
         wn[wi]=9;//S10
     }
    if(key_i3==0)
     {
       wn[wi]=5;//S6
     }
    if(key_i4==0)
     {
          wn[wi]=1;//S2
     }
    //else;
    //
        P3=0X0FF;
 key_o3=0;
 if(key_i1==0)
     {
      wn[wi]=14; //S15
     }
 if(key_i2==0)
     {
      wn[wi]=10;//S11
     }
 if(key_i3==0)
     {
       wn[wi]=6;//S7
     }
 if(key_i4==0)
     {
       wn[wi]=2;//S3
     }
 //else;
 //
        P3=0X0FF;
 key_o4=0;
 //************************
 //***one times key***
 if((key_i1==only)&(key_i3==1))//&key_i3==1  防S8干扰
     {only=~only;
      //wn[wi]=15; //S16
      if(key_i1==0)
       {
       ++wi;
         if(wi>7)
      {
       wi=0;
      }
       }
     
     }
 //***********************
 if(key_i2==0)
     {
      wn[wi]=11;//S12
     }
 if(key_i3==0)
     {
       wn[wi]=7;//S8  *****干扰S16*******
     }
        if(key_i4==0)
     {
       wn[wi]=3;//S4
     }
 //else;
        
   
  
 }
 

 void Display_Num_led()
 {   
      P0=Dis_num[wn[0]];
      wei_0=0;
      wei_1=0;
      wei_2=0;
      delay(tt);
      P0=Dis_num[wn[1]];
      wei_0=1;
      wei_1=0;
      wei_2=0;
      delay(tt);
      P0=Dis_num[wn[2]];
      wei_0=0;
      wei_1=1;
      wei_2=0;
      delay(tt);
      P0=Dis_num[wn[3]];
      wei_0=1;
      wei_1=1;
      wei_2=0;
      delay(tt);
      P0=Dis_num[wn[4]];
      wei_0=0;
      wei_1=0;
      wei_2=1;
      delay(tt);
      P0=Dis_num[wn[5]];
      wei_0=1;
      wei_1=0;
      wei_2=1;
      delay(tt);
      P0=Dis_num[wn[6]];
      wei_0=0;
      wei_1=1;
      wei_2=1;
      delay(tt);
      P0=Dis_num[wn[7]];
      wei_0=1;
      wei_1=1;
      wei_2=1;
      delay(tt);
 
  
 }
 

 void delay(uint time)
{ uint tim1,tim2;
 for(tim1=0;tim1<time;tim1++)
   {
   for(tim2=0;tim2<10;tim2++)
     {
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  }
   }
}


菜鸟
2012-01-10 00:17:03     打赏
18楼

DS1302+LCD1602


菜鸟
2012-01-10 00:17:49     打赏
19楼

菜鸟
2012-01-10 00:20:14     打赏
20楼

源代码(DS1302+LCD1602)

#include<STC12C5A.h>
#include <intrins.h>

#define  uchar  unsigned char 
#define  uint  unsigned int
#define  ulong  unsigned long


#define LCD_DB P0

#define DS1302_SECOND_W 0x80
#define DS1302_MINUTE_W 0x82
#define DS1302_HOUR_W 0x84
#define DS1302_DAY_W 0x86
#define DS1302_MONTH_W 0x88
#define DS1302_YEAR_W 0x8C
#define DS1302_WEEK_W 0x8A
#define WP 0x8E

 


sbit     LCD_RS= P2^4;   
sbit     LCD_RW= P2^5;
sbit     LCD_EP= P2^6;

sbit     SCLK_1302=P3^6;
sbit     IO_1302=P3^4;
sbit     CE_1302=P3^5;


 

void Init_DS1302(void);
uchar DS1302Read(uchar cmd);
void DS1302Write(uchar cmd, uchar dat);
void DS1302WriteByte(uchar dat);
uchar DS1302ReadByte();


void LCD_init();
void LCD_busy();
void LCD_wcmd(uchar cmd);//写指令
void LCD_wdata(uchar dat);//写数据
//void LCD_dis_char(uchar x,uchar y,uchar *dat);//单字符
void LCD_dis_word(uchar x,uchar y,uchar *word);
void LCD_w_num(uchar x,uchar y,uchar num);//单数字
void LCD_Dis_longnum(uchar x,uchar y, ulong number);

void delay(uint n);

 


//*****************主程序***************************
void main()
{uchar DATA[8],i;
 //uchar add=0x80;
 
P3M1=0X00;
P3M0=0X00;
P2M1=0X00;
P2M0=0X00;
P0M1=0X00;
P0M0=0X00;


Init_DS1302();

LCD_init();

//LCD_dis_word(0,2,"asf1 3132");//字符显示

LCD_Dis_longnum(0,2,20);//数据显示
//DS1302Write(WP,0x00);//写保护关

//DATA=DS1302Read(DS1302_SECOND_W+1);


//LCD_Dis_longnum(1,1,DATA);


while(1)
 {
 for(i=0;i<7;i++)
  {
  DATA[i]=DS1302Read(DS1302_SECOND_W+1+2*i);
  }

  LCD_Dis_longnum(4,1,DATA[2]/10);//时
         LCD_Dis_longnum(5,1,DATA[2]%10);
 LCD_dis_word(6,1,":");
         LCD_Dis_longnum(7,1,DATA[1]/10);//分
  LCD_Dis_longnum(8,1,DATA[1]%10);
        LCD_dis_word(9,1,":");
  LCD_Dis_longnum(10,1,DATA[0]/10);//秒
  LCD_Dis_longnum(11,1,DATA[0]%10);
 //LCD_dis_word(9,1,":");
  LCD_Dis_longnum(2,2,DATA[6]/10);//年
  LCD_Dis_longnum(3,2,DATA[6]%10);
 LCD_dis_word(4,2,"-");
  LCD_Dis_longnum(5,2,DATA[4]/10);//月
  LCD_Dis_longnum(6,2,DATA[4]%10);
 LCD_dis_word(7,2,"-");
         LCD_Dis_longnum(8,2,DATA[3]/10);//日
  LCD_Dis_longnum(9,2,DATA[3]%10);

  LCD_Dis_longnum(12,2,DATA[5]/10);//日
  LCD_Dis_longnum(13,2,DATA[5]%10);


 }
}
//***********************************************

 

/************************************************
*名称: void Init_DS1302(void)
*说明: 给1302写入一个初始的值
*功能: 写入日期,和时钟的值
*调用: DS1302Write()
*输入: 无
*输出: 无
*************************************************/
void Init_DS1302(void)
{
DS1302Write(WP,0x00);//写保护关
DS1302Write(DS1302_SECOND_W,0x00); //初始秒值为0
DS1302Write(DS1302_MINUTE_W,0x00);//初始分钟值为0
DS1302Write(DS1302_HOUR_W,0x00); //初始为24小时模式初始时间为0点
DS1302Write(DS1302_DAY_W,0x07); //2011年1月1日星期6
DS1302Write(DS1302_MONTH_W,0x01);
DS1302Write(DS1302_YEAR_W,0x12);
DS1302Write(DS1302_WEEK_W,0x06);
DS1302Write(0x90,0x01); //充电
DS1302Write(0xc0,0xf0); //初始化一次标示
DS1302Write(WP,0x80);
}

/************************************************
*名称: uchar DS1302Read()
*说明: 先写地址,后读数据
*功能: 从cmd相应地址中读取一个字节的数据
*调用: DS1302WriteByte(),DS1302ReadByte()
*输入: cmd:要写入的控制字节
*输出: dat:读取的数据
*************************************************/
uchar DS1302Read(uchar cmd)
{
uchar dat,BCD,BCDS;
CE_1302=0;//初始CE线置为0
SCLK_1302=0;//初始时钟线置为0
CE_1302=1;//初始CE置为1,传输开始
DS1302WriteByte(cmd);//传输命令字,要读取的时间/日历地址
dat=DS1302ReadByte();//读取要得到的时间/日期
SCLK_1302=1;//时钟线拉高
CE_1302=0;//读取结束,CE置为0,结束数据的传输

//*******BCD*********
BCD=dat&0X0F;
BCDS=(dat&0X0F0)>>4;
dat=BCDS*10+BCD;

return dat;//返回得到的时间/日期
}
/************************************************
*名称: DS1302Write
*说明: 先写地址,后写数据
*功能: 向cmd相应地址中写一个字节的数据
*调用: DS1302WriteByte()
*输入: cmd:要写入的控制字,dat:要写入的数据
*输出: 无
*************************************************/
void DS1302Write(uchar cmd, uchar dat)
{
CE_1302=0; //初始CE线置为0
SCLK_1302=0; //初始时钟线置为0
CE_1302=1; //初始CE置为1,传输开始
DS1302WriteByte(cmd); //传输命令字,要写入的时间/日历地址
DS1302WriteByte(dat); //写入要修改的时间/日期
SCLK_1302=1; //时钟线拉高
CE_1302=0; //读取结束,CE置为0,结束数据的传输
}
/************************************************
*名称: DS1302WriteByte
*说明: 无
*功能: 写入8bit数据
*调用: delayus()
*输入: dat:要写入的数据
*输出: 无
*************************************************/
void DS1302WriteByte(uchar dat)
{
uchar i;
SCLK_1302=0;//初始时钟线置为0
delay(2);
for(i=0;i<8;i++)//开始传输8个字节的数据
 {
 IO_1302=dat&0x01;//取最低位,注意DS1302的数据和地址都是从最低位开始传输的
 delay(2);
 SCLK_1302=1;//时钟线拉高,制造上升沿,SDA的数据被传输
 delay(2);
 SCLK_1302=0;//时钟线拉低,为下一个上升沿做准备
 dat>>=1;//数据右移一位,准备传输下一位数据
 }
}
/************************************************
*名称: DS1302ReadByte()
*说明: 无
*功能: 读取8bit的数据
*调用: delayus()
*输入: 无
*输出: dat:读取的数据
*************************************************/
uchar DS1302ReadByte()
{
uchar i,dat;
delay(2);
for(i=0;i<8;i++)
 {
 dat>>=1;//要返回的数据左移一位
 if(IO_1302==1)//当数据线为高时,证明该位数据为1
 dat|=0x80;//要传输数据的当前值置为1,若不是,则为0
 SCLK_1302=1;//拉高时钟线
 delay(2);
 SCLK_1302=0;//制造下降沿
 delay(2);
 }
return dat;//返回读取出的数据
}

 

 

 

 

 


/************************************************
*名称: void LCD_init()
*说明:
*功能:
*调用: LCD_wcmd(=),delay()
*输入:
*输出:
*************************************************/

void LCD_init()
{
LCD_wcmd(0x38);//8位总线,双行,5X7
delay(50);
LCD_wcmd(0x0C);//开总显,关光标,不闪
LCD_wcmd(0x06);//光标右移,文字不移
LCD_wcmd(0x01);//clear
delay(500);
}

void LCD_busy()
{
uchar result=0x80;
while(result==0x80)
 {
 LCD_RS=0;
 LCD_RW=1;
 LCD_EP=1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 
 result=P0&0X80;
 LCD_EP=0;
 delay(10);
 }
}

void LCD_wcmd(uchar cmd)
{
LCD_busy();
LCD_DB=cmd;//代码
LCD_RS=0;//指令
LCD_RW=0;//写
LCD_EP=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

LCD_EP=0;//执行
delay(100);
}
void LCD_wdata(uchar dat)
{
LCD_busy();
LCD_DB=dat;
LCD_RS=1;
LCD_RW=0;
LCD_EP=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

LCD_EP=0;
delay(50);
}
/*
void LCD_dis_char(uchar x,uchar y,uchar *dat)
{
uchar address;
if(y==1)
 address=0x80+x;
else
 address=0x0c0+x;
LCD_wcmd(address);
LCD_wdata(*dat);

}
*/
void LCD_dis_word(uchar x,uchar y,uchar *word)
{uchar address;
 while(*word)
  {
  
 if(y==1)
  address=0x80+x;
 else
  address=0x0c0+x;
 LCD_wcmd(address);
 LCD_wdata(*word);
  //LCD_dis_char(x,y,*word);
   x++;
 word++;
  }
 
 
}


void LCD_w_num(uchar x,uchar y,uchar num)
{
uchar address;
if(y==1)
 address=0x80+x;
else
 address=0x0c0+x;
LCD_wcmd(address);
LCD_wdata(num+0x30);

}

void LCD_Dis_longnum(uchar x,uchar y, ulong number)
{
uchar i,j,k;
//uchar j;
uchar num[10];

//j=number;
if(number==0)                   //number 0 时候
LCD_w_num(x,y,0);

else{
 for(i=0;number>0;i++)
  {
  num[i]=number%10;//每位以字符表示
  //LCD_w_num(x+i,y,j%10);
  number/=10;
  }
 k=i;
 for(j=0;j<k;j++)
  {
  --i;
  LCD_w_num(x+j,y,num[i]);
  
  }
     }
}

void delay(uint n)
{
 uint i;
 uchar j;

 for(i=n;i>0;i--)
  {
         for(j=0;j<10;j++);
        }
}


共20条 2/2 1 2 跳转至

回复

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