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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验23报告.docx

1、实验23报告姓名 杨帆 学号 2015011735实验班号 3-3 机器号 26实验2 单片机C语言程序结构一、 实验目的掌握单片机C语言程序结构和程序的调试方法以及单片机的基本I/O控制方法。二、 实验基本任务1.练习调试程序Step over(F10)在运行到函数处时不会跟踪到函数内部,而Step Into(F11)则会跟踪到函数内部.遇到的问题:建立的项目的根目录文件夹名称中含有中文,导致断点和Step Into未能准确执行。 2.控制发光二极管的显示变化 可将规律1规律2视作一个完整的过程,因此定义一个12个元素的数组,前八位满足规律1,后四位满足规律2,程序运行过程中只需将12个元素

2、一个个轮过去。 思考:用P1端口控制只需将P1的八个输出端口通过线连接至二极管的端口,设置P1为输出端,其余过程与上思路一致。 3.用按键控制发光二极管的显示变化 在任务2的基础上,只需设置与K1K4连接的两个端口为输入,定义一个变量Key保存按下的按键,按下K1后,使LED的变化在规律一中变化,按下K4后,使LED的变化在规律二中变化。再定义一个Beep函数,每当按键时,将与Buzz连接的P1.7设置为0,再延时一下,再赋为1即可控制蜂鸣器响。 4.(提高)用按键控制步进电机转动 由步进电机工作原理可知,只需使接入步进电机电机的四个端口轮流为1再加入一个延时即可控制步进电机的转动。 (1).

3、定义一个变量sum,每执行一次运转就加一,在转完一圈时使用watch观察sum的值,初步测得约为2200. (2).在任务3和任务4(1) 的基础上稍加修改即可,思路相同实验3 单片机C语言程序设计一、实验目的 在上个实验的基础下加深对单片机的C语言调试和对I/O端口的控制。二、 实验任务1. 并行方式控制数码管的显示(1).在利用Vcc和GND调试后,发现s1、s2、s3和s4连接Vcc,sa等端口连接GND时数码管会工作。 (2)其中P2.0P2.7控制SaSh,P1.0P1.3控制选择亮的数码管(3).定义09,AF数组,分别使四个数码管处于工作状态再将P2OUT赋值为之前定义的数组。显

4、示good只需对每个数码管分别让其按g o o d的形状亮即可。遇到的问题:在显示good时,前一个字母会暂现在下一个数码管上,调试后发现是尚未关闭之前的数码管即对P2OUT赋值了。(4).思路类似于任务(3)的good显示,只需定义一个时间变量T,因为T是小于180s的,所以四位分别为0,T/60,(T%60)/10,T%10.分别显示即可。 思考:延时太短则数码管导通时间变短,显示变暗,延时太长则人眼能分辨出其闪烁。 (5)设置按键只需在试验2的步进电机的基础上改进(4)即可2. 串行方式控制数码管的显示其输出为Q0Q7,所以将Q0Q7与SaSh连接起来控制数码管,将P1.0P1.6与其旁

5、边的接口连接起来,其中P1.0P1.3控制的是哪个数码管亮,而P1.4控制的输入,P1.5控制的是使DS引脚上的数据进入移位寄存器中的脉冲信号,P1.6控制的是使寄存器中的八位数据通过三态门进入到Q0Q7的脉冲信号。思考:(1) 用DS、SHCP、STCP和P2.0、P2.1、P2.2连接起来,只需将上述代码中对P1.4、P1.5、P1.6的赋值改为对P2.0、P2.1、P2.2即可(2) 看门狗可以防止程序跑飞,如果设置了要定时喂狗,不然系统会复位至main函数入口。所以在运行时会自动复位,只有一个数码管会显示0。3.(提高)利用改进的串行方式数码管模块进行显示其中SCLK,RCLK,DIO

6、分别相当于任务2中的SHCP,STCP,DS。唯一不同的是,这里控制哪个数码管亮的数据也有DIO一并输入,所以其格式为前八位为控制数码管中每个二极管的亮灭,后八位为选择哪个数码管亮,其余思路与任务2一致。实验代码(点开旁边小三角即可查看)实验2任务2#include io430.hconst int LED12=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xdb,0xe7,0x7e,0xbd;int main( void ) int i,j; WDTCTL = WDTPW + WDTHOLD; P2SEL=0; P2SEL2=0; P2DIR=0xff;

7、while(1) for(i=0;i12;i+) /前八位为规律一,后八位为规律二 P2OUT=LEDi; for(j=0;j6) i=-1; i=i+1; else if(Key=2) /i从8到11为规律二 if(i10|i8) i=7; i=i+1; P2OUT=LEDdatai; /显示 delay(); void delay() int i; for(i=0;i0xffff;i+);void Beep() /按下按键时响 int j; P1OUT&=BIT7; for(j=0;j0xffff;j+); P1OUT|=BIT7;步进电机1#include io430.hconst ch

8、ar BIT4=1,2,4,8;int main ( void ) WDTCTL = WDTPW + WDTHOLD; /关闭看门狗 int i,j; P2SEL=0; P2SEL2=0; P2DIR=0xff; P2OUT=0xff; P1REN=0x7f; P1OUT=0xff; P1DIR=0xf0; while(1) for(sum=0;sum3) i=0; P2OUT=BITi; for(j=0;j0x18f;j+); for(sum=0;sum2200;sum+) /反转 i=i-1; if(i0) i=3; P2OUT=BITi; for(j=0;j0x18f;j+); 步进电机

9、2#include io430.hvoid delay( );const char BIT4=1,2,4,8;int main ( void ) WDTCTL = WDTPW + WDTHOLD; /关闭看门狗 int i,Key,j,sum=0; P2SEL=0; P2SEL2=0; P2DIR=0xff; P2OUT=0xff; P1REN=0x7f; P1OUT=0xff; P1SEL=0; P1SEL2=0; P1DIR=0xf0; while(1) if(P1IN&0x01)=0) /判断K1是否按下 Key=1; Beep(); else if(P1IN&0x02)=0) /判断K

10、2是否按下 Key=2; Beep(); else if(P1IN&0x04)=0) /判断K3是否按下 Key=3; Beep(); if(Key=1) /正转 i=i+1; if(i=4) i=0; P2OUT=BITi; for(j=0;j0x18f;j+); else if(Key=2) /反转 i=i-1; if(i=-1) i=3; P2OUT=BITi; for(j=0;j0x18f;j+); else if(Key=3) /停止 P2OUT=0; void Beep() /按下按键时响 int j; P1OUT&=BIT7; for(j=0;j0xffff;j+); P1OUT

11、|=BIT7;实验31.3#include io430.hconst int A16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;const int B4=0x21,0xc0,0xc0,0x90;void delay() int j; for(j=0;j0xffff;j+);int t=1; /t为1,2,4,8即BIT0,1,2,3int main( void ) WDTCTL = WDTPW + WDTHOLD; int i,j; P1SEL=0; P1SEL2=0; P1D

12、IR|=(BIT0+BIT1+BIT2+BIT3); P2SEL=0; P2SEL2=0; P2DIR=0xff; P2OUT=0xff; while(1) t=1; for(j=0;j4&t10;j+) P1OUT=(BIT0+BIT1+BIT2+BIT3); P1OUT|=t; t=2*t; for(i=0;i16;i+) P2OUT=Ai; delay(); return 0;1.4#includeio430.hconst int A10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;int T=0,i=0,t0,t1,t2,t,j;

13、void Beep() int i; P1OUT&=BIT7; for(i=0;i0xffff;i+); P1OUT|=BIT7;int main(void) WDTCTL = WDTPW + WDTHOLD; P1SEL=0; P1SEL2=0; P2SEL=0; P2SEL2=0; P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT7); P2DIR=0xff; P2OUT=0; P1OUT=0x80; while(1) T+; /计算四位分别显示什么 t0=T%10; t1=(T%60)/10; t2=T/60; if(t2=3) T=0; Beep(); for(i=0;i

14、0xaf;i+) P2OUT=At0; P1OUT|=BIT0; for(j=1;j100;j+); P1OUT&=BIT0; P2OUT=At1; P1OUT|=BIT1; for(j=1;j100;j+); P1OUT&=BIT1; t=At2; t&=BIT7; P2OUT=t; P1OUT|=BIT2; for(j=1;j100;j+); P1OUT&=BIT2; P2OUT=0xc0; P1OUT|=BIT3; for(j=1;j100;j+); P1OUT&=BIT3; 1.5#includeio430.hconst int A10=0xc0,0xf9,0xa4,0xb0,0x99

15、,0x92,0x82,0xf8,0x80,0x90;int T=0,i=0,t0,t1,t2,t,Key;void Show();void Beep() int i; P1OUT&=BIT7; for(i=0;i0xffff;i+); P1OUT|=BIT7;int main(void) WDTCTL = WDTPW + WDTHOLD; P1SEL=0; P1SEL2=0; P2SEL=0; P2SEL2=0; P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4); P1DIR&=(BIT5+BIT6+BIT7); P1REN|=(BIT5+BIT6+BIT7); P2DIR=

16、0xff; P2OUT=0; P1OUT=0xe0; while(1) t0=T%10; t1=(T%60)/10; t2=T/60; if(t2=3) T=0; Beep(); if(P1IN&BIT5)=0) Key=1; else if(P1IN&BIT6)=0) Key=2; else if(P1IN&BIT7)=0) Key=3; if(Key=1) /按下K6归零 T=0; else if(Key=3) /按下K8则T+1s T+; Show(); void Show() int i; for(i=0;i0x2fff;i+) P2OUT=At0; P1OUT|=BIT0; P1OU

17、T&=BIT0; P2OUT=At1; P1OUT|=BIT1; P1OUT&=BIT1; t=At2; t&=BIT7; P2OUT=t; P1OUT|=BIT2; P1OUT&=BIT2; P2OUT=0xc0; P1OUT|=BIT3; P1OUT&=BIT3; 任务二#include io430.hconst char LEDtab16=0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e;const int BIT=1,2,4,8,0x10,0x20,

18、0x40,0x80;char data;void delay() int m; for(m=0;m0xffff;m+);void listdata();int main(void) WDTCTL = WDTPW + WDTHOLD; int i,k=1; P1SEL=0; P1SEL2=0; P1DIR=0xff; P1OUT=0; while(1) P1OUT|=k; for(i=0;i16;i+) data=LEDtabi; listdata(); delay(); P1OUT&=k; k=2*k; if(k=16) k=1; void listdata() int i; for(i=0;

19、i8;i+) if(data&BIT7)=0) P1OUT&=BIT4; else P1OUT|=BIT4; data=data*2; P1OUT|=BIT5; P1OUT&=BIT5; P1OUT|=BIT6; P1OUT&=BIT6;任务三#include io430.hconst char LEDtab4=0x21,0xa3,0xa3,0x90;const char BIT8=1,2,4,8,0x10,0x20,0x40,0x80;char data;int main(void) WDTCTL = WDTPW + WDTHOLD; P2SEL=0; P2SEL2=0; P2DIR=0xf

20、f; P2OUT=0; int i,k,t; while(1) for(i=0;i4;i+) /四个数码管分别亮 data=LEDtabi; for(k=0;k8;k+) /输出字母 if(data&BIT7-k)=0) P2OUT&=BIT2; else P2OUT|=BIT2; P2OUT|=BIT0; P2OUT&=BIT0; data=BITi; for(k=0;k8;k+) /输出亮的数码管 if(data&BIT7-k)=0) P2OUT&=BIT2; else P2OUT|=BIT2; P2OUT|=BIT0; P2OUT&=BIT0; P2OUT|=BIT1; P2OUT&=BIT1;

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

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