数码管按键综合应用.docx
- 文档编号:1806750
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:27
- 大小:7.21MB
数码管按键综合应用.docx
《数码管按键综合应用.docx》由会员分享,可在线阅读,更多相关《数码管按键综合应用.docx(27页珍藏版)》请在冰点文库上搜索。
数码管按键综合应用
重庆邮电大学
微处理器与嵌入式系统设计
课程实验报告
实验名称:
数码管、按键综合应用
学期:
2014-2015学年第2学期
班级:
学号:
学生姓名:
任课教师:
实验教室:
YF311
二〇一五年〇五月九日
【实验名称】数码管、按键综合应用
实验要求:
1、按下K0键,LED灯D0亮,数码管12位开始计数(00-FF);
2、按下K1键,LED灯D1亮,数码管34位开始计数(00-FF);
3、按下K2键,LED灯D2亮,数码管56位开始计数(00-FF);
4、按下K3键,LED灯D3亮,数码管78位开始计数(00-FF);
5、按下K4键,D0-D7中奇数位亮(D0、D2、D4、D6);
6、按下K5键,D0-D7中偶数位亮(D1、D3、D5、D7);
7、按下K6键,D0-D7左移流水灯;
8、按下K7键,D0-D7右移流水灯;
9、拓展项目:
按下K8键,停止计数器计数且计数器数值清零,数码管全灭。
实验目的:
1、熟悉4位共阴数码管的基本原理,熟悉4位共阴数码管的显示和编程方法;
2、熟悉非编码键盘的工作原理和键盘的扫描方式,熟悉键盘的去抖方法和键盘应用程序的应用;
3、熟悉51单片机中断功能的基本使用方法,熟悉定时器引发中断的方法和中断应用程序的应用;
实验方法:
;
1、通过keil软件编写控制单片机并实现相应功能的程序,并生成相应的hex文件;
2、将keil生成的hex文件通过STC-ISP软件导入到单片机中;
3、观察相应的实验现象;
4、根据实现现象优化相应代码。
实验步骤:
1、通过keil软件建立工程并添加文件;
2、编写控制单片机并实现相应功能的程序;
3、编译生成相应的hex文件;
4、将生成的hex文件通过STC-ISP软件导入到单片机中;
5、观察相应的实验现象;
6、根据实现现象优化相应代码。
实验效果:
因数码管图片过多,故截取相应几张呈现实验效果
温馨推荐
您可前往XX文库小程序
享受更优阅读体验
不去了
立即体验
实验代码:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitSLock=P1^3;
voidlflash();//流水灯左移
voidrflash();//流水灯右移
voiddisplay0(uchar,uchar);//1、2位数码管显示
voiddisplay1(uchar,uchar);//3、4位数码管显示
voiddisplay2(uchar,uchar);//5、6位数码管显示
voiddisplay3(uchar,uchar);//7、8位数码管显示
voidclear();//数码管不显示且显示的数字清零
Ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharnum=0,shi,ge,num0,key;
uchardox1,dox2;//左移、右移端口初始值
voidmatrixkeyscan();
//延时
voiddelayms(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//1、2位数码管显示
voiddisplay0(ucharshi,ucharge)
{
SLock=1;
P2=table[shi];
SLock=0;
P0=0xfe;
delayms(5);
SLock=1;
P2=table[ge];
SLock=0;
P0=0xfd;
delayms(5);
}
//3、4位数码管显示
voiddisplay1(ucharshi,ucharge){
SLock=1;
P2=table[shi];
SLock=0;
P0=0xfb;
delayms(5);
SLock=1;
P2=table[ge];
SLock=0;
P0=0xf7;
delayms(5);
}
//5、6位数码管显示
voiddisplay2(ucharshi,ucharge){
SLock=1;
P2=table[shi];
SLock=0;
P0=0xef;
delayms(5);
SLock=1;
P2=table[ge];
SLock=0;
P0=0xdf;
delayms(5);
}
//7、8位数码管显示
voiddisplay3(ucharshi,ucharge){
SLock=1;
P2=table[shi];
SLock=0;
P0=0xbf;
delayms(5);
SLock=1;
P2=table[ge];
SLock=0;
P0=0x7f;
}
voidclear()
{
P0=0xff;
P2=0xff;
num=0;
}
voidinit()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TH0=(65535-50000)%256;
EA=1;
ET0=1;
}
voidT0_time(void)interrupt1{
TH0=(65535-50000)/256;
TH0=(65535-50000)%256;
num0++;
if(num0==5)
{
num0=0;
num++;
if(num==255)
num=0;
shi=num/16;
ge=num%16;
}
}
voidmatrixkeyscan()
{
uchartemp;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xee:
key=0;
break;
case0xde:
key=1;
break;
case0xbe:
key=2;
break;
case0x7e:
key=3;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
TR0=1;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xed:
key=4;
break;
case0xdd:
key=5;
break;
case0xbd:
key=6;
break;
case0x7d:
key=7;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xeb:
key=8;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
}
voidmain()
{
init();
dox1=0x7f;
dox2=0x7f;
while
(1)
{
matrixkeyscan();
switch(key)
{
case0:
display0(shi,ge);
break;
case1:
display1(shi,ge);
break;
case2:
display2(shi,ge);
break;
case3:
display3(shi,ge);
break;
case4:
P2=0xaa;
break;
case5:
P2=0x55;
break;
case6:
lflash();
break;
case7:
rflash();
break;
case8:
TR0=0;
clear();
break;
}
}
}
//流水灯左移8位
voidlflash()
{
P2=dox1;
delayms(500);
dox1=_crol_(dox1,1);
}
//流水灯右移8位
voidrflash()
{
P2=dox2;
delayms(500);
dox2=_cror_(dox2,1);
}
心得体会:
在实现实验要求时原本打算在矩阵键盘扫描查询使用switch语句的时候,在case里面完成各功能子函数的调用以完成相应功能。
但在观察现象的时候明白无论是实现数码管的动态扫描还是led的循环移位,都需要放在while语句中反复执行。
后来通过扫描按键设置标志变量,主函数中反复检测标志变量的方法实现了对数码管和LED的控制,且这样编写的矩阵扫描子函数移植性更高。
数码管、按键综合应用的实验并不困难,但在实现过程中的思考是从未有过的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 按键 综合 应用