打印

51单片机开发板,现将板子原理图,程序,实物照片献上,欢

[复制链接]
2383|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序中包含了一个LCD欢迎界面,一个舵机程序(用1602显示舵机转角,键盘控制角度),一个数码管测试程序,欢迎共同学习。Q178898365,程序和视频太大,无法上传,有想要的Q我吧,程序我尽量在下面贴出,视频是Altium Designer 10做的板子3D电影,有需要的联系我,我发邮箱。

5.png (5.53 KB )

5.png

4.png (334.36 KB )

4.png

3.png (447.75 KB )

3.png

2.png (535.25 KB )

2.png

1.png (447.57 KB )

1.png

QQ截图20121212203427.png (174.25 KB )

QQ截图20121212203427.png

QQ截图20121212203403.png (15.93 KB )

QQ截图20121212203403.png

QQ截图20121212203119.png (42.25 KB )

QQ截图20121212203119.png

QQ截图20121212203056.png (10.04 KB )

QQ截图20121212203056.png

IMG_20121208_180155.jpg (868.59 KB )

IMG_20121208_180155.jpg

相关帖子

沙发
lkdd0071415|  楼主 | 2012-12-12 20:47 | 只看该作者
#include "task.h"
#include <REGX52.H>
#include "lcd.h"
#include "system.h"
#include <stdio.h>

sbit key0=P3^2;
sbit key1=P3^3;



sbit ic_dex2=P2^5;
sbit ic_dex0=P2^7;
sbit ic_dex1=P2^6;       


uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};




uchar code table[]={"welcome.."};
uchar code table1[]={"WK--01"};
uchar code table2[]={"QQ 178898365 "};

uchar code state[]={"MY SERVO TEST .."};
uchar code prompt[]={"Angle"};
uchar disp_dat[3]={0};




void led_task(void)
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                P0=~(0X01<<i);
                Delay_MS(500);
        }
       
       
}

void Dis_ic(void)
{
        ic_dex0=1;
        ic_dex1=1;
        ic_dex2=1;
        P0=0XFF;
        ic_dex0=0;
        ic_dex1=0;
        ic_dex2=0;
       
}


void Servo_task(void)
{

        float angle=90;
        Dis_ic();
       
       
   LCD_Init();             //初始化
        LCD_Write_String(0,0,state);
        LCD_Write_String(0,1,prompt);
        while(1)
        {
                               
        Servo(angle);
        sprintf(disp_dat,"%f",angle);    //字符串格式化命令
        LCD_Write_String(7,2,disp_dat);
                if(key0==0)
                {
                        Delay_MS(10);
                        if(key0==0)
                        {       
                                angle+=10;
                                while(!key0);
                               
                        }
                }
                if(key1==0)
                {
                        Delay_MS(10);
                        if(key1==0)
                        {       
                                angle-=10;
                                while(!key1);
                               
                        }
                }
                }
}


void Welcome_task(void)
{
        unsigned i;
        Dis_ic();
       
                LCD_Init();
        for(i=16;i>3;i--)
        {       
                LCD_Clear();
                LCD_Write_String(i,0,table);
                Delay_MS(500);
        }
        Delay_MS(1000);
        LCD_Clear();
        LCD_Write_String(5,0,table1);
        LCD_Write_String(2,1,table2);
        while(1)
        {
                LCD_Clear();
                LCD_Write_String(5,0,table1);
                LCD_Write_String(2,1,table2);
                Delay_MS(500);
                LCD_Clear();
                LCD_Write_String(5,0,table1);
        //        LCD_Write_String(1,1,table2);
                Delay_MS(500);
               
        }               
}




uchar keyscan(void)                        //键盘扫描
{
        uchar temp,num;
        P1=0xfe;
        temp=P1;
        temp=temp&0xf0;
                if(temp!=0xf0)
                {
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P1;
                        switch(temp)
                        {
                                case 0xee:num=1;
                                break;
                                case 0xde:num=2;
                                break;
                                case 0xbe:num=3;
                                break;
                                case 0x7e:num=4;
                                break;
                        }
                        while(temp!=0xf0)
                        {
                        temp=P1;
                        temp=temp&0xf0;
                        }
                }
                }
       



        P1=0xfd;
        temp=P1;
        temp=temp&0xf0;
                if(temp!=0xf0)
                {
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P1;
                        switch(temp)
                        {
                                case 0xed:num=5;
                                break;
                                case 0xdd:num=6;
                                break;
                                case 0xbd:num=7;
                                break;
                                case 0x7d:num=8;
                                break;
                        }
                        while(temp!=0xf0)
                        {
                        temp=P1;
                        temp=temp&0xf0;
                        }
                }
                }


        P1=0xfb;
        temp=P1;
        temp=temp&0xf0;
                if(temp!=0xf0)
                {
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P1;
                        switch(temp)
                        {
                                case 0xeb:num=1;
                                break;
                                case 0xdb:num=2;
                                break;
                                case 0xbb:num=3;
                                break;
                                case 0x7b:num=4;
                                break;
                        }
                        while(temp!=0xf0)
                        {
                        temp=P1;
                        temp=temp&0xf0;
                        }
                }
                }
                       

        P1=0xf7;
        temp=P1;
        temp=temp&0xf0;
                if(temp!=0xf0)
                {
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        temp=P1;
                        switch(temp)
                        {
                                case 0xe7:num=5;
                                break;
                                case 0xd7:num=6;
                                break;
                                case 0xb7:num=7;
                                break;
                                case 0x77:num=8;
                                break;
                        }
                        while(temp!=0xf0)
                        {
                        temp=P1;
                        temp=temp&0xf0;
                        }
                }
                }
                         
return num;
}


void Key_task(void)
{
                                uchar i;
                while(1)
                {
                        i=keyscan();
                        ic_dex1=1;
                        ic_dex0=0;
                        P0=0xff;
                        ic_dex0=1;
                        ic_dex1=0;
                        P0=tab[i];
                }
}

使用特权

评论回复
板凳
lkdd0071415|  楼主 | 2012-12-12 20:47 | 只看该作者
#include <REGX52.H>
#include "system.h"

sbit servo=P3^7;

void Delay_MS(uint ms)
{
        uint t0,t1;
        for(t0=ms;t0>0;t0--)
                for(t1=115;t1>0;t1--);
}


void Delay_US(uint us)
{
        while(us--);
}

void Servo(uint ang)
{
                int time;
                if((ang>=0)&&(ang<=180))
                {
                time=ang+70;
                servo=1;
                Delay_US(time);
                servo=0;
                Delay_US(2000);
                }
}

使用特权

评论回复
地板
lkdd0071415|  楼主 | 2012-12-12 20:48 | 只看该作者
#include "lcd.h"
#include <REGX52.H>
#include "system.h"

sbit RS=P2^2;            
sbit RIW=P2^3;
sbit E=P2^4;


void Write_Com(uchar com)        
{
   uint i=200;
   RS=1;
   RIW=1;
   RS=0;
   RIW=0;
   E=0;
   E=1;
   P0=com;
   while(i--);
   E=0;
}
//---------------------1602写指令时序结束---------------------------------------------------
//---------------------1602写数据时序开始--------------------------------------------------
void Write_Dat(uchar dat)      
{
    uint i=200;
    RS=0;
    RIW=1;
    RS=1;
    RIW=0;
    E=0;
    E=1;
    P0=dat;
    while(i--);
    E=0;
}
//---------------------1602写数据时序结束------------------------------------------------
void LCD_Init(void)            //1602初始化程序
{

    Write_Com(0x01);             //清屏
    Write_Com(0x06);             //设置输入方式  AC自动加1,显示不发生移位
    Write_Com(0x0c);             //显示开关控制 开显示 开光标 闪烁
    Write_Com(0x38);             //功能设置 双行显示 5*8点阵   八位数据
}

  void LCD_Clear(void)
  {
        Write_Com(0x01);
        Delay_MS(5);
  }
  
  
  void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  {     
  if (y == 0)
          {     
         Write_Com(0x80 + x);     //表示第一行
          }
  else
          {      
          Write_Com(0xC0 + x);      //表示第二行
          }        
  while (*s)
          {     
        Write_Dat( *s);     
  s ++;     
          }
  }

使用特权

评论回复
5
lkdd0071415|  楼主 | 2012-12-12 20:48 | 只看该作者
#include <reg51.h>
#include "lcd.h"
#include "system.h"
#include "task.h"

#define uchar unsigned char
#define uint  unsigned int



/******取消程序前面注释便可正常运行任务********/
/*****  作者  王凯       QQ  178898365 ********/

void main()
{
                for(;;)
                {
                       
                       
                //        Welcome_task();
                                Servo_task();
                //        Key_task();
                       
                }
}




使用特权

评论回复
6
lkdd0071415|  楼主 | 2012-12-12 20:56 | 只看该作者
没人顶自己顶一个,跪求人气

使用特权

评论回复
7
1638574407| | 2012-12-12 20:57 | 只看该作者

使用特权

评论回复
8
wddzyjcx0755| | 2012-12-13 00:24 | 只看该作者
开发板可以用洞洞板自己焊接一块吗?可以手把手教务一些单片机的学习知识吗?

使用特权

评论回复
9
lkdd0071415|  楼主 | 2012-12-13 10:52 | 只看该作者
wddzyjcx0755 发表于 2012-12-13 00:24
开发板可以用洞洞板自己焊接一块吗?可以手把手教务一些单片机的学习知识吗? ...

没问题啊,欢迎联系

使用特权

评论回复
10
zmxzb| | 2012-12-14 10:28 | 只看该作者

使用特权

评论回复
11
wddzyjcx0755| | 2012-12-18 22:36 | 只看该作者
lkdd0071415 发表于 2012-12-13 10:52
没问题啊,欢迎联系

感谢你的支持,就留个企鹅号:769787308,这样可以远程,可以语音交流。

使用特权

评论回复
12
wddzyjcx0755| | 2012-12-18 22:37 | 只看该作者
lkdd0071415 发表于 2012-12-13 10:52
没问题啊,欢迎联系

感谢你的支持,就留个企鹅号:769787308,这样可以远程,可以语音交流。

使用特权

评论回复
13
dong_abc| | 2012-12-18 23:12 | 只看该作者
楼主敲了一些程序值得鼓励,赞一个。
不过还是说句实话,楼主这些程序除了放在电脑你占空间,还真没有什么用处。

使用特权

评论回复
14
michaellh| | 2012-12-19 17:19 | 只看该作者
顶!学习了!

使用特权

评论回复
15
lkdd0071415|  楼主 | 2012-12-20 14:27 | 只看该作者
dong_abc 发表于 2012-12-18 23:12
楼主敲了一些程序值得鼓励,赞一个。
不过还是说句实话,楼主这些程序除了放在电脑你占空间,还真没有什么 ...

听样子你好像是一个牛B青年,不管什么东西学会以后你从高处俯瞰,都那么回事,我写这个也是本着给别人作参考的态度,难道我非得写的非常晦涩难懂才会说,哇,这程序写的太牛B了,有意思吗。至于本人,51单片机很早前就掌握了,也接触过很多其它的微处理器,写过关于UCOSII 和UC GUI方面的程序,有挺难懂,不知你发这样的评论是何态度,装B还是装B呢

使用特权

评论回复
评论
dong_abc 2012-12-20 21:11 回复TA
你当我装B就行了。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

340

帖子

9

粉丝