实验23报告Word格式文档下载.docx

上传人:b****1 文档编号:4146851 上传时间:2023-05-02 格式:DOCX 页数:22 大小:269.21KB
下载 相关 举报
实验23报告Word格式文档下载.docx_第1页
第1页 / 共22页
实验23报告Word格式文档下载.docx_第2页
第2页 / 共22页
实验23报告Word格式文档下载.docx_第3页
第3页 / 共22页
实验23报告Word格式文档下载.docx_第4页
第4页 / 共22页
实验23报告Word格式文档下载.docx_第5页
第5页 / 共22页
实验23报告Word格式文档下载.docx_第6页
第6页 / 共22页
实验23报告Word格式文档下载.docx_第7页
第7页 / 共22页
实验23报告Word格式文档下载.docx_第8页
第8页 / 共22页
实验23报告Word格式文档下载.docx_第9页
第9页 / 共22页
实验23报告Word格式文档下载.docx_第10页
第10页 / 共22页
实验23报告Word格式文档下载.docx_第11页
第11页 / 共22页
实验23报告Word格式文档下载.docx_第12页
第12页 / 共22页
实验23报告Word格式文档下载.docx_第13页
第13页 / 共22页
实验23报告Word格式文档下载.docx_第14页
第14页 / 共22页
实验23报告Word格式文档下载.docx_第15页
第15页 / 共22页
实验23报告Word格式文档下载.docx_第16页
第16页 / 共22页
实验23报告Word格式文档下载.docx_第17页
第17页 / 共22页
实验23报告Word格式文档下载.docx_第18页
第18页 / 共22页
实验23报告Word格式文档下载.docx_第19页
第19页 / 共22页
实验23报告Word格式文档下载.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验23报告Word格式文档下载.docx

《实验23报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验23报告Word格式文档下载.docx(22页珍藏版)》请在冰点文库上搜索。

实验23报告Word格式文档下载.docx

一、实验目的

在上个实验的基础下加深对单片机的C语言调试和对I/O端口的控制。

二、实验任务

1.并行方式控制数码管的显示

(1).在利用Vcc和GND调试后,发现s1、s2、s3和s4连接Vcc,sa等端口连接GND时数码管会工作。

(2)其中P2.0~P2.7控制Sa~Sh,P1.0~P1.3控制选择亮的数码管

(3).定义0~9,A~F数组,分别使四个数码管处于工作状态再将P2OUT赋值为之前定义的数组。

显示good只需对每个数码管分别让其按good的形状亮即可。

在显示good时,前一个字母会暂现在下一个数码管上,调试后发现是尚未关闭之前的数码管即对P2OUT赋值了。

(4).思路类似于任务(3)的good显示,只需定义一个时间变量T,因为T是小于180s的,所以四位分别为0,T/60,(T%60)/10,T%10.分别显示即可。

思考:

延时太短则数码管导通时间变短,显示变暗,延时太长则人眼能分辨出其闪烁。

(5)设置按键只需在试验2的步进电机的基础上改进(4)即可

2.串行方式控制数码管的显示

其输出为Q0~Q7,所以将Q0~Q7与Sa~Sh连接起来控制数码管,将P1.0~P1.6与其旁边的接口连接起来,其中P1.0~P1.3控制的是哪个数码管亮,而P1.4控制的输入,P1.5控制的是使DS引脚上的数据进入移位寄存器中的脉冲信号,P1.6控制的是使寄存器中的八位数据通过三态门进入到Q0~Q7的脉冲信号。

思考:

(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分别相当于任务2中的SHCP,STCP,DS。

唯一不同的是,这里控制哪个数码管亮的数据也有DIO一并输入,所以其格式为前八位为控制数码管中每个二极管的亮灭,后八位为选择哪个数码管亮,其余思路与任务2一致。

实验代码(点开旁边小三角即可查看)

实验2

任务2

#include"

io430.h"

constintLED[12]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xdb,0xe7,0x7e,0xbd};

intmain(void)

{

inti,j;

WDTCTL=WDTPW+WDTHOLD;

P2SEL=0;

P2SEL2=0;

P2DIR=0xff;

while

(1)

{

for(i=0;

i<

12;

i++)//前八位为规律一,后八位为规律二

P2OUT=LED[i];

for(j=0;

j<

0xffff;

j++);

}

return0;

}

任务3

voiddelay();

voidBeep();

constcharLEDdata[12]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xdb,0xe7,0x7e,0xbd};

intmain(void)

//关闭看门狗

inti,Key;

P2OUT=0xff;

P1REN=0x7f;

P1OUT=0xff;

P1SEL=0;

P1SEL2=0;

P1DIR=0x80;

if((P1IN&

0x01)==0)//判断K1是否按下

Key=1;

Beep();

elseif((P1IN&

0x08)==0)//判断K4是否按下

Key=2;

if(Key==1)//i从0到7为规律一

if(i>

6)

i=-1;

i=i+1;

elseif(Key==2)//i从8到11为规律二

10||i<

8)

i=7;

P2OUT=LEDdata[i];

//显示

delay();

voiddelay()

inti;

i++);

voidBeep()//按下按键时响

intj;

P1OUT&

=~BIT7;

P1OUT|=BIT7;

步进电机1

constcharBIT[4]={1,2,4,8};

P1DIR=0xf0;

for(sum=0;

sum<

2200;

sum++)//正转

3)

i=0;

P2OUT=BIT[i];

0x18f;

sum++)//反转

i=i-1;

if(i<

0)

i=3;

步进电机2

inti,Key,j,sum=0;

0x01)==0)//判断K1是否按下

0x02)==0)//判断K2是否按下

0x04)==0)//判断K3是否按下

Key=3;

}

if(Key==1)//正转

if(i==4)

elseif(Key==2)//反转

if(i==-1)

elseif(Key==3)//停止

P2OUT=0;

实验3

1.3

constintA[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

constintB[4]={0x21,0xc0,0xc0,0x90};

intt=1;

//t为1,2,4,8即BIT0,1,2,3

P1DIR|=(BIT0+BIT1+BIT2+BIT3);

t=1;

4&

&

t<

10;

j++)

P1OUT=~(BIT0+BIT1+BIT2+BIT3);

P1OUT|=t;

t=2*t;

16;

i++)

P2OUT=A[i];

1.4

#include"

constintA[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

intT=0,i=0,t0,t1,t2,t,j;

voidBeep()

intmain(void)

P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT7);

P1OUT=0x80;

T++;

//计算四位分别显示什么

t0=T%10;

t1=(T%60)/10;

t2=T/60;

if(t2==3)

T=0;

0xaf;

P2OUT=A[t0];

P1OUT|=BIT0;

for(j=1;

100;

=~BIT0;

P2OUT=A[t1];

P1OUT|=BIT1;

=~BIT1;

t=A[t2];

t&

P2OUT=t;

P1OUT|=BIT2;

=~BIT2;

P2OUT=0xc0;

P1OUT|=BIT3;

=~BIT3;

1.5

intT=0,i=0,t0,t1,t2,t,Key;

voidShow();

P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4);

P1DIR&

=~(BIT5+BIT6+BIT7);

P1REN|=(BIT5+BIT6+BIT7);

P1OUT=0xe0;

BIT5)==0)

BIT6)==0)

BIT7)==0)

if(Key==1)//按下K6归零

elseif(Key==3)//按下K8则T+1s

Show();

voidShow()

0x2fff;

任务二

constcharLEDtab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

constintBIT[]={1,2,4,8,0x10,0x20,0x40,0x80};

chardata;

intm;

for(m=0;

m<

m++);

voidlistdata();

inti,k=1;

P1DIR=0xff;

P1OUT=0;

P1OUT|=k;

data=LEDtab[i];

listdata();

=~k;

k=2*k;

if(k==16)

k=1;

voidlistdata()

8;

if((data&

=~BIT4;

else

P1OUT|=BIT4;

data=data*2;

P1OUT|=BIT5;

=~BIT5;

P1OUT|=BIT6;

=~BIT6;

任务三

constcharLEDtab[4]={0x21,0xa3,0xa3,0x90};

constcharBIT[8]={1,2,4,8,0x10,0x20,0x40,0x80};

inti,k,t;

4;

i++)//四个数码管分别亮

for(k=0;

k<

k++)//输出字母

BIT[7-k])==0)

P2OUT&

P2OUT|=BIT2;

P2OUT|=BIT0;

data=BIT[i];

k++)//输出亮的数码管

P2OUT|=BIT1;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

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

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