⑴ 51单片机C语言应用程序设计实例精讲的内容简介
全书实例丰富,每个例子都调试通过,都有具体的设计思路、硬件电路、软件设计以及程序代码分析,同时附录里专门提供了实例配套实验箱内容,对于读者学习51单片机的应用开发提供了参考和指导价值。
《51单片机C语言应用程序设计实例精讲》中的所有程序代码都使用C语言实现,简单易学、易懂。《51单片机C语言应用程序设计实例精讲》适合计算机、自动化、电子及硬件等相关专业的学生进行学习,同时也可供从事51单片机开发的科研设计人员参考使用。
《51单片机C语言应用程序设计实例精讲》配有一张光盘,光盘里包括了书中所有的程序代码和电路图,读者稍加修改即可用于自己的设计,物超所值。
⑵ 51单片机C语言应用程序设计实例精讲的目录
第1章51单片机开发的基础知识
1.151单片机的硬件结构
1.1.1功能模块
1.1.2CPU
1.1.3并行I/O端口
1.1.4存储嚣结构
1.1.5定时/计数器
1.1.6串行口
1.1.7中断系统
1.251单片机的指令系统
1.2.1寻址方式
1.2.2指令说明
1.2.3指令系统表
1.3本章总结
第2章C语言程序各语句用法与意义
2.1数据结构
2.1.1数据类型
2.1.2变量与常量
2.1.3数组
2.1.4指针
2.1.5结构
2.1.6共用体
2.1.7枚举
2.2运算符与表达式
2.2.1运算符分类与优先级
2.2.2算术运算符与表达式
2.2.3关系运算符与表达式
2.2.4逻辑运算符与表达式
2.2.5位操作运算符与表达式
2.2.6赋值运算符与表达式
2.3程序结构与函数
2.3.1程序结构
2.3.2函数
2.4流程控制语句
2.4.1选择语句
2.4.2循环语句
2.4.3转移语句
2.5本章总结
第3章Keil8051C编译器
3.1Keil编译器简介
3.2使用Keil开发应用软件
3.2.1建立工程
3.2.2工程的设置
3.2.3编译与连接
3.3dScopeforWindows的使用
3.3.1如何启动
3.3.2如何调试
3.3.3调试窗口
3.4本章总结 第4章单片机实现液晶显示
4.1实例说明
4.2设计思路分析
4.2.1液晶显示模块
4.2.2液晶显示工作原理
4.2.3设计思路
4.3硬件电路设计
4.3.1器件选取
4.3.2电源模块
4.3.3液晶显示模块
4.3.4单片机模块
4.4软件设计
4.4.1液晶控制驱动嚣指令集
4.4.2程序说明
4.5实例总结
第5章基于MAX7219的8位数码管显示
5.1实例说明
5.2设计思路分析
5.2.1LED显示驱动芯片的选取
5.2.2MAX7219的工作原理
5.3硬件电路设计
5.3.1主要器件
5.3.2电路原理图
5.4软件设计
5.4.1MAX7219的工作时序和寄存器描述
5.4.2程序说明
5.5实例总结
第6章键盘输入实例——实现4x4键盘
6.1实例说明
6.2设计思路分析
6.3硬件电路设计
6.4软件设计
6.5实例总结
第7章单片机实现语音录放
7.1实例说明
7.2设计思路分析
7.2.1语音芯片选取
7.2.2语音芯片1SD2560简介
7.3硬件电路设计
7.3.1主要器件
7.3.2电路原理图及说明
7.4软件设计
7.4.1程序流程
7.4.2程序说明
7.5实例总结 第8章基于MAX197的并行A/D转换
8.1实例说明
8.2设计思路分析
8.2.1A/D转换原理
8.2.2如何选择A/D转换器件
8.2.3A/D转换器对电源电路的要求
8.3硬件电路设计
8.3.1主要器件
8.3.2电路原理图及说明
8.4软件设计
8.4.1MAX197控制字
8.4.2程序流程
8.4.3程序说明
8.5实例总结
第9章基于TLC549的串行A/D转换
9.1实例说明
9.2设计思路分析
9.2.1芯片选取
9.2.2工作原理
9.3硬件电路设计
9.3.1主要器件
9.3.2电路原理图及说明
9.4软件设计
9.4.1转换过程和时序要求
9.4.2程序流程
9.4.3程序说明
9.5实例总结
第10章基于MAX527的并行D/A转换
10.1实例说明
10.2设计思路分析
10.2.1D/A转换原理
10.2.2如何选择D/A转换器件
10.2.3D/A转换器对电源电路的要求
10.3硬件电路设计
10.3.1主要器件
10.3.2电路原理图及说明
10.4软件设计
10.4.1MAX527的地址和重要引脚
10.4.2程序流程
10.4.3程序说明
10.5实例总结
第11章基于MAX517的串行D/A转换
11.1实例说明
11.2设计思路分析
11.2.1芯片选取
11.2.2工作原理
11.3硬件电路设计
11.3.1主要器件
11.3.2电路原理图及说明
11.4软件设计
11.4.1时序要求和转换过程
11.4.2程序说明
11.5实例总结
第12章基于SHT71数字温/湿度传感器的采集实现
12.1实例说明
12.2设计思路分析
12.2.1SHT71性能概述
12.2.2SHT71的功能说明
12.2.3SHT71的引脚尺寸和说明
12.3硬件电路设计
12.4软件设计
12.4.1SHT71的操作方法
12.42程序流程
12.4.3源程序清单
12.5实例总结
第13章基于DS1624的数字温度计设计
13.1实例说明
13.1.2设计思路分析
13.2.1DS1624简介
13.2.2DS1624基本特性
13.2.3DS1624工作原理
13.2.4DS1624工作方式
13.2.5DS1624的指令集
13.3硬件电路设计
13.3.1硬件设计
13.3.2原理科及其说明
13.4软件设计
13.4.1程序流程
13.4.2程序说明
13.5实例总结 第14章基于DS12C887的实时日历时钟显示系统设计
14.1实例说明
14.2设计思路分析
14.2.1选择合适的日历时钟芯片7
14.2.2如何由DS12C887芯片获取时间信息
14.3硬件电路设计
14.3.1结构框图
14.3.2主要器件
14.3.3电路原理图及说明
14.4软件设计
14.4.1DS12C877的内存空间
14.4.2程序流程
14.4.3程序代码及说明
14.5实例总结
第15章单片机控制的步进电机系统
15.1实例说明
15.2设计思路分析
15.2.1步进电机的工作原理
15.2.2步进电机的控制
15.2.3脉冲分配与驱动芯片的选取
15.3硬件电路设计
15.3.1结构框图
15.3.2主要器件
15.3.3电路原理图厦说明
15.4软件设计
15.4.1程序流程
15.4.2程序说明
15.5实例总结
第16章基于MAX1898的智能充电器设计
16.1实例说明
16.2设计思路分析
16.2.1为何需要实现充电器的智能化
16.2.2如何选择电池充电芯片
16.2.3MAX1898的充电工作原理
16.3硬件电路设计
16.3.1主要器件
16.3.2电路原理图及说明
16.4软件设计
16.4.1程序流程
16.4.2程序说明
16.5实例总结 第17章基于NORFlashAM29LV320的数据存储
17.1实例说明
17.2设计思路分析
17.2.1芯片AM29LV320
17.2.2具体设计思路
17.3硬件电路设计
17.4软件设计
17.4.1AM29LV320的命令与状态
17.4.2串行异步数据传输
17.4.3程序代码说明
17.5实例总结
第18章基于XC95144的串口扩展
18.1实例说明
18.2设计思路分析
18.2.1串口发送的设计
18.2.2串口接收的设计
18.2.3串口模块的设计l
18.3硬件电路设计
18.4软件设计
18.4.1CPLD的设计原理图
18.4.2C51单片机程序代码说明
18.5实例总结
第19章基于8255扩展并行口
19.1实例说明
19.2设计思路分析
19.2.1并行口扩展的原理
19.2.2芯片选择
19.3硬件电路设计
19.4软件设计
19.5实例总结 第20章单片机实现智能信号发生器
第21章单片机实现步进式PWM信号输出
第22章单片机实现CRC算法
第23章单片机实现软件滤波
第七篇通信传输系统设计
第24章单片机实现点对点的数据传输
第25章单片机实现点对多点的数据传输
第26章单片机实现以太网接口
第27章单片机实现1C总线通信
第28章单片机实现RS-485总线现场监测系统
第29章CAN总线接口通信设计
第八篇电源监控与抗干扰设计
第30章单片机监控电路设计
第31章光电隔离电路设计 附录A汇编语言与C语言的混合编程
附录B实例配套实验箱
⑶ 单片机C语言程序设计实训100例的介绍
本书为北京航空航天大学出版社出版,作者为彭伟。本书基于AVR Studio+WinAVR(GCC)组合环境和Proteus硬件仿真平台,精心安排了100个AVR单片机C程序设计案例。全书提供了所有寨例完整的C语言源程序,各案例设计了难易适中的实训目标。本书适合用作大专院校学生学匀实践AVR单片机C语言程序设计技术的参考书,也可用作电子工程技术人员、单片机技术爱好者的学习参考书。
⑷ 51单片机C语言应用程序设计实例精讲的介绍
《51单片机C语言应用程序设计实例精讲》通过大量的实例,介绍了51单片机各种C语言应用专题程序设计的流程、方法、技巧及设计思想。全书共分31章,第1章~第3章为基础知识,介绍了51单片机开发的硬件结构、指令系统、C语言设计以及Keil8051C编译器知识;第4章~第31章为本书的重点,通过28个典型的C语言应用实例,介绍了51单片机的各种应用开发和使用技术,包括输入,输出、数据采集,控制系统、存储系统与外设扩展、信号与算法实现、网络通信与传输、电源监控与抗干扰设计。
⑸ 单片机C语言应用100例的目录
第1章概述
1.1单片机的结构与应用
1.1.1单片机的定义、分类与内部组成
1.1.2单片机应用系统的结构及其工作过程
1.1.3单片机的应用
1.2单片机基础知识
1.2.1数制与数制间的转换
1.2.2单片机中数的表示方法及常用数制的对应关系
1.2.3逻辑数据的表示
1.2.4单片机中常用的基本术语
1.3单片机入门的有效方法与途径
1.4学习单片机的基本条件
1.4.1软件条件
1.4.2硬件条件
习题与实验
第2章单片机开发软件及开发过程
2.1仿真软件Proteus的使用
2.1.1Proteus的主要功能特点
2.1.2实例1:功能感受——Pmteus仿真单片机播放《渴望》主题曲
2.1.3Proteus软件的界面与操作介绍
2.1.4实例2:Proteus仿真设计快速入门
2.2KeilC51的使用
2.2.1单片机最小系统
2.2.2实例3:用Kei1C51编写点亮一个发光二极管的程序
2.3程序烧录器及烧录软件的使用
习题与实验
第3章逐步认识单片机基本结构
3.1实例4:用单片机控制一个灯闪烁
3.1.1实现方法
3.1.2程序设计
3.1.3用Proteus软件仿真
3.1.4延时程序分析
3.2实例5:将P1口状态送入P0口、P2口和P3口
3.2.1实现方法
3.2.2程序设计
3.2.3用Proteus软件仿真
3.2.4用实验板试验
3.2.5I/O口功能介绍
3.2.6I/O口的结构分析
3.3实例6:使用P3口流水点亮8位1ED
3.3.1实现方法
3.3.2程序设计
3.3.3用Proteus软件仿真
3.3.4用实验板试验
3.4实例7:通过对P3口地址的操作流水点亮8位1ED
3.4.1实现方法
3.4.2程序设计
3.4.3用Proteus软件仿真
3.4.4用实验板试验
3.5MCS-51单片机存储器的基本结构
3.5.1程序存储器
3.5.2数据存储器
3.6单片机的复位电路
习题与实验
第4章单片机C语言开发基础
4.1C语言源程序的结构特点
4.2标志符与关键字
4.3C语言的数据类型与运算符
4.3.1数据类型
4.3.2运算符
4.3.3实例8:用不同数据类型的数据控制1ED的闪烁
4.3.4实例9:用P0口、P1口分别显示加法和减法运算结果
4.3.5实例10:用P0口、P1口显示乘法运算结果
4.3.6实例11:用P1口、P0口显示除法运算结果
4.3.7实例12:用自增运算控制P0口8位1ED的闪烁花样
4.3.8实例13:用P0口显示逻辑“与”运算结果
4.3.9实例14:用P0口显示条件运算结果
4.3.10实例15:用P0口显示按位“异或”运算结果
4.3.11实例16:用P0口显示左移运算结果
4.3.12实例17:“万能逻辑电路”实验
4.3.13实例18:用右移运算流水点亮P1口8位1ED
4.4C语言的语句
4.4.1概述
4.4.2控制语句
4.4.3实例19:用if语句控制P0口8位LED的点亮状态
4.4.4实例20:用swtich语句控制PO口8位LED的点亮状态
4.4.5实例21:用for语句设计鸣笛报警程序
4.4.6实例22:用while语句控制PO口8位LED闪烁花样
4.4.7实例23:用dOwhile语句控制PO口8位LED流水点亮
4.5C语言的数组
4.5.1数组的定义和引用
4.5.2实例24:用字符型数组控制PO口8位LED流水点亮
4.5.3实例25:用PO口显示字符串常量
4.6C语言的指针
4.6.1指针的定义与引用
4.6.2实例26:用PO口显示指针运算结果
4.6.3实例27:用指针数组控制PO口8位LED流水点亮
4.6.4实例28:用数组的指针控制PO口8位LED流水点亮
4.7C语言的函数
4.7.1函数的定义与调用
4.7.2实例29:用PO口、P1口显示整型函数返回值
4.7.3实例30:用有参函数控制PO口8位LED流水速度
4.7.4实例3l:用数组作函数参数控制PO口8位LED流水点亮
4.7.5实例32:用指针作函数参数控制PO口8位LED流水点亮
4.7.6实例33:用函数型指针控制PO口8位LED流水点亮
4.7.7实例34:用指针数组作为函数的参数显示多个字符串
4.7.8实例35:字符软件ctype.h中的isalpha()函数应用举例
4.7.9实例36:内部函数库文件intrins.h中的_cml_()函数应用举例
4.7.10实例37:标准函数库文件stdlib.h中的rand()函数应用举例
4.7.1l实例38:字符串函数库文件string.h中的strcmp()函数应用举例
4.8C语言的编译预处理
4.8.1常用预处理命令介绍
4.8.2实例39:宏定义应用举例
4.8.3实例40:文件包含应用举例
4.8.4实例41:条件编译应用举例
习题与实验
第5章单片机的定时器/计数器
5.1定时器,计数器的基本概念
5.2定时器/计数器的结构及工作原理
5.2.1定时器/计数器的结构
5.2.2定时器,计数器的工作原理
5.3定时器,计数器的控制
5.3.1定时器/计数器的方式控制寄存器(TMOD)
5.3.2定时器/计数器控制寄存器(TCON)
5.3.3定时器/计数器的4种工作方式
5.3.4定时器/计数器中定时/计数初值的计算
5.4定时器/计数器应用举例
5.4.1实例42:用定时器T0查询方式控制P2口8位LED闪烁
5.4.2实例43:用定时器T1查询方式控制单片机发出1kHz音频
5.4.3实例44:用计数器TO查询的方式计数,结果送P1口显示
习题与实验
第6章单片机的中断系统
6.1中断系统的基本概念
6.2中断系统的结构及控制
6.2.1中断系统的结构
6.2.2中断系统的控制
6.3中断系统应用举例
6.3.1实例45:用定时器TO的方式1控制LED闪烁
6.3.2实例46:用定时器TO的方式1实现长时间定时
6.3.3实例47:用定时器T1的方式1控制两个LED以不同周期闪烁
6.3.4实例48.用计数器T1的中断方式控制发出1kHz音频
6.3.5实例49:用定时器TO的方式O控制播放《好人一生平安》
6.3.6实例50.用计数器TO的方式2对外部脉冲计数
6.3.7实例51:用定时器TO的门控制位测量外部正脉冲宽度
6.3.8实例52:用外中断INT0测量负跳变信号累计数
6.3.9实例53-用外中断控制INT0控制P1口LED亮灭状态
6.3.10实例54:用外中断INT0中断测量外部负脉冲宽度
习题与实验
第7章串行通信技术
7.1串行通信的基本概念
7.2串行通信口的结构
7.3串行通信口的控制
7.3.1串行控制寄存器SCON
7.3.2电源控制寄存器PCON
7.3.3四种工作方式与波特率的设置
7.4串行通信口应用举例
7.4.1实例55.将方式0用于扩展并行输出控制流水灯
7.4.2实例56.基于方式1的单工通信
7.4.3实例57:基于方式3的单工通信
7.4.4实例58:单片机向计算机发送数据
7.4.5实例59:单片机接收计算机送出的数据
习题与实验
第8章接口技术
第9章新型串行接口芯片应用介绍
第10章常用功能器件应用举例
第11章高级综合应用技术
参考文献
……
⑹ 单片机c语言编程100个实例
51单片机C语言编程实例 基础知识: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 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程方法:(比如P2.7引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 在某引脚输出方波编程方法:(比如P3.1引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 5. { 6. P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC 7. P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低……,从而形成方波 9. } 将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 2 51单片机C语言编程实例 9. else //否则P1.1输入为低电平GND 10. //{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 11. { P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC 12. } //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平 13. } 将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { //取反的方法是异或1,而不取反的方法则是异或0 7. P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出 8. } //由于一直为真,所以不断将P3取反输出到P2 9. } 注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。 第一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF 2. 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF 3. 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机I/O输出 将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。 开关双键的输入:输入先输出高 一个按键KEY_ON接在P1.6与GND之间,另一个按键KEY_OFF接P1.7与GND之间,按KEY_ON后LED亮,按KEY_OFF后LED灭。同时按下LED半亮,LED保持后松开键的状态,即ON亮OFF灭。 代码 1. #include <at89x52.h> 2. #define LED P1^1 //用符号LED代替P1_1 3. #define KEY_ON P1^6 //用符号KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符号KEY_OFF代替P1_7 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. KEY_ON = 1; //作为输入,首先输出高,接下KEY_ON,P1.6则接地为0,否则输入为1 8. KEY_OFF = 1; //作为输入,首先输出高,接下KEY_OFF,P1.7则接地为0,否则输入为1 9. While( 1 ) //永远为真,所以永远循环执行如下括号内所有语句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1输出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1输出低,LED灭 13. } //松开键后,都不给LED赋值,所以LED保持最后按键状态。 14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半亮态 15. } 数码管的接法和驱动原理 一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。 我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。 以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据
⑺ 51单片机应用实例详解的内容简介
如果不是为了应付考试,那单片机的学习更应该强调系统的应用。 《51单片机应用实例详解》是《51单片机应用从零开始》的姊妹书,既可作为其“续集”以扩展学习单片机基础知识之后的系统应用,也可独立成册作为单片机从基础学习到系统应用的帮手。
《51单片机应用实例详解》在选材时,结合国内外重点大学一线教师的教学经验,并借鉴国外经典教材的写作手法,对51单片机的应用系统及局部知识进行了详实的介绍。除了每章中大量的单片机系统模块及有机系统的介绍外,“实例点拨”环节还展示了许多相对完整的单片机系统实例供读者学习、开发时参考。在多角度、多方面的实例化讲解中,读者既掌握了单片机系统开发的基本技能,还开阔了单片机流行应用的视野。
《51单片机应用实例详解》秉承《51单片机应用从零开始》一书语言生动风趣及讲解循序渐进的特点,在顾及实用性、技术性的同时,最大程度地提高了可读性,力求阐述得平实、通俗、易懂。《51单片机应用实例详解》适合作为电类本科、专科学生的参考用书及高职高专学生的单片机应用技术教材,也可作为无线电爱好者学习单片机的参考书。
⑻ C语言在单片机中的应用
单片机就像是一个躯体,而程序就是它的灵魂。C语言就是制造(编写)它的灵魂的工具。
单片机中的C语言与标准C语言有一些不同,有很多对位的定义和操作。在单片机应用中最常用的编译软件是KEIL
C51,功能强大。
C语言是一种高级语言,在单片机应用中其优点也是非常突出:编程灵活、可读性、可移植性都很强。当然,若能在学C之前懂一些汇编语言,就更好啦。既能熟悉位操作,又能发挥C语言的优势。
⑼ 求 单片机简单的C语言程序例子(越多越好)
我前几天刚在网上看到的,不知道对你有没有用》
1. 闪烁灯
1. 实验任务
如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
2. 电路原理图
图4.1.1
3. 系统板上硬件连线
把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。
4. 程序设计内容
(1). 延时程序的设计方法
作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:
如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒
机器周期 微秒
MOV R6,#20 2个机器周期 2
D1: MOV R7,#248 2个机器周期 2 2+2×248=498 20×
DJNZ R7,$ 2个机器周期 2×248 498
DJNZ R6,D1 2个机器周期 2×20=40 10002
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:
DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET
(2). 输出控制
如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
5. 程序框图
如图4.1.2所示
图4.1.2
6. 汇编源程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时0.2秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7. C语言源程序#include <AT89X51.H>sbit L1=P1^0;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}}
2. 模拟开关灯
1. 实验任务
如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
2. 电路原理图
图4.2.1
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;
(2). 把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上;
4. 程序设计内容
(1). 开关状态的检测过程
单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。
(2). 输出控制
如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
5. 程序框图
图4.2.2
6. 汇编源程序 ORG 00HSTART: JB P3.0,LIGCLR P1.0SJMP STARTLIG: SETB P1.0SJMP STARTEND
7. C语言源程序#include <AT89X51.H>sbit K1=P3^0;sbit L1=P1^0;void main(void){while(1){if(K1==0){L1=0; //灯亮}else{L1=1; //灯灭}}}
3. 多路开关状态指示
1. 实验任务
如图4.3.1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。
2. 电路原理图
图4.3.1
3. 系统板上硬件连线
(1. 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;
(2. 把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1-K4端口上;
4. 程序设计内容
(1. 开关状态检测
对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。
(2. 输出控制
根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。
5. 程序框图
读P1口数据到ACC中
ACC内容右移4次
ACC内容与F0H相或
ACC内容送入P1口
<![endif]-->
图4.3.2
6. 方法一(汇编源程序)ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP STARTEND7. 方法一(C语言源程序)#include <AT89X51.H>unsigned char temp;void main(void){while(1){temp=P1>>4;temp=temp | 0xf0;P1=temp;}}8. 方法二(汇编源程序)ORG 00HSTART: JB P1.4,NEXT1CLR P1.0SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5,NEXT2CLR P1.1SJMP NEX2NEXT2: SETB P1.1NEX2: JB P1.6,NEXT3CLR P1.2SJMP NEX3NEXT3: SETB P1.2NEX3: JB P1.7,NEXT4CLR P1.3SJMP NEX4NEXT4: SETB P1.3NEX4: SJMP STARTEND9. 方法二(C语言源程序)#include <AT89X51.H>void main(void){while(1){if(P1_4==0){P1_0=0;}else{P1_0=1;}if(P1_5==0){P1_1=0;}else{P1_1=1;}if(P1_6==0){P1_2=0;}else{P1_2=1;}if(P1_7==0){P1_3=0;}else{P1_3=1;}}}
先给你,传不上 太多了