ImageVerifierCode 换一换
格式:DOC , 页数:37 ,大小:520.58KB ,
资源ID:4048039      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-4048039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机C语言入门.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

单片机C语言入门.doc

1、单片机 C 语言入门 图书导读 【阚平收集】联系 QQ277152571当前章节:目录13.1 简单的跑马灯设计13.2 矩形波发生器13.3 基于 MCS-51 单片机的四路抢答器13.4 I2C 总线数据存储器在单片机系统中的用法13.5 双端口 RAM 在单片机系统中的使用13.6 小结【阚平制作】特别推荐 联系 QQ:277152571【 空间地址】http:/ ? 1998 - 2009 Tencent. All Rights Reserved 腾讯公司 版权所有第 1 章 MCS-51 单片机概述 . 11.1 MCS-51 单片机结构 . 11.1.1 中央处理器(CPU ) .

2、 21.1.2 存储器结构 . 61.1.3 定时器/计数器 . 91.1.4 并行端口 . 91.1.5 串行端口 . 111.1.6 中断系统 . 111.1.7 总线 . 121.1.8 8051 的芯片引脚 . 121.2 MCS-51 单片机的指令系统 . 141.2.1 8051 的指令格式 . 141.2.2 8051 的寻址方式 . 141.2.3 8051 的指令说明 . 181.3 MCS-51 单片机的伪指令 . 321.3.1 ORG 伪指令 . 321.3.2 END 伪指令 . 321.3.3 EQU (或 =)伪指令 . 321.3.4 DATA 伪指令 . 33

3、1.3.5 DB 伪指令 . 331.3.6 DW 伪指令 . 331.3.7 DS 伪指令 . 341.3.8 BIT 伪指令 . 341.4 MCS-51 汇编语言编程实例 . 341.5 MCS-51 单片机 C 语言简介 . 361.5.1 用 C 语言开发单片机的优势 . 361.5.2 C51 程序的例子 . 371.5.3 C51 程序在 Keil C51 下的编译、仿真 . 381.6 小结 . 42第 2 章 C51 语言基本语法 . 432.1 C51 的标识符和关键字 . 432.2 C51 的运算量 . 452.2.1 常量 . 452.2.2 变量 . 462.3 C

4、51 的数据类型 . 462.3.1 字符型(char ) . 472.3.2 整型(char ) . 502.3.3 浮点型(float ) . 522.3.4 指针型 . 532.3.5 位变量(bit ) . 532.3.6 特殊功能寄存器(sfr) . 532.3.7 16 位特殊功能寄存器(sfr16) . 542.3.8 可寻址位(sbit) . 542.4 C51 的存储种类和存储器类型 . 552.4.1 存储种类 . 552.4.2 存储器类型 . 592.4.3 存储模式 . 602.5 C51 运算符和表达式 . 612.5.1 算术运算符和算术表达式 . 612.5.2

5、 赋值运算符和赋值表达式 . 622.5.3 增量、减量运算符与增量、减量表达式 . 632.5.4 关系运算符与关系表达式 . 642.5.5 逻辑运算符与逻辑表达式 . 652.5.6 位运算符与位运算表达式 . 672.5.7 复合赋值运算符与复合赋值表达式 . 692.5.8 逗号运算符与逗号表达式 . 692.5.9 条件运算符与条件表达式 . 702.5.10 指针与地址运算符 . 702.5.11 C51 运算符的优先级 . 712.6 小结 . 72第 3 章 C51 语句 . 733.1 C51 控制结构概述 . 733.2 C51 语句概述 . 743.3 说明语句 . 7

6、53.4 表达式语句 . 763.5 空语句 . 763.6 控制语句 . 773.6.1 条件分支语句 . 773.6.2 循环语句 . 843.6.3 转移语句 . 913.7 小结 . 94第 4 章 C51 函数 . 954.1 函数的定义 . 964.1.1 无参数函数的定义方法 . 964.1.2 有参数函数的定义方法 . 974.1.3 空函数的定义方法 . 974.2 函数参数和返回值 . 984.2.1 形式参数和实际参数 . 984.2.2 函数的返回值 . 994.3 函数的原型声明 . 994.4 函数的调用 . 1014.4.1 函数调用的一般形式 . 1014.4.

7、2 函数调用的方式 . 1014.5 函数的递归调用 . 1024.6 局部变量与全局变量 . 1044.6.1 局部变量 . 1044.6.2 局部静态变量 . 1054.6.3 全局变量 . 1064.6.4 全局静态变量 . 1074.7 内部函数与外部函数 . 1084.7.1 内部函数 . 1084.7.2 外部函数 . 1094.8 中断服务函数 . 1104.9 库函数 . 1124.9.1 标准输入输出函数 . 1134.9.2 其他常用库函数 . 1164.10 小结 . 116第 5 章 数组 . 1175.1 一维数组 . 1175.1.1 一维数组的定义和初始化 . 1

8、175.1.2 一维数组元素的引用 . 1195.1.3 一维数组应用实例 . 1205.2 二维数组 . 1225.2.1 二维数组的定义和初始化 . 1225.2.2 二维数组的引用 . 1245.2.3 二维数组应用实例 . 1255.3 字符数组 . 1295.3.1 字符数组的定义和初始化 . 1295.3.2 字符数组元素的引用 . 1305.4 小结 . 130第 6 章 指针 . 1316.1 指针变量的定义及其运算 . 1316.1.1 地址和指针的定义 . 1316.1.2 变量的指针和指针变量 . 1326.1.3 指针变量的定义和初始化 . 1336.1.4 指针变量的

9、引用 . 1336.1.5 指针变量的运算 . 1366.1.6 指针变量作为函数的参数 . 1376.2 数组与指针 . 1406.2.1 指向数组元素的指针变量 . 1406.2.2 通过指针变量引用数组元素 . 1416.2.3 数组名作为函数参数 . 1436.3 指向函数的指针变量 . 1446.3.1 指向函数的指针变量的定义 . 1446.3.2 用函数指针变量调用函数 . 1456.3.3 用指向函数的指针作函数参数 . 1466.4 指针数组 . 1476.5 C51 的指针类型 . 1496.5.1 通用指针变量 . 1496.5.2 指定存储区的指针变量 . 1506.6

10、 函数指针实例 . 1506.7 小结 . 152第 7 章 结构体与联合体 . 1537.1 结构体 . 1537.1.1 结构体类型的定义 . 1537.1.2 结构体变量的定义 . 1547.1.3 结构体变量的引用和初始化 . 1557.2 结构体数组与指向结构体的指针变量 . 1577.2.1 结构体数组的定义 . 1577.2.2 结构体数组的初始化 . 1577.2.3 结构体数组的应用实例 . 1587.2.4 结构体指针变量 . 1597.3 联合体 . 1607.3.1 联合体变量的定义 . 1607.3.2 联合体变量的引用方式 . 1617.3.3 联合体变量的特点 .

11、 1627.3.4 联合体变量的应用实例 . 1627.4 枚举类型 . 1637.5 typedef 语句 . 1667.6 小结 . 168第 8 章 预处理 . 1698.1 宏定义 . 1698.1.1 不带参数的宏定义 . 1698.1.2 带参数的宏定义 . 1718.2 文件包含 . 1738.3 条件编译 . 1748.4 小结 . 177第 9 章 Keil mVision 集成开发环境 . 1789.1 Keil Vision 概述 . 1789.1.1 Keil Vision 简介 . 1789.1.2 Keil Vision 的安装 . 1809.2 Keil Visi

12、on 的使用 . 1819.2.1 Keil Vision 的菜单条、工具条和快捷键 . 1819.2.2 开发工具选项 . 1869.3 Keil Vision 调试技巧 . 1929.3.1 程序复位 . 1939.3.2 设置和删除断点的方法 . 1949.3.3 查看和修改寄存器的内容 . 1949.3.4 观察和修改变量 . 1959.3.5 观察和修改存储器区域 . 1969.3.6 并行口和串行口的使用方法 . 1979.3.7 定时器/计数器的使用方法 . 1979.3.8 外部中断的使用方法 . 1989.4 小结 . 198第 10 章 单片机内部资源及其 C51 编程 .

13、 19910.1 MCS-51 的中断系统及其编程 . 19910.1.1 中断源 . 19910.1.2 中断相关寄存器 . 20010.1.3 中断响应 . 20310.1.4 中断的 C51 编程实例 . 20410.2 MCS-51 的定时/计数器及其编程 . 20610.2.1 定时/ 计数器的硬件基础知识 . 20610.2.2 定时/ 计数器的相关寄存器 . 20710.2.3 定时/ 计数器的工作方式 . 20810.2.4 定时/ 计数器的 C51 编程实例 . 21010.3 MCS-51 的串行口及其编程 . 21410.3.1 串行异步通信的字符帧格式和波特率 . 21

14、510.3.2 MCS-51 单片机串行口的硬件基础知识 . 21610.3.3 MCS-51 单片机串行口的相关寄存器 . 21610.3.4 MCS-51 单片机串行口的工作方式 . 21710.3.5 串行口的 C51 编程实例 . 21910.4 小结 . 223第 11 章 MCS-51 单片机系统扩展 . 22411.1 单片机最小系统 . 22411.1.1 片内无程序存储器的 MCS-51 单片机的最小系统 . 22411.1.2 片内有程序存储器的 MCS-51 单片机的最小系统 . 22511.2 MCS-51 单片机程序存储器的扩展及应用实例 . 22611.2.1 片外

15、总线结构 . 22611.2.2 地址锁存器 . 22711.2.3 程序存储器 . 22811.2.4 程序存储器的扩展实例 . 23111.3 MCS-51 单片机数据存储器的扩展及应用实例 . 23311.4 MCS-51 单片机 I/O 端口的扩展及应用实例 . 23611.4.1 并行扩展 I/O 端口 . 23611.4.2 串行扩展 I/O 端口 . 23911.5 小结 . 244第 12 章 单片机外围接口技术 . 24512.1 MCS-51 单片机键盘接口技术 . 24512.1.1 独立式键盘的接口设计和编程 . 24612.1.2 矩阵式键盘的接口设计和编程 . 24

16、812.2 MCS-51 单片机显示器接口技术 . 25112.2.1 七段发光二极管基础知识 . 25112.2.2 发光二极管显示常用芯片及编程实例 . 25212.2.3 液晶显示模块基础知识 . 25812.2.4 液晶显示模块的 C51 编程实例 . 26212.3 MCS-51 单片机与模数转换器接口技术 . 26412.3.1 单片机与并行模数转换器 ADC0809 的接口及编程 . 26512.3.2 单片机与串行模数转换器 MAX187 的接口及编程 . 26712.4 MCS-51 单片机与数模转换器接口技术 . 26912.4.1 MCS-51 单片机与并行数模转换器 D

17、AC0832 的接口及编程 . 26912.4.2 MCS-51 单片机与串行数模转换器 TLC5615 的接口及编程 . 27212.5 MCS-51 单片机与微型打印机接口技术 . 27512.5.1 TPmP-TF 系列打印机的接口信号 . 27512.5.2 TPmP-TF 打印机的字符编码和汉字 . 27612.5.3 TPmP-TF 打印机的打印命令 . 27712.5.4 MCS-51 单片机与 TPmP-TF 打印机的接口及编程 . 27912.6 小结 . 280第 13 章 简单 C51 应用实例 . 28113.1 简单的跑马灯设计 . 28113.1.1 硬件设计 .

18、28213.1.2 程序设计 . 28213.2 矩形波发生器 . 28513.2.1 用两个定时器/计数器产生矩形波 . 28513.2.2 用一个定时器/计数器产生矩形波 . 28713.3 基于 MCS-51 单片机的四路抢答器 . 28913.3.1 硬件设计 . 28913.3.2 程序设计 . 29113.4 I 2C 总线数据存储器在单片机系统中的用法 . 29613.4.1 I 2C 总线简介 . 29613.4.2 AT24C02 简介 . 29713.4.3 硬件设计 . 29713.4.4 程序设计 . 29813.5 双端口 RAM 在单片机系统中的使用 . 30213

19、.5.1 硬件设计 . 30213.5.2 程序设计 . 30513.6 小结 . 306当前章节:13.1 简单的跑马灯设计在前面的章节中详细介绍了 C51 语言的知识和 MCS-51 单片机的基本功能接口及应用,本章主要侧重于单片机应用系统设计,通过 5 个比较典型的设计实例,介绍单片机应用系统设计的步骤、思路、方法以及应用系统的硬件电路与软件设计等,使读者了解并掌握单片机系统的设计。本章主要包括以下内容: 简单的跑马灯设计; 矩形波发生器; 4 路抢答器; AT24C02 读写驱动程序; 双端口 RAM IDT7132 的使用。13.1 简单的跑马灯设计跑马灯可以用 MCS-51 单片机

20、控制一个 LED 点阵来实现,参见 5.2.3 小节。一个简单的跑马灯的显示情况如图 13.1 所示,图中的每一个小方格代表一个发光二极管,黑色代表相应位置的发光二极管被点亮,白色的空格表示未被点亮。图13.1 所示为从时刻 1 到时刻 4 这段时间 LED 点阵变化的情况,也就是每过一个时间片,“+”向左移动一个位置,因此如果有 11 个类似的时刻,看上去就是“+”从右边移入从左边移出,有从而产生跑马灯的效果。图 13.1 跑马灯的移动显示13.1.1 硬件设计由于图 13.1 中发光管的数量较多(83=24),直接使用 MCS-51 单片机的 I/O端口是很不经济的,因此需要扩展外部 I/

21、O 通道。对于这种简单的显示电路,通常采用常用的串入并出移位寄存器扩展 I/O 通道。由于 LED 点阵只有 3 组,每组 8 位,因此通常将这 3 组全部接在一片移位寄存器的输出端。这种设计方法利用了人眼的视觉暂留效应,节约了硬件成本。人眼的视觉暂留时间是 0.05s,当连续的图像变化超过每秒 24 帧画面的时候,人眼便无法分辨每幅单独的静态画面,因而看上去是平滑连续的视觉效果。在显示时,3 组 LED分时轮流显示,即某一组显示时其他两组全灭,只要循环显示一次的时间不超过 40ms,人眼看到的效果就和 3 组同时显示的效果一样。为保证足够的驱动电流,每组发光管的公共端电流由一只 8550 晶

22、体管提供,由单片机的 I/O 端口控制晶体管的导通或截至。完整的电路如图 13.2 所示。图 13.2 8051 单片机控制的跑马灯电路图13.1.2 程序设计在程序中产生一组发光二极管显示的时间片有两种方法。一种是在程序中采用延时,在这段延时时间中恒显示一组发光二极管,时间片用完后再显示另外一组并延时同样的时间,如此循环往复。这是一种堵塞型的写法,在延时的这段时间内单片机不能处理其他事务,效率低下。另一种方法是采取定时器中断的方式。每产生一次定时器中断,就切换到下一组的显示,直到下一次定时器中断产生。这种方法占用 CPU 时间很少,在显示的同时还可以处理其他事务,效率较高,是通常采用的方法。

23、在本例中,每 5ms 产生一次定时器中断,切换一次显示,因此 3 组轮流一次要用 15ms,刷新频率约为 67Hz,完全满足刷新频率大于 24Hz 的要求。由于采用串行扩展 I/O 通道的方法,因此单片机向 74LS164 发送数据需要一定的时间。根据中断服务程序尽可能耗时短的原则,显示函数(包括对于 74LS164 的驱动)不应在中断服务程序中实现,而是应该仅在中断设置某个标志,通知显示函数当前应切换到哪一组显示即可。需要注意的是,在切换显示的时候要将 3 个晶体管全部截至,也就是所有的发光二极管全灭,以防止由于 74LS164 输出端的数据变化而带来“串亮”现象。程序流程如图 13.3 所示,其中 LED_selection 表示当前要显示哪一组发光二极管,当 LED_selection 为0 时显示第一组,为 1 时显示第二组,为 2 时显示第三组。程序如例 13-1 所示。【例 13-1】图 13.2 中使用 12.0MHz 的晶振,根据晶振频率设置定时器初值,每 5ms 产生一次中断,随后执行切换显示的动作,每 500ms 显示的图形向左移动一次。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。