搜索

  【干货满满】欧司朗高品质系列产品解决方案免费下载
  OFweek 2017“维科杯”中国锂电行业年度评选
  OFweek 2017(第二届)中国医疗科技大会
  OFweek2017中国高科技产业大会

查看: 7079|回复: 63

51单片机C语言编程入门(中科大)   [复制链接]

Rank: 4

贡献值
172
金币
776
帖子
168
发表于 2012-3-21 09:59:01 |显示全部楼层
51单片机C语言编程入门(中科大)

  目 录

  §1 前言………………………………………………………………………………………… 1

  §2 单片机简介………………………………………………………………………………… 2

  2.1 数字电路简介…………………………………………………………………………… 2

  2.2 MCS-51单片机简介……………………………………………………………………… 2

  2.3 Easy 51 Kit Pro简介………………………………………………………………… 5

  2.4 Easy 51 Kit Pro电路功能分析……………………………………………………… 5

  §3 MCS-51单片机的C语言编程……………………………………………………………… 8

  3.1 汇编语言………………………………………………………………………………… 8

  3.2 建立你的第一个C项目………………………………………………………………… 8

  3.3 生成hex文件…………………………………………………………………………… 12

  3.4 Keil C语言……………………………………………………………………………… 14

  3.5 单片机I/O……………………………………………………………………………… 18

  3.6 中断……………………………………………………………………………………… 25

  3.7 定时器/计数器………………………………………………………………………… 27

  3.8 定时器的应用举例……………………………………………………………………… 29

  3.9 外部中断………………………………………………………………………………… 34

  3.10 串行通信……………………………………………………………………………… 38

  3.11 定时器2……………………………………………………………………………… 43

  3.12 看门狗………………………………………………………………………………… 47

  3.13 空闲模式和掉电模式………………………………………………………………… 50

  §4 MCS-51单片机C语言编程应用进阶…………………………………………………… 51

  4.1 扫描式键盘……………………………………………………………………………… 51

  4.2 EEPROM芯片AT93C46的读写…………………………………………………………… 55

  4.3 Keil C的高级使用……………………………………………………………………… 63

  §5 编写高质量的单片机C程序……………………………………………………………… 64

  5.1 文件结构………………………………………………………………………………… 64

  5.2 程序的版式……………………………………………………………………………… 66

  5.3 单片机程序命名规则与变量选择……………………………………………………… 70

  5.4 表达式和基本语句……………………………………………………………………… 73

  5.5 函数设计………………………………………………………………………………… 77

  5.6 单片机程序框架………………………………………………………………………… 79

  附图:Easy 51 Kit Pro电路图(最小系统板)…………………………………………… 80

  附图:Easy 51 Kit Pro电路图(学习板)………………………………………………… 81



  §1 前言

  什么是单片机,目前还没有一个确切的定义。普通认为单片机是将CPU、RAM、ROM、定时器/计数器以及输入输出(I/O)接口电路等计算机主要部件集成在一块芯片上,这样所组成的芯片级微型计算机称为单片微型计算机(Single Chip Microcomputer)。简称为单片微机或单片机。利用单片机程序,可以实现对硬件系统的小型化的智能控制。由于单片机的硬件结构与指令系统都是按工业控制要求设计的,常用于工业的检测、控制装置中,因而也称为微控制器(Micro-Controller)或嵌入式控制器(Embedded-Controller)。单片机的应用十分广泛,我们将以Easy 51 Kit Pro单片机学习板为基础,学习51单片机的入门知识。 本学习资料面向掌握基本电路知识和基础C语言编程的单片机初学者。 为使读者能迅速上手,本资料并不深入介绍单片机的内部体系结构和指令系统,而是从读者较熟悉的高级语言开始使读者掌握单片机的C语言编程。通过本资料的大量程序例子,读者应当可以在较短的时间内熟悉单片机的入门编程以及单片机基本外围电路的连接, 从而具备基本的单片机开

  发能力。然而,本资料的局限性也正在于此,当读者需要更深入地开发单片机或其它控制器时,可能需要进一步了解其内部体系结构和指令系统,这时读者就应查阅其它资料了。同时,本学习资料还致力于引导读者编写高质量的单片机C语言程序。尽管单片机程序的规模有限,但高质量的单片机程序除了可以优化运行效率外,对程序的开发速度和可维护性也具有重要的影响。

  §2 单片机简介

  2.1 数字电路简介 在一个控制系统中,单片机是电路的一部分,单片机中的程序是针对其所在的电路编写的。因此,要对单片机编程并实现一定的功能,必须了解整个系统的电路图。单片机编程是针对某个特定的电路进行的,这一点和普通的编程不一样。编程时很可能要经常参照电路图。  与单片机直接相关的电路大都是数字电路。数字电路各部分的功能十分明确,因此相对比较

  容易掌握。  简单地说,数字电路就是只有“0”和“1”两种信号的电路。判别信号究竟是“0”还是“1”是通过电压的大小(常称作“电平” )来判断的。不同的数字器件的电平判断标准是不一样的。常用的数字器件以高电平(超过某一阈值的电平)作为逻辑“1” ,以低电平(低于某一阈值的电平)作为逻辑“0”。其中高电平阈值大于低电平阈值,处于高电平阈值与低电平阈值之间的电压是无效的。高电平阈值与低电平阈值的具体值与数字器件的供电电压有关,如AT89S51单片机的高电平阈值为(0.2Vcc+0.9)V,低电平阈值为(0.2Vcc-0.1)V,其中Vcc为单片机的供电电压。 早年常用的数字器件的额定供电电压为5V, 现在3.3V、 1.8V 等电压的数字器件已经大量使用了。在 Easy 51 Kit Pro中,我们仍使用5V供电的单片机。另外,还有一种RS-232电平标准,以-12V~-5V作为逻辑“1” ,以5V~12V作为逻辑“0” 。电脑上的串口都符合RS-232标准。还有一个“地”的概念。在电路中“地”并不是通常意义中的地,而是指电路中的一点, 这一点的电压被人为地规定为0V。2.2 MCS-51单片机简介

  目前生产单片机产品的公司非常多,当中较有影响力的有intel公司推出的MCS-51系 列等。很多公司的产品都是与MCS-51架构兼容(MCS-51 compatible)的。本资料中采用的

  atmel公司的AT89C51/52或AT89S51/52单片机,就是兼容MCS-51架构的单片机。Atmel公司的AT89C51(以后简称“C51”)、AT89C52(以后简称“C52”)、AT89C2051
  (以后简称“C2051”)以及C51、C52的换代产品AT89S51(以后简称“S51”)、AT89S52 (以后简称“S52”)容易上手、价格低廉(不超过10元/片)、资料丰富,是初学者入门时广泛采用的单片机。

  C51拥有4096字节(1字节=8位)的片内程序存储器、128字节的RAM、32个I/O口、两个定时器、6个中断源、一个串口等。C52、C2051的资源与C51差别不大,其中C52的片内程序存储器为8192字节、RAM为256节、定时器有3个,其它与C51一样; C2051的片内程序存储器为2048字节、I/O口只有15个,另比C51多了一个模拟比较器,工作电压范围比较宽,为2.7V~6V(C51/52、S51/52为4.5~5.5V),其它与C51一样。I/O、定时器、中断、串口等资源的用法在后面有详细介绍。这里只对程序存储器与RAM作一下说明。单片机程序代码经过编译(C程序)或汇编(汇编程序)后,要把编译或汇编得到的代码文件(一般来说编译得到hex格式文件、汇编得到bin格式文件)烧写到单片机内,存放这个程序的地方就是程序存储器。显而易见,单片机的程序存储器越大,我们就可以把越大、越复杂的程序放进去。如果我们编写的程序太大,那么单片机的程序存储器就有可能会放不下这个程序。这时,解决办法就只有精简代码、外接程序存储器(前提是所用的单片机支持使用外部程序存储器)或采用程序存储器容量更大的单片机。RAM是单片机程序运行时存放变量的地方,常量也可以放在RAM中。C51中的RAM大小为128字节,这就是说单片机程序中最多只能同时存在128个unsigned char型的变量或64个unsigned int型的变量(在Keil环境中,int型变量的长度为16位,这与VC的32位不一样)或者是相应的

51单片机C语言编程入门(中科大) - OFweek论坛 - 1.jpg

51单片机C语言编程入门(中科大) - OFweek论坛 - 2.jpg



51单片机C语言编程入门(中科大).pdf (2.3 MB, 下载次数: 59, 售价: 5 金币)



举报

Rank: 1

贡献值
12
金币
2
帖子
13
发表于 2012-5-10 20:38:04 |显示全部楼层
确实不错,顶!

Rank: 1

贡献值
12
金币
2
帖子
13
发表于 2012-5-10 20:39:18 |显示全部楼层
不错,顶!

Rank: 1

贡献值
12
金币
2
帖子
13
发表于 2012-5-13 14:44:18 |显示全部楼层
不错,入门的好教材。顶!

Rank: 1

贡献值
7
金币
5
帖子
3
发表于 2012-5-15 14:36:20 |显示全部楼层
很好

Rank: 3Rank: 3

贡献值
201
金币
193
帖子
60
发表于 2012-6-11 18:58:39 |显示全部楼层
灌灌,果断下了

Rank: 1

贡献值
9
金币
18
帖子
25
发表于 2012-6-13 14:21:00 |显示全部楼层
很好的入门教材,值得收藏。

Rank: 3Rank: 3

贡献值
51
金币
138
帖子
61
发表于 2012-7-14 16:43:31 |显示全部楼层
嘿嘿~奸笑中!












秸秆煤炭成型机 http://www.hzkljt.com/

Rank: 1

贡献值
8
金币
11
帖子
8
发表于 2012-7-19 22:50:25 |显示全部楼层
xiexie分享啊,学习了来了,,,,

Rank: 1

贡献值
22
金币
8
帖子
14
发表于 2012-8-6 09:11:35 |显示全部楼层
谢谢了,下来看看
您需要登录后才可以回帖 登录 | 注册

免责声明|Archiver| OFweek论坛 ( 粤ICP备06087881号-1 )   

GMT+8, 2017-11-18 16:07 , Processed in 0.948843 second(s), 41 queries .

Powered by OFweek中国高科技行业门户