目录 1
第1章 AVR单片机及其开发工具 1
1.1 什么是单片机 1
1.2 各种品牌的单片机及其特点 2
1.3 AVR单片机的C编译器 5
1.3.1 C编译器的选择 5
1.3.2 makefile的编写及其作用 7
1.4 AVR单片机程序的仿真与调试 9
1.4.1 在AVR Studio中实现模拟仿真 9
1.4.2 利用目标板上的硬件资源调试程序 11
1.5.1 AVR Prog简介 12
1.5 AVR单片机的编程下载软件 12
1.5.2 Pony Prog简介 13
1.6 AVR单片机参数计算器 15
1.7 设计个性化的AVR单片机集成开发环境 16
第2章 AVR单片机入门 20
2.1 ATmegal6(L)单片机的主要特点与内部结构 20
2.2 ATmegal6(L)的主要引脚及其作用 22
2.2.1 电源与复位电路 23
2.2.2 时钟电路 24
2.2.3 I/O端口 27
2.3 输入/输出端口的使用 28
2.4 常量与变量及其占用的存储空间 30
2.4.2 在Flash中定义常量 31
2.4.1 在SRAM中定义变量和常量 31
2.4.3 在EEPROM中读/写变量 32
2.5 中断 34
2.5.1 ATmegal6L的中断源 35
2.5.2 对中断进行操作 36
2.6 定时器/计数器 39
2.6.1 定时器0 39
2.6.2 计数器0 42
2.6.3 定时器/计数器1 43
2.7 串行外设接口 45
2.8 简易数字钟 50
2.8.1 16×2字符型液晶的使用 51
2.8.2 4×4矩阵式键盘的使用 62
2.8.3 简易数字钟的设计 69
2.9 液晶显示与键盘扫描进阶 75
第3章 CPLD/FPGA与VHDL入门 82
3.1 CPLD/FPGA与硬件描述语言 82
3.1.1 初学者使用HDL需要注意之处 83
3.1.2 用 Max+PlusII进行CPLD/FPGA开发的简单流程 84
3.2 VHDL入门解惑 84
3.3 常用电路的VHDL程序 93
3.3.1 分频电路 93
3.3.2 带使能端的7段数码管驱动程序 94
3.3.3 串行连接的7段数码管驱动程序 96
3.3.4 键盘扫描程序 98
3.3.5 键盘防抖电路 100
3.3.6 同步整形电路 102
3.3.7 SRAM控制电路 104
3.3.8 内部RAM的读/写 110
3.4 系统设计实例与练习 113
3.4.1 交通灯控制器 113
3.4.2 乒乓游戏机 118
3.4.3 三层电梯控制器 125
4.1 单片机控制FPGA启动相应的功能模块 127
第4章 单片机与FPGA之间的通信 127
4.2 单片机向FPGA传输命令字或少量数据 129
4.3 FPGA向单片机传输命令字或少量数据 134
4.3.1 单片机从FPGA“取”数据(通过SPI口) 134
4.3.2 FPGA向单片机“送”数据 136
4.4 单片机与FPGA互传大量数据 137
4.4.1 使用双端口RAM进行数据互传 137
4.4.2 使用Flex10K10的内部RAM 138
4.5 小结 140
第5章 简易数字频率计 143
5.1 测频的原理 143
5.2 测周期的原理 144
5.3.1 总体方案 145
5.3 系统设计 145
5.3.2 测频?测周与占空比测量模块设计 147
5.3.3 脉冲宽度测量模块的设计 158
5.3.4 并/串转换模块与单片机程序设计 164
第6章 波形发生器 166
6.1 直接数字频率合成 166
6.2 系统的初步方案 169
6.3 查找表的生成与使用 171
6.3.1 用Turbo C生成“正弦波查找表”和“三角波查找表” 171
6.3.2 单片机生成并处理查找表 173
6.4 FPGA设计方案及其模块对应的单片机程序 177
6.5 系统的抗干扰设计 184
7.1 简易逻辑分析仪原题 185
第7章 简易逻辑分析仪 185
7.1.1 任务 186
7.1.2 要求 187
7.1.3 评分标准 188
7.1.4 说明 188
7.2 竞赛报告 189
7.2.1 摘要 189
7.2.2 方案论证与比较 189
7.2.3 系统设计 191
7.2.4 软件设计 197
7.2.5 结论 199
7.2.6 英文摘要 200