《AVR单片机原理及应用》详细介绍了ATMEL公司开发的ATmega8系列高速嵌入式单片机的硬件结构、工作原理、指令系统、接口电路、C编程实例,以及一些特殊功能的应用和设计,对读者掌握和使用其他ATmega8系列的单片机具有极高的参考价值 AVR单片机原理及应用》具有较强的系统性和实用性,可作为有关工程技术人员和硬件工程师的应用手册,亦可作为高等院校自动化、计算机、仪器仪表、电子等专业的教学参考书。 目录 第1章 绪论 1.1 AVR单片机的主要特性 1.2 主流单片机系列产品比较 1.2.1 ATMEL公司的单片机 1.2.2 Mkcochip公司的单片机 1.2.3 Cygnal公司的单片机 第2章 AVR系统结构概况 2.1 AVR单片机ATmega8的总体结构 2.1.1 ATmega8特点 2.1.2 结构框图 2.1.3 ATmega8单片机封装与引脚 2.2 中央处理器 2.2.1 算术逻辑单元 2.2.2 指令执行时序 2.2.3 复位和中断处理 2.3 ATmega8存储器 2.3.1 Flash程序存储器 2.3.2 SRAM 2.3.3 E2pROM 2.3.4 I/O寄存器 2.3.5 ATmega8的锁定位、熔丝位、标识位和校正位 2.4 系统时钟及其分配 2.4.1 时钟源 2.4.2 外部晶振 2.4.3 外部低频石英晶振 2.4.4 外部:RC振荡器 2.4.5 可校准内部.RC振荡器 2.4.6 外部时钟源 2.4.7 异步定时器/计数器振荡器 2.5 系统电源管理和休眠模式 2.5.1 MCU控制寄存器 2.5.2 空闲模式 2.5.3 ADC降噪模式 2.5.4 掉电模式 2.5.5 省电模式 2.5.6 等待模式 2.5.7 最小功耗 2.6 系统复位 2.6.1 复位源 2.6.2 MCU控制状态寄存器——MCUCSR 2.6.3 内部参考电压源 2.7 I/O端口 2.7.1 通用数字I/O端口 2.7.2 数字输入使能和休眠模式 2.7.3 端口的第二功能 第3章 ATmega8指令系统 3.1 ATmega8汇编指令格式 3.1.1 汇编语言源文件 3.1.2 指令系统中使用的符号 3.1.3 ATmega8指令 3.1.4 汇编器伪指令 3.1.5 表达式 3.1.6 文件“M8def.inc” 3.2 寻址方式和寻址空间 3.3 算术和逻辑指令 3.3.1 加法指令 3.3.2 减法指令 3.3.3 取反码指令 3.3.4 取补码指令 3.3.5 比较指令 3.3.6 逻辑与指令 3.3.7 逻辑或指令 3.3.8 逻辑异或 3.3.9 乘法指令 3.4 转移指令 3.4.1 无条件转移指令 3.4.2 条件转移指令 3.4.3 子程序调用和返回指令 3.5 数据传送指令 3.5.1 直接寻址数据传送指令 3.5.2 间接寻址数据传送指令 3.5.3 从程序存储器中取数装入寄存器指令 3.5.4 写程序存储器指令 3.5.5 I/0端口数据传送 3.5.6 堆栈操作指令 3.6 位操作和位测试指令 3.6.1 带进位逻辑操作指令 3.6.2 位变量传送指令 3.6.3 位变量修改指令 3.7 MCU控制指令 3.8 指令的应用 第4章 中断系统 4.1 外部向量 4.2 外部中断 4.3 中断寄存器 第5章 自编程功能 5.1 引导加载技术 5.2 相关I/O寄存器 5.3 Flash程序存储器的自编程 5.4 Flash自编程应用 第6章 定时器/计数器 6.1 定时器/计数器预定比例分频器 6.2 8位定时器/计数器O(T/CO) 6.3 16位定时器/计数器1(T/C1) 6.3.1 T/C1的结构 6.3.2 T/C1的操作模式 6.3.3 T/121的计数时序 6.3.4 T/C1的寄存器 6.4 8位定时器/计数器2(T/C2) 6.4.1 T/C2的组成结构 6.4.2 T/C2的操作模式 6.4.3 T/C2的计数时序 6.4.4 T/02的寄存器 6.4.5 T/C2的异步操作 6.5 看门狗定时器 第7章 AVR单片机通信接口 7.1 AVR单片机串行接口 7.1.1 同步串行接口 7.1.2 通用串行接口 7.2 两线串行TWT总线接口 7.2.1 TWT模块概述 7.2.2 TWT寄存器描述 7.2.3 TWT总线的使用 7.2.4 多主机系统和仲裁 第8章 AVR单片机A/D转换及模拟比较器 8.1 A/D转换 8.1.1 A/D转换概述 8.1.2 ADC噪声抑制器 8.1.3 ADC有关的寄存器 8.2 AvR单片机模拟比较器 第9章 系统扩展技术 9.1 串行接口8位LED显示驱动器MAX7219 9.1.1 概述 9.1.2 引脚功能及内部结构 9.1.3 操作说明 9.1.4 应用 9.1.5 软件设计 9.2 AT24C系列两线串行总线E2PPOM 9.2.1 概述 9.2.2 引脚功能及内部结构 9.2.3 操作说明 9.2.4 软件设计 9.3 AT93C46——三线串行总线E2PPOM接口芯片 9.3.1 概述 9.3.2 内部结构及引脚功能 9.3.3 操作说明 9.3.4 软件设计 9.4 串行12位的ADCTL543 9.4.1 概述 9.4.2 内部结构及引脚功能 9.4.3 操作说明 9.4.4 AD620放大器介绍 9.4.5 软件设计 9.5 串行输出16位ADCMAXl95 9.5.1 概述 9.5.2 引脚功能及内部结构 9.5.3 操作说明 9.5.4 应用 9.5.5 软件设计 9.6 串行输入DACTLC5615 9.6.1 概述 9.6.2 引脚功能及内部结构 9.6.3 操作说明 9.6.4 软件设计 9.7 串行12位的DACTLC5618 9.7.1 概述 9.7.2 内部结构及引脚功能 9.7.3 操作说明 9.7.4 软件设计 9.8 串行非易失性静态RAMX24C44 9.8.1 概述 9.8.2 引脚功能及内部结构 9.8.3 操作说明 9.8.4 软件设计 9.9 数据闪速存储器AT45DB041B 9.9.1 概述 9.9.2 引脚功能及内部结构 9.9.3 操作说明 9.9.4 软件设计 9.10 GM8164串行I/0扩展芯片 9.10.1 概述 9.10.2 引脚功能说明 9.10.3 操作说明 9.10.4 软件设计 9.11 接口综合实例 附录1 ICCACR简介 附录2 ATmega8指令表 参考文献
上传时间: 2013-10-29
上传用户:lanwei
附件为:LCD12864显示汉字和数字的程序与电路 /* 自定义延时子函数 */ void delayms(uchar z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /* 判断LCD忙信号状态 */ void buys() { int dat; RW=1; RS=0; do { P0=0x00; E=1; dat=P0; E=0; dat=0x80 & dat; } while(!(dat==0x00)); } /* LCD写指令函数 */ void w_com(uchar com) { //buys(); RW=0; RS=0; E=1; P0=com; E=0; } /* LCD写数据函数 */ void w_date(uchar date) { //buys(); RW=0; RS=1; E=1; P0=date; E=0; } /* LCD选屏函数 */ void select_screen(uchar screen) { switch(screen) { case 0: //选择全屏 CS1=0; CS2=0; break; case 1: //选择左屏 CS1=0; CS2=1; break; case 2: //选择右屏 CS1=1; CS2=0; break; /* case 3: //选择右屏 CS1=1; CS2=1; break; */ } } /* LCDx向上滚屏显示 */ void lcd_rol() { int x; for(x=0;x<64;x++) { select_screen(0); w_com(0xc0+x); delayms(500); } } /* LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列 */ void clear_screen(screen) { int x,y; select_screen(screen); //screen:0-选择全屏,1-选择左半屏,2-选择右半屏 for(x=0xb8;x<0xc0;x++) //从0xb8-0xbf,共8页 { w_com(x); w_com(0x40); //列的初始地址是0x40 for(y=0;y<64;y++) { w_date(0x00); } } } /* LCD显示汉字字库函数 */ void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数 int a; mun=mun*32; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } } /* LCD显示字符字库函数 */ void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } } /* LCD显示数字字库函数 */ void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } } /* LCD初始化函数 */ void lcd_init() { w_com(0x3f); //LCD开显示 w_com(0xc0); //LCD行初始地址,共64行 w_com(0xb8); //LCD页初始地址,共8页 w_com(0x40); //LCD列初始地址,共64列 } /* LCD显示主函数 */ void main() { //第一行 int x; lcd_init(); //LCD初始化 clear_screen(0); //LCD清屏幕 lcd_display_shuzi(1,0,4,5); //LCD显示数字 lcd_display_shuzi(1,0,5,1); //LCD显示数字 lcd_display_hanzi(1,0,3,0); //LCD显示汉字 lcd_display_hanzi(2,0,0,1); //LCD显示汉字 //LCD字符汉字 lcd_display_hanzi(2,0,1,2); //LCD显示汉字 //第二行 lcd_display_zifuk(1,1,2,0); //LCD显示字符 lcd_display_zifuk(1,1,3,0); //LCD显示字符 lcd_display_zifuk(1,1,4,0); //LCD显示字符 lcd_display_zifuk(1,1,5,4); //LCD显示字符 lcd_display_shuzi(1,1,6,8); //LCD显示字符 lcd_display_shuzi(1,1,7,9); //LCD显示字符 lcd_display_shuzi(2,1,0,5); //LCD显示字符 lcd_display_shuzi(2,1,1,1); //LCD显示字符 lcd_display_zifuk(2,1,2,4); lcd_display_zifuk(2,1,3,1); lcd_display_zifuk(2,1,4,2); lcd_display_zifuk(2,1,5,3); //第三行 for(x=0;x<4;x++) { lcd_display_hanzi(1,2,x,3+x); //LCD显示汉字 } for(x=0;x<4;x++) { lcd_display_hanzi(2,2,x,7+x); //LCD显示汉字 } //第四行 for(x=0;x<4;x++) { lcd_display_zifuk(1,3,x,5+x); //LCD显示汉字 } lcd_display_shuzi(1,3,4,7); lcd_display_shuzi(1,3,5,5); lcd_display_shuzi(1,3,6,5); lcd_display_zifuk(1,3,7,9); lcd_display_shuzi(2,3,0,8); lcd_display_shuzi(2,3,1,9); lcd_display_shuzi(2,3,2,9); lcd_display_shuzi(2,3,3,5); lcd_display_shuzi(2,3,4,6); lcd_display_shuzi(2,3,5,8); lcd_display_shuzi(2,3,6,9); lcd_display_shuzi(2,3,7,2); while(1); /* while(1) { // LCD向上滚屏显示 lcd_rol(); } */ }
上传时间: 2013-11-08
上传用户:aeiouetla
C函数速查手册 出版社:人民邮电出版社 《C函数速查手册》中所讲的C语言函数按照功能顺序和字母顺序进行排序,读者既可以按照功能顺序查找,也可以按照字母顺序学习。《C函数速查手册》不仅适合于C语言初学者学习使用,而且也可以作为中、高级C语言开发人员的参考手册。 目录 第1章 数学函数 1.1 _clear87函数:清除浮点状态字 1.2 _status87函数:取浮点状态字 1.3 abs函数:求整数的绝对值 1.4 acos、acosl函数:反余弦函数 1.5 asin、asinl函数:反正弦函数 1.6 atan函数:反正切函数 1.7 atan2、atan2l函数:计算Y/X的反正切值 1.8 cabs函数:计算复数的模 1.9 ceil函数:向上取整 1.10 cos函数:余弦函数 1.11 cosh函数:双曲余弦函数 1.12 div函数:求两个整数相除的商和余数 1.13 exp函数:指数函数 1.14 fabs函数:求浮点数的绝对值 1.15 floor函数:向下取整 1.16 fmod函数:计算x对y的模 1.17 frexp函数:将浮点数分为底数与指数 1.18 hypot函数:计算直角三角形的斜边 1.19 labs函数:取长整数的绝对值 1.20 ldexp、ldexpl函数:幂计算 1.21 ldiv函数:两个长整型数相除 1.22 log、logl函数:计算自然对数 1.23 log10、log10l函数:计算常用对数 1.24 max函数:求两个数中的最大者 1.25 min函数:求两个数中的最小者 1.26 modf、modfl函数:分割数为整数部分和小数部分 1.27 poly函数:计算多项式 1.28 pow函数:指数函数 1.29 pow10函数:指数函数 1.30 rand函数:随机数发生器 1.31 random函数:随机数发生器 1.32 randomize函数:初始化随机数发生器 1.33 sin函数:正弦函数 1.34 sinh函数:双曲正弦函数 1.35 sqrt函数:计算平方根 1.36 srand函数:初始化随机数发生器 1.37 tan、tanl函数:正切函数 1.38 tanh、tanhl函数:双曲正切函数 第2章 字符串函数 2.1 atof函数:把字符串转换成浮点数 2.2 atoi函数:将字符串转换成整型数 2.3 atol函数:将字符串转换成长整型数 2.4 ecvt函数:将浮点数转换为字符串 2.5 fcvt函数:将浮点数转换为字符串 2.6 gcvt函数:将浮点数转换成字符串 2.7 itoa函数:将整数值转换为字符串 2.8 isalnum函数:字母、数字判断函数 2.9 isalpha函数:字母判断函数 2.10 isascii函数:整数值的字符分类 2.11 iscntrl函数:控制字符判断函数 2.12 isdigit函数:数字判断函数 2.13 isgraph函数:打印字符判断 2.14 islower函数:小写字母判断函数 2.15 isprint函数:可打印字符判断函数 2.16 isptmct函数:标点符号判断函数 2.17 isspace函数:空格等判断函数 2.18 isupper函数:大写字母判断函数 2.19 isxdigit函数:十六进制数字判断函数 2.20 ltoa函数:将长整值转换为字符串 2.21 mbstowcs函数:将多字节字符序列转换成相应的宽字符序列 2.22 mbtowc函数:将多字节字符转换成相应的宽字符 2.23 stpcpy函数:复制字符串 2.24 strcat函数:拼接字符串 2.25 strchr函数:查找给定字符 2.26 strcmp函数:比较字符串 2.27 strcmpi函数:比较字符串 2.28 strcpy函数:复制字符串 2.29 strcspn函数:查找不包含指定字符集子串的段 2.30 strdup函数:将字符串复制到新建的位置 2.31 stricmp函数:比较字符串 2.32 strlen函数:获取字符长度
上传时间: 2014-12-25
上传用户:水口鸿胜电器
#include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar unsigned char uint a,b,c,d=0; void delay(c) { for for(a=0;a<c;a++) for(b=0;b<12;b++); }; uchar tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
上传时间: 2013-10-21
上传用户:13788529953
1. 单片机简介 1.1 单片机的概念 1.2 单片机的特点 1.3 单片机的种类 1.4 单片机的地位 1.5 典型单片机特性 单片机的概念含义: 将计算机硬件的5大单元——运算器、控制器、存储器、输入和输出接口集成在一块硅片上的微型计算机。别名:微控制器
标签: 单片机技术
上传时间: 2013-10-21
上传用户:叶立炫95
第一章 序論……………………………………………………………6 1- 1 研究動機…………………………………………………………..7 1- 2 專題目標…………………………………………………………..8 1- 3 工作流程…………………………………………………………..9 1- 4 開發環境與設備…………………………………………………10 第二章 德州儀器OMAP 開發套件…………………………………10 2- 1 OMAP介紹………………………………………………………10 2-1.1 OMAP是什麼?…….………………………………….…10 2-1.2 DSP的優點……………………………………………....11 2- 2 OMAP Architecture介紹………………………………………...12 2-2-1 OMAP1510 硬體架構………………………………….…12 2-2.2 OMAP1510軟體架構……………………………………...12 2-2.3 DSP / BIOS Bridge簡述…………………………………...13 2- 3 TI Innovator套件 -- OMAP1510 ……………………………..14 2-2.1 General Purpose processor -- ARM925T………………...14 2-2.2 DSP processor -- TMS320C55x …………………………15 2-2.3 IDE Tool – CCS …………………………………………15 2-2.4 Peripheral ………………………………………………..16 第三章 在OMAP1510上建構Embedded Linux System…………….17 3- 1 嵌入式工具………………………………………………………17 3-1.1 嵌入式程式開發與一般程式開發之不同………….….17 3-1.2 Cross Compiling的GNU工具程式……………………18 3-1.3 建立ARM-Linux Cross-Compiling 工具程式………...19 3-1.4 Serial Communication Program………………………...20 3- 2 Porting kernel………………………………………………….…21 3-2.1 Setup CCS ………………………………………….…..21 3-2.2 編譯及上傳Loader…………………………………..…23 3-2.3 編譯及上傳Kernel…………………………………..…24 3- 3 建構Root File System………………………………………..…..26 3-3.1 Flash ROM……………………………………………...26 3-3.2 NFS mounting…………………………………………..27 3-3.3 支援NFS Mounting 的kernel…………………………..27 3-3.4 提供NFS Mounting Service……………………………29 3-3.5 DHCP Server……………………………………………31 3-3.6 Linux root 檔案系統……………………………….…..32 3- 4 啟動及測試Innovator音效裝置…………………………..…….33 3- 5 建構支援DSP processor的環境…………………………...……34 3-5.1 Solution -- DSP Gateway簡介……………………..…34 3-5.2 DSP Gateway運作架構…………………………..…..35 3- 6 架設DSP Gateway………………………………………….…36 3-6.1 重編kernel……………………………………………...36 3-6.2 DEVFS driver…………………………………….……..36 3-6.3 編譯DSP tool和API……………………………..…….37 3-6.4 測試……………………………………………….…….37 第四章 MP3 Player……………………………………………….…..38 4- 1 MP3 介紹………………………………………………….…….38 4- 2 MP3 壓縮原理……………………………………………….….39 4- 3 Linux MP3 player – splay………………………………….…….41 4.3-1 splay介紹…………………………………………….…..41 4.3-2 splay 編譯………………………………………….…….41 4.3-3 splay 的使用說明………………………………….……41 第五章 程式改寫………………………………………………...…...42 5-1 程式評估與改寫………………………………………………...…42 5-1.1 Inter-Processor Communication Scheme…………….....42 5-1.2 ARM part programming……………………………..…42 5-1.3 DSP part programming………………………………....42 5-2 程式碼………………………………………………………..……43 5-3 雙處理器程式開發注意事項…………………………………...…47 第六章 效能評估與討論……………………………………………48 6-1 速度……………………………………………………………...48 6-2 CPU負載………………………………………………………..49 6-3 討論……………………………………………………………...49 6-3.1分工處理的經濟效益………………………………...49 6-3.2音質v.s 浮點與定點運算………………………..…..49 6-3.3 DSP Gateway架構的限制………………………….…50 6-3.4減少IO溝通……………….………………………….50 6-3.5網路掛載File System的Delay…………………..……51 第七章 結論心得…
上传时间: 2013-10-14
上传用户:a471778
1.1 什么叫单片机? 1.2 单片机主要应用于哪些领域? 1.3 单片机由哪些基本部件组成? 1.4 一个字节的十六进制数最大值相当于多大的十进制数,两个字节的十六进制数最大值相当于多大的十进制数。 1.5 存储器的容量如下所示,若它的首地址为 0000H,写出它的末地址。 存储器容量 首地址 末地址 1KB 0000H 2KB 0000H 4KB 0000H
标签: 单片机教材
上传时间: 2013-11-23
上传用户:894448095
1.1MSP430的体系结构1.2可编程时钟系统1.3嵌入式仿真环境1.4地址空间1.5MSP430X2XX系列的提高
上传时间: 2013-10-28
上传用户:windypsm
绪论1.1 单片机微型计算机1.2 单片机的应用1.3 AVR,C51和PIC八位单片机性能比较1.4 51系列单片机主要生产厂家及特点
标签: 单片机原理
上传时间: 2013-10-27
上传用户:ikemada
本使用指南介绍SH69P8XX系列单片机(SH69P801/SH69P802/SH69P822/SH69P842/SH69P862)的定时/计数器。SH69P8XX系列单片机具有2个8位定时/计数器T0,T1。T0和T1都是向上计数的自动重载入计数器,其计数的起始值可由外部来写入,计数的值可以被读出,计数溢出时能够产生中断。T0的时钟源可以是内部系统时钟(OSC/4),也可以是外部时钟,而T1的时钟源只能是内部系统时钟(OSC/4)。当对内部系统时钟的标准脉冲序列进行计数时即为定时器,对外部脉冲计数时就可作为计数器使用。当T0时钟源为外部脉冲时,可以选择脉冲的触发方式,上升沿或者下降沿。为了扩大定时或计数范围,可以设置定时器方式寄存器TM0和TM1,对定时器时钟源分频,分频比可以选择为:1:1、1:2、1:4、1:8、1:32、1:128、1:512或1:2048等。定时/计数器的内部结构见图4-1。
上传时间: 2013-10-21
上传用户:1477849018@qq.com