资讯详情

实验2单片机C语言程序结构

资源描述:

单片机C语言程序结构实验名称 姓名 学号 实验班号 机器号 1. 实验目的 1. 掌握单片机C语言程序结构; 2. 掌握单片机C语言程序调试方法; 3. 掌握MSP430FG2553基本I/O控制方法。 2. 基本实验任务 1. 练习调试程序 1. 练习调试程序 实验板上的实验板用跳线块 8 发光二极管控制端 L8L1 与单片机的 8 个引脚 P2.7P2.0 相连。编写的程序 L2_debug.C 例如,程序列表控制与单片机连接的功能 8 发光二极管在全亮和全灭两种状态下循环变换。该程序没有语法错误,但运行后不能出现上述现象。请在机器上调试问题,指出并修改程序。总结调试程序的方法,比较 G、step over、step into 与断点操作等执行命令不同,如何有效地应用这些命令进行调试。 实验板线路连接如下 操作讲义提供的L2_debug.C之后,发现了以下问题 (1) 代码中“P应改为一P2”,因为这里我们用端口2来连接发光二极管。 (2) 代码中缺少循环语句,应添加循环体,使程序连续运行。 (3) 程序延迟时间过短,导致发光二极管发光现象难以观察延迟时间应延长。如果要这样做,变量j的类型也应设置为int为了使其获得更大的值。 (4) 程序未将P2设置为基本IO,应该将P2SEL与P2SEL2设为0 x00。 (5) 未初始化P2OUT该值可能存在隐患(尽管在该程序中没有)。 (修改后的实验1程序代码见程序清单) 调试程序的方法 (1) 利用GO直接操作程序,同时检查实验现象,检查程序中使用的端口寄存器、变量等的变化,程序中的问题。 (2) 设置断点,然后使用GO,使程序运行到断点,检查实验现象,检查程序运行到断点后使用的端口寄存器和变量,找出程序中的问题。 (3) 利用Step over与Step into同时检查实验现象,检查运行前后程序中使用的端口寄存器和变量的变化,找出程序中的问题。 修改后思考 L2_debug.C 基础上, 比较程序用 Step overF10和 Step intoF11 单步执行函数 delay 有何不同。 答用Step over单步执行delay,则delay直接完成,使用Step into单步执行delay,则会“进入”到delay内部,每次使用一次Step into,执行一个内部句子。 2. 控制发光二极管的显示变化(实验2程序代码见程序清单) 在任务 1 在连接的基础上,编写程序控制 8 发光二极管按下面的发光二极管 2 循环变换的规律,即 规律 1规律 2规律 1规律 2à,重复这样的循环。 1 规律 18个LED灯从 L5L8L1L4 L3L2L7L6 单独点亮,每次只有一盏灯,其他灯熄灭; 2 规律 28个LED灯两两亮,顺序为 L6 和 L4,L5 和 L3,L7 和 L1,L8 和 L2,每次只有两个灯亮,其他灯灭。 实验板线路连接如下 如果你选择使用单片机,如果你选择思考P1端口控制8个发光二极管,如何在实验板上设计连接,编程任务2 如果要用的话P1端口应控制8个发光二极管P1.0P1.7与L1L8连接实验2程序代码中的P2”全部用“P1”代替。 3. 用按钮控制发光二极管的显示变化(实验3程序代码见程序列表) 在任务2的基础上,添加两个按钮连接到单片机的引脚,编程按下实验板上的按钮来控制发光二级管的显示变化K5键时,8个发光二极管按任务2中的规律变化1;按实验板上的时候K2键时,8个发光二极管按任务2中的规律2变化。每次按下按钮,蜂鸣器都会响,用声音提示单片机接收按钮。 线路连接如下 3. 提高任务 4. 按键控制步进电机旋转(实验4(1)和4(2)程序代码见程序清单 参考步进电机工作原理实验课件,了解步进电机工作方法的控制。完成 1 设计单片机 msp430G2553 控制步进电机的电路连接,编程控制电机的正转和反转 用四拍法测试控制电机转动需要多少步骤。 注意每步之后需用 fori0; i0 xFFF),不宜观察电机的旋转。 实验实验,发现用四拍法转动电机需要256步(延迟为0 x1f0时)。 2 在 1)增加按钮控制按钮 K6 键电机顺时针旋转正转;按下 K3 逆时针转键电机 动反转;按下 K1 关键电机停止。每次按下按钮,蜂鸣器响起,用声音提示接收按钮信息。 线路连接如下 5. 步进电机旋转采用八拍控制(实验5程序代码见程序清单) 在线查找信息或参考课件,了解步进电机旋转的原理和方法,编程实现电机旋转的八拍控制。 根据实验发现,用八拍法转动电机需要256步(延迟 x1f0时)。 线路连接情况如下 五、附录程序清单 (1)L2_debug.C include “io430.h” void delay ; int mainvoid { WDTCTL WDTPW WDTHOLD; //关闭看门狗 P1DIR0 xff; ///设置端口1输出方向 P1OUTP1OUT; // 取反端口1的值,然后输出 delay ; ///调用函数延迟 } void delay ///延迟函数 { unsigned char j; forj0;j5;j } (2) 实验1程序(修改后) include “io430.h“ void delay; int main void { // Stop watchdog timer to prevent time out reset WDTCTL WDTPW WDTHOLD; P2SEL 0 x00; P2DIR 0 xff; while1 { P2OUT P2OUT; delay; }; return 0; } void delay { unsigned int j; forj0;j30000;j; } (3) 实验2程序 include “io430.h“ void delay; int main

开始阅读全文

标签: 二极管k6

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台