目录

  • 0 课程简介及要求
    • ● 0.1 课程简介及要求
    • ● 0.2 电气2111班混合式授课计划
    • ● 0.3 平台资源说明和软件程序下载
    • ● 0.4 实验板焊接要求及视频
  • 第1章 单片机概述
    • ● 1.0 本章PPT
    • ● 1.1 单片机简介、发展趋势及应用
    • ● 1.2 51系列及衍生单片机简介
    • ● 1.3 第1章测验
  • 第2章 AT89S51单片机硬件结构
    • ● 2.0 本章导学、PPT
    • ● 2.1 单片机硬件组成
    • ● 2.2 单片机的引脚功能
    • ● 2.3 存储器结构
    • ● 2.4 特殊功能寄存器SFR
    • ● 2.5 并行P口介绍
    • ● 2.6 时钟电路与复位电路
    • ● 2.7 第2章测验
  • 第3章 C51语言编程基础与Keil uVision3的使用
    • ● 3.0 本章导学、PPT
    • ● 3.1 C51 编程语言简介
    • ● 3.2 C51 语言程序设计基础
    • ● 3.3 C51 语言的函数
    • ● Keil C51软件基本操作演示
    • ● 3.4 第3章测验
  • 第4章 Proteus的使用(选学)
    • ● 本章PPT
  • 第5章 单片机与显示器件及开关、键盘的接口设计
    • ● 5.0 本章导学、PPT
    • ● 5.1 单片机控制发光二极管显示
    • ● 流水灯的5种程序设计方法及其比较
    • ● 流水灯课堂实录-王洋老师
    • ● 5.2.1 开关状态检测-案例1
    • ● 5.2.2 开关状态检测-案例2
    • ● Keil软件中I/O口输入状态模拟及输出状态观察
    • ● Proteus仿真软件与Keil软件联合调试及仿真
    • ● 实验1 彩灯控制实验演示
    • ● 实验2 开关控制彩灯设计思路及调试方法
    • ● 实验2 开关控制彩灯实验演示
    • ● 5.3.1 LED数码管静态显示
    • ● 5.3.2 LED数码管动态显示原理
    • ● 5.3.3 LED数码管动态显示编程案例
    • ● 动态显示软件调试方法
    • ● 5.6.1 独立式键盘接口及编程
    • ● 5.6.2 矩阵式键盘接口电路
    • ● 5.6.3 矩阵式键盘按键识别方法及键值分析
    • ● 5.6.4 反线法编程
    • ● 反线法程序软件调试方法
    • ● 实验6 矩阵式键盘设计思路及调试方法
    • ● 实验6 矩阵式键盘实验实物演示
    • ● 5.7 第5章测验
  • 第6章 AT89S51单片机的中断系统
    • ● 6.0 本章导学、PPT
    • ● 6.1 AT89S51 中断技术概述
    • ● 6.2 AT89S51 中断系统结构
    • ● 6.3 中断允许与中断优先级的控制
    • ● 6.4-6.5 响应中断请求的条件、外部中断的响应时间
    • ● 6.6-6.7外部中断的触发方式、中断请求撤销
    • ● 6.8 中断函数
    • ● 6.9 中断系统应用举例
    • ● 例题6-1优化程序
    • ● 外部中断软件模拟调试方法
    • ● 实验3 中断报警设计思路及调试方法
    • ● 实验3 中断报警实验演示
    • ● 6.10 第6章测验
    • ● 思考题
  • 第7章 AT89S51单片机的定时器/计数器
    • ● 7.0 本章导学、PPT
    • ● 7.1 定时器/计数器的结构
    • ● 7.2 定时器/计数器的4 种工作方式
    • ● 7.3 定时器/计数器的编程和应用
    • ● 定时器课堂实录
    • ● 定时器/计数器程序模拟仿真调试方法
    • ● 实验4 交通灯设计思路及调试方法
    • ● 实验4 交通灯实验演示
    • ● 实验5 秒表设计思路及调试方法
    • ● 实验5 秒表实验演示
    • ● 7.4 第7章测验
  • 第8章 AT89S51单片机的串行口
    • ● 8.0 本章导学、PPT
    • ● 8.1 串行口的结构
    • ● 8.2 串行口的工作方式
    • ● 8.3-8.4多机通信 波特率的定制方法
    • ● 8.5 串行口的应用设计案例:单机通信,多机通信
    • ● 实验7 双机通信设计思路
    • ● 8.6 第8章测验
  • 第9章 AT89S51单片机的并行扩展技术
    • ● 9.0 本章PPT
    • ● 9.1 系统并行扩展概述
    • ● 9.2 EPROM的并行扩展
    • ● 9.3 RAM的并行扩展
    • ● 9.4-9.7 I/O口设计
    • ● 9.8 第9章测验
  • 第10章 AT89S51单片机与DAC、ADC的接口
    • ● 本章PPT
    • ● 第10章测验
  • 第11章 AT89S51 单片机系统的串行扩展
    • ● 本章PPT
  • 第12章 单片机的各种控制与检测应用设计
    • ● 本章PPT
    • ● 典型应用案例
  • 第13章 实验
    • ● 13.1 实验指导书
    • ● 13.2 实验板示意图
    • ● 13.3 跑马灯程序示例
    • ● 13.4 原理接线图
    • ● 13.5 实验焊接元件清单
    • ● 13.6 实验板PCB图
    • ● 13.7 硬件焊接教学视频
    • ● 13.8 实验板电路图-跳线版
    • ● 13.9 测控专业实验安排表
    • ● 13.10 实验报告要求
    • ● 13.11 实验报告模板
  • 第14章 随堂测验
    • ● 14.1 随堂测验1
    • ● 随堂测验
    • ● 随堂测验答案
  • 第15章 期末复习
    • ● 15.1 2021-2022-1期末考试题型和分数分配
      • ● 15.2 总复习提纲
  • 第16章 习题答案及实验程序
    • ● 16.1 习题答案
    • ● 16.2 实验程序最优版本
3.0 本章导学、PPT
  • 1 学习要点
  • 2 本章PPT

引言

单片机应用系统日趋复杂,对程序的可读性、升级与维护以及模块化要求越来越高,对软件编程要求也越来越高,要求编程人员在短时间内编写出执行效率高、运行可靠的程序代码。同时,也要方便多个编程人员来进行协同开发。

C51语言是近年来在8051单片机开发中,普遍使用的程序设计语言,能直接对8051单片机硬件进行操作,既有高级语言特点,又有汇编语言特点,因此在8051单片机程序设计中,得到广泛使用。

3.1  C51编程语言简介

用于8051单片机编程的C语言,在标准C基础上针对8051硬件特点进行扩展,并向8051上移植,经多年努力,C51已成为公认的高效、简洁的8051单片机的实用高级编程语言。与8051汇编语言相比,C51语言在功能上、结构性、可读性、可维护性上有明显优势,易学易用。

3.1.1  C51语言与汇编语言的比较

8051汇编语言相比, C51有如下优点。

1)可读性好。

2)模块化开发与资源共享。

3)可移植性好。

4)生成的代码效率高。

3.1.2  C51语言与标准C语言的比较

1)库函数不同。

2)数据类型有一定区别。

3C51语言变量存储模式与标准C语言中变量存储模式数据不一样。

4)数据存储类型不同。

5)标准C语言没有处理单片机中断的定义。

6C51语言与标准C的输入/输出处理不一样。

7)头文件不同。

8)程序结构的差异。

3.2  C51语言程序设计基础

3.2.1  C51语言中的数据类型与存储类型

1.数据类型

2C51的扩展数据类型 特别注意sbit bit

3.数据存储类型

4.数据存储模式

3.2.2  C51语言的特殊功能寄存器及位变量定义

1.特殊功能寄存器的C51定义

2.位变量的C51定义

3.2.3  C51语言的绝对地址访问

1.绝对宏

2 _at_ 关键字

3.2.4  C51的基本运算

1.算术运算符

2.逻辑运算符

3.关系运算符

4.位运算

5.指针和取地址运算符

3.2.5  C51的分支与循环程序结构

     C51程序按结构可分为3类,即顺序、分支和循环结构。

1.分支控制语句

分支控制语句有:if语句和switch语句。

2.循环控制语句

实现循环结构的语句有以下3种:while语句、do-while语句和for语句。

3.2.6  C51的数组

1.数组简介

C51语言中常用的一维、二维数组和字符数组。

2.数组的应用

C51的编程中,数组一个非常有用的功能是查表。

3.数组与存储空间

3.2.7  C51的指针

3.3  C51语言的函数

3.3.1  函数的分类

1. 标准库函数

2. 用户自定义函数

3.3.2  函数的参数与返回值

3.3.3  函数的调用

3.3.4  中断服务函数

中断服务函数的一般形式为:

     函数类型  函数名(形式参数表)interrupt n  using m

关键字interrupt n中的n是中断号,对于51系列单片机,n取值为0~4

关键字using后的 m是所选择的寄存器组,m取值为0~3。using m是一个可选项,可省略。如果没有使用using关键字指明寄存器组,中断函数中的所有工作寄存器的内容将被保存到堆栈中。

3.3.5 变量及存储方式

3.3.6 宏定义与文件包含

3.3.7 库函数

几类重要的库函数。

(1) 特殊功能寄存器包含文件reg51.hreg52.hreg51.h中包含所有的8051sfr及其位定义。reg52.h中包含所有8052sfr及其位定义,一般系统都包含reg51.hreg52.h

(2) 绝对地址包含文件absacc.h:该文件定义了几个宏,以确定各类存储空间的绝对地址。

(3) 输入/输出流函数位于stadio.h文件中。

(4) 动态内存分配函数,位于stdlib.h中。

(5) 能够对方便地对缓冲区进行处理的缓冲区处理函数位于string.h中。




3.4  Keil µVision3环境下的C51程序开发:掌握实际操作