OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1135|回复: 12

《51单片机轻松入门 基于STC15W4K系列》视频例程地址更新

[复制链接]

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
发表于 2017-9-23 21:52:45 | 显示全部楼层 |阅读模式
正点原子公众号
由于百度网盘的原因,《51单片机轻松入门 基于STC15W4K系列》配套视频与例程地址也发生了变化,最新下载地址如下:
http://pan.baidu.com/s/1bURkE6
大家在学习过程中遇到任何问题都欢迎在本论坛提问或本帖跟帖
51单片机轻松入门—基于STC15W4K系列.pdf (2.53 MB, 下载次数: 585)
回复

使用道具 举报

  离线 

16

主题

340

帖子

0

精华

高级会员

Rank: 4

积分
734
金钱
734
注册时间
2017-5-21
在线时间
326 小时
发表于 2017-9-24 06:17:25 来自手机 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-11-15 11:05:36 | 显示全部楼层
逻辑分析与软件与手册更新,配套完整光盘更新,欢迎免费下载
回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-11-17 21:08:31 | 显示全部楼层
// 让接在STC15W4K58S4的P0.0引脚发光二极管1秒钟闪烁1次,晶振11.0592MHz
#include "STC15W4K.H"       // 注意宏定义语句后面无分号                  
void delay500ms()
{
        unsigned char i,j,k;        // i,j,k由由软件计算出并验证正确。
        for(i=41;i>0;i--)       // 注意后面没分号
        for(j=133;j>0;j--)      // 注意后面没分号
        for(k=252;k>0;k--);     // 注意后面有分号
}
void port_mode()            // 端口模式
{
        P0M1=0x00; P0M0=0x001M1=0x00; P1M0=0x002M1=0x00; P2M0=0x003M1=0x00; P3M0=0x00;
        P4M1=0x00; P4M0=0x005M1=0x00; P5M0=0x006M1=0x00; P6M0=0x007M1=0x00; P7M0=0x00;
}
void main()
{
        port_mode();                   // 将单片机所有端口配置为准双向弱上拉方式
        while(1)
        {
                P0 &=~(1<<7);      // 将端口单独某位置0(提示:C语言中很重要的技巧)
                delay500ms();           // 延时500ms
                P0|=(1<<7);        // 将端口单独某位置1(提示:C语言中很重要的技巧)
                delay500ms();           // 延时500ms
        }
}

回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-11-21 13:45:23 | 显示全部楼层
正点原子公众号
已完全不保留的分享了,可以正常下载
回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-11-27 22:09:50 | 显示全部楼层
//让接在STC15W4K58S4的P0.0引脚发光二极管发光
#include "STC15W4K.H"   // include称为文件包含命令,后面双引号中内容称为头文件
sbit  P0_0 = P0^0;      // sbit是位定义,"STC15W4K.H"中有sfr P0 = 0X80字节定义语句
void  main ()
{  
        P0_0=0;                 // 点亮LED
}                // 实验证明:程序执行到这后面又执行P0_0=0。


回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-12-1 21:34:31 | 显示全部楼层
// printf测试

#include "STC15W4K.H"
#include <stdio.h>                // 为使用KEIL自带的库函数printf而加入       
void printstar()
{       
        printf("********************************\n");
}

void print_message()
{       
        printf("hello world");             // 最简单输出
        printf("How do you do!\n");                   // 输出换行符\n
        printf("欢迎学习STC51单片机\n");   // 中文输出
}

void UART_init(void)
{                  
        //下面代码设置定时器1
        TMOD = 0x20;        // 0010 0000 定时器1工作于方式2(8位自动重装方式)
        TH1  = 0xFD;        // 波特率:9600 /11.0592MHZ
        TL1  = 0xFD;        // 波特率:9600 /11.0592MHZ
        TR1  = 1;
        //下面代码设置定串口
        AUXR = 0x00;             // 很关键,使用定时器1作为波特率发生器,S1ST2=0
        SCON = 0x50;         // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允许接受)
        TI=1;                        // 很关键,使用printf函数时必须有此命令
}

void main()
{               
        UART_init();         // 初始化串口
        printstar();         // 输出**************
        print_message(); // 输出说明文字
        printstar();         // 输出**************
        while(1) ;                 // 停在这里
}

回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-12-16 18:19:17 | 显示全部楼层
/****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
★★★★★★★★★★★★★★★★★★★★★★★★
定时器实验
  ★★★★★★★★★★★★★★★★★★★★★★★★*/


// 内部RC时钟频率22.1184MHz
#include "STC15W4K.H"
sbit  P0_0=P0^0;
void main()
{
        P0=0xff;            // 关闭P0口接的所有灯
        TMOD=0x00;            // 定时器0的16位自动重装方式
        TH0=0x28;            // 定时器初值2800H
        TL0=0;
        TR0=1;
        for(;;)
        {
                if(TF0)                        //如果TF0等于1
                {       
                        TF0=0;                // 清TF0               
                        P0_0=!P0_0;        // 执行灯亮或灭的动作
                }
        }
}
回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-12-20 21:42:06 | 显示全部楼层
/****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
★★★★★★★★★★★★★★★★★★★★★★★★
计数器实验
  ★★★★★★★★★★★★★★★★★★★★★★★★*/

// 内部RC时钟频率22.1184MHz
#include "STC15W4K.H"       // include称为文件包含命令,后面引号中内容称为头文件
void port_mode()            // 端口模式
{
        P0M1=0x00; P0M0=0x001M1=0x00; P1M0=0x002M1=0x00; P2M0=0x003M1=0x00; P3M0=0x00;
        P4M1=0x00; P4M0=0x005M1=0x00; P5M0=0x006M1=0x00; P6M0=0x007M1=0x00; P7M0=0x00;
}
void main()
{       
        unsigned char DispBuf;
        port_mode();                // 所有IO口设为准双向弱上拉方式。
        P0=0xff;                    // 关闭P0口接的所有灯
        TMOD=0x05;                    // 确定计数工作模式为T0_16位计数,不需要重装。
        TR0=1;                             // 定时器T0开始运行
        for(;;)
        {
                DispBuf=TL0;
                P0=~DispBuf;
        }
}
回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-12-23 09:53:02 | 显示全部楼层


/****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
T0计数显示到P0口
  ★★★★★★★★★★★★★★★★★★★★★★★★*/


// 内部RC时钟频率22.1184MHz
#include "STC15W4K.H"       // include称为文件包含命令,后面引号中内容称为头文件
void port_mode()            // 端口模式
{
        P0M1=0x00; P0M0=0x001M1=0x00; P1M0=0x002M1=0x00; P2M0=0x003M1=0x00; P3M0=0x00;
        P4M1=0x00; P4M0=0x005M1=0x00; P5M0=0x006M1=0x00; P6M0=0x007M1=0x00; P7M0=0x00;
}
void main()
{       
        unsigned char DispBuf;
        port_mode();                // 所有IO口设为准双向弱上拉方式。
        P0=0xff;                    // 关闭P0口接的所有灯
        TMOD=0x05;                    // 确定计数工作模式为T0_16位计数,不需要重装。
        TR0=1;                             // 定时器T0开始运行
        for(;;)
        {
                DispBuf=TL0;
                P0=~DispBuf;
        }
}


回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2017-12-30 09:44:49 | 显示全部楼层
/****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
★★★★★★★★★★★★★★★★★★★★★★★★
   T3计数显示到P0口
  ★★★★★★★★★★★★★★★★★★★★★★★★*/

// 内部RC时钟频率22.1184MHz
#include "STC15W4K.H"       // include称为文件包含命令,后面引号中内容称为头文件
void port_mode()            // 端口模式
{
        P0M1=0x00; P0M0=0x001M1=0x00; P1M0=0x002M1=0x00; P2M0=0x003M1=0x00; P3M0=0x00;
        P4M1=0x00; P4M0=0x005M1=0x00; P5M0=0x006M1=0x00; P6M0=0x007M1=0x00; P7M0=0x00;
}
void main()
{       
        unsigned char DispBuf;
        port_mode();                 // 所有IO口设为准双向弱上拉方式。
        P0=0xff;                     // 关闭P0口接的所有灯
        T4T3M|=0x0c;             // 定时器T3工作于计数方式并开始运行
        for(;;)
        {
                DispBuf=T3L;
                P0=~DispBuf;
        }
}
回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2018-1-3 21:26:36 | 显示全部楼层
nclude "STC15W4K.H"      // 包含 "STC15W4K.H"寄存器定义头文件
/****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
★★★★★★★★★★★★★★★★★★★★★★★★
串口通信:单片机向电脑发送0~255范围内不断增大的数据\
  ★★★★★★★★★★★★★★★★★★★★★★★★*/

void delay500ms(void)
{
   unsigned char i,j,k;
   for(i=93;i>0;i--)       // 注意后面没分号
   for(j=235;j>0;j--)      // 注意后面没分号
   for(k=125;k>0;k--);     // 注意后面有分号
}
void UART_init(void)
{                  
        //下面代码设置定时器1
        TMOD = 0x20;        // 0010 0000 定时器1工作于方式2(8位自动重装方式)
        TH1  = 0xFA;        // 波特率:9600 /22.1184MHZ
        TL1  = 0xFA;        // 波特率:9600 /22.1184MHZ
        TR1  = 1;
        //下面代码设置定串口
        AUXR = 0x00;             // 很关键,使用定时器1作为波特率发生器,S1ST2=0
        SCON = 0x50;         // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允许接收)
}
void UART_send_byte(unsigned  char dat)
{
        SBUF = dat;
        while(!TI);            
        TI=0;         //此句可以不要,不影响后面数据的发送,只供代码查询数据是否发送完成
}
void main()
{
        unsigned  char num=0;       
        UART_init();
        while(1)
        {               
                UART_send_byte(num++);
                delay500ms();
        }
}
回复 支持 反对

使用道具 举报

  离线 

15

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2014-4-3
在线时间
47 小时
 楼主| 发表于 2018-2-1 22:10:18 | 显示全部楼层
#include "STC15W4K.H"      // 包含 "STC15W4K.H"寄存器定义头文件
/****************《51单片机轻松入门-基于STC15W4K系列》配套例程 *************
串口通信

unsigned  char num=0;           // 存放接收到的1个字节的数据
void UART_init(void)
{                  
        // 下面代码设置定时器2
        T2H  = 0xFD;        // 波特率:9600 /22.1184MHZ,1T
        T2L  = 0xC0;        // 波特率:9600 /22.1184MHZ,1T
        AUXR = 0x15;    // 0001 0101,T2R=1启动T2运行,T2x12=1,定时器2按1T计数,S1ST2=1
        // 下面代码设置定串口1
        SCON = 0x50;         // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允许接收)
        // 下面代码设置中断
        ES   = 1;                // 开串口1中断
        EA   = 1;                // 开总中断
}

void main()
{
        UART_init();
        while(1);
}  

void UART1(void) interrupt 4  // 串行口1中断函数
{
        if(TI)
        {
                TI = 0;                        
        }
        if(RI)
        {
                RI = 0;
                num = SBUF;
                num++;
                SBUF = num;           // 启动数据发送过程               
        }
}


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-4-24 09:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */