单片机高效入门
- 格式:pdf
- 大小:1.46 MB
- 文档页数:34
}
}
位左移运算符
6 流水灯实例
位左移运算符“<<”用来将一个数的各个二进制位全部同时左移,左移时右侧 空白位补0。 例如:若a=0x4b (二进制:01001011),则表达式a=a<<2,即将a的值左移2 位,结果为:
移位前 0 1 0 0 1 0 1 1
移位后 0 0 1 0 1 1 0 0
按位取反运算符
P0_0=0; // 点亮LED while(1); // 让程序停在这里 }
4 计算机程序下载到单片机
5 I/O口4种工作模式
VCC
VCC
20K
准双向,弱上拉
强推挽
高阻输入
开漏
复位下载电路
+5V
1K RESET
240Ω
IAP15W4K58S4(直插)
2.5-5.5V
18(VCC) 20(GND)
12 P1.2(ADC2)
IAP15W4K58S4
P4.5 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P4.4 P4.2
13 P1.3(ADC3) 14 P1.4(ADC4) 15 P1.5(ADC5) 16 P1.6(ADC6) 17 P1.7(ADC7)
P4.1 P3.7 P3.6 (T1)P3.5
1 认识单片机
单片机全称是单片微型计算机(与计算机原理相同),外 形与普通集成电路相同,但普通集成电路功能是固定死 的,使用者无法更改,单片机的功能是可以通过编写程序 进行更改的。
STC15 像汽车, 使用简便、 成本低
当今主流的单片机:
STM32 像飞机, 使用复杂、 成本高
有人说:随着飞行技术的发展,飞机的价格越来越低,以后汽车会逐渐被淘汰。 你信吗?若不信,就老老实实先把STC15学好吧,别整天一山望着另一山高,到 头来一无所成,况且学好我这本书可以为STM32打下坚实的基础。
// P2口置弱上拉高电平输出
while(1)
{
P0 = P2; // 循环检测P2口输入电平高低。
}
}
8 软件仿真
9 硬件仿真
n 在STC程序下载软件中首先选择“Keil仿真设置”页面,点击“添加型号和头文件到Keil 中”,在出现的目录选择窗口中,定位到Keil的安装目录(比如“C:\Keil818\”),“确 定”后出现“STC MCU型号添加成功”的提示信息,点“确定”。
51单片机主要发展历程:
AT89C51(已停产)——AT89S51(已淘汰)—— STC89C52(2004年,已落后)——STC12系列 (2007年)——STC15F系列(2011年)—— STC15W系列(2014年,最新运用主流)。
本书主讲单片机型号:STC15W系列中的典型型 号:IAP15W4K58S4 ,辅助性的介绍 STC15F2K60S2与STC15W408S
然后按下图设置硬件仿真
确认前面我们所创建的项目编译没有错误后,按“Ctrl+F5”或工具栏图标 开始调 试,若硬件连接无误的话,将会进入到与软件仿真类似的调试界面,只是现在可以一步一步 执行程序并控制硬件动作了)。
有时进入调试环境可能会失败,首先检查仿真串口号选择是否有误,另外可将单片机断电 后重新上电试试,若使用的USB转串口,可将USB头断开几秒再插上,如果仍然不行,请检查 程序代码是否占用了仿真调试接口(P3.0与P3.1 )。
P4M1=0x00;P4M0=0x00;P5M1=0x00;P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00;P7M0=0x00;
}
void main() {
unsigned char a=0; port_mode(); while(1) {
P0 =~(1<<a++); delay100ms(); if (a==0x08) {
51单片机轻松入门
—基于STC15W4K系列
(C语言版)
李友全 编著
博客地址:
2016年3月编辑整理(第1章)
第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 学习用实验板介绍
计算机串口外形
连接到计算机串口
3 使用Keil软件编写最简单的程序 (点亮一个发光二极管)
1、安装Keil软件
2、安装汉字补丁
3、 新建工程:工程名与C文件名可随便输入,但不能有汉字,更不能与C
语言的关键字或函数名称相同,否则会发生冲突(编译出现很多错误或警告)
Keil中输入程序代码
#include "STC15W4K.H" sbit P0_0 = P0^0; // sbit是位定义 void main () {
}
短暂延时,函数固定格式:
void delay (unsigned char t) // 小范围精确延时函数
{
while(--t);
}
根据不同的延时时间修改函数中的变量 i,j,k 与 t 即可, i,j,k 与 t 由笔者编写的 软件直接计算得出
11 main()、void main()和int main()的区别
2号单片机仿真下载接口
实验主电路(2),用于计算机无串口情况
T1
220V
1N4007 1N4007 U1 LM7805
S1 D1 D2
常闭开关
9V
1
3
2
C1
C2
D3
D4
1N4007 1N4007
470uF/50V 470uF/50V
LM7805
+5V
1 23 输入 GND 输出
GND
5V供电电路
D- D+ +5V(VCC) GND
5
32
0.1uF
GND +5V
0.1uF
0.1uF 0.1uF
GND
0.1uF
1 2 3
4 5 6 7
8
C1+ Vcc
V+ Gnd
C1- T1OUT
C2+ R1IN
C2- R1OUT V- T1IN T2OUT T2IN R2IN R2OUT
16
15 14 13 12 11 10 9
SP3232
(或MAX232)
for(j=133;j>0;j--) // 注意后面没分号
for(k=252;k>0;k--); // 注意后面有分号
}
void main ()
{
for (;;)
// for (;;) 让for下面1对大括号内程序无限循环
{
P0_0 =!P0_0; // 取反P0_0引脚
delay500ms(); // 延时500ms,高电平500ms,低电平500ms,周期1S
n 保持IAP15W4K58S4实验电路仍然与电脑串口相连,如上图所示,先选择仿真芯片运 行时的R/C时钟频率或使用外部晶振,然后点击“将IAP15W4K58S4设置为仿真芯片”按 钮,给电路板上电,此时就将会有程序向芯片中下载,下载完成后仿真器便制作完成 了,IAP15W4K58S4设置成仿真芯片后,要想再变成一般的单片机无需任何操作,直接 将它当作单片机下载程序使用就可以了。 n 在Keil中新建项目,出现下图 对话框,选择“STC MCU Database”项,然后从列表 中选择相应的MCU型号,在此选择“STC15W4K32S4”,点击“OK”完成选择。
取反前 0 1 0 0 1 0 1 1 取反后 1 0 1 1 0 1 0 0
例1.5 最精简的流水灯实例(A)
#include "STC15W4K.H"
// 注意宏定义语句后面无分号
void delay100ms()
// 11.0592MHz
{
unsigned char i,j,k; // i,j,k由由软件计算出并验证正确。
编程语言与开发环境:当今最流行的具有跨平台 优势的C语言与keil编译软件
2 制作一个最简单的单片机实验电路
LED1
R1 1
+5V
1K
2 P0.0 3 P0.1
共8路
4 P0.2 5 P0.3
R8
6 P0.4 7 P0.5
LED8
1K
8 P0.6 9 P0.7
10 P1.0(ADC0)
11 P1.1(ADC1)
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;
for(i=157;i>0;i--) // 注意后面没分号
for(j=9;j>0;j--)
// 注意后面没分号
for(k=194;k>0;k--); // 注意后面有分号
}
void port_mode()
;P0M0=0x00;P1M1=0x00;P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;