1 / 19
文档名称:

c语言实验报告.doc

格式:doc   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c语言实验报告.doc

上传人:用户头像没有 2016/3/2 文件大小:0 KB

下载得到文件列表

c语言实验报告.doc

相关文档

文档介绍

文档介绍:实验名称:单片机C语言程序结构和设计(实验2、3)姓名___学号实验班号机器号一、实验目的:;;;;;、实验基本任务1、练习调试程序内容:用跳线将实验板上的8个发光二极管与单片机连接。,功能是控制与单片机相连接的8个发光二极管在全亮与全灭这两种状态下循环变换。该程序没有语法上的错误,但运行后不能实现上述现象,请上机调试其中的问题,指出程序的问题,并修改程序。答:将单片机P2端口的8个引脚与L1~L8相连。电路如下:原有程序为:通过上机调试,发现原程序有以下错误:1由于是P2端口上引脚与LED相接,所以应该设置P2而不是P12应将P2端口调为基本I/O端口,仅通过DIR寄存器是不行的3源程序没有对P2OUT进行初始化,无法达到全亮全灭的效果4没有循环结构,无法达到全亮全灭的循环效果,可用for(;;)或while(1)结构5delay()函数延时过短,人眼几乎无法感受亮灭的变化正确的程序应为:#include""voiddelay();intmain(void){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P2SEL=0;//将P2端口设为基本I/O端口P2SEL2=0;P2DIR=0Xff;//设置端口2为输出方向P2OUT=0;//初始化P2端口引脚,For(;;){P2OUT=~P2OUT;delay();}}voiddelay(){unsignedintj;for(j=0;j<0xffff;j++);//延时},编程控制8个发光二极管按下面的2种规律循环变换,即规律1→规律2→规律1→规律2→……,如此循环反复。1)规律1:8个LED灯顺时针一个一个单独点亮,即L1亮L2……L7亮L8亮,每次只有一个灯亮,其他灯灭;2)规律2:8个LED灯两两点亮,顺序为L1和L8,L2和L7,L3和L6,L4和L5,每次只有两个灯亮,其他灯灭;答:程序如下:#include""voiddelay();voidrule1();voidrule2();intmain(void){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P2SEL=0;//将P2端口设为基本I/O端口P2SEL2=0;P2DIR=0Xff;//设置端口2为输出方向P2OUT=0;//初始化P2端口引脚,for(;;){rule1();rule2();}}voidrule1()//规律1{unsignedcharLED_0=0x01,LED_temp;LED_temp=LED_0;for(unsignedinti=0;i<8;i++){P2OUT=~LED_temp;delay();LED_temp=LED_temp<<1;}}voidrule2()//规律2{unsignedcharLED_data[]={0x81,0x42,0x24,0x18};for(unsignedinti=0;i<4;i++){P2OUT=~LED_data[i];delay();}}voiddelay(){unsignedintj;for(j=0;j<0xffff;j++);//延时}思考:如果选择用单片机的P1端口控制8个发光二极管,如何在实验板上设计连线、并编程实现任务2的功能?答:设计连线:将P1端口的8个引脚与L1~L8对应相连。程序设计:,增加2个按键与单片机的引脚相连,编程实现由按键控制发光二级管的显示变化:当按下实验板上的K1键时,8个发光二极管按任务2中的规律1变化;当按下实验板上的K2键时,8个发光二极管按任务2中的规律2变化。答:在实验1的连线基础上,、、K2相连。如下图程序如下:#include""voiddelay();voidrule1();voidrule2();intmain(void){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P2SEL=0;//将P2端口设为基本I/O端口P2SEL2=0;P2DIR=0xff;//设置端口2为输出方向P2OUT=0;//初始化P2端口引脚,P1SEL&=~(BIT0+BIT1);//设置P1为基本I/OP1SEL2&=~(BIT0+BIT1);P1DIR&=~(BIT0+BIT1);//