找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 47440|回复: 22
打印 上一主题 下一主题
收起左侧

第1章 单片机高效入门

  [复制链接]
跳转到指定楼层
楼主
ID:111078 发表于 2016-3-28 00:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机轻松入门—基于STC15W4K系列(C语言版)
李友全
编著:http://www.51hei.com/bbs/dpj-37954-1.html


1章 单片机高效入门

1 认识单片机

2 制作一个最简单的单片机实验电路

3 使用Keil软件编写最简单的程序(点亮一个发光二极管)

4 计算机程序下载到单片机

5 I/O口4种工作模式

6 流水灯实例

7 I/O口输入测试

8 软件仿真

9 硬件仿真

10 延时软件使用方法

11 main()、void main()和int main()的区别

12 printf 格式化输出函数(单片机与计算机通信)

13 学习用实验板介绍


1 认识单片机



单片机全称是单片微型计算机(与计算机原理相同),外 形与普通集成电路相同,但普通集成电路功能是固定死 的,使用者无法更改,单片机的功能是可以通过编写程序 进行更改的。

51单片机主要发展历程:

AT89C51(已停产)——AS89S51(已淘汰)—— STC89C52(2004年,已落后)——STC12系列 (2007年)——STC15F系列(2011年)—— STC15W系列(2014年,最新运用主流)。

本书主讲单片机型号:STC15W系列中的典型型 号:IAP15W4K58S4 ,辅助性的介绍STC15F2K60S2与STC15W408S

编程语言与开发环境:当今最流行的具有跨平台 优势的C语言与keil编译软件

C语言跨平台优势

不同的CPU使用不同的汇编指令,不通用,但C语言有优越的跨平台能力
2 制作一个最简单的单片机实验电路



5V供电电路

计算机串口外形

连接到计算机串口

3 使用Keil软件编写最简单的程序
(点亮一个发光二极管)
1、安装Keil软件

2、安装汉子补丁

3、 新建工程:工程名与C文件名可随便输入,但不能有汉字,更不能与C

语言的关键字或函数名称相同,否则会发生冲突(编译出现很多错误或警告)
Keil中输入程序代码

#include "STC15W4K.H"

sbit P0_0 = P0^0; // sbit是位定义

void main ()

{
P0_0=0; // 点亮LED
while(1); // 让程序停在这里

}

4 计算机程序下载到单片机

5 I/O口4种工作模式

例1.5 最精简的流水灯实例(A)

6 流水灯实例
#include "STC15W4K.H" // 注意宏定义语句后面无分号

void delay100ms()

{
unsigned char i,j,k; // i,j,k由由软件计算出并验证正确。
for(i=157;i>0;i--) // 注意后面没分号
for(j=9;j>0;j--) // 注意后面没分号
for(k=194;k>0;k--); // 注意后面有分号
}
void port_mode() // 端口模式(准双向、弱上拉)
{

P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00; P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;

}

void main()

{

unsigned char a;

port_mode(); // 将单片机所有端口配置为准双向弱上拉方式

while(1)

{
P0 =~(1<<a++); 第一次运行时="" 0000="" 0001<<="" 0="0000" 0001[="" size][="" font][="" color][="" align][p="17," null,="" left]delay100ms();
[color=rgb(0," (a="=0x08)" 允许左移8次。[="" align]P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00; P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;
}
void main()
{
unsigned char a;
port_mode(); // 将单片机所有端口配置为准双向弱上拉方式 P2 = 0xFF; // P2口置弱上拉高电平输出
while(1)
{
P0 = P2; // 循环检测P2口输入电平高低。
}
}
8 软件仿真

9 硬件仿真

n 在STC程序下载软件中首先选择“Keil仿真设置”页面,点击“添加型号和头文件到Keil 中”,在出现的目录选择窗口中,定位到Keil的安装目录(比如“C:Keil818”),“确 定”后出现“STC MCU型号添加成功”的提示信息,点“确定”。

n 保持IAP15W4K58S4实验电路仍然与电脑串口相连,如上图所示,先选择仿真芯片运 行时的R/C时钟频率或使用外部晶振,然后点击“将IAP15W4K58S4设置为仿真芯片”按 钮,给电路板上电,此时就将会有程序向芯片中下载,下载完成后仿真器便制作完成 了,IAP15W4K58S4设置成仿真芯片后,要想再变成一般的单片机无需任何操作,直接 将它当作单片机下载程序使用就可以了。

n 在Keil中新建项目,出现下图 对话框,选择“STC MCU Database”项,然后从列表 中选择相应的MCU型号,在此选择“STC15W4K32S4”,点击“OK”完成选择。

然后按下图设置硬件仿真
确认前面我们所创建的项目编译没有错误后,按“Ctrl+F5”或工具栏图标 开始调 试,若硬件连接无误的话,将会进入到与软件仿真类似的调试界面,只是现在可以一步一步 执行程序并控制硬件动作了)。
有时进入调试环境可能会失败,首先检查仿真串口号选择是否有误,另外可将单片机断电 后重新上电试试,若使用的USB转串口,可将USB头断开几秒再插上,如果仍然不行,请检查
程序代码是否占用了仿真调试接口(P3.0与P3.1 )。
10 延时软件使用方法

长时间延时,函数固定格式:

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 delay (unsigned char t) // 小范围精确延时函数
{

while(--t);

}
根据不同的延时时间修改函数中的变量 i,j,kt 即可, i,j,kt 由笔者编写的 软件直接计算得出

11 main()、void main()和int main()的区别

在C语言中main()和void main()区别:一个有返回值(没声明类型的 默认是返回值int型),一个无返回值,特别在单片机运用中由于主函数 没有其它函数调用它,所以返回的值也就没什么用。所以一般都写的 void main(),这时程序中不需要return语句,如果main()函数前没有void

(默认为int),或者写为int main()程序中就必须有return语句,比如:

int main()

{
return 0; // 表示程序正常退出
}
在单片机程序中一般写作void min()最方便,但在其它一些C编译器中,写
作void main()编译是不能通过的,需要写成int main(),int main()是C语言
的标准格式。
12 printf 格式化输出函数(单片机与计算机通信)

例1.8 计算机串口助手显示单片机内部简单信息

#include "STC15W4K.H"

#include  // 为使用KEIL自带的库函数printf而加入
void printstar()
{
printf("********************************");
}
void print_message()
{
printf("hello world"); // 最简单输出 printf("How do you do!"); // 输出换行符 printf("欢迎学习STC51单片机"); // 中文输出
}
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) ; // 停在这里

我们把例1.8程序下载到单片机中,打开程序下载软件的串口助手,接收缓冲区选择文本模式,波特率

9600,打开串口,给实验板断电后上电,可以看到单片机发给计算机的信息如图1-67所示,如果显示 的个别字符出现乱码或连续接收大量数据显示不正常,可换用其它串口助手软件,比如“丁丁串口调试 助手SSCOM 3.3”即可解决。实验结果如下:

实 验 主 板


13 学习用实验板介绍

由于后续章节实验很多,制作实验电路比较耗费时间,可以购买实验板产品。

SD卡与MP3实验板


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:154576 发表于 2017-3-21 10:47 | 只看该作者
谢谢!比较适合我这样的初学者,非常感谢!!
回复

使用道具 举报

板凳
ID:192534 发表于 2017-5-18 08:25 | 只看该作者
很适合我这样的初学者,非常感谢!!!!
回复

使用道具 举报

地板
ID:280642 发表于 2018-1-30 08:54 | 只看该作者
看起來很基礎非常適合初學,就感謝樓主分享,謝謝!
回复

使用道具 举报

5#
ID:401610 发表于 2018-9-23 16:40 | 只看该作者
学习了。。
很适合我这样的初学者,非常感谢!!!!
回复

使用道具 举报

6#
ID:401610 发表于 2018-9-23 17:11 | 只看该作者
谢谢,学习了。。。
回复

使用道具 举报

7#
ID:409837 发表于 2018-10-23 14:51 | 只看该作者
很好,谢谢,支持!
回复

使用道具 举报

8#
ID:421786 发表于 2018-11-8 11:23 | 只看该作者
谢谢!比较适合我这样的初学者,非常感谢!!
回复

使用道具 举报

9#
ID:427487 发表于 2018-11-16 08:17 | 只看该作者
Hello World
回复

使用道具 举报

10#
ID:452731 发表于 2018-12-27 20:58 | 只看该作者
这个单片机和STC的51还有89C51    有什么优点?
回复

使用道具 举报

11#
ID:420519 发表于 2019-1-21 19:35 | 只看该作者
看了一会儿  长路漫漫啊
回复

使用道具 举报

12#
ID:452731 发表于 2019-1-27 23:58 | 只看该作者
具有参考价值
回复

使用道具 举报

13#
ID:299054 发表于 2019-2-16 15:49 | 只看该作者
谢谢楼主分享的好资料!
回复

使用道具 举报

14#
ID:384315 发表于 2019-7-3 23:37 来自手机 | 只看该作者
怎么还是有点看不懂?
回复

使用道具 举报

15#
ID:341311 发表于 2019-9-27 09:34 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

16#
ID:607546 发表于 2019-10-6 14:46 | 只看该作者
谢谢分享,入门学习很好,适用!
回复

使用道具 举报

17#
ID:253767 发表于 2020-4-23 07:30 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

18#
ID:816011 发表于 2020-8-28 11:44 | 只看该作者
学习了。。 很适合我这样的初学者,感谢
回复

使用道具 举报

19#
ID:847123 发表于 2020-11-22 04:28 | 只看该作者
想入门,看了一会,觉得stc15f104系列8脚的单片机适合我容易玩
回复

使用道具 举报

20#
ID:968083 发表于 2021-9-26 05:03 | 只看该作者
这样图文并茂的教程对新手很有帮助,感谢楼主
回复

使用道具 举报

21#
ID:985401 发表于 2022-1-3 22:30 | 只看该作者

谢谢!比较适合我这样的初学者,非常感谢!
回复

使用道具 举报

22#
ID:1024753 发表于 2022-5-19 16:40 | 只看该作者
很实用,谢谢大佬分享,开始学习
回复

使用道具 举报

23#
ID:742312 发表于 2022-11-25 21:57 | 只看该作者
很实用,谢谢大佬分享 非常感谢!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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