amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 26647|回复: 221

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

[复制链接]
发表于 2008-4-10 18:06:22 | 显示全部楼层 |阅读模式
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.1  AVR系列单片机概述1
1.1.1  单片机知识问答1
1.1.2  单片机与嵌入式系统2
1.1.3  当代单片机内核结构的发展趋势3
1.1.4  AVR单片机概述4
1.1.5  AVR系列单片机选型5
1.2  ATmega48/ATmega16单片机及其存储器结构7
1.2.1  ATmega48/88/168和ATmega16/32单片机性能概况8
1.2.2  ATmega48/ATmega16内核结构9
1.2.3  ATmega48/ATmega16存储器结构9
1.3  ATmega48/ATmega16最小系统与系统初始配置11
1.3.1  ATmega48/ATmega16的引脚排列11
1.3.2  ATmega48/ATmega16最小系统设计16
1.3.3  ATmega48/ATmega16的系统时钟源及单片机熔丝配置19
1.3.4  AVR单片机ISP全攻略及熔丝补救方法20
1.3.5  ATmega48/ATmega16的掉电检测电路21
1.4  嵌入式C编程与AVR22
1.4.1  AVR的C语言开发环境22
1.4.2  C语言环境访问MCU寄存器23
1.4.3  GCC编译器下EEPROM和Flash存储器的访问24
1.4.4  C语言下EEPROM存储器的通用访问方法27
1.4.5  AVR C编译器的在线汇编30
1.4.6  标准C下位操作实现综述31
1.4.7  如何优化单片机系统设计的C代码33
1.4.8  C语言宏定义技巧及常用宏定义总结37
1.4.9  从Keil C到AVR的C编程38
1.4.10  前后台式嵌入式软件结构39
1.5  AVR的开发工具与开发技巧39
1.5.1  AVR单片机嵌入式系统的软件开发平台AVR Studio40
1.5.2  AVR的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.3  PCB设计中要注意的问题52
1.6.4  TQFP和LQFP器件的焊接方法52
1.6.5  单片机与嵌入式技术的3层境界54
第2章  ATmega48/ATmega16单片机I/O接口与人机接口_技术
2.1  AVR单片机通用I/O端口56
2.1.1  AVR的通用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.3  LED显示技术原理与实现66
2.3.1  数码管的译码显示67
2.3.2  LED数码管的静态驱动显示和动态驱动显示67
2.4  AVR的SPI通信接口及其应用70
2.4.1  AVR单片机的硬件SPI通信接口71
2.4.2  AVR单片机SPI通信的相关寄存器结构72
2.4.3  AVR单片机SPI通信驱动程序设计75
2.4.4  SPI总线接口8位共阴数码管驱动芯片MAX721976
2.4.5  两个AVR实现硬件SPI双机通信78
2.4.6  软件模拟SPI主机程序设计80
2.4.7  用SPI与74HC595接口驱动多共阳数码管静态显示实例81
2.5  AVR两线串行通信接口TWI(兼容I2C)及其应用82
2.5.1  I2C总线概述83
2.5.2  AVR兼容I2C的两线通信接口TWI及其相关寄存器84
2.5.3  TWI的使用方法87
2.5.4  通过TWI (I2C)主机接口操作AT24C0288
2.5.5  ATmega48通过I2C从机模式模拟AT24C0289
2.5.6  软件模拟I2C主机读/写AT24C0291
2.6  128×64 SPLC501液晶控制器及应用95
2.6.1  128×64点阵图形液晶驱动芯片——SPLC50196
2.6.2  SPLC501程序设计举例99
2.7  SMC1602A液晶屏及其接口应用101
2.7.1  SMC1602A总线方式驱动接口及读/写时序101
2.7.2  操作SMC1602A的11条指令102
2.7.3  AVR与SMC1602A液晶接口C代码104
2.8  ATmega48/ATmega16片上A/D及其应用107
2.8.1  片内基准电压107
2.8.2  ATmega48/ATmega16与A/D有关的寄存器108
2.8.3  AVR的A/D使用和应用方法总结113
2.8.4  A/D键盘114

第3章  ATmega48/ATmega16单片机中断系统与定时控制
3.1  ATmega48/ATmega16的中断系统116
3.1.1  中断的功能116
3.1.2  ATmega48/ATmega16中断源和中断向量117
3.1.3  AVR单片机中断响应过程119
3.1.4  AVR单片机的中断优先级119
3.1.5  AVR中断响应的时间120
3.1.6  高级语言开发环境中中断服务程序的编写120
3.2  ATmega48/ATmega16的外中断及应用实例121
3.2.1  INT0、INT1和INT2中断控制的相关寄存器122
3.2.2  ATmega48引脚电平变化中断寄存器124
3.2.3  外中断实例125
3.3  ATmega48/ATmega 16的定时器/计数器0——T/C0127
3.3.1  ATmega48/ATmega16的定时器/计数器127
3.3.2  T/C0概述128
3.3.3  T/C0的输出比较功能及PWM输出模式129
3.3.4  ATmega48/ATmega16的T/C0相关寄存器131
3.3.5  ATmega48/ATmega16中T/C0的定时应用举例136
3.4  ATmega48/ATmega 16的定时器/计数器1——T/C1137
3.4.1  T/C1的输入捕捉单元139
3.4.2  T/C1的输出比较单元140
3.4.3  T/C1的输出比较功能及PWM输出模式141
3.4.4  T/C1的相关寄存器146
3.4.5  利用ICP测量方波的周期150
3.5  ATmega48/ATmega16片上模拟比较器与ICP捕获应用151
3.5.1  模拟比较器的相关寄存器151
3.5.2  模拟比较器应用——超限监测153
3.5.3  模拟比较器及ICP1综合应用——正弦波周期测量154
3.6  ATmega48/ATmega16的定时器/计数器2——T/C2155
3.6.1  T/C2的输出比较功能及PWM输出模式156
3.6.2  T/C2的相关寄存器158
3.6.3  基于T/C2的RTC系统设计166
3.7  PWM技术应用举例170
3.7.1  基于PWM调制的红外线遥控器的设计170
3.7.2  基于PWM实现DAC173
3.8  AVR单片机看门狗定时器176
3.8.1  抗干扰与看门狗技术176
3.8.2  AVR的看门狗及应用技巧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.1  PID控制技术282
6.2.2  复合式数字PID控制技术284
6.2.3  PID参数的整定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.1  AVR的串行通信接口USART314
7.1.1  AVR的通用同步和异步串行接口USART314
7.1.2  USART寄存器描述315
7.1.3  自适应波特率技术321
7.1.4  USART基本应用程序模块设计及说明321
7.1.5  ATmega48 SPI模式下的USART——MSPIM328
7.2  基于RS232的通信系统设计333
7.2.1  RS232C介绍与PC硬件333
7.2.2  UART电平协议转换芯片MAX232和MAX3232334
7.2.3  单片机点对点UART通信设计举例335
7.2.4  PC端Windows操作系统下RS232通信程序设计341
7.3  基于RS485的现场总线监控系统设计342
7.3.1  RS485驱动芯片及接口应用343
7.3.2  RS485现场总线测控系统组成结构343
7.3.3  PC与RS485通信接口设计344
7.3.4  RS485网络节点的软件设计346
7.3.5  RS485总线通信系统的可靠性分析及措施352
7.4  基于DS18B20的多点温度巡回检测仪的设计355
7.4.1  DS18B20概貌356
7.4.2  DS18B20的内部构成及测温原理357
7.4.3  DS18B20的访问协议358
7.4.4  DS18B20的自动识别技术360
7.4.5  DS18B20的单总线读/写时序361
7.4.6  DS18B20使用中的注意事项362
7.4.7  ATmega48读取单片DS18B20转换温度数据程序362
7.5  nRF401短距离无线通信系统设计364
7.5.1  短距离无线电通信技术简介365
7.5.2  nRF401短距离无线通信系统介绍367
7.5.3  nRF401无线通信模块设计368
7.5.4  AVR单片机和nFR401接口设计373
7.5.5  PC机和nRF401接口电路设计373
7.5.6  AVR单片机控制nRF401通信软件设计374
附录  ASCII表380

参考文献381
发表于 2008-4-10 18:13:01 | 显示全部楼层
书不错
 楼主| 发表于 2008-4-10 18:18:25 | 显示全部楼层
发表于 2008-4-10 18:31:52 | 显示全部楼层
内容不少呀!
好像是面较广,但对于初学者好像并不太实用呀!
 楼主| 发表于 2008-4-10 20:10:27 | 显示全部楼层
实用与否与面广有关系吗,有也是正面的影响吧!!??!!
发表于 2008-4-10 21:00:06 | 显示全部楼层
看着目录,觉得很想买,但是我怕买了后,发现上当了。我想问一下,370多页的书,能装得下这多的内容?书中内容不会是蜻蜓点水吧,如果真是的话,我相信网络中应该有这些“概述”.说实话,我对北航的有些书,实在很生气。比如《单片机语言C51典型应用设计》,里面的代码没有注释不说,还把keil c51中头文件<<reg51.h>>,还有连拼音输入法的字库也都印在书中,整本书都是代码,没有注释,没有一张电路图。。。。。(我乃后生,如果有冒昧之处,敬请原谅)。
发表于 2008-4-10 21:06:27 | 显示全部楼层
书中内容不会是蜻蜓点水吧,

貌似北航出了不少这样的书,。。。
 楼主| 发表于 2008-4-11 11:24:02 | 显示全部楼层
to【5楼】 Chenxg 【6楼】 wkman  
        没有多余的代码!不过阅读本书也就需要有点基础!
发表于 2008-4-11 14:16:58 | 显示全部楼层
请问楼主,这书是以那种C编译器为主,不要每一种都提一下,搞到乱七八糟.
 楼主| 发表于 2008-4-11 15:54:50 | 显示全部楼层
完全以GCC为蓝本
发表于 2008-4-11 16:03:49 | 显示全部楼层
好,我去北航看看购买方便不方便.

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

算了,等其它网站有卖时再买吧.
发表于 2008-4-11 18:44:41 | 显示全部楼层
当当有卖 啊  http://product.dangdang.com/product.aspx?product_id=20177315
发表于 2008-4-11 19:26:38 | 显示全部楼层
大致上看了一下这本书,觉得不错。本书中关于PID部分的介绍是目前所有单片机书中最详细的,但是本书不适合于初学者。
发表于 2008-4-12 08:46:51 | 显示全部楼层
看目录还不错,有机会去书店看看。好的话就买一本
发表于 2008-4-12 09:41:23 | 显示全部楼层
当当还真有卖,已下订单购买,货到付款.

感谢[11楼] mfm123 兄弟提供的信息,谢谢.
发表于 2008-4-12 19:12:16 | 显示全部楼层
昨天我也在当当然订购了一本
发表于 2008-4-12 19:19:39 | 显示全部楼层
支持出书,顶一下.
我是北航的,也许我们学校有些方面做的不好,对不住大家了,请多多包涵
发表于 2008-4-12 20:24:39 | 显示全部楼层
前天在武汉买了一本,回来就看到了这个帖子 呵呵

楼主就是本书的作者吧,这就好了,有不懂的就向您请教
 楼主| 发表于 2008-4-12 20:48:34 | 显示全部楼层
to 【17楼】 xggz_wb
非常愿意与大家共同交流!
也欢迎大家批评并指出意见
 楼主| 发表于 2008-4-12 21:23:24 | 显示全部楼层
发表于 2008-4-12 23:01:54 | 显示全部楼层
不知道代码怎么样
比如PID控制,是否有成功的程序在里边
发表于 2008-4-12 23:17:07 | 显示全部楼层
顶。明君留
 楼主| 发表于 2008-4-13 08:59:47 | 显示全部楼层
to【20楼】 nick870208

PID有成功实例
发表于 2008-4-13 11:22:04 | 显示全部楼层
祝贺楼主的又一部新书,这本书很好的诠释了avr单片机。作为一个初学者来讲述里面有很多应该借鉴的地方!
   特别是实例应用与PID算法方面。
   另辟蹊径是本好书。
   书读百遍,其意自现。
       顶下去!!!
发表于 2008-4-13 14:35:56 | 显示全部楼层
早上,去书店买了这本书,觉得很不错,以后要多请教楼主了,谢谢!!
 楼主| 发表于 2008-4-13 15:45:25 | 显示全部楼层
to【24楼】 fangmcu 方谭
太客气了!希望这本书能够帮助你!
发表于 2008-4-13 16:11:05 | 显示全部楼层
我一直想买本关于AVR的书,这次就买这了,
以后有不懂的,还得需要楼主的帮助,
 楼主| 发表于 2008-4-13 20:58:19 | 显示全部楼层
to 【26楼】 irerror
愿意效劳
发表于 2008-4-13 21:51:40 | 显示全部楼层
第5章以后的还不错,前面的好多书都有了。
发表于 2008-4-13 23:23:36 | 显示全部楼层
发货速度还很快,在当当网上查到:
您的订单 1492306391 已于2008年04月12日 20:30:40发货,请注意查收。

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

关键看看收货时间要多久.
发表于 2008-4-14 00:11:39 | 显示全部楼层
http://search1.taobao.com/browse/0/t-0-----------------------g,iflffnnfy2wlx6wuvxao3pfqwlrl7wfzusz4zu5g2pbq----------------40--bid-0-all-0.htm?ab=ABTestA
这里有.
发表于 2008-4-14 08:24:52 | 显示全部楼层
现在的书,你抄我的,我抄你的!凑起来就是书!
发表于 2008-4-14 08:29:01 | 显示全部楼层
AVR单片机的书从2004年后再没买过一本!!!!!
发表于 2008-4-14 08:33:11 | 显示全部楼层
说实话!只要E文好一点,有网上,就别买书了!
 楼主| 发表于 2008-4-14 08:47:06 | 显示全部楼层
to【33楼】 xtwhf
xtwhf 想必是个高手,眼光独到,居然能做到绝对武断高度的评价,境界???!
发表于 2008-4-14 08:56:57 | 显示全部楼层
31楼的兄弟虽然说的比较“刺”不过也怨不得他,现在国内的技术书籍很多都是这样子,一本几百页的书都是剪刀手弄来的,原来买书还看作者是编著,还是编,现在连编著里面都没有“著”的成分了。译过来的书买回来就后悔。我原来都在china-pub上买书,现在不看了实际的书都不敢买。
发表于 2008-4-14 09:03:19 | 显示全部楼层
谢谢35楼的!帮忙说话!
发表于 2008-4-14 10:15:47 | 显示全部楼层
书已经买了,很有价值!
有独到之处,是真正自己写的书,而且是有工程应用的实例。
xtwhf在31楼的帖子有点不厚道o(∩_∩)o...
minier也用不着为这个生气
发表于 2008-4-14 10:17:45 | 显示全部楼层
xtwhf在31楼的帖子re楼主有点CNN
发表于 2008-4-14 10:33:31 | 显示全部楼层
建议老大AM也搞点过来
 楼主| 发表于 2008-4-14 20:11:01 | 显示全部楼层
to【37楼】 ninjia
多谢支持
发表于 2008-4-15 07:01:02 | 显示全部楼层
看了目录. 今天去买. 翻译手册式的书太多了. 就需要这种有大量实例的书.谢谢. 再接再厉多写几种. 最好写本基于IAR的,这么多AVR书,不是基于ICC就是GCC. 大家都避开IAR.
发表于 2008-4-15 09:00:55 | 显示全部楼层
深圳南山书城还没看到书呀
发表于 2008-4-15 09:32:44 | 显示全部楼层
两星期前,我在北京图书大厦看到了这本书,书写的不错,有实用价值,我只看了第五章智能传感器与智能仪器设计,电路讲解很好,我还坐地上看了半天,用手机拍了封面,为了省点银子,准备网上订购。
发表于 2008-4-15 15:02:50 | 显示全部楼层
前两天在书店翻了一下,觉得不错就买了一本
呵呵~~~~~~~
发表于 2008-4-15 16:18:27 | 显示全部楼层
【楼主位】 minier  要是方便的话最好把 书本里出现的源代码的电子版也一起上传上来,这样大家如果需要里面的部分程序的话就不用对着书本敲了,能直接复制使用是最好的。
谢谢!
发表于 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),但程序运行结果也不正常!!
谢谢!!
 楼主| 发表于 2008-4-15 20:58:31 | 显示全部楼层
to【45楼】 benladn911 AVR猎手
所有源代码会尽快贴上,由于例子太多,最好各位大虾指出哪个例子,可能会尽早贴出您所需要的!
 楼主| 发表于 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
    }
   }
  }

或者把你的应用软件贴上,我帮你分析一下!
发表于 2008-4-15 21:24:17 | 显示全部楼层
谢谢,我是用proteus7.2仿真,程序一样只是增加读出键值传送到PA口用来显示,可能是硬件问题,我查清再试一试,
楼上的书确定不错,和马老师一样出色,我正想有条件把里面的程序试试,以后还要楼主多多指点!!
发表于 2008-4-15 21:49:10 | 显示全部楼层
看目录就觉得书不错,在2688订了一本
发表于 2008-4-16 08:20:01 | 显示全部楼层
TO 【楼主位】 minier

看来书不错。请问源代码是不是支持新版的winAVR,新版和旧版的中断函数还是有不少区别的。
发表于 2008-4-16 11:08:43 | 显示全部楼层
看来楼主的书不错,准备出手进一本
发表于 2008-4-16 13:48:17 | 显示全部楼层
P227/228:BUST改为BUSY。
发表于 2008-4-16 13:49:57 | 显示全部楼层
P89:volatile unsigned char IC_DATA;     //当前数据
改为:
    volatile unsigned char IIC_DATA;     //当前数据
发表于 2008-4-16 14:01:13 | 显示全部楼层
xx7299a/xx619a/模拟24c02只能在20KHz的时候工作,400KHz的时候是乱码。
难道是我的fuse设置有问题?
请刘老师指导一下
 楼主| 发表于 2008-4-16 16:15:15 | 显示全部楼层
to【55楼】 ninjia
看看我XX7299A的例程,里面有一个M16 8MHZ下操作XX7299A的例子
发表于 2008-4-16 17:03:00 | 显示全部楼层
我用的是usb转i2c适配器读写xx7299a,SCL只能在20KHz的时候正常读写。
100K和400KHZ读写都有问题。
另:我的USB2I2C适配器读写AT24c02(非模拟)正常
发表于 2008-4-16 18:13:31 | 显示全部楼层
下班回来,搞好的程序!!谢谢,刘老师!!我不小心打错,if((PIND&(1<<j)) ==0)写成if(PIND&(1<<j) ==0) 没有留意到==比&的优先级高!!
发表于 2008-4-16 22:06:14 | 显示全部楼层
楼主,书的目录中没有介绍winAVR,请问源程序是否是在AVRStudio中直接编写?
发表于 2008-4-17 10:43:42 | 显示全部楼层
征询一下刘老师的意见,想把《ATmega48模拟24系列EEPROM》的代码放到这里,可以吗?
59楼:《ATmega48模拟24系列EEPROM》在AVRStudio中直接编写没问!
发表于 2008-4-17 16:19:33 | 显示全部楼层
刚买了一本,不错!
发表于 2008-4-17 16:50:22 | 显示全部楼层
当当缺货了。晕啊
 楼主| 发表于 2008-4-18 15:55:19 | 显示全部楼层
to【60楼】 ninjia
很快奉上代码
发表于 2008-4-18 20:01:54 | 显示全部楼层
哎!
没有看过书的就没有发言权!

本人感觉这本书介绍的非常详细,而且给出的例程都比较经典,我还得花很大一部分时间来
把书上的一些技术学到手呢。
 楼主| 发表于 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通信状态机
#define  STATE_IIC_ADDR            0xc3
#define  STATE_IIC_WDATA    0xa5
#define  STATE_IIC_RDATA    0x5a
#define  STATE_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_NOACK  0x98
#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响应能力
        }
}
//------------------------------------------------------------------------------
发表于 2008-4-18 23:36:26 | 显示全部楼层
非常好的书,看来要买一本学习一下。
发表于 2008-4-18 23:52:45 | 显示全部楼层
楼主能否贴一下PID的代码
觉得代码 在这里看着舒服点!
谢谢!
发表于 2008-4-19 00:11:41 | 显示全部楼层
看样子确实是本不错的书,明天也去买本瞧瞧!
 楼主| 发表于 2008-4-20 19:49:16 | 显示全部楼层
to【66楼】 Gorgon Meducer 傻孩子
谢谢夸奖,也祝愿你在书早日出版。
 楼主| 发表于 2008-4-20 19:50:09 | 显示全部楼层
【67楼】 Recoochang 都怪我不是神
PID代码会尽快贴上。
发表于 2008-4-20 20:46:17 | 显示全部楼层
今天去深圳中心书城,没找到这本书啊
 楼主| 发表于 2008-4-21 20:00:28 | 显示全部楼层
to【71楼】 ATmega32 cortex-m3
网络订购
发表于 2008-4-21 20:21:44 | 显示全部楼层
等我发工资了,也要买本。呵呵
 楼主| 发表于 2008-4-21 21:52:08 | 显示全部楼层
to【73楼】 yyzz20022001
兵哥?
发表于 2008-4-22 15:36:55 | 显示全部楼层
书到手了,正在看呢....
发表于 2008-4-22 16:19:07 | 显示全部楼层
P88 第二行的 DIP8和SO两种封装格式  应该是SOIC封装格式吧
 楼主| 发表于 2008-4-24 14:44:05 | 显示全部楼层
 楼主| 发表于 2008-4-25 07:47:16 | 显示全部楼层
to【76楼】 Chris_Lee -"愛上DJ_|
so可以
发表于 2008-4-26 11:58:08 | 显示全部楼层
我是学自动化的,看了一下目录,发现这本书跟我的专业很吻合,呵,看来是要买本研究一下
发表于 2008-4-26 18:19:08 | 显示全部楼层
在china-pub上订了一本,不过好像没有现货呀,还要预订,是不是因为是新书呀

39708]  AVR单片机原理及测控工程应用--基于ATmega48 ATmega16  9787811242164    ¥39.00   ¥31.20 1  北京送货 预定
 楼主| 发表于 2008-4-27 16:14:38 | 显示全部楼层
to【80楼】 zgao4
书卖得比较快,很多地方都得重新订货了!
发表于 2008-4-27 17:28:54 | 显示全部楼层
好书
发表于 2008-4-27 17:50:54 | 显示全部楼层
这本书深圳哪里买得到?
 楼主| 发表于 2008-4-28 19:46:03 | 显示全部楼层
to  83楼】 ATmega32 MSP430
网购便宜
发表于 2008-4-28 20:17:26 | 显示全部楼层
刘老师,有关于用M48做专用LED驱动芯片的书中哪里介绍??谢谢!!
发表于 2008-4-30 06:44:41 | 显示全部楼层
谢谢!!
 楼主| 发表于 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
发表于 2008-4-30 14:30:07 | 显示全部楼层
哗,好东西!!刘老师,谢谢!!
发表于 2008-4-30 14:31:37 | 显示全部楼层
只能邮购?南山书城去了N次都没看到
发表于 2008-4-30 15:55:11 | 显示全部楼层
P167 最上面程序的第二行的第一个输入参数“unsigned char”应改为“unsigned int”
P169 倒数第二行的 “后被” 改为 “后备”
发表于 2008-4-30 16:29:14 | 显示全部楼层
不知道里面的程序多不多啊?
发表于 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 也是这个情况
发表于 2008-5-3 15:25:25 | 显示全部楼层
看了一下内容,确实都是工程实际的东西,写的不错。不过不知道书上的程序是否全部在硬件上调试验证过,
还是仅仅在编译器下编译通过。原来买的2本单片机c语言的书都是作者仅编译通过的,根本没有在硬件上
验证过,很多程序都是错的,所以现在买书很谨慎。如果书中的例子全部通过硬件验证,这本书很值得收藏!
麻烦刘老师告诉一声,也让我们买的放心!
 楼主| 发表于 2008-5-3 20:41:44 | 显示全部楼层
to【93楼】 eagle1979
书中大部分代码都是从实际工程项目中提炼的
 楼主| 发表于 2008-5-5 21:11:26 | 显示全部楼层
最近包括email等反馈了很多信息,谢谢各位对本书的支持
 楼主| 发表于 2008-5-6 14:48:20 | 显示全部楼层
勘误表ourdev_267442.doc(文件大小:76K) (原文件名:勘误表.doc)
发表于 2008-5-6 14:52:25 | 显示全部楼层
一个月前就买了一本.但是发现书中的错字很多,而且错的电路图也有.看的很郁闷.

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

书中写的东西不错.

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

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

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

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

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

就说这么多,楼主的书写的不错.希望第二版的时候错的地方少一些.
 楼主| 发表于 2008-5-7 20:27:12 | 显示全部楼层
to【97楼】 hanlin 韩林
谢谢您的夸奖,同时也尽快给出比较全面的勘误表,力求第二次印刷时改正。
 楼主| 发表于 2008-5-9 13:41:00 | 显示全部楼层
由于篇幅所限,书中很多内容进行了压缩,比如三极管参数测试只是简要介绍了B的测量。
若有需要,可提出!!
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2020-2-24 19:17

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表