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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

程序设计复习要点.docx

1、程序设计复习要点程序设计复习要点5、MEGA16单片机的USART模块中一帧数据中空闲位和起始位是什么状态?画图说明校验位,可以为奇校验或偶校验起始位,总是为低电平数据位 (0 8)停止位,总是为高电平1.通讯线上没有数据传输 (RxD 或 TxD),线路空闲时必须为高电平四、按图编程1、想使用单片机的PA口接8位发光二极管,PB1PB2接两个按键,PB7接一只继电器,请这几这样的一个电路原理图(10分)2、由图所示,编程实现U2、U1单片机的双机通信功能。(15分)要求:单片机使用内部晶振1兆赫兹,波特率4800时URBB=12,8位数据、无奇偶校验、1位停止位,异步通信,按下各自的按键时使

2、另一块单片机上的LED闪烁4次。四、按图编程1、根据图1所示2位共阳数码管,试用动态显示编程实现显示12数字(10分)#includeiom16v.h #define ledseg1_on PORTA|=(1PA0)#define ledseg1_off PORTA&=(1PA0) #define ledseg2_on PORTA|=(1PA1)#define ledseg2_off PORTA&=(1PA1) /*GONG YANG XING */const unsigned char Num_Dis_TDB=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0

3、x80,0x90; void Delay_1_ms(void) unsigned char cnt_i,cnt_j; for(cnt_i=0;cnt_i40;cnt_i+) for(cnt_j=0;cnt_j33;cnt_j+) void Delay_n_ms(unsigned int n_ms) unsigned int cnt_i; for(cnt_i=0;cnt_in_ms;cnt_i+) Delay_1_ms(); void main(void) unsigned char dis_temp,i; DDRA=0xFF; PORTA=0xFF; DDRB=0xFF; PORTB=0xFF

4、; DDRD=0x00; PORTD=0xff; while(1) PORTB=0xF9; ledseg1_on; Delay_n_ms(20); ledseg1_off; PORTB=0xA4; ledseg2_on; Delay_n_ms(20); ledseg2_off; 2、由图2所示,编程实现U2单片机的按键动作控制U1单片机的LED亮灭。(15分)要求:单片机使用内部晶振1兆赫兹,波特率4800时URBB=12,8位数据、无奇偶校验、1位停止位,异步通信,发送采用查询方式、接收采用中断方式。1、根据图1所示用外部中断0外接一个按键,在中断服务程序中使LED闪烁3次时间间隔1秒(10

5、分)#includeiom16v.h #include macros.h#define led_on PORTC|=(1PC0)#define led_off PORTC&=(1PC0)void Delay_1_ms(void) unsigned char cnt_i,cnt_j; for(cnt_i=0;cnt_i40;cnt_i+) for(cnt_j=0;cnt_j33;cnt_j+) void Delay_n_ms(unsigned int n_ms) unsigned int cnt_i; for(cnt_i=0;cnt_in_ms;cnt_i+) Delay_1_ms(); #pr

6、agma interrupt_handler INT0_isr:2 void INT0_isr(void) unsigned char i; for(i=0;i3;i+) led_on; Delay_n_ms(50); led_off; Delay_n_ms(50); void main(void) CLI(); /全局中断标志禁止 DDRD=0x00; PORTD=0xFF; DDRC=0xFF; MCUCR =(1 ISC01)+ (1 ISC00);/ 0x02;/中断0 触发方式控制,由ISC01=1, ISC00=0,两位设置,表示INT0 的下降沿产生异步中断请求 GICR = (

7、1INT0); / / Bit 6 INT0:使能外部中断请求 0 ,I 0,0x40;/ SEI(); /全局中断标志使能,I 1 while(1) /等待中断信号 2、由图2所示,编程实现A/D模块的读数据及初始化子程序。(15分)要求:10位数据转换结果,只完成AD部分的初始化及数据读取的子程序。(1)ADC初始化子程序void ATmega16_ADC_Init(void) ADCSRA=0x00; /关闭ADCADMUX=0x40; /选择参考电压为AVCC、数据右对齐、通道0 ACSR=0x80; /关闭模拟比较器的电源 ADCSRA=0x87; /使能ADC、单次转换、ADC转换

8、中断禁止、128分频(2)ADC转换读数据子程序unsigned int ATmega16_ADC_Convert()/void unsigned int adc_value; ATmega16_AD_Start; /启动AD转换 while(!(ADCSR&(1ADIF); /等待AD转换结束 adc_value=(unsigned int)ADCL; /读取低8位 adc_value|=(unsigned int)(ADCH&0x03)8; /读取高2位 NOP(); return adc_value;1、根据图1所示,完整编程序让LED亮一秒,灭一秒,循环不止(8分)假设晶振为4Mhz。

9、程序如下:#includeiom16v.h #define led_on PORTA|=(1PA1)#define led_off PORTA&=(1PA1)void Delay_1_ms(void) unsigned char cnt_i,cnt_j; for(cnt_i=0;cnt_i40;cnt_i+) for(cnt_j=0;cnt_j33;cnt_j+) void Delay_n_ms(unsigned int n_ms) unsigned int cnt_i; for(cnt_i=0;cnt_in_ms;cnt_i+) Delay_1_ms(); void main(void) D

10、DRA=0xFF; PORTA=0xFF; while(1) led_on; Delay_n_ms(1000); led_off; Delay_n_ms(1000); 2、由图2所示,完成编写按键扫描程序,可以直接使用第1题中延时子程序名称,按键值任意。(8分)#includeiom16v.h #define led_on PORTC|=(1PC7)#define led_off PORTC&=(1PC7)void Delay_1_ms(void) void Delay_n_ms(unsigned int n_ms) unsigned char Get_Key_Val( ) unsigned

11、char key_val=0; if(PINA!=0XFF)/ key_val=PINA; switch(key_val)/ case 0xdf:key_val=1;break; default:break; return key_val;/ void main(void) unsigned char cnt_i; DDRA=0x00; PORTA=0xFF; / DDRC=0xFF; / PORTC=0xFF; while(1) while(Get_Key_Val()=0); / if(Get_Key_Val()=1) led_on; Delay_n_ms(10); led_off; Del

12、ay_n_ms(10); 3、由图3所示,编写单片机AD转换模块的,初始化及获取转换值的两个子程序,要求数据右对齐,其他按图设置。(10分)(1)ADC多工选择寄存器ADMUXBit7:6REFS1:0:参考电压选择Bit5ADLAR:ADC转换结果左对齐Bits4:0MUX4:0:模拟通道与增益选择位(2)ADC控制和状态寄存器AADCSRABit7ADEN:ADC使能Bit6ADSC:ADC开始转换Bit5ADATE:ADC自动触发使能Bit4ADIF:ADC中断标志Bit3ADIE:ADC中断使能Bits2:0ADPS2:0:ADC预分频器选择位(1)ADC初始化void ATmega1

13、6_ADC_Init(void) ADCSRA=0x00; /关闭ADCADMUX=0x43; /选择参考电压为AVCC、数据右对齐、通道3 ACSR=0x80; /关闭模拟比较器的电源 ADCSRA=0x87; /使能ADC、单次转换、ADC转换中断禁止、128分频(2) ADC转换子程序unsigned int ATmega16_ADC_Convert()/void unsigned int adc_value; ATmega16_AD_Start; /启动AD转换 while(!(ADCSR&(1ADIF); /等待AD转换结束 adc_value=(unsigned int)ADCL; /读取低8位 adc_value|=(unsigned int)(ADCH&0x03)8; /读取高2位 NOP(); return adc_value;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2