数码管及按键实验报告模板1.docx

上传人:b****6 文档编号:15810446 上传时间:2023-07-08 格式:DOCX 页数:13 大小:425.24KB
下载 相关 举报
数码管及按键实验报告模板1.docx_第1页
第1页 / 共13页
数码管及按键实验报告模板1.docx_第2页
第2页 / 共13页
数码管及按键实验报告模板1.docx_第3页
第3页 / 共13页
数码管及按键实验报告模板1.docx_第4页
第4页 / 共13页
数码管及按键实验报告模板1.docx_第5页
第5页 / 共13页
数码管及按键实验报告模板1.docx_第6页
第6页 / 共13页
数码管及按键实验报告模板1.docx_第7页
第7页 / 共13页
数码管及按键实验报告模板1.docx_第8页
第8页 / 共13页
数码管及按键实验报告模板1.docx_第9页
第9页 / 共13页
数码管及按键实验报告模板1.docx_第10页
第10页 / 共13页
数码管及按键实验报告模板1.docx_第11页
第11页 / 共13页
数码管及按键实验报告模板1.docx_第12页
第12页 / 共13页
数码管及按键实验报告模板1.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数码管及按键实验报告模板1.docx

《数码管及按键实验报告模板1.docx》由会员分享,可在线阅读,更多相关《数码管及按键实验报告模板1.docx(13页珍藏版)》请在冰点文库上搜索。

数码管及按键实验报告模板1.docx

数码管及按键实验报告模板1

 

数码管及流水灯实验报告

 

成员:

 

 

2012年11月

一、实验要求:

1.实验1:

在开发板上调试利用按键控制数码管从1累加到F变化(S2加、S3减)(不同分组按键利用IO口不同);

2.实验2:

利用开发板进行秒表设计(显示分、秒,分辨率0.1s,如0.58.5)(参考P189程序);

二、硬件原理图

1.硬件原理图

A到F

 

秒表

2.原理图分析:

实验一原理

LED数码管是由4个发光二极管中的7个长条形发光二极管(俗称7笔段),按a、b、c、d、e、f、g顺序组成“8”字形,另一个点形的发光二极管dp放在右下方,用来显示小数点,。

只要控制7笔段按一定的要求亮与灭,就能显示出十六进制0~F。

实验二原理

以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。

电平信号按照dp,g,e…a的顺序组合形成的数据字称为该字符对应的段码

 

三、软件设计系统

1.软件设计思想与流程图

软件流程图如下(标准流程图画法)……:

实验一、A到F

 

N

 

N

 

Y

 

Y

 

实验二、秒表

Y

YN

YN

 

N

N

N

i<=3Y

Y

Y

 

2.软件代码:

实验一、秒表

#include//IO定义

#include//延时库文件

constunsignedcharled_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

//段码列表,共阳极,0~9的代码列表

constunsignedcharposition[4]={0xEF,0xDF,0xBF,0x7F};

//位输出代码,分别定义PD5~Pd0单一输出“0”的状态

unsignedchartime[3];//时、分、秒计数

unsignedchardis_buff[4];//显示缓冲区,存放要显示的6字符的段码

unsignedchartime_counter;//1s计数器

unsignedcharpoint_on=0;//秒显示标志

voiddisplay(void)

{

unsignedchari;

for(i=0;i<=3;i++)//显示循环开始

{

PORTB=led_7[dis_buff[i]];//段码写入PORTA

if(point_on&&(i==1||i==3))

PORTB&=0x7F;//小数点显示

PORTD=position[i];//位信号写入PORTD

_delay_ms

(1);//点亮延时

PORTD=0xFF;//清除位信号

}

}

voidtime_to_disbuffer(void)

{

/*unsignedchari,j=0;

for(i=0;i<=2;i++);

{

dis_buff[j++]=time[i]%10;

dis_buff[j++]=time[i]/10;

}*/

dis_buff[0]=time[0]/10;

dis_buff[1]=time[1]%10;

dis_buff[2]=time[1]/10;

dis_buff[3]=time[2]%10;

}

voidmain(void)

{

PORTB=0xFF;//IO初始化

DDRB=0xFF;

PORTD=0xFF;

DDRD=0xFF;

time[2]=11;time[1]=00;time[0]=23;//时间初值

time_to_disbuffer();//将时间值装载至缓冲区

while

(1)//循环开始

{

display();//调用显示函数

if(++time[0]>=99)//次数计数

{

time[0]=0;//重置计数

point_on=~point_on;//小数点位求反

if(++time[1]>=60)//秒数目达到60后进位重置

{

time[1]=0;

if(++time[2]>=60)//分计数达到60后进位重置

{

time[2]=0;

}

}

}

time_to_disbuffer();//时间装载至缓冲区

_delay_ms(5);//延时

}

}

实验二、0到F

#include//IO定义

#include//延时库文件

constcharled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,

0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

//段码列表,共阳极,0~F的代码列表

intmain(void)

{

chari=0;//定义i

PORTB=0xc0;//定义输入端的初始值,0xFF表示高电平

DDRB=0xff;//定义DB口为输入端

PORTD=0xef;//定义输出端的初始值,0x70表示低电平

DDRD=0xff;//定义DD口为输出端

 

while

(1)

{

if((PINC&(1<

{

_delay_ms(10);

if((PINC&(1<

{

if(i<16)

{

PORTB=led[i];

i++;

}

if(i>=16)

i=0;

}

}

while(!

(PINC&(1<

if((PINC&(1<

{

_delay_ms(10);//点亮时间

if((PINC&(1<

{

if(i<16)

{

PORTB=led[i];

i--;

}

if(i>=16)

i=0;

}

}

while(!

(PINC&(1<

}

}

四.成员分工及完成情况

五.意见及建议

实验报告、编译工程文件、仿真文件打包提供电子版。

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

当前位置:首页 > 工程科技 > 信息与通信

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

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