《匠人手记》终稿目录
手 记 目 录(简略)
第一部 入门基础 1
手记1 单片机入门知识与基本概念 2
手记2 单片机的汇编指令系统 21
手记3 编程思路漫谈 39
手记4 程序设计阶段漫谈 54
手记5 MC68HC908应用札记 58
手记6 天梯——MSP430学习札记 71
手记7 EMC单片机指令应用的误区与技巧 83
手记8 EMC单片机的伪指令与宏的应用 86
第二部 经验技巧 97
手记9 十种软件滤波方法 98
手记10 一阶滤波算法之深入研究 112
手记11 分段线性插值算法之深入研究 128
手记12 移位法在乘除运算及数制转换中的妙用 133
手记13 按键漫谈 146
手记14 单键多击的检测程序 157
手记15 串口七日之创世纪篇 162
手记16 用普通IO口实现单线单工通讯 174
手记17 用普通IO口检测模拟值 178
手记18 功率调节与过零检测 193
第三部 设计案例 197
手记19 梦幻时钟摇摇棒大揭秘 198
手记20 汽车组合仪表开发手记 216
手记21 空调遥控器开发手记 260
手记22 手机锂电池充电器设计白皮书 278
第四部 网络杂文 286
手记23 《大话篇》系列 287
手记24 《匠人夜话》系列 296
手记25 匠人的论坛文集 307
手记26 匠人的博客文集 319
手记27 21icbbs人物志 327
手记28 《网络心路》之匠人版(连载) 335
手 记 目 录(详细)
第一部 入门基础 1
手记1 单片机入门知识与基本概念 2
一、 前言 2
二、 单片机系统简介 2
三、 存储器 3
四、 I/O口 4
五、 堆栈 5
六、 定时/计数器 7
七、 中断 8
八、 复位 9
九、 看门狗 13
十、 时钟电路和振荡源 15
十一、 脉宽调制(PWM) 16
十二、 模拟/数字转换(ADC) 17
十三、 串行通讯 20
十四、 后记 20
手记2 单片机的汇编指令系统 21
一、 前言 21
二、 汇编语言的前世今生 21
三、 汇编指令的有关概念 22
四、 汇编指令的寻址方式 23
五、 汇编指令的分类 24
六、 指令分解图的介绍与应用 27
七、 后记 28
手记3 编程思路漫谈 39
一、 前言 39
二、 程序的基本结构 39
三、 模块化的程序结构 40
四、 模块的事件驱动机制 41
五、 顺序调度机制与优先调度机制 42
六、 中断与前/后台的程序结构 43
七、 时间片与分时调度机制 44
八、 多进程并行运行机制 45
九、 多工序程序结构 47
十、 基于状态机思路的程序调度机制 48
十一、 更复杂的状态结构 51
十二、 后记 53
手记4 程序设计阶段漫谈 54
一、 前言 54
二、 方案制定阶段 54
三、 程序设计阶段 54
四、 代码编写阶段 55
五、 程序调试阶段 56
六、 程序维护阶段 56
手记5 MC68HC908应用札记 58
一、 前言 58
二、 C语言中嵌入汇编的7种方式 58
三、 C语言中数制的表示方式 59
四、 循环体的3种写法 59
五、 关于复位及中断的入口地址 59
六、 对被调函数的说明(声明) 60
七、 对中文的支持 60
八、 中断定义有两种方法 60
九、 数据类型 61
十、 定义寄存器方法 61
十一、 位的定义与使用 61
十二、 数据结构 64
十三、 工程文件系统介绍 64
十四、 IO口使用注意事项 64
十五、 关于强制类型转换 64
十六、 中断的使用方法 65
十七、 定时器中断频率的计算 66
十八、 如何产生LST文件 66
十九、 工程文件的组织方法 68
二十、 mon08的仿真模式的断点 69
二十一、 关于MON08调试的频率 69
二十二、 关于运算中需要注意的问题 69
二十三、 PLL功能的启动方式 69
二十四、 后记 70
手记6 天梯——MSP430学习札记 71
一、 缘起 71
二、 关于EZ430-F2013仿真器 71
三、 MSP430结构与特点 73
四、 快速开始——玩转EZ430-F2013的七个步骤 73
五、 EZ430-F2013仿真器的解剖及改装 77
六、 EZ430-F2013调试备忘 79
七、 后记 82
手记7 EMC单片机指令应用的误区与技巧 83
一、 前言 83
二、 减法指令的误区 83
三、 查表(散转)指令的误区 83
四、 关于“MOV R,R”指令 84
手记8 EMC单片机的伪指令与宏的应用 86
一、 前言 86
二、 伪指令与宏的优点 86
三、 位操作类宏 86
四、 条件分支结构类宏 87
五、 中断压栈与出栈类宏 91
六、 散转结构与表格的防溢保护方法 92
七、 跨页调用与跳转类宏 92
八、 显示段码表的的预定义方法 94
九、 后记 96
第二部 经验技巧 97
手记9 十种软件滤波方法 98
一、 前言 98
二、 限幅滤波法 98
三、 中位值滤波法 100
四、 算术平均滤波法 101
五、 递推平均滤波法 102
六、 中位值平均滤波法 103
七、 递推中位值平均滤波法 105
八、 限幅平均滤波法 106
九、 一阶滞后滤波法 107
十、 加权递推平均滤波法 108
十一、 消抖滤波法 109
十二、 后记 110
手记10 一阶滤波算法之深入研究 112
一、 前言 112
二、 原理与公式 112
三、 源程序 113
四、 滤波效果分析 114
五、 不足与优化 115
六、 实例应用 119
手记11 分段线性插值算法之深入研究 128
一、 前言 128
二、 分段线性插值法的原理 128
三、 分段线性插值法的公式 129
四、 分段线性插值法的应用步骤 129
五、 分段线性插值法的程序 131
手记12 移位法在乘除运算及数制转换中的妙用 133
一、 前言 133
二、 巧用移位法进行多字节乘除法计算 133
三、 巧用移位法进行数制转换 139
四、 后记 145
手记13 按键漫谈 146
一、 前言 146
二、 按键时序分析 146
三、 常见击键类型分析 147
四、 常见击键类型的判别方法 148
五、 多种击键类型的处理流程 151
六、 后记 153
手记14 单键多击的检测程序 157
一、 前言 157
二、 设计思路 157
三、 流程图 158
四、 源程序 160
手记15 串口七日之创世纪篇 162
一、 前言 162
二、 第一日 162
三、 第二日 164
四、 第三日 166
五、 第四日 168
六、 第五日 169
七、 第六日 170
八、 第七日 173
手记16 用普通IO口实现单线单工通讯 174
一、 前言 174
二、 单线单工通讯协议 174
三、 关于波特率自适应的处理 175
四、 从机通讯接收程序的流程图及说明 175
五、 后记 177
手记17 用普通IO口检测模拟值 178
一、 前言 178
二、 电阻类模拟信号的检测(温度的检测) 178
三、 电压类模拟信号的检测 185
四、 电容类模拟信号的检测(电容式触摸键的检测) 188
五、 后记 192
手记18 功率调节与过零检测 193
一、 前言 193
二、 移相触发 193
三、 过零触发 194
四、 过零信号检测 195
第三部 设计案例 197
手记19 梦幻时钟摇摇棒大揭秘 198
一、 前言 198
二、 硬件电路的制作 198
三、 字库的制作 200
四、 按键功能说明 202
五、 源程序 203
手记20 汽车组合仪表开发手记 216
一、 前言 216
二、 项目概述 216
三、 仪表电机原理与控制 217
四、 程序概述 221
五、 计程处理 228
六、 车速处理 232
七、 转速处理 236
八、 档位处理 237
九、 模拟信号的AD转化处理 238
十、 按键处理 239
十一、 LCD显示处理 242
十二、 故障报警与指示 252
十三、 点火器开关控制与低功耗处理 258
十四、 其它程序模块 259
十五、 后记 259
手记21 空调遥控器开发手记 260
一、 前言 260
二、 项目概述 260
三、 按键处理 263
四、 跳线检测 268
五、 红外发码控制 268
六、 LCD显示处理 276
七、 附:空调遥控器原理图 276
手记22 手机锂电池充电器设计白皮书 278
一、 前言 278
二、 锂(Li-Ion)电池特性 278
三、 充电器的软件控制流程 280
四、 充电器的硬件电路 283
五、 后记 285
第四部 网络杂文 286
手记23 《大话篇》系列 287
一、 前言 287
二、 大话篇之一 287
三、 大话篇之二 288
四、 大话篇之三 288
五、 大话篇之四 289
六、 大话篇之五 290
七、 大话篇之六 291
八、 大话篇之七 291
九、 大话篇之八 292
十、 大话篇之九 292
十一、 大话篇之十 293
十二、 大话篇之十一 293
十三、 大话篇之十二——《六一特别节目》 293
手记24 《匠人夜话》系列 296
一、 吃软?还是吃硬? 296
二、 你为谁打工? 296
三、 当机会来临时,你准备好了吗? 297
四、 鸡头?还是凤尾? 297
五、 领先同伴比超越自己更重要! 298
六、 不怕菜鸟,就怕懒虫! 298
七、 机会在于把握 299
八、 35岁危机,逃无可逃! 299
九、 别拿名词来唬人! 300
十、 新手三忌! 300
十一、 我们是Byte的奴隶? 301
十二、 如何提高工程部团队战斗力 302
十三、 枪手的新行规! 303
十四、 新技术催生的“廉价”时代! 304
十五、 有心栽花,无意插柳 304
十六、 如何评估开发费 305
十七、 被人惦记的感觉真好 306
手记25 匠人的论坛文集 307
一、 程序人生 307
二、 魔鬼定律 310
三、 高手的阐释…… 311
四、 四种懒人——关于C与ASM之争 312
五、 “一日不见如隔三秋”详解 312
六、 旧电脑的用途64招 313
七、 公道在人心 317
八、 七年之痒——写在升任21icbbs站长之际 318
手记26 匠人的博客文集 319
一、 匠人语录 319
二、 俺只是一个网络上的放羊娃! 320
三、 岁月如歌——记《匠人的百宝箱》开通一周年 321
四、 网络化生存——匠人版 323
五、 《流星花园》之匠人版 324
六、 《匠人的百宝箱》博客名趣事 325
七、 大话篇新传——匠人是如何变成21ICBLOG系统管理员的 325
手记27 21icbbs人物志 327
一、 前言 327
二、 hotpower 篇 327
三、 雁舞白沙 篇 328
四、 柔月 篇 328
五、 highway 篇 329
六、 CCCP 篇 329
七、 王奉瑾 篇 329
八、 电子小虫 篇 330
九、 刀客 篇 330
十、 万寿路 篇 331
十一、 碧水长天 篇 331
十二、 忘情天书 篇 332
十三、 张明峰 篇 332
十四、 平凡 篇 333
十五、 zenyin 篇 333
十六、 附记: 匠人自传 篇 334
手记28 《网络心路》之匠人版(连载) 335
一、 缘起 335
二、 接触 335
三、 包装 336
四、 练级 337
五、 升级 338
六、 放火 338
七、 交友 339
八、 博起 339
九、 自娱 340
十、 网赚 341
十一、 出走 341
十二、 未来 342
图 片 目 录
图 1.1:单片机系统方块图 2
图 1.2:单片机内部功能扩展示意图 3
图 1.3:汉诺塔示意图 5
图 1.4:压栈示意图 6
图 1.5:出栈示意图 6
图 1.6:中断嵌套处理示意图 8
图 1.7:MCS-51芯片复位信号 10
图 1.8:MCS常见复位电路(高电平有效) 11
图 1.9:简易复位电路(低电平有效) 11
图 1.10:防电源抖动复位电路(低电平有效) 11
图 1.11:残余电压保护复位电路(低电平有效) 12
图 1.12:施密特特性复位电路(低电平有效) 12
图 1.13:掉电预警复位电路(低电平有效) 13
图 1.14:看门狗示意图 13
图 1.15:基于CD4060芯片的看门狗电路 14
图 1.16:MAX813L方框图 15
图 1.17:晶振电路 16
图 2.1:MCS-51系统MOV指令图解 25
图 2.2:MCS-51系统加减法指令图解 25
图 2.3:MCS-51系统双操作数逻辑运算指令图解 26
图 2.4:MCS-51系统数值比较转移指令图解 27
图 2.5:MCS-51系统位操作指令图解 27
图 2.6:PIC低级单片机指令分解图 29
图 2.7:PIC中级单片机指令分解图 30
图 2.8:PIC高级单片机指令分解图 31
图 2.9:EMC 8BIT单片机指令分解图 32
图 2.10:HOLTEK 8BIT单片机指令分解图 33
图 2.11:SONIX 8BIT单片机指令分解图 34
图 2.12:SIGMA 8BIT单片机指令分解图 35
图 2.13:JAZTEK 8BIT单片机指令分解图 36
图 2.14:MCS-51系列单片机 指令分解图 37
图 2.15:MC68HC08系列单片机 指令分解图 38
图 3.1:基本程序结构 39
图 3.2:模块化程序结构 40
图 3.3:功能模块的程序结构 41
图 3.4:顺序调度机制 42
图 3.5:优先调度机制 43
图 3.6:前/后台程序结构 43
图 3.7:主程序中采取分时调度结构 44
图 3.8:子程序中采取分时调度结构 45
图 3.9:进程的分阶段运行结构 46
图 3.10:多进程并行运行示意图 46
图 3.11:单个工序的状态程序结构图 47
图 3.12:工序迁移图 48
图 3.13:一键多义按键执行程序结构图 49
图 3.14:状态迁移图 50
图 3.15:线性状态结构 51
图 3.16:树状多级状态结构 52
图 3.17:多维状态结构 52
图 5.1: 字体和制表符设置 60
图 5.2:P&E ICD设置菜单 67
图 5.3:P&E ICD设置窗口 67
图 5.4:Output设置 68
图 6.1:EZ430-F2013仿真器示意图 72
图 6.2:IAR开发环境截图 72
图 6.3:新建项目向导 74
图 6.4:选择芯片型号 75
图 6.5:选择调试设备 75
图 6.6:选择设备连接类型 76
图 6.7:编译/除错按钮 76
图 6.8:运行/停止按钮 77
图 6.9:EZ430-F2013仿真器原理图 78
图 6.10:EZ430-F2013仿真器改装示意图 78
图 6.11:选项菜单 79
图 6.12:编辑选项 80
图 6.13:设置自动对齐规则 80
图 6.14:如何设置自动生成LST文件 81
图 8.1:条件分支结构类宏的速记方法 88
图 9.1:限幅滤波效果图 99
图 9.2:递推平均滤波效果图 102
图 9.3:递推中位值平均滤波效果图 105
图 10.1:一阶滤波流程图 114
图 10.2:一阶滤波效果图A 114
图 10.3:一阶滤波效果图B 115
图 10.4:一阶滤波效果图C 115
图 10.5:一阶滤波效果图D 117
图 10.6:调整一阶滤波系数流程图 118
图 10.7:0KG时的采样数据示意图 119
图 10.8:15KG重量加载瞬间的采样数据示意图 120
图 10.9:计价秤的结构图 120
图 10.10:弹簧的阻尼振荡效果图 120
图 10.11:15KG加载时采样16次递推中位值平均滤波效果图 121
图 10.12:0KG时采样16次递推中位值平均滤波效果图 121
图 10.13:15KG加载时一阶滤波效果图 122
图 10.14:15KG加载时采样8次递推中位值平均滤波效果图 123
图 10.15:15KG加载时8次递推平均滤波+一阶滤波效果图 123
图 10.16:15KG加载时一阶滤波与16次递推平均滤波效果对比图 124
图 10.17:0KG时一阶滤波与16次递推平均滤波效果对比图 124
图 10.18:15KG加载时限幅滤波效果图 125
图 10.19:15KG加载时限幅滤波+一阶滤波效果图 126
图 10.20:15KG加载时一阶滤波与16次递推平均滤波效果对比图 126
图 10.21:0KG时一阶滤波与16次递推平均滤波效果对比图 127
图 11.1:分段线性插值法在温度检测中的应用 128
图 11.2:分段线性插值法示意图 129
图 11.3:分段线性插值法流程图 130
图 12.1:位移指令操作示意图 133
图 12.2:十进制的乘法竖式计算方法 134
图 12.3:二进制的乘法竖式计算方法 135
图 12.4:多字节二进制乘法计算流程图 135
图 12.5:十进制的除法竖式计算方法 137
图 12.6:二进制的除法竖式计算方法 137
图 12.7:多字节二进制除法计算流程图 138
图 12.8:十进制整数转二进制方法 141
图 12.9:十进制小数转二进制方法 141
图 12.10:二进制转十进制压缩BCD码流程图 143
图 12.11:十进制压缩BCD码转二进制流程图 145
图 13.1:按键时序图 146
图 13.2:短击/长击的区别示意图 148
图 13.3:单击/连击的识别示意图 149
图 13.4:单击/双击的区别示意图 150
图 13.5:复合键(同击)的识别示意图 150
图 13.6:按键释放(无击)的识别示意图 151
图 13.7:简单的按键检测处理流程图 153
图 13.8:可识别单击/连击、无击等击键类型的按键检测处理流程图 154
图 13.9:可识别单击/连击、短击/长击、无击等击键类型的按键检测处理流程图 155
图 13.10:可识别多种击键类型的按键检测处理流程图 156
图 14.1:单键多击检测流程图 159
图 15.1:MAX232引脚示意图 165
图 15.2:RS232-TTL转接电路图 165
图 15.3:自制RS232-TTL转接板 166
图 15.4:COMDEBUG软件界面 170
图 15.5:汽车仪表串行通讯平台软件界面 172
图 16.1:硬件连接图 174
图 16.2:通讯波形图 174
图 16.3:改进后的通讯波形图 175
图 16.4:通讯流程图 176
图 17.1:电容充电曲线 178
图 17.2:温度检测电路图 179
图 17.3:放电回路 180
图 17.4:参考电阻充电回路 181
图 17.5:温度电阻充电回路 181
图 17.6:电容充放电波形 182
图 17.7:阻值-比率-温度分度图 182
图 17.8:温度检测程序 184
图 17.9:电容充电计时子程序 185
图 17.10:用比较器实现ADC功能的电路 185
图 17.11:PWM占空值调节流程图 186
图 17.12:软件积分测电压流程图 187
图 17.13:利用单片机内置比较器实现ADC功能的电路 187
图 17.14:利用单片机内置比较器实现ADC功能的改进电路 188
图 17.15:利用单片机IO口取代比较器实现ADC功能的电路 188
图 17.16:电容式触摸键示意图 189
图 17.17:电容式触摸键的检测电路 189
图 17.18:充/放电方式检测波形 190
图 17.19:电容式触摸键的检测流程 191
图 17.20:一款4键电容式触摸键DEMO板实际操作效果图 192
图 18.1:移相触发控制波形图 193
图 18.2:过零触发控制波形图 194
图 18.3:过零检测电路A 195
图 18.4:过零检测电路B 195
图 18.5:过零检测电路C 196
图 19.1:摇摇棒原理图 198
图 19.2:摇摇棒整体外形 199
图 19.3:摇摇棒静止状态 199
图 19.4:摇摇棒挥动时的显示效果 199
图 19.5:惯性开关示意图 199
图 19.6:惯性开关实物解析图 200
图 19.7:Excel字码表 200
图 19.8:条件格式的设置 201
图 19.9:部分字符效果 201
图 19.10:摇摇棒按键功能图 202
图 20.1:汽车组合仪表系统框图 216
图 20.2:电机的结构示意图 218
图 20.3:电机的驱动波形图 218
图 20.4:分步驱动模式脉冲序列 219
图 20.5:脉冲细分 219
图 20.6:微步驱动模式脉冲序列 220
图 20.7:电机驱动电路 222
图 20.8:主程序流程图 224
图 20.9:1毫秒定时处理程序流程图 224
图 20.10:10毫秒定时处理程序流程图 225
图 20.11:100毫秒定时处理程序流程图 225
图 20.12:500毫秒定时处理程序流程图 225
图 20.13:车速脉冲信号调制电路 229
图 20.14:总计值处理程序流程图 229
图 20.15:从E2PROM中读总计值程序流程图 230
图 20.16:向E2PROM中写总计值程序流程图 231
图 20.17:车速指示线性插值法图 233
图 20.18:车速计算程序流程图 234
图 20.19:车速电机速度(指针微步移动时间)控制程序流程图 235
图 20.20:车速电机移动一微步程序流程图 236
图 20.21:转速脉冲信号调制电路 236
图 20.22:LCD显示示意图 242
图 20.23:不同档位的显示段码示意图 243
图 20.24:LCD驱动波形图 243
图 20.25:显示初始化流程图 245
图 20.26:显示流程图 246
图 20.27:待机处理程序流程图 258
图 21.1:空调遥控器实物图 260
图 21.2:空调遥控器系统框图 261
图 21.3:空调遥控器程序框图 261
图 21.4:空调遥控器CPU工作模式迁移示意图 262
图 21.5:空调遥控器按键检测原理图 263
图 21.6:空调遥控器按键处理流程图 263
图 21.7:空调遥控器跳线电路 268
图 21.8:空调遥控器码制有关参数 269
图 21.9:一串完整的码波形 269
图 21.10:起始码波形 269
图 21.11:逻辑“1”波形 270
图 21.12:逻辑“0”波形 270
图 21.13:IR功能定时器资源分配示意图 270
图 21.14:空调遥控器红外发码电路 272
图 21.15:空调遥控器红外发码流程图 272
图 21.16:空调遥控器显示处理流程图 276
图 21.17:空调遥控器原理图 277
图 22.1:锂电池充电曲线图 279
图 22.2:锂电池充电工序(状态)迁移图 280
图 22.3:锂电池充电器原理图(充电控制部分) 284
图 28.1:程序匠人的早期签名 337
图 28.2:《匠人的百宝箱》LOGO 337
表 格 目 录
表 3.1:状态迁移表 51
表 5.1:CW3.1支持的数据类型 61
表 6.1:MSP430的工作模式 82
表 12.1:四则运算模块寄存器定义 134
表 12.2:数制转换模块寄存器定义 142
表 12.3:IO口状态分析 145
表 13.1:击键类型说明表 147
表 13.2:按键检测程序寄存器定义 152
表 13.3:按键检测程序标志位定义 152
表 13.4:按键检测程序常量参数定义 152
表 14.1:击键次数与最多能识别的击键组合方式对照表 158
表 14.2:键值表 158
表 15.1:汽车仪表串行通讯协议 164
表 17.1:充电计时器分配表 184
表 19.1:摇摇棒状态迁移表 203
表 20.1:电机的电气特性 221
表 20.2:项目文件功能介绍 223
表 20.3:中断资源分配表 228
表 20.4:车速与电机指针目标步数对应表 233
表 20.5:电机的单步移动时间与电机转速范围 234
表 20.6:档位信号占空表 237
表 20.7:ADC通道分配表 238
表 20.8:按键功能真值表 239
表 20.9:LCD参数表 243
表 20.10:显示真值表 244
表 20.11:声光报警功能一览表 252
表 21.1:空调操作模式表 264
表 21.2:时间设置模式表 264
表 21.3:定时模式表 264
表 21.4:风速模式表 265
表 21.5:纵摆模式表 265
表 21.6:横摆模式表 265
表 21.7:空调遥控器按键真值表 267
表 21.8:空调遥控器跳线意义表 268
表 21.9:IR功能定时器资源分配表 270
表 21.10:遥控码数据真值表 271
表 22.1:预充状态下PWM占空调节规则 281
表 22.2:快充状态下PWM占空调节规则 281
表 22.3:快充状态下充满判断规则 281
表 22.4:快充状态下充电结束判断规则 282
表 22.5:故障类型及判断规则 282
表 22.6:指示灯状态 283
表 22.7:温度检测口的电压判定规则 285
用户1365288 2008-3-25 16:48
用户1362921 2008-3-22 17:29
用户8116 2008-3-18 16:29
用户477880 2008-3-17 17:18
用户102517 2008-3-15 18:24
用户102516 2008-3-13 16:44
用户66428 2008-3-11 16:35
用户1140661 2008-3-10 19:31
用户1003036 2008-3-10 11:29
用户120111 2008-3-10 00:52