minier 发表于 2008-4-10 18:06:22

AVR单片机新书(2008.2):AVR单片机原理及测控工程应用——基于ATmega48/ATmega16 (随时

http://www.buaapress.com.cn/buaa/html/book/view.asp?id=2158&cat_f=%E5%8D%95%E7%89%87%E6%9C%BA%E4%B8%8E%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F&cat_s=%E5%8D%95%E7%89%87%E6%9C%BA


AVR单片机原理及测控工程应用——基于ATmega48/ATmega16   刘海成编著 北京航空航天大学出版社

内容简介   本书以AVR系列中的ATmega48/ATmega16单片机作为讲述对象,同时介绍具有同样结构、存储器容量稍大的ATmega88、ATmega168/ATmega32单片机。以计算机测控技术和单片机为核心的计算机测控系统设计为重点讲述内容,重点讲述设计原理、方法和设计步骤,给出常用传感器及仪器仪表的设计实例和典型控制系统设计实例。还重点讲述广泛应用的模糊PID控制及PWM应用技术,将课程体系深度融合,抓住共性问题,试图在讲述ATmega48/ATmega16单片机原理的同时,通过单片机的应用来讲述单片机的相关应用技术及应用领域,使读者建立起嵌入式系统的概念,从而架起电气信息和仪器仪表类工程领域与计算机应用的桥梁。


目录 第1章ATmega48/ATmega16单片机概述

1.1AVR系列单片机概述1
1.1.1单片机知识问答1
1.1.2单片机与嵌入式系统2
1.1.3当代单片机内核结构的发展趋势3
1.1.4AVR单片机概述4
1.1.5AVR系列单片机选型5
1.2ATmega48/ATmega16单片机及其存储器结构7
1.2.1ATmega48/88/168和ATmega16/32单片机性能概况8
1.2.2ATmega48/ATmega16内核结构9
1.2.3ATmega48/ATmega16存储器结构9
1.3ATmega48/ATmega16最小系统与系统初始配置11
1.3.1ATmega48/ATmega16的引脚排列11
1.3.2ATmega48/ATmega16最小系统设计16
1.3.3ATmega48/ATmega16的系统时钟源及单片机熔丝配置19
1.3.4AVR单片机ISP全攻略及熔丝补救方法20
1.3.5ATmega48/ATmega16的掉电检测电路21
1.4嵌入式C编程与AVR22
1.4.1AVR的C语言开发环境22
1.4.2C语言环境访问MCU寄存器23
1.4.3GCC编译器下EEPROM和Flash存储器的访问24
1.4.4C语言下EEPROM存储器的通用访问方法27
1.4.5AVR C编译器的在线汇编30
1.4.6标准C下位操作实现综述31
1.4.7如何优化单片机系统设计的C代码33
1.4.8C语言宏定义技巧及常用宏定义总结37
1.4.9从Keil C到AVR的C编程38
1.4.10前后台式嵌入式软件结构39
1.5AVR的开发工具与开发技巧39
1.5.1AVR单片机嵌入式系统的软件开发平台AVR Studio40
1.5.2AVR的JTAG仿真调试与ISP40
1.5.3基于AVR Studio和GCCAVR的AVR的单片机
仿真调试步骤42
1.5.4只具备ISP调试条件下的AVR单片机调试技巧48
1.6如何成为单片机开发高手50
1.6.1充分了解设计需求,确定合适的解决方案51
1.6.2原理图设计中要注意的问题51
1.6.3PCB设计中要注意的问题52
1.6.4TQFP和LQFP器件的焊接方法52
1.6.5单片机与嵌入式技术的3层境界54
第2章ATmega48/ATmega16单片机I/O接口与人机接口_技术
2.1AVR单片机通用I/O端口56
2.1.1AVR的通用I/O端口56
2.1.2通用I/O上下拉电阻的应用总结58
2.2人机接口——按键59
2.2.1机械触点按键常识60
2.2.2矩阵式键盘接口_技术及编程62
2.2.3智能查询键盘程序设计与单片机测控系统的人机操作界面64
2.3LED显示技术原理与实现66
2.3.1数码管的译码显示67
2.3.2LED数码管的静态驱动显示和动态驱动显示67
2.4AVR的SPI通信接口及其应用70
2.4.1AVR单片机的硬件SPI通信接口71
2.4.2AVR单片机SPI通信的相关寄存器结构72
2.4.3AVR单片机SPI通信驱动程序设计75
2.4.4SPI总线接口8位共阴数码管驱动芯片MAX721976
2.4.5两个AVR实现硬件SPI双机通信78
2.4.6软件模拟SPI主机程序设计80
2.4.7用SPI与74HC595接口驱动多共阳数码管静态显示实例81
2.5AVR两线串行通信接口TWI(兼容I2C)及其应用82
2.5.1I2C总线概述83
2.5.2AVR兼容I2C的两线通信接口TWI及其相关寄存器84
2.5.3TWI的使用方法87
2.5.4通过TWI (I2C)主机接口操作AT24C0288
2.5.5ATmega48通过I2C从机模式模拟AT24C0289
2.5.6软件模拟I2C主机读/写AT24C0291
2.6128×64 SPLC501液晶控制器及应用95
2.6.1128×64点阵图形液晶驱动芯片——SPLC50196
2.6.2SPLC501程序设计举例99
2.7SMC1602A液晶屏及其接口应用101
2.7.1SMC1602A总线方式驱动接口及读/写时序101
2.7.2操作SMC1602A的11条指令102
2.7.3AVR与SMC1602A液晶接口C代码104
2.8ATmega48/ATmega16片上A/D及其应用107
2.8.1片内基准电压107
2.8.2ATmega48/ATmega16与A/D有关的寄存器108
2.8.3AVR的A/D使用和应用方法总结113
2.8.4A/D键盘114

第3章ATmega48/ATmega16单片机中断系统与定时控制
3.1ATmega48/ATmega16的中断系统116
3.1.1中断的功能116
3.1.2ATmega48/ATmega16中断源和中断向量117
3.1.3AVR单片机中断响应过程119
3.1.4AVR单片机的中断优先级119
3.1.5AVR中断响应的时间120
3.1.6高级语言开发环境中中断服务程序的编写120
3.2ATmega48/ATmega16的外中断及应用实例121
3.2.1INT0、INT1和INT2中断控制的相关寄存器122
3.2.2ATmega48引脚电平变化中断寄存器124
3.2.3外中断实例125
3.3ATmega48/ATmega 16的定时器/计数器0——T/C0127
3.3.1ATmega48/ATmega16的定时器/计数器127
3.3.2T/C0概述128
3.3.3T/C0的输出比较功能及PWM输出模式129
3.3.4ATmega48/ATmega16的T/C0相关寄存器131
3.3.5ATmega48/ATmega16中T/C0的定时应用举例136
3.4ATmega48/ATmega 16的定时器/计数器1——T/C1137
3.4.1T/C1的输入捕捉单元139
3.4.2T/C1的输出比较单元140
3.4.3T/C1的输出比较功能及PWM输出模式141
3.4.4T/C1的相关寄存器146
3.4.5利用ICP测量方波的周期150
3.5ATmega48/ATmega16片上模拟比较器与ICP捕获应用151
3.5.1模拟比较器的相关寄存器151
3.5.2模拟比较器应用——超限监测153
3.5.3模拟比较器及ICP1综合应用——正弦波周期测量154
3.6ATmega48/ATmega16的定时器/计数器2——T/C2155
3.6.1T/C2的输出比较功能及PWM输出模式156
3.6.2T/C2的相关寄存器158
3.6.3基于T/C2的RTC系统设计166
3.7PWM技术应用举例170
3.7.1基于PWM调制的红外线遥控器的设计170
3.7.2基于PWM实现DAC173
3.8AVR单片机看门狗定时器176
3.8.1抗干扰与看门狗技术176
3.8.2AVR的看门狗及应用技巧178
第4章单片机测控系统与智能仪器
4.1单片机测控系统与智能仪器概述183
4.1.1单片机测控系统及构成184
4.1.2电子测量与单片机检测技术185
4.1.3智能化测量仪表186
4.1.4智能传感器与自动检测技术189
4.1.5小结195
4.2信号检测的数字滤波技术195
4.2.1限幅滤波法195
4.2.2中值滤波法196
4.2.3算术平均滤波法196
4.2.4递推平均滤波法197
4.2.5加权递推平均滤波法197
4.2.6一阶滞后滤波法198
4.2.7高通滤波器和带通滤波器198
4.3系统误差校正技术199
4.3.1系统误差的模型校正法199
4.3.2利用校准曲线通过查表法修正系统误差201
4.3.3非线性校正203
4.4智能仪表量程自动转换与标度变换技术208
4.4.1量程自动转换技术208
4.4.2标度变换209
4.5单片机测控系统的抗干扰设计210
4.5.1单片机应用系统抗干扰设计的基本原则210
4.5.2电子线路中的屏蔽技术211
4.5.3单片机应用系统中PCB布线的基本原则212
4.5.4单片机软件抗干扰技术214
4.6便携式设备的低功耗设计215
4.6.1延长单片机系统电池供电时间的几点措施215
4.6.2利用单片机的休眠与唤醒功能降低单片机系统功耗217
第5章智能传感器与智能仪器设计
5.1基于恒流源的铂电阻智能测温仪表的设计221
5.1.1铂电阻温度传感器222
5.1.2铂电阻测温的基本电路222
5.1.3基于双恒流源的3线式铂电阻测温探头设计224
5.1.4基于ICL7135的Pt100测温系统设计225
5.1.5基于恒流源的铂电阻智能测温仪表的设计231
5.1.6关于精密基准源TL431232
5.2真有效值仪表的设计234
5.2.1真有效值测量的4种途径235
5.2.2单片真有效值/直流变换器——AD736236
5.2.3真有效值仪表的智能仪表设计238
5.3晶体管β参数测试仪的设计241
5.3.1根据晶体三极管共射极放大电路测试β242
5.3.2晶体管β参数测试仪的工作状态设定242
5.3.3基于TLC2543的高精度电压测量电路及软件设计244
5.3.4关于液晶显示单元的说明249
5.3.5系统软件总体设计流程249
5.4精密压控恒流源的设计249
5.4.1几种V/I转换和恒流源电路图的比较249
5.4.2数控宽范围调整、大电流输出恒流源核心电路方案250
5.4.3系统软件设计252
5.5精密数控对称双极性输出直流稳压电源的设计252
5.5.1对称双极性数控电压源及功率驱动电路设计253
5.5.2过流保护单元电路的设计255
5.5.3系统供电电源设计256
5.5.4总结256
5.6线性网络频率响应测试仪的设计258
5.6.1频域测量仪器仪表概述258
5.6.2正弦扫频信号源259
5.6.3正弦信号的幅度测量267
5.6.4正弦信号的相位测量268
5.6.5频响特性测试仪的软件设计269
5.7基于MCU和光栅的高精度位移、速度传感器的原理及设计269
5.7.1光栅传感器270
5.7.2基于MCU和光栅的高精度位移、速度传感器的原理270
5.8等精度数字频率计的设计273
5.8.1仪器仪表中的频率测量技术273
5.8.2等精度频5率计的实现276
第6章基于模糊PID控制的计算机控制系统设计与应用
6.1计算机控制技术及算法概述279
6.1.1传统的PID控制280
6.1.2自适应控制280
6.1.3鲁棒控制280
6.1.4预测控制280
6.1.5最优控制281
6.1.6智能控制281
6.2数字PID控制技术282
6.2.1PID控制技术282
6.2.2复合式数字PID控制技术284
6.2.3PID参数的整定287
6.3基于增量式数字PID的热水器恒温控制系统设计289
6.3.1恒温控制系统的构成290
6.3.2传感器的选择290
6.3.3温控器功率输出器件——过零式固态继电器291
6.3.4水温特性及其传递函数分析291
6.3.5温控器系统软件设计292
6.4模糊控制技术与模糊控制系统设计300
6.4.1模糊控制概述300
6.4.2模糊集合与隶属函数301
6.4.3模糊推理303
6.4.4采用增量式模糊控制器的水温控制系统304
6.5基于模糊PID控制的计算机控制系统设计305
6.5.1模糊PID控制器306
6.5.2智能PID控制器参数的智能调整306
6.5.3模糊自整定PID控制器原理307
6.6步进电动机的单片机控制308
6.6.1步进电动机的工作方式308
6.6.2步进电动机的控制方法309
6.6.3步进电动机的运行控制及程序设计309
6.6.4步进电动机的选用312
第7章分布式智能测控系统及其应用
7.1AVR的串行通信接口USART314
7.1.1AVR的通用同步和异步串行接口USART314
7.1.2USART寄存器描述315
7.1.3自适应波特率技术321
7.1.4USART基本应用程序模块设计及说明321
7.1.5ATmega48 SPI模式下的USART——MSPIM328
7.2基于RS232的通信系统设计333
7.2.1RS232C介绍与PC硬件333
7.2.2UART电平协议转换芯片MAX232和MAX3232334
7.2.3单片机点对点UART通信设计举例335
7.2.4PC端Windows操作系统下RS232通信程序设计341
7.3基于RS485的现场总线监控系统设计342
7.3.1RS485驱动芯片及接口应用343
7.3.2RS485现场总线测控系统组成结构343
7.3.3PC与RS485通信接口设计344
7.3.4RS485网络节点的软件设计346
7.3.5RS485总线通信系统的可靠性分析及措施352
7.4基于DS18B20的多点温度巡回检测仪的设计355
7.4.1DS18B20概貌356
7.4.2DS18B20的内部构成及测温原理357
7.4.3DS18B20的访问协议358
7.4.4DS18B20的自动识别技术360
7.4.5DS18B20的单总线读/写时序361
7.4.6DS18B20使用中的注意事项362
7.4.7ATmega48读取单片DS18B20转换温度数据程序362
7.5nRF401短距离无线通信系统设计364
7.5.1短距离无线电通信技术简介365
7.5.2nRF401短距离无线通信系统介绍367
7.5.3nRF401无线通信模块设计368
7.5.4AVR单片机和nFR401接口设计373
7.5.5PC机和nRF401接口电路设计373
7.5.6AVR单片机控制nRF401通信软件设计374
附录ASCII表380

参考文献381

chuchu3030 发表于 2008-4-10 18:13:01

书不错

minier 发表于 2008-4-10 18:18:25

首个勘误表ourdev_248162.doc(文件大小:35K) (原文件名:勘误表.doc)

twtyv 发表于 2008-4-10 18:31:52

内容不少呀!
好像是面较广,但对于初学者好像并不太实用呀!

minier 发表于 2008-4-10 20:10:27

实用与否与面广有关系吗,有也是正面的影响吧!!??!!

Chenxg 发表于 2008-4-10 21:00:06

看着目录,觉得很想买,但是我怕买了后,发现上当了。我想问一下,370多页的书,能装得下这多的内容?书中内容不会是蜻蜓点水吧,如果真是的话,我相信网络中应该有这些“概述”.说实话,我对北航的有些书,实在很生气。比如《单片机语言C51典型应用设计》,里面的代码没有注释不说,还把keil c51中头文件<<reg51.h>>,还有连拼音输入法的字库也都印在书中,整本书都是代码,没有注释,没有一张电路图。。。。。(我乃后生,如果有冒昧之处,敬请原谅)。

wkman 发表于 2008-4-10 21:06:27

书中内容不会是蜻蜓点水吧,

貌似北航出了不少这样的书,。。。

minier 发表于 2008-4-11 11:24:02

to【5楼】 Chenxg 【6楼】 wkman
      没有多余的代码!不过阅读本书也就需要有点基础!

binglin 发表于 2008-4-11 14:16:58

请问楼主,这书是以那种C编译器为主,不要每一种都提一下,搞到乱七八糟.

minier 发表于 2008-4-11 15:54:50

完全以GCC为蓝本

binglin 发表于 2008-4-11 16:03:49

好,我去北航看看购买方便不方便.

去北航网站看了,发觉这个网站非常不人性化,所谓的会员注册,竟然在选择省份时(不充许自行填写),是空白,不选又不让注册,纯属在浪费读者时间.

算了,等其它网站有卖时再买吧.

mfm123 发表于 2008-4-11 18:44:41

当当有卖 啊http://product.dangdang.com/product.aspx?product_id=20177315

newhanyu 发表于 2008-4-11 19:26:38

大致上看了一下这本书,觉得不错。本书中关于PID部分的介绍是目前所有单片机书中最详细的,但是本书不适合于初学者。

stevenlu 发表于 2008-4-12 08:46:51

看目录还不错,有机会去书店看看。好的话就买一本

binglin 发表于 2008-4-12 09:41:23

当当还真有卖,已下订单购买,货到付款.

感谢 mfm123 兄弟提供的信息,谢谢.

indi 发表于 2008-4-12 19:12:16

昨天我也在当当然订购了一本

chuanhuibh 发表于 2008-4-12 19:19:39

支持出书,顶一下.
我是北航的,也许我们学校有些方面做的不好,对不住大家了,请多多包涵

xggz_wb 发表于 2008-4-12 20:24:39

前天在武汉买了一本,回来就看到了这个帖子 呵呵

楼主就是本书的作者吧,这就好了,有不懂的就向您请教

minier 发表于 2008-4-12 20:48:34

to 【17楼】 xggz_wb
非常愿意与大家共同交流!
也欢迎大家批评并指出意见

minier 发表于 2008-4-12 21:23:24

最新勘误表20080412:
点击此处下载 ourdev_250302.doc(文件大小:39K) (原文件名:勘误表.doc)

nick870208 发表于 2008-4-12 23:01:54

不知道代码怎么样
比如PID控制,是否有成功的程序在里边

wisebaby 发表于 2008-4-12 23:17:07

顶。明君留

minier 发表于 2008-4-13 08:59:47

to【20楼】 nick870208

PID有成功实例

zuoyi 发表于 2008-4-13 11:22:04

祝贺楼主的又一部新书,这本书很好的诠释了avr单片机。作为一个初学者来讲述里面有很多应该借鉴的地方!
   特别是实例应用与PID算法方面。
   另辟蹊径是本好书。
   书读百遍,其意自现。
       顶下去!!!

fangmcu 发表于 2008-4-13 14:35:56

早上,去书店买了这本书,觉得很不错,以后要多请教楼主了,谢谢!!

minier 发表于 2008-4-13 15:45:25

to【24楼】 fangmcu 方谭
太客气了!希望这本书能够帮助你!

irerror 发表于 2008-4-13 16:11:05

我一直想买本关于AVR的书,这次就买这了,
以后有不懂的,还得需要楼主的帮助,

minier 发表于 2008-4-13 20:58:19

to 【26楼】 irerror
愿意效劳

yzz163 发表于 2008-4-13 21:51:40

第5章以后的还不错,前面的好多书都有了。

binglin 发表于 2008-4-13 23:23:36

发货速度还很快,在当当网上查到:
您的订单 1492306391 已于2008年04月12日 20:30:40发货,请注意查收。

我下单时间是:2008-04-12 09:40:17

关键看看收货时间要多久.

hanlin 发表于 2008-4-14 00:11:39

http://search1.taobao.com/browse/0/t-0-----------------------g,iflffnnfy2wlx6wuvxao3pfqwlrl7wfzusz4zu5g2pbq----------------40--bid-0-all-0.htm?ab=ABTestA
这里有.

xtwhf 发表于 2008-4-14 08:24:52

现在的书,你抄我的,我抄你的!凑起来就是书!

xtwhf 发表于 2008-4-14 08:29:01

AVR单片机的书从2004年后再没买过一本!!!!!

xtwhf 发表于 2008-4-14 08:33:11

说实话!只要E文好一点,有网上,就别买书了!

minier 发表于 2008-4-14 08:47:06

to【33楼】 xtwhf
xtwhf 想必是个高手,眼光独到,居然能做到绝对武断高度的评价,境界???!

yangsen 发表于 2008-4-14 08:56:57

31楼的兄弟虽然说的比较“刺”不过也怨不得他,现在国内的技术书籍很多都是这样子,一本几百页的书都是剪刀手弄来的,原来买书还看作者是编著,还是编,现在连编著里面都没有“著”的成分了。译过来的书买回来就后悔。我原来都在china-pub上买书,现在不看了实际的书都不敢买。

xtwhf 发表于 2008-4-14 09:03:19

谢谢35楼的!帮忙说话!

ninjia 发表于 2008-4-14 10:15:47

书已经买了,很有价值!
有独到之处,是真正自己写的书,而且是有工程应用的实例。
xtwhf在31楼的帖子有点不厚道o(∩_∩)o...
minier也用不着为这个生气

ninjia 发表于 2008-4-14 10:17:45

xtwhf在31楼的帖子re楼主有点CNN

our_avr 发表于 2008-4-14 10:33:31

建议老大AM也搞点过来

minier 发表于 2008-4-14 20:11:01

to【37楼】 ninjia
多谢支持

xiaoke 发表于 2008-4-15 07:01:02

看了目录. 今天去买. 翻译手册式的书太多了. 就需要这种有大量实例的书.谢谢. 再接再厉多写几种. 最好写本基于IAR的,这么多AVR书,不是基于ICC就是GCC. 大家都避开IAR.

stevenlu 发表于 2008-4-15 09:00:55

深圳南山书城还没看到书呀

percy 发表于 2008-4-15 09:32:44

两星期前,我在北京图书大厦看到了这本书,书写的不错,有实用价值,我只看了第五章智能传感器与智能仪器设计,电路讲解很好,我还坐地上看了半天,用手机拍了封面,为了省点银子,准备网上订购。

mymach 发表于 2008-4-15 15:02:50

前两天在书店翻了一下,觉得不错就买了一本
呵呵~~~~~~~

benladn911 发表于 2008-4-15 16:18:27

【楼主位】 minier要是方便的话最好把 书本里出现的源代码的电子版也一起上传上来,这样大家如果需要里面的部分程序的话就不用对着书本敲了,能直接复制使用是最好的。
谢谢!

fangmcu 发表于 2008-4-15 17:54:23

楼主,你按键程序有问题:P62中第8行,PORTD=(PORTD&0x0F)|(key<<4);应改为PORTD=(PORTD&0x0F)|(~ key<<4);否则原来程序中按下键对应的LED不亮,而其它的反而亮,P63中最后的一行:{if((PIND&(<<j))==0),我想应该改为{if((PIND&(1<<j))==0),但程序运行结果也不正常!!
谢谢!!

minier 发表于 2008-4-15 20:58:31

to【45楼】 benladn911 AVR猎手
所有源代码会尽快贴上,由于例子太多,最好各位大虾指出哪个例子,可能会尽早贴出您所需要的!

minier 发表于 2008-4-15 21:11:37

to  fangmcu 方谭
您发现的问题及修改方法都正确,表示万分感谢!
至于你提出的运行问题,我认真分析和测试了一下,我这里没有发现问题!
你可以p63最后4行的整个循环体扩起来试一试,如下
else
{for(i=4;i<8;i++)
   {PORTD=~(1<<i)|0x0f;         //i行输出=0
    for(j=0;j<4;j++)
    {if((PIND&(1<<j)) ==0)
   key_value= (i-4)*4+j;         //计算键值,0~15
    }
   }
}

或者把你的应用软件贴上,我帮你分析一下!

fangmcu 发表于 2008-4-15 21:24:17

谢谢,我是用proteus7.2仿真,程序一样只是增加读出键值传送到PA口用来显示,可能是硬件问题,我查清再试一试,
楼上的书确定不错,和马老师一样出色,我正想有条件把里面的程序试试,以后还要楼主多多指点!!

maoxia007 发表于 2008-4-15 21:49:10

看目录就觉得书不错,在2688订了一本

sunkmsr 发表于 2008-4-16 08:20:01

TO 【楼主位】 minier

看来书不错。请问源代码是不是支持新版的winAVR,新版和旧版的中断函数还是有不少区别的。

yangsen 发表于 2008-4-16 11:08:43

看来楼主的书不错,准备出手进一本

ninjia 发表于 2008-4-16 13:48:17

P227/228:BUST改为BUSY。

ninjia 发表于 2008-4-16 13:49:57

P89:volatile unsigned char IC_DATA;   //当前数据
改为:
    volatile unsigned char IIC_DATA;   //当前数据

ninjia 发表于 2008-4-16 14:01:13

xx7299a/xx619a/模拟24c02只能在20KHz的时候工作,400KHz的时候是乱码。
难道是我的fuse设置有问题?
请刘老师指导一下

minier 发表于 2008-4-16 16:15:15

to【55楼】 ninjia
看看我XX7299A的例程,里面有一个M16 8MHZ下操作XX7299A的例子

ninjia 发表于 2008-4-16 17:03:00

我用的是usb转i2c适配器读写xx7299a,SCL只能在20KHz的时候正常读写。
100K和400KHZ读写都有问题。
另:我的USB2I2C适配器读写AT24c02(非模拟)正常

fangmcu 发表于 2008-4-16 18:13:31

下班回来,搞好的程序!!谢谢,刘老师!!我不小心打错,if((PIND&(1<<j)) ==0)写成if(PIND&(1<<j) ==0) 没有留意到==比&的优先级高!!

KeMing 发表于 2008-4-16 22:06:14

楼主,书的目录中没有介绍winAVR,请问源程序是否是在AVRStudio中直接编写?

ninjia 发表于 2008-4-17 10:43:42

征询一下刘老师的意见,想把《ATmega48模拟24系列EEPROM》的代码放到这里,可以吗?
59楼:《ATmega48模拟24系列EEPROM》在AVRStudio中直接编写没问!

jackrich 发表于 2008-4-17 16:19:33

刚买了一本,不错!

winter 发表于 2008-4-17 16:50:22

当当缺货了。晕啊

minier 发表于 2008-4-18 15:55:19

to【60楼】 ninjia
很快奉上代码

Chris_Lee 发表于 2008-4-18 20:01:54

哎!
没有看过书的就没有发言权!

本人感觉这本书介绍的非常详细,而且给出的例程都比较经典,我还得花很大一部分时间来
把书上的一些技术学到手呢。

minier 发表于 2008-4-18 20:15:05

/*---------------------------------readme first---------------------------------
--CPU:ATmega48               
--GCCAVR20070525下编译通过
--刘海成    2007-8
--ATmega48模拟24系列EEPROM
------------------------------------------------------------------------------*/
#include <avr/io.h>
#include <avr/interrupt.h>

volatile unsigned char IIC_STATE;    //IIC通信状态机
#defineSTATE_IIC_ADDR          0xc3
#defineSTATE_IIC_WDATA    0xa5
#defineSTATE_IIC_RDATA    0x5a
#defineSTATE_IIC_STOP          0
volatile unsigned char IIC_ADDR,IIC_DATA;   //当前数据
//------------------------------------------------------------------------------

//------------------------------TWI状态定义-------------------------------------
#define SLA_Device_Addr    0xa0   //定义器件地址
//SR 从机方式接收ST 从机方式传输ALL广播
#define SR_SLA_ACK         0x60
#define SR_ALL_ACK         0x70
#define SR_DATA_ACK             0X80
#define SR_DATA_NOACK      0X88
#define SR_ALL_DATA_ACK    0x90
#define SR_ALL_DATA_NOACK0x98
#define SR_STOP_RESTART    0xa0
#define ST_SLA_ACK             0xa8
#define ST_DATA_ACK      0xb8
#define ST_DATA_NOACK           0xc0
#define ST_LAST_DATA_ACK   0xc8
//常用TWI操作(从模式写和从模式读)
#define Twi_STATE()            (TWSR&0xf8)
#define SLA_autoACK()           (TWCR=(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
#define SLA_Send8Bit(x)    {TWDR=(x);TWCR=(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE);}
#define SLA_Resume()       (TWCR=(1<<TWEA)|(1<<TWSTO)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
void Chip_Init(void)
{   //IIC初始化
    TWAR=SLA_Device_Addr;//set slave address,不使用广播地址
    TWCR=0x45;         //使能IIC,并开中断
    asm("sei");          //开总中断
}
//------------------------------------------------------------------------------
unsigned char eeprom_read_byte(unsigned char uiAddress)
{while(EECR&(1<<EEPE))//等待上一次写操作结束
#define EEARH   _SFR_IO8 (0x22)
EEARH=0x00;
EEARL=uiAddress;       //设置地址寄存器
EECR|=(1<<EERE);      //设置EERE以启动读操作
return EEDR;
}
//------------------------------------------------------------------------------
int main(void)
{
Chip_Init();
while(1)
{ ;
}
}
//------------------------------------------------------------------------------
ISR(TWI_vect)
{unsigned char nc;
nc=Twi_STATE();
if(nc==SR_SLA_ACK)                        //从地址匹配,写传输,ACK已返回
    {   IIC_STATE=STATE_IIC_ADDR;         //下一步接收数据的地址
      SLA_autoACK();
    }
else if(nc==SR_DATA_ACK)//接收主机送来的从机数据地址或数据,ACK已返回
        {   if(IIC_STATE==STATE_IIC_ADDR)   //如果是地址
                  {IIC_ADDR=TWDR;
                       IIC_STATE=STATE_IIC_WDATA;//下一步接收数据
                  }
                else                              //IIC_nextSTATE==STATE_IIC_WDATA:
                  {   IIC_DATA=TWDR;
                          while(EECR&(1<<EEPE));//等待上一次写操作结束
                    EEARH=0x00;
                EEARL=IIC_ADDR++;      //地址自动+1
                EEDR=IIC_DATA;
                EECR|=(1<<EEMPE);
                EECR|=(1<<EEPE);      //置位EEPE以启动写操作E
   
                   }
                SLA_autoACK();
         }
else if((nc==ST_SLA_ACK)||(nc==ST_DATA_ACK))//从地址匹配,读传输,或者是
        {                                          //TWDR里数据已经发送,接收到ACK
                IIC_STATE=STATE_IIC_RDATA;
                IIC_DATA=eeprom_read_byte(IIC_ADDR++); //地址自动+1         
      SLA_Send8Bit(IIC_DATA);            //发送数据
        }
else if(nc==ST_DATA_NOACK)               //TWDR里数据已经发送,接收到NOTACK
        {
                IIC_STATE=STATE_IIC_STOP;
                SLA_autoACK();
           }
else if(nc==SR_STOP_RESTART)            //主机写命令结束或读命令重新开始
        {
                SLA_autoACK();
           }
else
        {
          SLA_Resume();//从机模式到未被寻址状态,恢复TWI响应能力
        }
}
//------------------------------------------------------------------------------

Gorgon_Meducer 发表于 2008-4-18 23:36:26

非常好的书,看来要买一本学习一下。

Recoochang 发表于 2008-4-18 23:52:45

楼主能否贴一下PID的代码
觉得代码 在这里看着舒服点!
谢谢!

lyping 发表于 2008-4-19 00:11:41

看样子确实是本不错的书,明天也去买本瞧瞧!

minier 发表于 2008-4-20 19:49:16

to【66楼】 Gorgon Meducer 傻孩子
谢谢夸奖,也祝愿你在书早日出版。

minier 发表于 2008-4-20 19:50:09

【67楼】 Recoochang 都怪我不是神
PID代码会尽快贴上。

ATmega32 发表于 2008-4-20 20:46:17

今天去深圳中心书城,没找到这本书啊

minier 发表于 2008-4-21 20:00:28

to【71楼】 ATmega32 cortex-m3
网络订购

yyzz20022001 发表于 2008-4-21 20:21:44

等我发工资了,也要买本。呵呵

minier 发表于 2008-4-21 21:52:08

to【73楼】 yyzz20022001
兵哥?

mfm123 发表于 2008-4-22 15:36:55

书到手了,正在看呢....

Chris_Lee 发表于 2008-4-22 16:19:07

P88 第二行的 DIP8和SO两种封装格式应该是SOIC封装格式吧

minier 发表于 2008-4-24 14:44:05

新的勘误表
点击此处下载 ourdev_259764.doc(文件大小:73K) (原文件名:勘误表.doc)

minier 发表于 2008-4-25 07:47:16

to【76楼】 Chris_Lee -"愛上DJ_|
so可以

eagle_1 发表于 2008-4-26 11:58:08

我是学自动化的,看了一下目录,发现这本书跟我的专业很吻合,呵,看来是要买本研究一下

zgao4 发表于 2008-4-26 18:19:08

在china-pub上订了一本,不过好像没有现货呀,还要预订,是不是因为是新书呀

39708]AVR单片机原理及测控工程应用--基于ATmega48 ATmega169787811242164    ¥39.00   ¥31.20 1北京送货 预定

minier 发表于 2008-4-27 16:14:38

to【80楼】 zgao4
书卖得比较快,很多地方都得重新订货了!

ztxfhl 发表于 2008-4-27 17:28:54

好书

ATmega32 发表于 2008-4-27 17:50:54

这本书深圳哪里买得到?

minier 发表于 2008-4-28 19:46:03

to83楼】 ATmega32 MSP430
网购便宜

fangmcu 发表于 2008-4-28 20:17:26

刘老师,有关于用M48做专用LED驱动芯片的书中哪里介绍??谢谢!!

fangmcu 发表于 2008-4-30 06:44:41

谢谢!!

minier 发表于 2008-4-30 14:07:42

to【86楼】 fangmcu 方谭

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=905659&bbs_page_no=1&search_mode=1&search_text=7299&bbs_id=1000

fangmcu 发表于 2008-4-30 14:30:07

哗,好东西!!刘老师,谢谢!!

stevenlu 发表于 2008-4-30 14:31:37

只能邮购?南山书城去了N次都没看到

Chris_Lee 发表于 2008-4-30 15:55:11

P167 最上面程序的第二行的第一个输入参数“unsigned char”应改为“unsigned int”
P169 倒数第二行的 “后被” 改为 “后备”

randyzzy 发表于 2008-4-30 16:29:14

不知道里面的程序多不多啊?

Chris_Lee 发表于 2008-5-1 10:50:08

P29倒数第13行“需置位EERE以便将数据读入EEAR”改为“EEDR”
P35倒数第二行   “2n”应该为“2的n次方” 下一行也是
P36在(2)上面一段的第二行“代码少1-3个字母” 改为“字节”
P38在序号6中少个大括号
P58最上面的程序的第四行 延时函数应为“_delay_ms(250);”
P61程序的第七行延时函数应为“_delay_ms(5);”P63 P70 也是这个情况

eagle1979 发表于 2008-5-3 15:25:25

看了一下内容,确实都是工程实际的东西,写的不错。不过不知道书上的程序是否全部在硬件上调试验证过,
还是仅仅在编译器下编译通过。原来买的2本单片机c语言的书都是作者仅编译通过的,根本没有在硬件上
验证过,很多程序都是错的,所以现在买书很谨慎。如果书中的例子全部通过硬件验证,这本书很值得收藏!
麻烦刘老师告诉一声,也让我们买的放心!

minier 发表于 2008-5-3 20:41:44

to【93楼】 eagle1979
书中大部分代码都是从实际工程项目中提炼的

minier 发表于 2008-5-5 21:11:26

最近包括email等反馈了很多信息,谢谢各位对本书的支持

minier 发表于 2008-5-6 14:48:20

勘误表ourdev_267442.doc(文件大小:76K) (原文件名:勘误表.doc)

hanlin 发表于 2008-5-6 14:52:25

一个月前就买了一本.但是发现书中的错字很多,而且错的电路图也有.看的很郁闷.

索性暂时不看,休息一段时间等勘误表快完成再看.

书中写的东西不错.

比北航出的其他书都好多了.

我以前看过北航的几本书,发现没有什么可以值得学习的.正所谓"天下文章一大抄,抄来抄去有提高".可是看了以前的那些书一点提高的地方都没有.

本来不打算买北航出的书了,但是觉得那样太偏激了.所以进行了一番思想斗争,还是买了这本书.

个人感觉,这本书写的不错.但是更适合自动化专业的学生.我是电子信息专业毕业的,看了一些,感觉也不错.很实际.

比那些理论的好多了.身为电子自动化专业的学生,理论是基础,但是动手能力一定要跟上.

就说这么多,楼主的书写的不错.希望第二版的时候错的地方少一些.

minier 发表于 2008-5-7 20:27:12

to【97楼】 hanlin 韩林
谢谢您的夸奖,同时也尽快给出比较全面的勘误表,力求第二次印刷时改正。

minier 发表于 2008-5-9 13:41:00

由于篇幅所限,书中很多内容进行了压缩,比如三极管参数测试只是简要介绍了B的测量。
若有需要,可提出!!
页: [1] 2 3
查看完整版本: AVR单片机新书(2008.2):AVR单片机原理及测控工程应用——基于ATmega48/ATmega16 (随时