《51单片机100例程序设计.doc》由会员分享,可在线阅读,更多相关《51单片机100例程序设计.doc(251页珍藏版)》请在金锄头文库上搜索。
1、100 例程序设计范例汇总例程序设计范例汇总 第一章第一章 4 实例 1 使用累加器进行简单加法运算 4 实例 2 使用 B 寄存器进行简单乘法运算 4 实例 3 通过设置 RS1 RS0 选择工作寄存器区 1 4 实例 4 使用数据指针 DPTR 访问外部数据数据存储器 4 实例 5 使用程序计数器 PC 查表 4 实例 6 IF语句实例 4 实例 7 SWITCH CASE语句实例 4 实例 8 FOR语句实例 4 实例 9 WHILE语句实例 5 实例 10 DO WHILE语句实例 5 实例 11 语句形式调用实例 5 实例 12 表达式形式调用实例 5 实例 13 以函数的参数形式调
2、用实例 5 实例 14 函数的声明实例 5 实例 15 函数递归调用的简单实例 5 实例 16 数组的实例 6 实例 17 指针的实例 6 实例 18 数组与指针实例 6 实例 19 P1 口控制直流电动机实例 6 第二章第二章 8 实例 20 用 74LS165 实现串口扩展并行输入口 8 实例 21 用 74LS164 实现串口扩展并行输出口 10 实例 22 P0 I O 扩展并行输入口 12 实例 23 P0 I O 扩展并行输出口 12 实例 24 用 8243 扩展 I O 端口 12 实例 25 用 8255A 扩展 I O 口 14 实例 26 用 8155 扩展 I O 口
3、19 第三章第三章 26 实例 29 与 AT24 系列 EEPROM 接口及驱动程序 26 实例 30 EEPROM X5045 接口及驱动程序 30 实例 31 与铁电存储器接口及驱动程序 33 实例 32 与双口 RAM 存储器接口及应用实例 35 实例 33 与 NANDFLASH K9F5608 接口及驱动程序 35 第四章第四章 43 实例 34 独立键盘控制 43 实例 35 矩阵式键盘控制 44 实例 36 改进型 I O 端口键盘 46 实例 37 PS 2 键盘的控制 49 实例 38 LED 显示 53 实例 39 段数码管 HD7929 显示实例 54 实例 40 16
4、 2 字符型液晶显示实例 55 实例 41 点阵型液晶显示实例 61 实例 42 LCD 显示图片实例 63 第五章第五章 70 实例 43 简易电子琴的设计 70 实例 44 基于 MCS 51 单片机的四路抢答器 71 实例 45 电子调光灯的制作 76 实例 46 数码管时钟的制作 81 实例 47 LCD 时钟的制作 96 实例 48 数字化语音存储与回放 103 实例 49 电子标签设计 112 第六章第六章 120 实例 50 指纹识别模块 121 实例 51 数字温度传感器 121 第七章第七章 124 实例 53 超声波测距 124 实例 54 数字气压计 125 实例 55
5、基于单片机的电压表设计 132 实例 56 基于单片机的称重显示仪表设计 133 实例 57 基于单片机的车轮测速系统 136 第八章第八章 138 实例 58 电源切换控制 138 实例 59 步进电机控制 140 实例 60 单片机控制自动门系统 141 实例 61 控制微型打印机 144 实例 62 单片机控制的 EPSON 微型打印头 144 实例 63 简易智能电动车 145 实例 64 洗衣机控制器 149 第九章第九章 152 实例 65 串行 A D 转换 152 实例 66 并行 A D 转换 153 实例 67 模拟比较器实现 A D 转换 154 实例 68 串行 D A
6、 转换 155 实例 69 并行电压型 D A 转换 156 实例 70 并行电流型 D A 转换 156 实例 71 2 I C接口的 A D 转换 157 实例 72 2 I C接口的 D A 转换 161 第九单片机开发网 第十章第十章 164 实例 73 单片机间双机通信 164 实例 74 单片机间多机通信方法之一 166 实例 75 单片机间多机通信方法之二 171 实例 76 PC 与单片机通信 176 实例 77 红外通信接口 178 第十一章第十一章 180 实例 79 单片机实现 PWM 信号输出 180 实例 80 实现基于单片机的低频信号发生器 182 实例 81 软件
7、滤波方法 183 实例 82 FSK 信号解码接收 186 实例 83 单片机浮点数运算实现 187 实例 84 神经网络在单片机中的实现 192 实例 85 信号数据的 FFT 变换 194 第十二章第十二章 198 实例 86 2 I C总线接口的软件实现 198 实例 87 SPI 总线接口的软件实现 200 实例 88 1 WIRE 总线接口的软件实现 205 实例 89 单片机外挂 CAN 总线接口 207 实例 90 单片机外挂 USB 总线接口 210 实例 91 单片机实现以太网接口 214 实例 92 单片机控制 GPRS 传输 221 实例 93 单片机实现 TCP IP
8、协议 223 第十三章第十三章 229 实例 94 读写 U 盘 229 实例 95 非接触 IC 卡读写 234 实例 96 SD 卡读写 238 实例 97 高精度实时时钟芯片的应用 242 第十四章第十四章 247 实例 98 智能手机充电器设计 247 实例 99 单片机控制门禁系统 248 第一章第一章 实例 1 使用累加器进行简单加法运算 MOVA 02H A 2 ADD A 06H A A 06H 实例 2 使用 B 寄存器进行简单乘法运算 MOVA 02H A 2 MOVB 06H B 6 MUL AB BA A B 6 2 实例 3 通过设置 RS1 RS0 选择工作寄存器区
9、 1 CLR PSW 4 PSW 4 0 SETBPSW 5 PSW 5 1 实例 4 使用数据指针 DPTR 访问外部数据数据存储器 MOV DPTR data16 DPTR data16 MOVXA DPTR A DPTR MOVX DPTR A DPTR A 实例 5 使用程序计数器 PC 查表 MOV data data MOVCA A DPTR PC PC 1 A A PC 实例 6 if 语句实例 void main int a b c min printf n please input three number scanf d d d if a b else if b a els
10、e if c aa printf d a 实例 9 while 语句实例 void main int i 0 while i 10 i 实例 10 do while 语句实例 void main int i 0 do i while i 10 实例 11 语句形式调用实例 void main int i 0 while i 10 i Sum 函数调用 实例 12 表达式形式调用实例 void main int a b i 0 while i 10 i i 4 Sum a b 函数调用 实例 13 以函数的参数形式调用实例 void main int a b c i 0 while i 10 i
11、 i max c Sum a b 函数调用 实例 14 函数的声明实例 void main int max int x int y 函数的声明 int a b c i 0 while i 10 i i max c Sum a b 函数调用 实例 15 函数递归调用的简单实例 void fun int a 1 result i for i 0 i 10 i a I result fun 函数调用 return result 实例 16 数组的实例 void main char num 3 3 定义多维数组 int i 0 j 0 for i 3 i for j 3 j printf c num
12、i j printf n 实例 17 指针的实例 void main int a 3 p p 将变量 a 的地址赋值给指针变量 p printf d d a p 输出二者的数值进行对比 实例 18 数组与指针实例 void main int i 3 num 3 1 2 3 p p num 将数组 num 的地址赋值给指针变量 p result max p 3 函数调用 计算数组的最大值 实例 19 P1 口控制直流电动机实例 sfr p1 0 x90 sbit p10 p1 0 sbit p11 p1 1 void main int i m int j 100 int k 20 正快转 for
13、 i 0 i 100 i P10 1 for j 0 j 50 j m 0 P10 0 第九单片机开发网 for j 0 j 10 j m 0 正慢转 for i 0 i 100 i P10 1 for j 0 j 10 j m 0 p10 0 for j 0 j 50 j m 0 负快转 for i 0 i 100 i p11 1 for j 0 j 50 j m 0 p11 0 for j 0 j 10 j m 0 负慢转 for i 0 i 100 i p11 1 for j 0 j 10 j m 0 p11 0 for j 0 j 50 j m 0 第二章第二章 实例 20 用 74L
14、S165 实现串口扩展并行输入口 1 函数声明管脚定义 库函数声明 管脚定义 include sbit LOAD P1 7 用 P1 7 控制 SH 管脚 2 串口初始化函数 UART init 函数名称 UART init 功能说明 串口初始化 设定串口工作在方式 0 void UART init void SCON 0 x10 设串行口方式 0 允许接收 启动接收过程 ES 0 禁止串口中断 3 数据接收函数 PA 函数名称 PA 输入参数 无 输出参数 返回由并口输入的数据 功能说明 接收八位串行数据 unsigned char PA void unsigned char PA data
15、 LOAD 0 当 P1 7 输出低电平 74LS165 将并行数据装入寄存器 当中 LOAD 1 当 P1 7 输出高电平 74LS165 在时钟信号下进行移位 UART init 74LS165 工作在时钟控制下的串行移位状态 while RI 0 循环等待 RI 0 PA data SBUF 第九单片机开发网 return PA data 返回并行输入的数据 1 函数声明管脚定义 库函数声明 管脚定义 include sbit a7 ACC 7 sbit simuseri CLK P1 6 用 P1 6 模拟串口时钟 sbit simuseri DATA P1 5 用 P1 5 模拟串口
16、数据 sbit drive74165 LD P1 7 用 P1 7 控制 SH 管脚 2 数据输入函数 in simuseri 函数名称 in simuseri 输入参数 无 输出参数 data buf 功能说明 8 位同位移位寄存器 将 simuseri DATA 串行输入的数据按从低位到 高位 保存到 data buf unsigned char in simuseri void unsigned char i unsigned char data buf i 8 do ACC ACC 1 for simuseri CLK 0 a7 simuseri DATA for simuseri CLK 1 while i 0 simuseri CLK 0 data buf ACC return data buf 3 数据输出函数 PAs 函数名称 PAs 输入参数 无 输出参数 PAs buf 返回并行输入 74LS165 的数据 功能说明 直接调用 即可读取并行输入 74LS165 的数据 不需要考虑 74LS165 的 工作原理 unsigned char PAs void unsig