打印
[产品供应]

EASY C51单片机学习板

[复制链接]
1505|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MCUSEA|  楼主 | 2011-4-10 14:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Easy C51 学习板硬件资源介绍
1.
5V
电源座:本学习板采用DC5供电。
2.
电源开关:控制整个开发板的电源,按下电源接通,再次按下弹起电源断开。
3.
RS232
串口通讯接口:完成学习板和电脑之间的通讯试验。
4.
USB
接口:可以通过USB口直接烧写STC单片机的程序(需要安装USB转串口的驱动),同时通过USB口向学习板提供+5V电源。
5.
小型有源蜂鸣器:学习驱动蜂鸣器发声试验。
6.
8
LED灯:学习用单片机IO控制LED灯。

7.
一个外部中断按钮:学习外部中断。
8.
八个轻触开关:学习用单片机检测外部IO输入。
9.
4
位共阳数码管:显示各种实验结果,如时钟实验,温度测试实验,按键扫描实验。
10.
EEPROM
储存芯片AT24C04:学习用IIC协议,读写IIC协议的外围器件。
11.
74HC595
芯片:驱动数码管,学习如何用通用IO模拟SPI通讯,了解一种串行数据转并行数据的常用方法。
12.
时钟芯片DS1302:学习用单片机读写DS1302,以及完成单片机时钟实验。
13.
温度传感器DS18B20(选配):做单总线实验,学习读写DS18B20的协议,完成温度测试实验。
14.
红外遥控接收头(选配):学习单片机红外解码。
15.
LCD1602
显示屏(选配):为各种实验提供显示,如时钟式样,温度传感实验等,同时学习如何用单片机控制LCD1602.
16.
LCD12864
显示屏(选配):为各种实验提供显示,如时钟式样,温度传感实验等,同时学习如何用单片机控制LCD12864.

11.jpg (143.28 KB )

11.jpg

22.jpg (186.39 KB )

22.jpg

33.jpg (179.03 KB )

33.jpg

999.gif (409.27 KB )

999.gif

12864.gif (318.59 KB )

12864.gif

相关帖子

沙发
MCUSEA|  楼主 | 2011-4-10 14:01 | 只看该作者
板凳
MCUSEA|  楼主 | 2011-4-11 08:20 | 只看该作者
:D

使用特权

评论回复
地板
MCUSEA|  楼主 | 2011-4-11 15:28 | 只看该作者
:lol

使用特权

评论回复
5
MCUSEA|  楼主 | 2011-4-11 20:36 | 只看该作者
:D

使用特权

评论回复
6
MCUSEA|  楼主 | 2011-4-13 14:42 | 只看该作者
:D

使用特权

评论回复
7
MCUSEA|  楼主 | 2011-4-15 09:16 | 只看该作者
:lol

使用特权

评论回复
8
MCUSEA|  楼主 | 2011-4-18 08:44 | 只看该作者
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit LCD_RS = P1^0;            
sbit LCD_RW = P1^1;
sbit LCD_EN = P1^2;

uchar code dis1[] = {"   WLCOME  TO   "};
uchar code dis2[] = {" WWW.MCUSEA.COM "};
uchar code dis3[] = {"   OT  EMOCLW   "};
uchar code dis4[] = {" MOC.AESUCM.WWW "};

/*******************************************************************/
/*                                                                                                                                  */
/* 延时子程序                                                                                                                  */
/*                                                                                                                                  */
/*******************************************************************/

void delay(int ms)
{                           
   int i;
   while(ms--)
   {
     for(i = 0; i< 250; i++)
     {
      _nop_();
      _nop_();
      _nop_();
      _nop_();
     }
   }
}

/*******************************************************************/
/*                                                                                                                                  */
/*检查LCD忙状态                                                                                                             */
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。                                      */
/*                                                                                                                                  */
/*******************************************************************/

bit lcd_busy()
{                          
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
     result = (bit)(P2&0x80);
    LCD_EN = 0;
    return result;
}

/*******************************************************************/
/*                                                                                                                                  */
/*写指令数据到LCD                                                                                                          */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                                                                   */
/*                                                                                                                                  */
/*******************************************************************/

void lcd_wcmd(uchar cmd)
{                          
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();
    _nop_();
    P2 = cmd;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    LCD_EN = 1;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    LCD_EN = 0;  
}

/*******************************************************************/
/*                                                                                                                                  */
/*写显示数据到LCD                                                                                                          */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                                                                     */
/*                                                                                                                                  */
/*******************************************************************/

void lcd_wdat(uchar dat)
{                          
   while(lcd_busy());
    LCD_RS = 1;
    LCD_RW = 0;
    LCD_EN = 0;
    P2= dat;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    LCD_EN = 1;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    LCD_EN = 0;
}

/*******************************************************************/
/*                                                                                                                                  */
/*  设定显示位置                                                                                                              */
/*                                                                                                                                  */
/*******************************************************************/

void lcd_pos(uchar pos)
{                          
   lcd_wcmd(pos|0x80);      //数据指针=80+地址变量
}

/*******************************************************************/
/*                                                                                                                                  */
/*  LCD初始化设定                                                                                                           */
/*                                                                                                                                  */
/*******************************************************************/

void lcd_init()
{                        
    lcd_wcmd(0x38);          //16*2显示,5*7点阵,8位数据
    delay(5);
    lcd_wcmd(0x38);         
    delay(5);
    lcd_wcmd(0x38);         
    delay(5);

    lcd_wcmd(0x0c);          //显示开,关光标
    delay(5);
    lcd_wcmd(0x06);          //移动光标
    delay(5);
    lcd_wcmd(0x01);          //清除LCD的显示内容
    delay(5);
}

/*******************************************************************/
/*                                                                                                                                  */
/*  闪动子程序                                                                                                                 */
/*                                                                                                                                  */
/*******************************************************************/

void flash()
{
      delay(600);                    //控制停留时间
      lcd_wcmd(0x08);            //关闭显示
      delay(200);                    //延时
      lcd_wcmd(0x0c);            //开显示
      delay(200);                    //延时
      lcd_wcmd(0x08);            //关闭显示
      delay(200);                    //延时
      lcd_wcmd(0x0c);            //开显示
      delay(200);
}

/*******************************************************************/
/*                                                                                                                                  */
/*  主程序                                                                                                                       */
/*                                                                                                                                  */
/*******************************************************************/

main()
{
    uchar i;
    delay(10);
    lcd_init();                        // 初始化LCD
      

    while(1)              
   {
      lcd_wcmd(0x06);           //向右移动光标
      lcd_pos(0);                    //设置显示位置为第一行的第1个字符
      i = 0;

     while(dis1 != '\0')
     {                                     //显示字符"   Welcome  TO   "
       lcd_wdat(dis1);
       i++;
       delay(30);                     //控制两字之间显示速度
     }

      lcd_pos(0x40);               //设置显示位置为第二行第1个字符
      i = 0;

     while(dis2 != '\0')
     {
       lcd_wdat(dis2);          //显示字符" WWW.RICHMCU.COM "
       i++;
       delay(30);                     //控制两字之间显示速度
     }

      flash();                           //闪动二次
      lcd_wcmd(0x01);           //清除LCD的显示内容
      delay(200);                    //控制转换时间
      lcd_wcmd(0x04);           //向左移动光标
      lcd_pos(15);                  //设置显示位置为第一行的第16个字符
      i = 0;

     while(dis3 != '\0')
     {                                     //显示字符"   Welcome  TO   "
       lcd_wdat(dis3);
       i++;
       delay(30);                     //控制两字之间显示速度
     }

      lcd_pos(0x4F);              //设置显示位置为第二行的第16个字符
      i = 0;

     while(dis4 != '\0')
     {
       lcd_wdat(dis4);        //显示字符
       i++;
       delay(30);                   //控制两字之间显示速度
     }

      flash();                         //闪动二次
      lcd_wcmd(0x01);         //清除LCD的显示内容
      delay(200);                 //控制转换时间
         
   }
}
LCD1602显示代码,测试通过!

使用特权

评论回复
9
MCUSEA|  楼主 | 2011-4-19 08:09 | 只看该作者
:P

使用特权

评论回复
10
MCUSEA|  楼主 | 2011-4-19 17:47 | 只看该作者
:lol

使用特权

评论回复
11
MCUSEA|  楼主 | 2011-4-20 08:06 | 只看该作者
:o

使用特权

评论回复
12
MCUSEA|  楼主 | 2011-4-22 08:54 | 只看该作者
:P

使用特权

评论回复
13
MCUSEA|  楼主 | 2011-4-26 08:20 | 只看该作者

使用特权

评论回复
14
MCUSEA|  楼主 | 2011-4-26 16:06 | 只看该作者
:D

使用特权

评论回复
15
MCUSEA|  楼主 | 2011-4-28 08:23 | 只看该作者
:D

使用特权

评论回复
16
MCUSEA|  楼主 | 2011-5-3 14:32 | 只看该作者
:D

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

50

帖子

1

粉丝