手把手教你学51单片机(C语言)

合集下载

51系列单片机_C语言_快速入门_一_

51系列单片机_C语言_快速入门_一_
第3页 共3页
ห้องสมุดไป่ตู้
一、学习单片机必须的思想及物质准备 首先,对于初学单片机的人来说,必须有学习单片机的热情,不是说今天去图书馆看了一下 午关于单片机的书,明天玩上半天,后天就不知道那本书在讲什么东西了。笔者刚开始接触单片 机时,正如前面所说的,仅知道有一种芯片叫单片机,但是具体长成什么样子,却一点也不知道! 但一直坚持看单片机的书,虽然有很多不懂,还是坚持了下来。 当明白了单片机是这么一回事的时候,问题出来了:要选择哪种语言为单片机编写程序呢?为 这个问题,困扰了好久。具体选择 C51 还是 A51 呢?汇编在以前没有学过,虽然看着人家的讲解, 很容易明白单片机每一时刻具体工作情况,但是一合上书或者资料,却什么也不知道了,更不用 说自己写程序了。最终,还是决定学 C51。毕竟 C51 和课上所学的 C 语言有些类似,编程的思想 是相通的。而且 C51 还有更大的优点,就是编写大程序时的优越性。当然,那时并没有想那么深 远,C51 的特点,还是在后来的实践过程中,渐渐体会到的。如果你选择了 C51,或即将选择学 习 C51,本文将引你逐渐入门。 第二、既然想学好单片机,必须得舍得花钱。如果不买些芯片回来自己动手焊焊拆拆的(在后 期,会介绍给大家一个很好用的硬件仿真软件,并不需要用实验板和仿真器了,直接在你的 PC 上完成。但是,软件毕竟是软件,从某个特定的意义上来说,并不能代替硬件),即使每天捧着书 本,把那本书翻烂,也永远学不会单片机。刚接触单片机的朋友,看了资料,一定会对以下几个 词见得比较多,但是具体概念还是比较模糊,现作如下说明: (1)编程器 编程器是用来烧单片机芯片的,是把 HEX 或者 BIN 文件烧到单片机 ROM 里的,供单片机 运行的。 (2)实验板 实验板是专为初学者根据某些要求而特制的板子,一般上面均有一个单片机最小系统,是使 用者只需写好程序,烧好芯片,放到上面加以验证的一个工具。有了实验板,对于初学者来说, 省去了焊接最小系统的麻烦。但是它对于电子开发人员来说,作用并不是很大。 (3)仿真器 仿真器是直接把 HEX 或者 BIN 文件暂时放在一个芯片里,再通过这个芯片的引脚连接到实 验板或者系统上工作。这样一来,可以省去来回插拔’芯片带来的麻烦。 笔者一开始也不知道上面三个概念和作用,原本想买个实验板(不想焊板,因为不可能为了点 亮几个流水灯,而去焊个单片机的最小系统)的,可是结果却和所想的相反,人家出售的是编程器。 等货物寄到后,才知道自己搞错了!不幸的是,花了 160 元买的编程器,不仅用不了,还一烧芯片, 芯片就烧坏了)。这个编程器,现在还躺在抽屉里。不过,现在想想,唯一觉得欣慰的是,那个老 板每次能解答我的问题,连那种超级幼稚的问题,他也能不嫌麻烦地尽量帮我解答,让人很感动。

(1小时学会C语言51单片机)C语言入门教程

(1小时学会C语言51单片机)C语言入门教程

(四)说到这里,我们来讲讲数码管的显示方式,可分为两种:动态扫描和静态显示。

上面我们所说的即为静态显示。

但是如果我们采用动态扫描显示,那么就可以解决上面的问题,即可以显示多个数码管了。

上面我们所说的静态显示把数码管的COM脚接至VCC或GND端,其他的接至PX口上,这样只要PX口上输出相应的高低电平,就可以显示对应的数字或字符。

但是如果我们采用动态扫描的方法,比如显示6个数码管,硬件连接可以这样解决:a--dp还是接至P0.0--P0.7上,还有6个COM脚再接至另外口的P2.0--P2.5。

P0口作段选(控制数字字符)P2口作位选(选通哪个数码管导通)这样我们控制P0和P2口就可以控制6个数码管了。

但是,细心的朋友,会问这样的问题:P2位选,是让数码管一个一个亮的,那还是不能控制6个一起亮或灭嘛!?^_^ 想想好象是对的哦?怎么办...难道错了?嘿嘿,问你个问题?黑夜里,拿着一支烟,在你面前快速的晃动,你会发现什么样的现象?是不是原本不连续的点变成了一条看上去连续的曲线或者直线!再回过头来,仔细想想我们的数码管!原理是一样的,你可别忘了,我们的单片机可是一个计算机哦,计算机的运算速度,大家可想而知吧!这里再说说51单片机的机器周期和时钟周期等概念。

所谓机器周期就是访问一次存储器的时间。

而1个机器周期包括12个时钟周期。

如果单片机工作在12M晶体下,那么一个时钟周期为:1/12微妙。

一个机器周期12*1/12 = 1微妙。

如果晶体为6M,时钟周期和机器周期各是多少呢?在汇编中,我们还要关心,指令执行的机器周期长短不一,有1个周期、2个周期和4个周期等。

说着说着,跑了这么远了...还是回到原来的话题,如果我们把位选的P2也看作上面的“烟”一划而过,那么我们看到的是不是6个一起亮或一起灭了!^_^ 哈哈,原来如此... 记住,在任何某一时刻,有且只有一个数码管能发光。

如果你能把这句话理解了,你是真明白我的意思了!朋友,现在给你个任务,让6个数码管分别显示1、2、3、4、5、6。

51单片机C语言教程

51单片机C语言教程
实验电路的基础上增加几个 LED 组成的,也就是用 P1 口的全部引脚分别驱动一个 LED,电 路如图 4-1 所示。
新建一个 RunLED 的项目,主程序如下: #include //预处理文件里面定义了特殊寄存器的名称如 P1 口定义为 P1 void main(void) { //定义花样数据 const unsigned char design[32]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF, 0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0, 0xE7,0xDB,0xBD,0x7E,0xFF}; unsigned int a; //定义循环用的变量 unsigned char b; //在 c51 编程中因内存有限尽可能注意变量类型的使用 //尽可能使用少字节的类型,在大型的程序中很受用 do{ for (b=0; b<32; b++)
8.sfr16 16 位特殊功能寄存器
sfr16 占用两个内存单元,值域为 0~65535。sfr16 和 sfr 一样用于操作特殊功能寄存 器,所不一样的 是它用于操作占两个字节的寄存器,如定时器 T0 和 T1。
9. sbit 可录址位
sbit 同样是 单片机 c 语言 中的一种扩充数据类型,利用它能访问芯片内部的 RAM 中的可寻址
5. 位标量,它的值是一个二进制。
转义字符 \o \n \r \t \b \f \ \" \\
含义 空字符(NULL) 换行符(LF) 回车符(CR) 水平制表符(HT) 退格符(BS) 换页符(FF) 单引号 双引号 反斜杠

51单片机C语言入门方法

51单片机C语言入门方法

48 | 电子制作 2019年07月RC 是指RAM 为512,具有8K 字节系统可编程Flash 存储器。

STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。

2 最小系统板的选用AT89S51单片机最小系统,就是使单片机正常运行的最低配置,它有一系列模块组成(参见图1)。

图1 带USB 下载芯片单片机套件(1)复位系统: 当引脚9出现2个机器周期以上高电平时,单片机复位,程序从头开始运行。

(2)时钟系统:有振荡器电路产生频率等于晶振频率,这时用的是外界晶振。

也可以又外部单独输入,此时XTAL2脚接地,时钟信号由XTAL1输入。

(3)电源系统:VCC,和 GND 引脚,供电电压4--5.5V。

为了节省时间,可以网上购买散件,自己焊接,最后根据实物,测绘出具体的电路图。

我在教学中推荐同学们购买STC89C52板载USB 转串口,方便下载。

价格是二十多元,芯片座方便单片机的更换。

成可以用于下载的十六进制文件“XX.HEX”文件。

Keil C51是美国Keil Software 公司出品的51系列兼容单片机C 语言软件开发系统。

为了节省很多硬件方面的购买成本,电脑里面还得安装仿真软件PROTEUS,Proteus 软件是来自英国Labcenter Electronics 公司的EDA 工具软件,Proteus 软件除了其具有和其它EDA 工具一样的原理布图,PCB 自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器,逻辑分析仪等,您不需要别的,Proteus 为您建立了完备的电子设计开发环境。

(1小时学会C语言51单片机)C语言入门教程1

(1小时学会C语言51单片机)C语言入门教程1

我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机上接上最少的外围电路元件让单片机工作。

一般只须连接晶体、VCC、GND、RST即可,一般情况下,A T89C51的31脚须接高电平。

#include<reg51.h> //头文件定义。

或用#include<at89x51.h>其具体的区别在于:后者定义了更多的地址空间。

//在Keil安装文件夹中,找到相应的文件,比较一下便知!sbit P1_0 = P1 ^ 0; //定义管脚void main (void){while(1){P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效}}就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。

因为我们把LED的正通过电阻接至VCC。

P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。

那么这样就能达到了我们预先的要求了。

while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。

如果我们要试着点亮其他的LED,也类似上述语句。

这里就不再讲了。

点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。

我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。

假设我们有8个LED分别接在P1口的8个引脚上。

硬件连接,在P1_1--P1_7上再接7个LED即可。

例程如下:#include<reg51.h>sbit P1_0 = P1 ^ 0;sbit P1_1 = P1 ^ 1;sbit P1_2 = P1 ^ 2;sbit P1_3 = P1 ^ 3;sbit P1_4 = P1 ^ 4;sbit P1_5 = P1 ^ 5;sbit P1_6 = P1 ^ 6;sbit P1_7 = P1 ^ 7;void Delay(unsigned char a){unsigned char i;while( --a != 0){for(i = 0; i < 125; i++); //一个; 表示空语句,CPU空转。

51单片机C语言编程基础及实例

51单片机C语言编程基础及实例

基础知识:51单片机编程基础第一节:单数码管按键显示第二节:双数码管可调秒表第三节:十字路口交通灯第四节:数码管驱动第五节:键盘驱动第六节:低频频率计第七节:电子表第八节:串行口应用基础知识:51单片机编程基础单片机的外部结构:1.DIP40双列直插;2.P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)3.电源VCC(PIN40)和地线GND(PIN20);4.高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)5.内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)6.程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)7.P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)1.四个8位通用I/O端口,对应引脚P0、P1、P2和P3;2.两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)3.一个串行通信接口;(SCON,SBUF)4.一个中断控制器;(IE,IP)针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。

C语言编程基础:1.十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。

2.如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。

3.++var表示对变量var先增一;var—表示对变量后减一。

4.x |= 0x0f;表示为 x = x | 0x0f;5.TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。

6.While( 1 ); 表示无限执行该语句,即死循环。

51单片机c语言教程全集

51单片机c语言教程全集

51单片机c语言教程全集第一课建立你的第一个KeilC51项目·无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;·不懂得单片机的指令集,也能够编写完美的单片机程序;·不同函数的数据实行覆盖,有效利用片上有限的RAM空间;·提供auto、tatic、cont等存储类型和专门针对8051单片机的data、idata、pdata、某data、code等存储类型,自动为变量合理地分配地址;·C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;·中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;·程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。

C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏·提供常用的标准函数库,以供用户直接使用;·有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;·可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。

·头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;以上简单介绍了KEILC51软件,要使用KEILC51软件,必需先要安装它,这也是学习单片机编程语言所要求的第一步――建立学习环境。

首先当然是运行KEIL软件,接着按下面的步骤建立您的第一个项目:(1)点击Project菜单,选择弹出的下拉式菜单中的NewProject,如图1-2。

接着弹出一个标准Window文件对话窗口,如图1-3。

在“文件名”中输入您的第一个C程序项目名称,这里我们用“tet”。

“保存”后的文件扩展名为uv2,这是KEILuViion2项目文件扩展名,以后能直接点击此文件以打开先前做的项目。

51单片机C语言入门教程

51单片机C语言入门教程
安装好后,您是不是迫不及待的想建立自己的第一个 C 程序项目呢?下面就让我们一 起来建立一个小程序项目吧。或许您手中还没有一块实验板,甚至没有一块单片机,不过没 有关系我们可以通过 KEIL 软件仿真看到程序运行的结果。
首先当然是运行 KEIL51 软件。怎么打开?噢,天!那您要从头学电脑了。呵呵,开个 玩笑,这个问题我想读者们也不会提的了:P。运行几秒后,出现如图 1-1 的屏幕。
-5­
51 单片机 C 语言入门教程(磁动力工作室)
开发应用中快捷键的运用可以大大提高工作的效率,建议大家多多使用,还有就是对这里所 讲的操作方法举一反三用于类似的操作中。
图 1-8 调试运行程序
第二课 初步认识 51 芯片
上一课我们的第一个项目完成了,可能有懂 C 语言的朋友会说,“这和 PC 机上的 C 语言 没有多大的区别呀”。的确没有太大的区别,C 语言只是一种程序语言的统称,针对不同的 处理器相关的 C 语言都会有一些细节的改变。编写 PC 机的 C 程序时,如要对硬件编程您就 必须对硬件要有一定的认识,51 单片机编程就更是如此,因它的开发应用是不可与硬件脱 节的,所以我们先要来初步认识一下 51 苾片的结构和引脚功能。MSC51 架构的芯片种类很 多,具体特点和功能不尽相同(在以后编写的附录中会加入常用的一些 51 芯片的资料列表), 在此后的教程中就以 Atmel 公司的 AT89C51 和 AT89C2051 为中心对象来进行学习,两者是 AT89 系列的典型代表,在爱好者中使用相当的多,应用资料很多,价格便宜,是初学 51 的 首选芯片。嘿嘿,口水多多有点卖广告之嫌了。:P
{ printf ("Hello World!\n"); //显示 Hello World

手把手教你学51单片机(C语言版)

手把手教你学51单片机(C语言版)
12.3 字符数组和字 符指针

12.3.1 常量和符 号常量
A
12.3.2 字符和字 符串数组实例
B
12 指针基础与1602液晶的初步认识
1
12.4.1 1602液晶的硬件接口 介绍
2
12.4.2 1602液晶的读写时序 介绍
3
12.4.3 1602液晶的指令介绍
4
12.4.4 1602液晶简单实例
01
8.1.1 电 源
02
8.1.2 晶 振
03
8.1.3 复 位电路
8.1 单片机最小系统
0 1
8.4.1 独立按

0 2
8.4.2 矩阵按

0 3
8.4.3 独立按
键的扫描
0 4
8.4.4 按键消

0 5
8.4.5 矩阵按
键的扫描
8 函数进阶与按键
8.4 按键
10
Part One
9 步进电机与蜂鸣器
11.3 USB转串口 通信
11.4 IO口模拟 UART串口通信
11.5 UART串口 通信的基本应用
11.6 通信实例与 ASCII码
11 UART串口通 信
11.7 练习题
11.5.1 通信的三种基本类 型
11.5.3 UART串口程序
11 UART串口通信
11.5 UART串口通信的基本应用
10.1.3 字节操作修改位的 技巧
10.1.5 秒表程序
10 实例练习与经验积累
10.1 数字秒表实例
10.1.2 定时时间精准性调 整
10.1.4 数码管扫描函数算 法改进
12
Part One

手把手教你学51单片机ppt课件

手把手教你学51单片机ppt课件

C/T
定时器或计数器选择位。该位被清零时用作定时器功能(内部系统时钟), 被置1用作计数器功能。
8
TMOD——定时器模式寄存器M1/M0工作模式
M1 M0 工作模式
描述
00
01 10 11
0
兼容8048单片机的13位定时器,THn的8位和TLn的5 位组成一个13位定时器。
1
THn和TLn组成一个16位的定时器。
14
15
2 IT1
1 IE0
0 IT0
7
TMOD—定时器模式寄存器的位分配(地址0x89、不可位寻址)

7
6
符号 GATE(T1) C/T(T1)
复位值
0
0
5 M1(T1)
0
4
3
2
M0(T1) GATE(T0) C/T(T0)
0
0
0
1 M1(T0)
0
0 M0(T0)
0
TMOD——定时器模式寄存器的位描述
符号
6
TCON—定时器控制寄存器的位分配(地址0x88、可位寻址)

7
6
5
4
3
2
1
0
符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
复位 0
0
0
0
0
0
0
0

TCON——定时器控制寄存器的位描述
位 符号
描述
7 TF1 定时器1溢出标志。一旦定时器1发生溢出时硬件置1。清零有两种方式:软件清零,或
定时器:打开定时器后,定时器"存储寄存器" 的值经过一个机器周期自动加1,也就是说, 机器周期是定时器的计数周期。

51单片机C语言轻松入门

51单片机C语言轻松入门

6 51单片机的中断系统和外
06 部中断
6 51单片机的中断系统和外部中断
6.1 51 单片机的 中断系统
6.2 51 单片机的 中断处理
过程
6.2.1 51单片 机中断系统的
初始化步骤 6.2.2 51单片 机的中断服务 子程序处理流

6.3 51 单片机的 中断服务 子程序设

6.4 51 单片机的 外部中断
3.5.6 函数未定义警告 (Warning C206)
3 51单片机的Keil μVision 4软件开发环境
3.5.7 内存空间溢出 错误
A
3.5.8 函数重入警告
B
3.5.9 常见编译器错 误列表
C
3.5 Keil μVision 44的错误信 息
4 51单片机的硬件开发工具
04 和Proteus硬件仿真环境
7.3 51单片机定时计数器的工作方式
05
7.3.5 定时计
数器的中断
04
7.3.4 工作方
式3
03
7.3.3 工作方
式2
02
7.3.2 工作方
式1
01
7.3.1 工作方
式0
7.4.3 使用门控信号
7.4.4 读取定时计数 器的值
7.4.2 使用计数功能
7.4.1 使用定时功能
B A
C
D
7 51单片机的定时计数器
B
1.2.3 STC89 C52 RC
C
1.2 常见51单片机型号及其特 点
1 51单片机基础
1.3.1 中央处 理器
1.3.2 存储器
1.3.4 时钟模 块
1.3.3 外部引 脚

51单片机C语言教程

51单片机C语言教程

本文由63250272贡献 doc文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

教 第一章 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 程 目 录 1 硬件基础 1.模电部分 模电部分 电平特性 .…….…………………………………………………..88 电阻 ………………………………………………………………..88 电容 ………………………………………………………………..77 二极管 ……………………………………………………………..66 三极管 ……………………………………………………………..76 数码管 ……………………………………………………………..66 稳压管 ……………………………………………………………..77 场效应管 …………………………………………………………..88 光耦 ………………………………………………………………88 蜂鸣器 ……………………………………………………………..88 继电器 ……………………………………………………………..88 自恢复保险 ………………………………………………………..88 瞬态电压抑制器 …………………………………………………..88 晶闸管(可控硅) …………………………………………………….88 红外发送,接收头 ………………………………………………..88 晶振 ………………………………………………………………..88 按键,排针,端子…………………………………………….……….88 常用集成芯片 ……………………………………………………..88 2.数电部分 数电部分 1.2.1 二进制逻辑运算……………………………………………………….88 1.2.2 反相器 ……………………………………………………………..88 1.2.3 与非门 ……………………………………………………………..88 1.2.4 或非门 ……………………………………………………………..88 1.2.5 译码器 ……………………………………………………………..88 1.2.6 编码器 ……………………………………………………………..88 1.2.7 锁存器 ……………………………………………………………..88 1.2.8 触发器 ………………………………….………………………….99 1.2.9 数据选择器 ………………………………………………………..77 1.2.10 多谐振荡器 ………………………………………………………..56 1.2.11 A/D,D/A 转换器 ………………………………………..…………..88 3.单片机概述 单片机概述 什么是单片机 …………………………………………………….88 单片机的功能 …………………………………………………….88 单片机的标号信息及封装 ……………………….………………88 51 单片机硬件架构 ………………………………………………88 51 单片机外部引脚介绍 ..…………………………….………….88 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 第二章 软件安装及使用教程 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 Keil 软件安装过程 ……………………………………….……….88 Keil 工程的建立 …………………………………………………….88 Keil 常用按钮介绍 …………………………………………………88 下载软件 PROGISP 安装及配置 …………………………………87 安装下载器的 USB 驱动 …………………………………………88 点亮第一个发光二极管 …………………………………………..88 Keil 软件仿真调试 ………………………………………………..88 Proteus 仿真软件安装及使用 ……………………………….……88 2 第三章 3.1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 单片机常用 C 语言基础 二进制与十六进制 ……………………………………………….88 数据类型,运算符与表达式 ……………………….……………88 while,do……while 语句 ……………………….………………….78 for 语句 ………………………………………………………………55 if….else…语句 ………………………………………………………77 switch…case…语句 ………………………………………………99 break,continue 语句 …………………………………………….88 goto 语句 ………………………………………………………….66 宏定义,数组及结构体 ………………………………………….77 函数定义及调用 ……………….…………………………………10 指针定义及应用 ………………………………………….………34 16 第四章 基础实验教程 16 4.1 实验一:点亮 LED …………………..……………………………16 4.2 实验二:流水灯 …………………..……………………………..19 4.3 实验三:数码管静态显示………………………………………..22 4.4 实验四:数码管动态显示…………………………………..……24 4.5 实验五:独立按键检测 …………………………………..……..29 4.6 实验六:矩阵键盘检测 ………………………………….…….30 4.7 实验七:基于计数器按键检测 ………………………….…….34 4.8 实验八:计数器实验 ……………………………………………38 4.9 实验九:定时器数字时钟(数码管显示) ……….…………..…40 4.10 实验十:外部中断实验 ……………………………………………44 4.11 实验十一:UART 串行通信实验 …………………………..…46 4.12 实验十二:存储实验(AT24C02) ……………………………….…52 4.13 实验十三:蜂鸣器奏曲实验………………………………………..…65 4.14 实验十四:18B20 温度传感器测温………………………..…………72 4.15 实验十五:红外遥控解码实验……………………………..…………83 4.16 实验十六:AD 转换实验…………………………………..…..…..90 4.17 实验十七:红外对管实验………………………………………….97 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 实验十八:液晶 LCD1602 驱动实验………………………..….…..98 实验十九: 液晶 LCD12864 驱动实验…………………..………..104 实验二十:8*8 点阵 LED 显示……………………………….……111 实验二十一:DS1302 时钟芯片实验(基于数码显示 ..…………….113 实验二十二:继电器选通实验………………………………………..120 实验二十三:步进电机控制实验…………………………………..121 实验二十四:PWM 控制………………………………………………124 实验二十五:多机通信(基于 RS485)…………………………………128 第五章 高级实验教程 …………………………………………………..2 5.1 实验一:数字时钟 5.2 实验二:电子音乐 ……………………………………….……………19 5.3 实验三:步进马达控制 ………………………………….………….26 5.4 实验四:D/A 数模转换 ……………………………………….….…33 5.5 实验五:RS232 通信串口数据传输 ……………………….…….…37 5.6 实验六: I2C 总线控制实验 ………………………………….…….40 5.7 实验七: 气压测量系统实验 ………………………………………..46 5.8 实验八: 短距离无线数据传输系统 ………………………………..50 5.9 实验九: GPS 全球定位系统实验 ……………………….…………………60 3 第六章 电子设计大赛 1.直流稳压电源专题 直流稳压电源专题 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 整理电路 ..……………………………………………………….88 滤波电路 ……………………………………………………………88 集成稳压电路 ………………………………………………………88 ldo 稳压电路 …………………………………………………….88 DC-DC 开关电源 ………………………………………………..88 2.基础,高级运放专题 基础, 基础 6.2.1 运放概述 ………………………………………………………..88 6.2.2 同相放大器 ……………………………………………………..88 6.2.3 反相放大器 ……………………………………………………..88 6.2.4 电压跟随器………………………………………………………88 6.2.5 加法器……………………………………………………………88 6.2.6 差分放大器 ……………………………………………………..88 6.2.7 微分器 …………………………………………………………..88 6.2.8 积分器 ………………………………………………………..…88 6.2.9 简易低通滤波器 ………………………………………………..88 6.2.10 "电流-电压" 转换电路 …………………………………………88 6.2.11 全波整流电路 …………………………………………………..88 6.2.12 正弦波发生器 …………………………………………………..88 4 6.2.13 三角波发生器 …………………………………………………..88 6.2.14 高频放大电路 …………………………………………………..88 6.2.15 音频放大电路 …………………………………………………..88 3.传感器专题 传感器专题 6.3.1 0 温度传感器 …………………………………………..……………88 6.3.2 0 湿度传感器 …………………………………………………….88 6.3.3 人体传感器 …………………………………………………….88 6.3.4 酒精传感器 …………………………………………………….88 6.3.5 烟雾传感器 …………………………………………………….88 6.3.6 霍尔传感器 …………………………………………………….88 6.3.7 0 压力传感器 …………………………………………………….88 6.3.8 角度传感器 …………………………………………………….88 6.3.9 光电传感器 …………………………………………………….88 6.3.10 0 超声波传感器 ………………………………………………….88 4.电机专题 电机专题 6.4.1 6.4.2 6.4.3 直流电机原理与应用…………………………………………..88 步进电机原理与应用 …………………………………………88 舵机原理与应用 ………………………………………………88 5.实战设计 实战设计 6.5.1 万年历(含日程管理) ……………………………………….…..88 第七章 项目开发设计 7.1 7.2 7.3 7.4 项目开发概述 …………………………………………….……..88 智能抄表系统 ………………………………………………………88 水控机 ………………………………………………………………88 公交车自动报站系统 ………………………………………………88 3 第八章 拓展技术 8-1 8-2 8-3 8-4 高端技术有哪些 ……………………………………………………88 如何选择一个技术方向发展 ………………………………………..88 各个技术方向的就业前景 …………………………………………..88 各个技术方向的产品前景 …………………………………………..88 5 附录 A 单片机实验板简介 ST-51C 实验板硬件资源…………………………………………………..88 ST-51C 实验板配套资料…………………………………………………..88 ST-51C 实验板详细视频教程……………………………………………..88 5 ST-51C 实验板原理图……………………………………………………..88 ST-51C 实验板扩展 AVR 核心板 ..………………………………………88 参考文献 5 1本文由od1987贡献 pdf文档可能在WAP端浏览体验不佳。

手把手教你学51单片机(C语言版)

手把手教你学51单片机(C语言版)
10.1 数字秒表实例
10.1.2 定时时间精准性调 整
10.1.4 数码管扫描函数算 法改进
12
Part One
11 UART串口通信
11 UART串口通信
11.1 串行通信的 初步认识
11.2 RS-232通 信接口
11.3 USB转串口 通信
11.4 IO口模拟 UART串口通信
11.5 UART串口 通信的基本应用
A
C
E
13.2 1602整屏 移动
13.4 计算器实 例
13.6 练习题
13.1 通信时序 解析
13.3 多.c文件 的初步认识
B
13.5 串口通信机制 和实用的串口例程
D
F
15
Part One
14 I^2C总线与E^2PROM
14 I^2C总线与E^2PROM
14.1 I2C时 序初步 认识
14.2 I2C寻 址模式
18 RS-485通信与Modbus协议
01
18.1 RS485通信
02
18.2 Modbus 通信协议介绍
18.2.1 Modbus协议 特点 18.2.2 RTU协议帧数 据
03
18.3 Modbus 多机通信例程
04
18.4 练习题
20
Part One
19 实践项目开发——多功能电子钟
19 实践项目开发——多功能电子钟
1.6 答读者问
03
Part One
2 点亮你的LED
2 点亮你的LED
2.1 单片机的 内部资源
2.2 单片机最 小系统
2.3 LED小灯
2.6 练习题
2.5 程序下载

C语言的51单片机基础学习教程

C语言的51单片机基础学习教程

其他语句 ;
}
2.2 数据 类型
1.C-51 数据的存 储类型
例 :数据 类型
变量名
char
miao;
bit
flag;
unsigned char code table[]={};
int
led;
注意 :变 量名不 能用 C 语言 中的关键 字表 示。
2.C- 51 的数据 类型扩 充定 义
sfr: 特殊 功能 寄 存器 声明
2
误。
读锁存器
地址 /数据 1
控制 C &
内部总线 写锁存器
D
Q
P0.X
CL 锁存器
_ Q
1 0 MUX
VCC
T1 P0.X 引脚
T2
读引脚 读锁存器
图 1.5 P0 口作为 普通 I/O 口( 输入口 )
地址 /数据
控制 C
VCC
&
1
T1
内部总线
写锁存器
D
Q
P0.X CL 锁存器
_ Q
1 0 MUX
图 1.10 P3 口的 内部 结构图 作为 通用 I/O 口与 P1 口类似 ---- 准双向 口 (W=1) P1 口 是 80C51的唯 一的单 功能 口,仅能 用作数据输入输出口,它由一个输出锁存器、三个输入缓冲器、一 个与 非门和输出驱动电路组成。 同 P2 口相同 ,内部设 有上拉 电阻( 约 30KΩ)。 P3 第二功能各 引脚 功能 定义:
读锁存器
R
内部总线 写锁存器
D
Q
CL
P1.X 锁存器
_ Q
P1.X引脚 T
读引脚
图 1.9 P1 口的 内部 结构图 1.5 P3 口的 内部 结构

51单片机C 语言编第一课

51单片机C 语言编第一课


• •
如何建立一个新的KEIL 工程?
1、双击 出现以下界面。

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的 特点,并具备汇编语言的功能,可以直接实现对系统硬件的控制, 代码的执行效率也相对高的。C语言有功能丰富的库函数、运算 速度快、编译效率高、有良好的可移植性,同时C语言是一种结 构化程序设计语言,编程思路更接近人们的思维逻辑,用C语言 来编写目标系统软件,会大大缩短开发周期,且明显地增加软件 的可读性,便于改进和扩充,从而研制出规模更大、性能更完备 的系统。相对于汇编即难度较大,尤其是大型复杂的程序,程序 的可读性更差。
51单片机C 语言编程入门
深圳职业训练学校
为何要学单片机C语言?
• • 单片机开发编程一般采用汇编和C语言 ,至于学习那种编程语言呢? 先来了解一下两者的特点: 汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接 近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但 是不同的CPU,其汇编语言可能有所差异,所以不易移植。片机开发与应 用的必然趋势。所以建议在了解汇单片机汇编语言的基础上,重 点学习掌握单片机的C语言编程 。
第一课 如何建立KEIL工程?
• 要使用 Keil 软件,首先要正确安装Keil 软件,该软件可以采 用资料光盘上的KEIL中文版本。安装时只要双击该安装文件, 电脑会自动完成安装,并在桌面上自动生成快捷方式。安装完成 后,可以将光盘资料上的KEIL 软件实验仿真板文件夹中的 Ledkey.dll 和DPJ.DLL文件复制到Keil 安装目录下的C51\BIN 文件夹下,这样可使Keil 软件增加在计算机上模拟LED、数码管 以及按键等功能。(安装KEILL软件视频)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。




C-51的数据类型扩充定义
sfr:特殊功能寄存器声明 sfr16:sfr的16位数据声明 sbit:特殊功能位声明 bit:位变量声明 例:sfr SCON = 0X98; sfr16 T2 = 0xCC; sbit OV = PSW^2;

C-51的包含的头文件
通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h reg52.h (定义特殊功能寄存器和位寄存器); math.h (定义常用数学运算);
总线(BUS)是计算机各部件之间传送信息 的公共通道。微机中有内部总线和外部总 线两类。内部总线是CPU内部之间的连线。 外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和 控制总线 CBControl Bus)。
80C51的引脚封装
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST/VPD P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 VSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VPP ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 RST P3.0/RXD P3.1/TXD XTAL2 XTAL1 P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 GND 1 2 3 4 5 6 7 8 9 10 20 19 18 17 16 15 14 13 12 11 VCC P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1/AIN1 P1.0/AIN0 P3.7
怎么开始学习?
实践第一。 补充必要的理论知识,即缺什么补什么。 做工程项目积累经验。(可在网络上搜集 题目,也可自己有什么想法大胆的去试验)

预备知识
电平特性
2进制与16进制的表示及转换
二进制数的逻辑运算 8051单片机介绍 C51基础知识
关于电平特性


数字电路中只有两种电平:高和低 (本课程中)定义单片机为TTL电平: 高 +5V 低 0V RS232电平:计算机的串口 高 -12V 低+12V 所以计算机与单片机之间通讯时需要加电平转 换芯片max232(实验板上左下角)。
单板机的I/O设备简单,软件资源 少,使用不方便。早期主要用于 微型计算机原理的教学及简单的 测控系统,现在已很少使用。
◆单片机 在一片集成电路芯片上集成微处理器、存储器、 I/O接口电路,从而构成了单芯片微型计算机,即 单片机。 Intel公司推出了MCS-51系列单片机: 集成 8位CPU、4K字节ROM、128字节RAM、4 个8位并口、1个全双工串行口、2个16位定时/计 数器。寻址范围64K,并有控制功能较强的布尔处 理器。
C-51的特点

C语言作为一种非常方便的语言而得到广泛的支持,很多 硬件开发都用C语言编程,如:各种单片机、DSP、 ARM等. C语言程序本身不依赖于机器硬件系统,基本上不作修改 就可将程序从不同的单片机中移植过来。 C提供了很多数学函数并支持浮点运算,开发效率高,故 可缩短开发时间,增加程序可读性和可维护性。




CPU:由运算和控制逻辑组成,同时还包括中断 系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间 结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可 用作输出; T/C:两个定时/记数器,既可以工作在定时模式, 也可以工作在记数模式;
单片机主要掌握以下几点
最小系统能够运行起来的必要条件。 1.电源 2.晶振3.复位电路 对单片机任意IO口的随意操作 1.输出控制电平高低2.输出检测电平高低。 定时器:重点掌握最常用的方式2 中断:外部中断、定时器中断、串口中断 串口通信:单片机之间、单片机与计算机间

Main 函数
二进制
数字电路中的两种电平特性决定了它 0 0 6 110 1 1 7 111 2 10 8 1000 3 11 9 1001 4 100 10 1010 5 101 11 1011

十六进制
是二进制的简短表示形式。 十进制中的0-15分别表示为十六进制的0、1、2、 3、4、5、6、7、8、9、A、B、C、D、E、F 熟练掌握二进制与十六进制之间的转换。 规律:一般把四个二进制数放在一起转换成一个 十六进制数,转换时先把二进制数转换成十进制 数,再把十进制数转换成十六进制数。
第三讲

Keil软件使用及流水灯设计
简单延时程序 子程序调用 带参数子程序设计 C51库函数的方便调用 如何驱动蜂鸣器 如何驱动继电器

While语句

While (表达式) {语句(内部也可为空)} 特点:先判断表达式,后执行语句。 原则:若表达式不是0,即为真,那么执 行语句。否则跳出while 语句。





C-51的运算符 与C语言基本相同: + - * / (加 减 乘 除) > >= < <= (大于 大于等于 小于 小于等于) == != (测试等于 测试不等于) && || !
>> << &| ^~

(逻辑与
逻辑或位或) (按位异或 按位取反)
C-51的基本语句

与标准C语言基本相同: 选择语言 循环语言 循环语言 多分支选择语言 循环语言
if while for

switch/case do-while
中断服务程序

函数名()interrupt n using m
{
函数内部实现 ….
}
I/O口定义
sbit beep=P2^3;

2. “或”运算
“或”运算是实现“只要其中之一有, 就有” 这种逻辑关系的一种运算, 其运算符为“+”。 “或”运算规则如下: 0+0=0, 0+1=1+0=1, 1+1=1

3. “非”运算
“非”运算是实现“求反”这种逻辑的一种运 算,如变量A的“非”运算记作 其运算规则如下: 。

如:0001B -> 1 -> 1H B表示为二进制,H为十六进制 1001B -> 9 -> 9H 1010B -> 10 -> AH 0010 1100 -> 44 -> 2CH
二进制数的逻辑运算
1. “与”运算 “与”运算是实现“必须都有, 否则 就没有”这种逻辑关系的一种运算。 运算 符为“· ”, 其运算规则如下: 0· 0=0, 0· 0=0, 1=1· 1· 1=1
For语句及简单延时语句

For (表达式1;表达式2;表达式3) { 语句(内部可为空)} 执行过程: 1.求解一次表达式1. 2.求解表达式2,若其值为真(非0 即为真), 则执行for中语句。然后执行第3步。否则结束for 语句,直接跳出,不再执行第3步。 3.求解表达式3. 4.跳到第2步重复执行。

格式:void main() 特点:无返回值,无参。 任何一个C程序有且仅有一个main函数,它是整 个程序开始执行的入口。 例:void main() { 总程序从这里开始执行; 其他语句; }
C语言中的基本数据类型
类型 符号 关键字 (signed) int (signed) short (signed) long 无 unsigned int unsigned short int unsigned long int float double char unsigned char 数的表示范围 所占位数 16 -32768~32767 16 -32768~32767 32 16 16 32 32 -2147483648~2147483647 0~65535
80C51/89C51
注:类似的还有Philips公司的 87LPC64,20引脚 8XC748/750/(751),24引脚 8X749(752),28引脚 8XC754,28引脚 等等
89C2051
P3第二功能各引脚功能定义:





P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制
单片机能做什么

凡是与控制或简单计算有关的电子设备都 可以用单片机来实现,再根据具体实际情 况选择不同性能的单片机,如: atmel,stc,pic,avr,凌阳,80C51,arm等

智能仪器仪表:数字示波器、数字信号源、数字万 用表、感应电流表等。 消费类电子产品:洗衣机、电冰箱、空调机、电视 机、微波炉、手机、IC卡、汽车电子设备等。 通讯方面:调制解调器、程控交换技术、手机、小 灵通等。 武器装备:飞机、军舰、坦克、导弹、航天飞机、 鱼雷制导、智能武器等。 等等…..
五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器) 的串行I/O口,用于实现单片机之间或单片 机与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和 微调电容需要外接。最高振荡频率取决于 单片机型号及性能。
相关文档
最新文档