ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:387.04KB ,
资源ID:7471930      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7471930.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机班培训.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机班培训.docx

1、单片机班培训单片机培训培训宗旨:引导为主 培养编程思维时间分配(一学期):三分之一时间讲解;三分之二时间动手实验。具体时间:星期六晚上6:009:00内容形式: 1、软、硬件知识(一)讲解 2、实验经验3、常用程序(思维)分析1、专业讲座(请资深讲师)(二)讲座 2、课外讲座(如书记等)3、电影(专业性强的短片)(李世维讲座)1、硬件测试与软件使用(三)实验内容 2、汇编语言编程3、AVR单片机内部资源的使用 建议方法:先由指导老师讲解实验内容的原理、特点、应用、实践应用中的经验以及编程思维的分析,再由会员自己理解、自己验证、运用原理设计应用、调试程序。在会员动手的过程中,由摇篮的部长(三名)

2、从旁指导。实验一 软件和硬件的认识一、 实验目的:1、掌握硬件原理。 2、初步掌握实验板的使用方法。 3、熟悉软件工作界面。二、 实验仪器: ATmage16实验板 一块PC机 一台三、 实验内容及步骤:1、插上电源,按下开关。观察批示灯是否点亮。电源(可输入712V)ATmega16管脚图2、由原理可知I/O口的批示灯为低电平亮,在实验板上取地与I/O口相接,观察是否点亮。I/O口LED显示与接口3、打开编程界面,点击各栏,认识各栏的用途。AVRICC IDE 软件的工作界面4、输入以下程序:#include int main(void) DDRA = 0xff; /* all output

3、s */ DDRB = 0xff; /* all outputs */ DDRC = 0xff; /*all outputs */ DDRD = 0xff; /*all outputs */ PORTA = 0x00; /* 输出低电平 */ PORTB = 0x00; /* 输出低电平 */ PORTC = 0x00; /* 输出低电平 */ PORTD = 0x00; /* 输出低电平 */ while(1);观察I/O口的灯是否被点亮。实验二 I/O口的输入与输出一、 实验目的:1、了解IO口的结构; 2、熟悉IO口的特性; 3、掌握IO口的控制。二、实验仪器:ATmage16实验板 一

4、块PC机 一台三、 实验原理:作为通用数字I/O 使用时,AVR 所有的I/O 端口都具有真正的读- 修改- 写功能。这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻) 时不会改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC 和地相连,如 Figure23 所示。在控制I/O时,分别由方向寄存器DDRX与数据寄存器PORTX控制I/O的状态,如下表。 Figure 23. I/O 引脚等效原理图 I/O口LE

5、D显示与接口四、 实验内容及步骤: 输入以下程序:这个程序为流水灯#include /*延时 usvoid delay_us(int t)do t-;while(t1);/*延时 msvoid delay_ms(unsigned int t)while(t!=0)delay_us(1142);t-;int main(void) DDRA = 0xff; /* all outputs */ DDRB = 0xff; /* all outputs */ DDRC = 0xff; /*all outputs */ DDRD = 0xff; /*all outputs */ PORTA=0XFF; P

6、ORTB=0XFF; PORTC=0XFF; PORTD=0XFF; while(1)/*IO口输出低电平有效,如:0X01为十六进制数,二进制表示为00000001B,再取反 PORTA=0X01; delay_ms(1000);/*延时1秒 PORTA=0X02; delay_ms(1000); PORTA=0X04; delay_ms(1000); PORTA=0X08; delay_ms(1000); PORTA=0X10; delay_ms(1000); PORTA=0X20; delay_ms(1000); PORTA=0X40; delay_ms(1000); PORTA=0X8

7、0; delay_ms(1000);PORTA=0XFF; PORTB=0X01; delay_ms(1000);/*延时1秒 PORTB=0X02; delay_ms(1000); PORTB=0X04; delay_ms(1000); PORTB=0X08; delay_ms(1000); PORTB=0X10; delay_ms(1000); PORTB=0X20; delay_ms(1000); PORTB=0X40; delay_ms(1000); PORTB=0X80; delay_ms(1000);PORTB=0XFF; PORTC=0X01; delay_ms(1000); P

8、ORTC=0X02; delay_ms(1000); PORTC=0X04; delay_ms(1000); PORTC=0X08; delay_ms(1000); PORTC=0X10; delay_ms(1000); PORTC=0X20;delay_ms(1000);PORTC=0X40; delay_ms(1000); PORTC=0X80; delay_ms(1000);PORTC=0XFF; PORTD=0X01; delay_ms(1000); PORTD=0X02; delay_ms(1000); PORTD=0X04; delay_ms(1000); PORTD=0X08;

9、delay_ms(1000); PORTD=0X10; delay_ms(1000); PORTD=0X20; delay_ms(1000); PORTD=0X40; delay_ms(1000); PORTD=0X80; delay_ms(1000); PORTD=0XFF; 观看现象是不是流水灯。实验三 外部中断一、 实验目的:1、了解外部中断的库函数;2、熟悉外部中断的特性; 3、掌握外部中断的使用。二、实验仪器:ATmage16实验板 一块PC机 一台三、 实验原理:外部中断通过引脚INT0 与INT1 或PCINT23.0 触发。只要使能了中断,即使引脚INT0与INT1 或PCIN

10、T23.0 配置为输出,只要电平发生了合适的变化,中断也会触发。这个特点可以用来产生软件中断。 只要使能, PCINT23.16 引脚上的电平变化将触发外部中断PCI2, PCINT14.8 引脚上的电平变化将触发外部中断PCI1, PCINT7.0 将触发外部中断PCI0。PCMSK2、PCMSK1 与PCMSK0 寄存器则用来检测是哪个引脚上的电平发生了变化。PCINT23.0 外部中断的检测是异步的。也就是说,和其他中断方式一样,这些中断也可以用来将器件从休眠模式唤醒。INT0 与INT1 中断可以由下降沿、上升沿,或者是低电平触发。具体由外部中断控制寄存器A EICRA 的设置来确定。

11、当INT0 或INT1 中断使能且设定为电平触发时,只要引脚电平被拉低,中断就会产生。若要求INT0 或INT1 在信号下降沿或上升沿触发中断,则I/O时钟必须工作(请参见P23”时钟系统及其分布” 了解更多信息)。INT0与INT1 的低电平中断检测是异步的。也就是说它可以用来将器件从休眠模式唤醒。在休眠过程( 除了空闲模式) 中I/O 时钟是停止的。通过电平中断将MCU 从掉电模式唤醒时,要保证低电平保持一定的时间以使MCU 完成唤醒过程并触发中断。如果触发电平在启动时间结束前就消失, MCU 将被唤醒,但中断不会被触发。启动时间由熔丝位SUT 与CKSEL 决定。详见 P23” 系统时钟

12、及其选项” 。外部中断控制寄存器MCUCR 外部中断控制寄存器 A 包括决定中断触发方式的控制位。位1, 0 ISC01, ISC00: 中断触发方式控制0 之位1 与位0外部中断0 由引脚INT0 激发,如果SREG 寄存器的I 标志位和相应的中断屏蔽位置位的话。触发方式如Table35 所示。在检测边沿前MCU 首先采样INT0 引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。中断完成后回到被中断的位置。外部中断控制寄存器MCUCR 外部中断控制

13、寄存器 A 包括决定中断触发方式的控制位。通用中断控制寄存器 GICR,控制外部中断使能位,具体如下:四 ICC软件中断程序书写格式及16中断向量表 16中断向量表五 实验步骤及内容:输入程序:本程序一开始是IO口中的A口以流水灯工作,一旦有外部中断请求,就是B口以流水灯工作,循环一次后回到被中断处继续运行。程序如下:#include #include /*延时 usvoid delay_us(int t)do t-; while(t1);/*延时 msvoid delay_ms(unsigned int t)while(t!=0)delay_us(1142);t-;#pragma inter

14、rupt_handler INT_0:2 /外部中断0执行函数void INT_0 (void) PORTC=0XFF; PORTB=0X01; delay_ms(1000); PORTB=0X02; delay_ms(1000); PORTB=0X04; delay_ms(1000); PORTB=0X08; delay_ms(1000); PORTB=0X10; delay_ms(1000); PORTB=0X20; delay_ms(1000); PORTB=0X40; delay_ms(1000); PORTB=0X80; delay_ms(1000); PORTB=0XFF; voi

15、d main(void)DDRA = 0xff; /*输出 */DDRB = 0xff; /*输出 */ DDRC = 0xff; /*输出*/ DDRD = 0xff; /*输出*/ PORTA=0XFF; PORTB=0XFF; PORTC=0XFF; PORTD=0XFF; MCUCR=0X02; /定义外部中断INT0为下降沿产生中断请求 GICR=0X40; /中断屏蔽寄存器开INT0 SEI(); /*开全局中断 for (;) PORTA=0X01; delay_ms(1000); PORTA=0X02; delay_ms(1000); PORTA=0X04; delay_ms(

16、1000); PORTA=0X08; delay_ms(1000); PORTA=0X10; delay_ms(1000); PORTA=0X20; delay_ms(1000); PORTA=0X40; delay_ms(1000);PORTA=0X80; delay_ms(1000); 实验四 数码LED 实验一、 实验目的:1、了解数码管的原理;2、熟悉数码管的使用; 3、掌握外部中断和数码管动态显示的应用。二 、 实验仪器:ATmage16实验板 一块PC机 一台三、 实验原理:数码管原理图如下:多个数码管的动态显示是利用人的眼睛在瞬间无法识别的原理来实现在,如电灯也是利用这个原理。四

17、、 实验步骤及内容:这个程序是数码管动态显示,按INT0键加1,一直到数码管显示为9999再重新计数。实验程序如下: #include #include int led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*显示符0,1,2,3,4,5,6,7,8,9,unsigned int i;int g,s,b,q;/*延时 usvoid delay_us(int t)do t-; while(t1);/*延时 msvoid delay_ms(unsigned int t)while(t!=0)delay_us(1142);t-;#pra

18、gma interrupt_handler INT_0:2 /外部中断0执行函数void INT_0 (void) i+; delay_ms(15);/*键盘防抖动 void main(void) DDRD = 0xff; /* all outputs */ DDRC = 0xff; /* all outputs */ DDRB = 0xff; /*all outputs */ PORTB=0XFF; PORTC=0X00; PORTD=0XFF; MCUCR=0X02; /定义外部中断INT0为下降沿产生中断请求 GICR=0X40; /中断屏蔽寄存器开INT0 SEI(); /*开全局中断

19、 for (;)/*显示按键次数 i f(i9999) i=0; g=i%10; /取个位,取余 PORTC=0X01; PORTB=ledg; delay_ms(1); s=i%100/10; /取十位 PORTC=0X02; PORTB=leds; delay_ms(1); b=i%1000/100; /取百位 PORTC=0X04; PORTB=ledb; delay_ms(1); q=i%10000/1000; / 取千位 PORTC=0X08; PORTB=ledq; delay_ms(1);/* for (i=0;i4;i+) g=i%10; /取余 PORTC=|(1i); PO

20、RTB=ledg;g=i/10; /取整PORTC=0x00;)*/ 实验五 键盘接口实验一、 实验目的:1、了解IO口的结构; 2、熟悉键盘的程序原理; 3、掌握键盘的使用。二、实验仪器: MEGA16实验板 一块PC机 一台三、 实验原理:在AVR 单片机中,当I/O方向设置为输入,电平被设置为高电平时,一旦外部接入低电平,端口电平被拉低,电平变化会反映相应端口PINX寄存器中,利用这一特点,在键盘中采用设置行所对IO口为输出,高电平,列所对IO口为输入,高电平。对行所对IO口电平逐个设置为低电平,此时列线上某列电平被拉低。通过读取列线上电平,计算出所按键值。四 实验程序#include

21、#include /延时/void delay_us( int t) /us dot-;while(t1); void delay_ms(unsigned int t) /mswhile(t!=0)delay_us(1142); t-; unsigned char led= 0X3F,/*0*/ /七段译码表 0X06,/*1*/ 0X5B,/*2*/ 0X4F,/*3*/ 0X66,/*4*/ 0X6D,/*5*/ 0X7D,/*6*/ 0X07,/*7*/ 0X7F,/*8*/ 0X6F,/*9*/ 0X77,/*A*/ 0X7C,/*b*/ 0X39,/*C*/ 0X5E,/*d*/ 0

22、X79,/*E*/ 0X71,/*F*/; /显示符0,1,2,3,4,5,6,7,8,9,unsigned char led_buff=0x3f,0x3f,0x3f,0x3f,0x3f,0x3f; /显示缓冲区unsigned char scan_key(void) /不做按键释放检查的键盘扫描函数 unsigned char i,temp;DDRD=0X0F; /设置D口的高四位为输入,低四位为输出PORTD=0XFf; /D口输出高电平for(i=0;i4;i+) PORTD=(1i); /第i为值为低电平delay_us(500);temp=PIND&0XF0; /temp取D口高四位

23、的值if(temp!=0xf0) /如有键按下,延时15ms delay_ms(15); /延时用来消除显示抖动 temp=PIND&0xf0; /再读键盘if(temp!=0xf0)temp&=0xf0; switch (temp) /计算键值 case 0x70:temp=15-(3-i)*4;break;case 0xb0:temp=14-(3-i)*4;break;case 0xd0:temp=13-(3-i)*4;break; case 0xe0:temp=12-(3-i)*4;break;default:temp=0x7f; return temp; /返回temp PORTD=0

24、xff; return 0x7f; void port_init(void) /初始化IO DDRA=0xff; PORTA=0xff; DDRC=0xff; PORTC=0Xff; DDRD=0x0f;PORTD=0xff; void display(void) /六位数码管显示unsigned int i=0;for(;i6;i+) PORTA=led_buffi; /PA口为段选PORTC=(1i); /PC口为位选 delay_us(1000); PORTC=0X00; void main(void)unsigned char key1,key2; unsigned char i;po

25、rt_init(); for(;) key1=scan_key(); /键盘扫描if (key1!=0x7f) do key2=scan_key(); display(); while(key1=key2); for (i=0;i5;i+) /显示 led_buff5-i=led_buff4-i; /按下一次移一次 led_buff0=ledkey1; /做led显示转换 display(); /显示实验六 模数转换AD 实验一、 实验目的:1、了解IO口的结构; 2、熟悉A/D的特性; 3、掌握A/D的使用。二、实验仪器:MEGA16实验板 一块PC机 一台三、 实验原理:四、 实验步骤及内

26、容:#include #include #define VREF 4.950unsigned int V=0;float Vin=0;unsigned char led=0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F; /0-9unsigned char led_putff=0X3F,0X3F,0X3F,0X3F;/*延时 usvoid delay_us(int t)do t-; while(t1);/*延时 msvoid delay_ms(unsigned int t)while(t!=0)delay_us(1142);t-;/*.中断.*

27、/#pragma interrupt_handler ADC_isr:15void ADC_isr(void) V=ADCL;V=(ADCH8)+V; /读取转换数值/*.系统初始化.*/void xhushihua(void)DDRD=0XFF; /位选DDRB=0XFF; /数码管DDRA=0XFE; /C0口电压输入PORTD=0X00;PORTB=0XC0;PORTA=0X00;ADCSRA|=(1ADEN); /开启ADSEI();/*.AD初始化.*/void ad_link(void) ADCSRA|=(1ADSC)|(1ADIE); /启动转换 ADCSRA|=(1ADPS0)|(1ADPS1); /八分频ADCSRA|=(1ADATE); /开启连续模式使能ADMUX=0X00; /右对齐,基准电源VREF。零通道SFIOR=0X00; /开启连续模式/*.计算转换值.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1