版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第一课:不同类型单片机开发的比较1第二课:AVR单片机的优点3第三课:AVR单片机头文件简介与使用6第四课:AVR单片机I/O口的4种位操作方法8第五课:AVR熔丝位简介11第六课:如何把51单片机的程序移植到AVR单片机14第七课:AVR单片机中断的原理和使用15第八课:AVR单片机片内EEPROM的原理和使用22第九课:AVR单片机片内ADC的原理和使用27第十课:AVR片内定时器的原理和使用方法36第十一课:AVR单片机TWI总线的原理48第十二课:AVR单片机USART通信接口的原理和使用55第十三课:AVR单片机驱动LCD1602液晶显示器65第十四课:AVR单片机驱动DS18B
2、2073第十五课:AVR单片机驱动DS130280第十六课:不同型号的AVR单片机之间程序的移植方法88ATmega16第一课:不同类型单片机开发的比较第二课:AVR单片机的优点注意:上面的DDB7应该是DDRB7.点亮第一个LED灯#include<iom16v.h>#include<macros.h>void main() DDRB=0xff; PORTB=0xff; DDRA=0xff; PORTA=0xfe; while(1);第三课:AVR单片机头文件简介与使用几种操作方法的比较#include<iom16v.h>#include<macro
3、s.h>void main() DDRB=0xff; PORTB=0xff; DDRA=0xff; PORTA=0; PORTA|=(1<<2); PORTA|=BIT(3); PORTA|=BIT(PORTA);第四课:AVR单片机I/O口的4种位操作方法闪烁灯#include<iom16v.h>#include<macros.h>void delay(unsigned char z) unsigned char x,y; for(x=0;x=z;x+) for(y=0;y<110;y+);void main() DDRB=0xff; PORT
4、B=0xff; DDRA=0xff; PORTA=0xff; while(1) PORTA&=0x80; delay(500); PORTA|=0x80; delay(500); 用按键控制灯的闪烁#include<iom16v.h>#include<macros.h>void main() DDRB=0xff; PORTB=0xff; DDRA=0xff; PORTA=0xff; DDRD=0; PORTD=0xff;/PD口设置为带上拉的输入 while(1) if(PIND&0x40)/00000100 PORTA|=BIT(7); else PO
5、RTA&=BIT(7): 第五课:AVR熔丝位简介第六课:如何把51单片机的程序移植到AVR单片机第七课:AVR单片机中断的原理和使用#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned intuchar table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void delay() uint x,y; for(x=0;x<1000;x+) for(y=0;y<500;y+);void init()
6、 DDRB|=BIT(6); PORTB|=BIT(6); DDRA=0xff; PORTA=0xff; MCUCR|=0x02;/设置外部中断0的触发方式 GICR|=BIT(6);/使能外部中断 DDRD&=BIT(2); PORTD|=BIT(2);/设置为带上拉电阻的输入 SREG|=BIT(7);void main() init(); while(1) PORTA|=BIT(0); delay(); PORTA&=BIT(0); delay(); #pragma interrupt_handler int0_isr:2void int0_isr() PORTA=0;
7、delay(); delay(); delay(); PORTA=0xff;第八课:AVR单片机片内EEPROM的原理和使用#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned intuchar code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucahr code smg_we=0x08,0x18,0x28,0x38,0
8、x48,0x58,0x68,0x78;/位选是用74HC138译码器控制的uchar code table=0,0,0,0,0,0,0,0;void delay() uint x; for(x=0;x<300;x+);void init() DDRB=0xff; PORTB=0; DDRC=0x78;/01111000 PORTC=0;void display(ucahr *p) uchar i; for(i=0;i<8;i+) PORTB=smg_du*p; p+; PORTC=smg_wei; delay(); void EEPROM_write(uint addr,uint
9、adata) SREG&=BIT(7);/关闭总中断 while(EECR&BIT(EEWE); EEAR=addr; EEDR=adata; EECR|=BIT(EEMWE); EECR|=BIT(EEWE); SREG|=BIT(7);uchar EEPROM_read(uchar addr) uchar edata; SREG&=BIT(7); while(EECR&BIT(EEWE); EEAR=addr; EECR|=BIT(EERE); edata=EEDR; return edata;void main() uchar i; init(); i=E
10、EPROM_read(2); i+; EEPROM_write(2,i); table0=i; while(1) display(table); 第九课:AVR单片机片内ADC的原理和使用#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned intuchar code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucahr c
11、ode smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78;/位选是用74HC138控制的uchar code table=0,0,0,0,0,0,0,0;void delay() uint x; for(x=0;x<300;x+);void init() DDRB=0xff; PORTB=0; DDRC=0x78;/01111000 PORTC=0;void display(uchar *p) uchar i; for(i=0;i<8;i+) PORTB=smg_du*p; p+; PORTC=smg_wei; delay(); void
12、 adc_init() DDRA&=BIT(0); PORTA&=BIT(0); ADMUX|=0x40; ADCSRA|=0xe8; SFIOR=0x00; SREG|=BIT(7);void data_pro(uint temp_l,uint temp_h) uint temp1,temp2; temp1=temp_h*256; temp2=temp1+temp_l; table3=temp2/1000; temp1=temp2%1000; table2=temp1/100; temp2=temp1%100; table1=temp2/10; table0=temp2%10
13、;void main() init(); adc_init(); while(1);#pragma interrupt_handler adc_isr:15void adc_isr() uint adc_l,adc_h; adc_l=ADCL; adc_h=ADCH; display(table);第十课:AVR片内定时器的原理和使用方法用普通模式实现秒表#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned intuchar code smg_du=0x3
14、f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucahr code smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78;/位选是用74HC138控制的uchar code table=0,0,0,0,0,0,0,0;uchar num;void delay() uint x; for(x=0;x<300;x+);void init() DDRB=0xff; PORTB=0; DDRC=0x78;/01111000 PORTC=0;void
15、 display(ucahr *p) uchar i; for(i=0;i<8;i+) PORTB=smg_du*p; p+; PORTC=smg_wei; delay(); void timer1_init() TCCR1B=0x04;/256分频 TCNT1H=0x8f; TCNT1L=0x80; TIMSK|=BIT(2); SREG|=BIT(7);void main() init(); timer1_init(); while(1) display(table); #pragma interrupt_handler timer1_isr:9void timer1_isr() n
16、um+; if(num=60) num=0; table0=num%10; table1=num/10; TCNT1H=0x8f; TCNT1L=0x80;用CTC模式输出1KHZ的方波.#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned intvoid main() DDRD=0x30; TCCR1B=0x09; TCCR1A=0x50;/选择模式4 OCR1A=3685;#include<iom16v.h>#include<macr
17、os.h> #define uchar unsigned char#define uint unsigned intvoid main() DDRD|=0x30; TCCR1A=0x63; TCCR1B=0x1b;/选用模式15 OCR1A=575;/频率为200HZ OCR1B=115;/占空比为1/5第十一课:AVR单片机TWI总线的原理第十二课:AVR单片机USART通信接口的原理和使用#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned in
18、t#define fosc 7372800uchar rdata,flag;void uart_init(uint baud) uint a; UCSRC=0x86; a=fosc/16/baud-1; UBRRL=a%256; UBRRH=a/256; UCSRB=0x98; SREG|=BIT(7);void uart_send(uchar data) while(!(UCSRA&BIT(5); UDR=data; while(!(UCSRA&BIT(6); UCSRA|=BIT(6);#pragma interrupt_handler uartrece_isr:12voi
19、d uarterce_isr() UCSRB&=BIT(7); rdata=UDR; flag=1; UCSRB|=BIT(7);void main() uchar i='h' uart_init(9600); /uart_send(i); while(1) if(flag) flag=0; uart_send(rdata); 第十三课:AVR单片机驱动LCD1602液晶显示器#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned i
20、nt#define RS_CLR PORTC&=BIT(4)#define RS_SET PORTC|=BIT(4)#define RS_OUT DDRC|=BIT(4)#define RW_CLR PORTC&=BIT(5)#define RW_SET PORTC|=BIT(5)#define RW_OUT DDRC|=BIT(5)#define E_CLR PORTC&=BIT(6)#define E_SET PORTC|=BIT(6)#define E_OUT DDRC|=BIT(6)uchar table1="0123456789876543"
21、;uchar table2="abcdefg!#$%&*("void delay_nms(uint nms) 延时n个ms,具体函数自己写void write_com(uchar com) RS_SET; RW_SET; E_CLR; RS_CLR; RW_CLR; PORTA=com; delay_nms(1);/延时1ms E_SET; delsy_nms(1); E_CLR;void write_data(uchar data) RS_CLR; RW_SET; E_CLR; RS_SET; RW_CLR; PORTA=data; delay_nms(1);/延
22、时1ms E_SET; delsy_nms(1); E_CLR;void init() DDRA=0xff; PORTA=0; RS_OUT; E_OUT; RW_OUT; delay_nms(20); write_com(0x38); delay_nms(5); write_com(0x38); delay_nms(5); write_com(0x38); write_com(0x38); write_com(0x08); write_com(0x01); write_com(0x06); write_com(0x0c);void main() uchar i; init(); write_
23、com(0x80); for(i=0;i<16;i+) write_data(table1i); delay_nms(2); write_com(0x80+0x40); for(i=0;i<16;i+) write_data(table2i); write_com(0x80); while(1);第十四课:AVR单片机驱动DS18B20注意:DS18B20对时间要求非常高,延时函数一定要精确#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned
24、int#define DQ_IN DDRC&=BIT(2)#define DQ_OUT DDRC|=BIT(2)#define DQ_SET PORTC|=BIT(2)#define DQ_CLR PORTC&=BIT(2)#define DQ_R PINC&BIT(2)uchar code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucahr code smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,
25、0x78;/位选是用74HC138控制的uchar code table=0,0,0,0,0,0,0,0;void delay() uint x; for(x=0;x<300;x+);void init() DDRB=0xff; PORTB=0; DDRC=0x78;/01111000 PORTC=0;void display(uchar *p) uchar i; for(i=0;i<8;i+) PORTB=smg_du*p; p+; PORTC=smg_wei; if(i=1) PORTB|=BIT(7); else PORTB&=BIT(7); delay(); voi
26、d delay_nus(uint nms) 延时n个us,具体函数自己写uchar ds18b20_reset() uchar i; DQ_OUT; DQ_CLR; delay_nus(500); DQ_SET; delay_nus(100); DQ_IN; i=DQ_R; delay_nus(500); return i; void ds18b20_write_byte(uchar value) uchar i; for(i=0;i<8;i+) DQ_OUT; DQ_CLR; delay_nus(10); if(value&0x01) DQ_SET; delay_nus(100
27、); DQ_SET; value=value>>1; uchar ds18b20_read_byte() uchar i,value; for(i=0;i<8;i+) value=value>>1; DQ_OUT; DQ_CLR; delay_nus(10); DQ_SET; DQ_IN; if(DQ_R) value|=0x80; delay_nus(50); return value;void data_pro(uint temp) uint a; table2=temp/100; a=temp%100; table1=a/10; table0=a%10;vo
28、id main() uchar i,j,k; uint temp; init(); while(1) ds18b20_reset(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0x44); delay_nus(2000); ds18b20_reset(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0xbe); i=ds18b20_read_byte();/低字节 j=ds18b20_read_byte();/高字节 temp=j*256+i;/26.8 temp=temp*0.625;/268
29、data_pro(temp); for(k=0;k<20;k+) display(table); 第十五课:AVR单片机驱动DS1302#include<iom16v.h>#include<macros.h>#define uchar unsigned char#define uint unsigned int#define SCK_CLR PORTB&=BIT(0)#define SCK_SET PORTB|=BIT(0)#define SCK_OUT DDRB|=BIT(0)#define RST_CLR PORTD&=BIT(6)#defin
30、e RST_SET PORTD|=BIT(6)#define RST_OUT DDRD|=BIT(6)#define IO_CLR PORTB&=BIT(1)#define IO_SET PORTB|=BIT(1)#define IO_OUT DDRB|=BIT(1)#define IO_IN DDRB&=BIT(1)#define IO_R PINB&BIT(1)uchar code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucahr
31、 code smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78;/位选是用74HC138控制的uchar code table=0,0,0,0,0,0,0,0;uchar time_data7=10,6,4,17,11,59,35;/年周月日时分秒uchar write_add7=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80;uchar read_add7=0x8d;0x8b,0x89,0x87,0x85,0x83,0x81;void delay() uint x; for(x=0;x<300;x+);void init() DDRB=0xff; PORTB=0; DDRC=0x78;/01111000 PORTC=0;void display(uchar *p) uchar i; for(i=0;i<8;i+) PORTB=smg_du*p; p+; PORTC=smg_wei; delay(); void delay_nus(uint nms) 延时n个us,具体函数自己写void write_ds1302_byte(uchar dat) uchar i; IO_OUT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湘西土家族苗族自治州泸溪县2025-2026学年第二学期四年级语文期末考试卷(部编版含答案)
- 焦作市沁阳市2025-2026学年第二学期四年级语文第七单元测试卷(部编版含答案)
- 临沧地区云县2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 定西地区漳县2025-2026学年第二学期三年级语文第八单元测试卷(部编版含答案)
- 机绣工QC管理测试考核试卷含答案
- 把钩信号工变革管理模拟考核试卷含答案
- 拖拉机机械加工生产线操作调整工岗前技能掌握考核试卷含答案
- 辽阳市白塔区2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- 九江市浔阳区2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 昭通地区镇雄县2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- 2026年中国邮政集团有限公司安徽省分公司校园招聘考试参考题库及答案解析
- 2026年北京市朝阳区高三一模历史试卷(含答案)
- 湖南天壹名校联盟2026届高三下学期3月质量检测历史试卷(含解析)
- 2026年温州市瓯海区专职社区工作者公开招聘6人考试参考试题及答案解析
- 中药材采购合作框架协议书
- 2026年宁夏财经职业技术学院单招职业技能测试题库及1套参考答案详解
- 工程造价基础知识课件
- DL-T825-2021电能计量装置安装接线规则
- 公路建设项目经济评价表模板(自动计算)
- 航天禁(限)用工艺目录(2021版)-发文稿(公开)
- 人类辅助生殖技术规范1;2
评论
0/150
提交评论