目录

  • 1 绪论
    • 1.1 初识单片机
    • 1.2 单片机概述(一)
    • 1.3 单片机概述(二)
    • 1.4 Keil C软件的使用
    • 1.5 Protues软件的使用
  • 2 单片机的硬件结构
    • 2.1 MCS-51系列单片机的内部结构
    • 2.2 MCS-51系列单片机的引脚功能
    • 2.3 IO口功能及简单应用
    • 2.4 单片机的存储器结构 程序存储器
    • 2.5 数据存储器
    • 2.6 单片机的时序 低功耗节电模式
  • 3 C51语言编程基础
    • 3.1 C51的数据类型与运算
    • 3.2 C51程序设计的基本结构
  • 4 单片机中断系统
    • 4.1 单片机中断的概念
    • 4.2 中断控制、优先级管理
    • 4.3 中断程序设计
    • 4.4 中断程序设计举例
  • 5 单片机的定时器/计数器
    • 5.1 定时器/计数器结构及工作原理
    • 5.2 定时/计数器的关键寄存器
    • 5.3 定时/计数器计数初值计算
    • 5.4 定时/计数器的初始化
    • 5.5 定时器的应用
    • 5.6 计数器的应用
  • 6 单片机I/O口和外部存储器的扩展
    • 6.1 单片机并行I/O口的扩展
    • 6.2 单片机外部存储器的扩展
  • 7 单片机与键盘显示器的接口
    • 7.1 LED显示器原理
    • 7.2 LED显示器案例一
    • 7.3 LED显示器案例二
    • 7.4 独立式按键接口技术
    • 7.5 独立式按键程序设计
  • 8 应用篇
    • 8.1 数码管数字显示器的制作
    • 8.2 数码管计数器制作
    • 8.3 数码管电子钟的制作
    • 8.4 密码锁按键键值显示
    • 8.5 密码锁密码移位显示
    • 8.6 简易电子密码锁制
    • 8.7 8X8点阵模块显示数字
    • 8.8 LED点阵显示屏显示汉字
    • 8.9 LED点阵显示屏移位显示数字
    • 8.10 12864液晶显示数字
    • 8.11 12864液晶显示汉字和数字
    • 8.12 12864液晶显示图形
    • 8.13 12864液晶万年历制作
    • 8.14 1602液晶显示字符
    • 8.15 1602液晶显示计数器制作
    • 8.16 模拟电动葫芦制作
    • 8.17 工业加热炉控制器制作
    • 8.18 数字电压表制作
    • 8.19 智能家居系统制作(传感器新模块运用)
    • 8.20 数字温度计制作
    • 8.21 智能孵蛋控制系统制作
    • 8.22 智能仓储控制系统制作
  • 9 提高篇
    • 9.1 系统故障诊断及其排除技术
    • 9.2 电梯开关门控制器制作
    • 9.3 电梯桥箱内部控制器制作
    • 9.4 智能物料搬运控制系统制作(09年国赛题)
    • 9.5 智能物料分拣搬运控制系统制作(10年赛题)
    • 9.6 智能热水供应系统制作(11年赛题)
    • 9.7 地铁自动售票系统模拟制作(12年赛题)
    • 9.8 手机后盖智能喷涂系统制作(13年赛题)
    • 9.9 大赛点评
  • 10 技能大赛感言
    • 10.1 技能大赛感言
  • 11 借内外梦想之力 圆蓝领
    • 11.1 借内外梦想之力 圆蓝领
  • 12 基础篇
    • 12.1 单片机控制技术概述
    • 12.2 全国技能大赛技术分析
  • 13 键盘的控制
    • 13.1 独立键盘的控制原理
    • 13.2 矩阵键盘的控制原理及键盘编码
    • 13.3 矩阵键盘与蜂鸣器控制
    • 13.4 行扫描法工作原理
    • 13.5 键盘扫描识别子程序
  • 14 矩阵式键盘的设计与实现
    • 14.1 矩阵式键盘的设计与实现
    • 14.2 教学视频
    • 14.3 拓展阅读
  • 15 单片机及其开发环境
    • 15.1 初识单片机
      • 15.1.1 课前欣赏
      • 15.1.2 什么是单片机
      • 15.1.3 与单片机对话:二进制与十六进制之间的转换
    • 15.2 单片机应用系统及其开发环境
      • 15.2.1 单片机应用系统及其开发环境
      • 15.2.2 Protesu软件的操作视频
      • 15.2.3 Keil软件的操作视频
      • 15.2.4 思维导图的画法
      • 15.2.5 如何将程序烧入单片机芯片中
  • 16 单片机结构及工作原理
    • 16.1 MCS51单片机内部结构
    • 16.2 MCS51单片机引脚及功能
    • 16.3 MCS51单片机存储器
    • 16.4 MCS51单片机的时钟电路和复位电路
  • 17 基础篇
    • 17.1 单片机控制技术概述
    • 17.2 全国技能大赛技术分析
    • 17.3 YL-236实训平台与YL-G001智能物料搬运装置及YL-G003智能仓储系统
    • 17.4 如何建立单片机的编程环境
    • 17.5 配线与扎线工艺
    • 17.6 单片机控制 1个灯,3个灯 ,及流水灯控制技术
    • 17.7 讲解单片机按键控制技术
  • 18 应用篇
    • 18.1 数码管数字显示器的制作
    • 18.2 数码管计数器制作
    • 18.3 数码管电子钟的制作
    • 18.4 密码锁按键键值显示
    • 18.5 密码锁密码移位显示
    • 18.6 简易电子密码锁制
    • 18.7 8X8点阵模块显示数字
    • 18.8 LED点阵显示屏显示汉字
    • 18.9 LED点阵显示屏移位显示数字
    • 18.10 12864液晶显示数字
    • 18.11 12864液晶显示汉字和数字
    • 18.12 12864液晶显示图形
    • 18.13 12864液晶万年历制作
    • 18.14 1602液晶显示字符
    • 18.15 1602液晶显示计数器制作
    • 18.16 模拟电动葫芦制作
    • 18.17 工业加热炉控制器制作
    • 18.18 数字电压表制作
    • 18.19 智能家居系统制作(传感器新模块运用)
    • 18.20 数字温度计制作
    • 18.21 智能孵蛋控制系统制作
    • 18.22 智能仓储控制系统制作
  • 19 提高篇
    • 19.1 系统故障诊断及其排除技术
    • 19.2 电梯开关门控制器制作
    • 19.3 电梯桥箱内部控制器制作
    • 19.4 智能物料搬运控制系统制作(09年国赛题)
    • 19.5 智能物料分拣搬运控制系统制作(10年赛题)
    • 19.6 智能热水供应系统制作(11年赛题)
    • 19.7 地铁自动售票系统模拟制作(12年赛题)
    • 19.8 手机后盖智能喷涂系统制作(13年赛题)
    • 19.9 大赛点评
  • 20 技能大赛感言
    • 20.1 技能大赛感言
  • 21 借内外梦想之力 圆蓝领
    • 21.1 借内外梦想之力 圆蓝领
  • 22 认识单片机系统
    • 22.1 单元学习导引
    • 22.2 单灯闪烁控制
      • 22.2.1 跟我学:自动化与单片机
      • 22.2.2 跟我学:单片机的概念
      • 22.2.3 经验谈:如何学单片机
      • 22.2.4 跟我学:单片机的逻辑结构及信号引脚
      • 22.2.5 跟我学:单片机最小系统
      • 22.2.6 跟我练:基本元件的识别(电阻)
      • 22.2.7 跟我练:基本元件的识别(电容)
      • 22.2.8 跟我练:基本元件的识别(其他元件)
      • 22.2.9 跟我做:用面包板搭建最小系统
      • 22.2.10 跟我练:Keil C51项目工程的建立
      • 22.2.11 跟我练:单片机程序烧录与下载
      • 22.2.12 跟我做:完成单灯闪烁控制项目
      • 22.2.13 项目拓展
    • 22.3 声光报警控制的Proteus仿真调试
      • 22.3.1 跟我学:Proteus仿真软件概述
      • 22.3.2 跟我练:Proteus仿真软件使用入门
      • 22.3.3 跟我做:声光报警控制的Proteus仿真调试
      • 22.3.4 跟我学:声光报警控制的C51程序
      • 22.3.5 项目拓展:键控声光报警控制
    • 22.4 单元小结与拓展
    • 22.5 单片机概述
矩阵键盘与蜂鸣器控制



C语言程序清单:

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar Song_Index = 0,Tone_Index = 0;

sbit SPK = P3^7;

sbit K1 = P1^0;

uchar code DSY_CODE[]=

{

  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

};

uchar code HI_LIST[]=

{

  0,266,229,232,233,236,238,240,241,242,244,245,246,247,248

};

uchar code LO_LIST[]=

{

  0,4,13,10,20,3,8,6,2,23,5,26,1,4,3

};

uchar code Song[][50]=

{

  {1,2,3,1,1,2,3,1,3,4,5,3,4,5,3,4,5,5,6,1,2,3,6,2,6,6,2,3,4,5,2,5,2,3,-1},

{3,3,3,5,6,2,3,4,6,2,6,4,2,1,2,3,6,2,5,6,3,4,5,6,2,3,1,2,3,5,1,2,3,-1},

{3,2,1,3,2,1,1,2,3,1,3,5,1,5,4,6,2,6,3,4,2,3,6,2,3,4,2,1,1,1,2,2,2,3,3,2,6,3,5,3,5,1,2,6,4,5,-1}

};

uchar code Len[][50]=

{

  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,-1},

{1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,-1},

{1,1,2,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,1,1,1,1,2,2,-1}

};

void EX0_INT() interrupt 0

{

  TR0 = 0;

Song_Index = (Song_Index+1)%3;

Tone_Index = 0;

P2 = DSY_CODE[Song_Index];

}

void T0_INT() interrupt 1

{

  SPK = !SPK;

TH0 = HI_LIST[Song[Song_Index][Tone_Index]];

TL0 = LO_LIST[Song[Song_Index][Tone_Index]];

}

void delay(uint ms)

{

  uchar i;

while(ms--)

{

for(i=0;i<120;i++);

}

}

void main()

{

  P2 = 0xc0;

IE = 0x83;

TMOD = 0x00;

IT0 = 1;

IP = 0x02;

while(1)

{

  while(K1==1);

while(K1==0);

TR0 = 1;

Tone_Index = 0;

while(Song[Song_Index][Tone_Index]!=-1&&K1==1&&TR0==1)

{

  delay(300*Len[Song_Index][Tone_Index]);

Tone_Index++;

}

TR0 = 0;

while(K1==0);

}

}