(整理)数码管、按键综合应用.docx

上传人:scccc 文档编号:12302308 上传时间:2021-12-03 格式:DOCX 页数:22 大小:735.88KB
返回 下载 相关 举报
(整理)数码管、按键综合应用.docx_第1页
第1页 / 共22页
(整理)数码管、按键综合应用.docx_第2页
第2页 / 共22页
(整理)数码管、按键综合应用.docx_第3页
第3页 / 共22页
(整理)数码管、按键综合应用.docx_第4页
第4页 / 共22页
(整理)数码管、按键综合应用.docx_第5页
第5页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《(整理)数码管、按键综合应用.docx》由会员分享,可在线阅读,更多相关《(整理)数码管、按键综合应用.docx(22页珍藏版)》请在三一文库上搜索。

1、精品文档重庆邮电大学微处理器与嵌入式系统设计课程实验报告实验名称:数码管、按键综合应用学期:2014-2015学年第 2学期班级:学号:学生姓名:实验要求:任课教师:二一五年五月九日1 、按下K0 键,LED灯 D0亮,数码管12 位开始计数(2、按下K1 键,LED灯 D1 亮,数码管34 位开始计数(3、按下K2键,LED灯 D2亮,数码管56 位开始计数(4、按下K3键,LED灯 D3亮,数码管78 位开始计数(5、按下K4键,6、按下K5键,7、按下K6键,8、按下K7键,YF31100-FF);00-FF);00-FF);00-FF);D0-D7 中奇数位亮(D0、 D2、 D4、

2、D6);D0-D7 中偶数位亮(D1 、 D3、 D5、 D7);D0-D7 左移流水灯;D0-D7 右移流水灯;9、拓展项目:按下K8 键 ,停止计数器计数且计数器数值清零,数码管全灭。实验目的:1 、熟悉 4 位共阴数码管的基本原理,熟悉4 位共阴数码管的显示和编程方法;2、熟悉非编码键盘的工作原理和键盘的扫描方式,熟悉键盘的去抖方法和键盘应用程序的 应用 ;3、 熟悉 51 单片机中断功能的基本使用方法,熟悉定时器引发中断的方法和中断应用程序的应用;实验方法:;1 、通过 keil 软件编写控制单片机并实现相应功能的程序,并生成相应的hex 文件;2、将keil 生成的 hex 文件通过

3、STC-ISP软件导入到单片机中;3、观察相应的实验现象;4、根据实现现象优化相应代码。实验步骤:1 、通过 keil 软件建立工程并添加文件;2、编写控制单片机并实现相应功能的程序;3、编译生成相应的hex文件;4、将生成的hex 文件通过STC-ISP软件导入到单片机中;5、观察相应的实验现象;6、根据实现现象优化相应代码。实验效果:因数码管图片过多,故截取相应几张呈现实验效果精品文档实验代码:#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned cha

4、rsbit SLock=P13;void lflash(); / 流水灯左移void rflash(); / 流水灯右移void display0(uchar,uchar);/1 、 2 位数码管显示void display1(uchar,uchar);/ 3、 4 位数码管显示void display2(uchar,uchar);/ 5、 6 位数码管显示void display3(uchar,uchar);/7 、 8 位数码管显示void clear();/ 数码管不显示且显示的数字清零Ucharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0

5、x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar num=0,shi,ge,num0,key;uchar dox1,dox2;/ 左移、右移端口初始值void matrixkeyscan();/ 延时void delayms(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/12 位数码管显示void display0(uchar shi,uchar ge)SLock=1;P2=tableshi;SLock=0;P0=0xfe;delayms(5);SLock=1;P2=tableg

6、e;SLock=0;P0=0xfd;delayms(5);/3 4 位数码管显示void display1(uchar shi,uchar ge)SLock=1;P2=tableshi;SLock=0;P0=0xfb;delayms(5);SLock=1;P2=tablege;SLock=0;P0=0xf7;delayms(5);/5、 6 位数码管显示void display2(uchar shi,uchar ge)SLock=1;P2=tableshi;SLock=0;P0=0xef;delayms(5);SLock=1;P2=tablege;SLock=0;P0=0xdf;delayms

7、(5);/7 、 8 位数码管显示void display3(uchar shi,uchar ge)SLock=1;P2=tableshi;SLock=0;P0=0xbf;delayms(5);SLock=1;P2=tablege;SLock=0;P0=0x7f;delayms(5);void clear()P0=0xff;P2=0xff;num=0;void init()精品文档TMOD=0x01;TH0=(65535-50000)/256;TH0=(65535-50000)%256;EA=1;ET0=1;void T0_time(void) interrupt 1TH0=(65535-50

8、000)/256;TH0=(65535-50000)%256;num0+;if(num0=5)num0=0;num+;if(num=255)num=0;shi=num/16;ge=num%16;void matrixkeyscan() 精品文档精品文档uchar temp;P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delayms(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xee:key=0;break;case 0xde:key=1;bre

9、ak;case 0xbe:key=2;break;case 0x7e: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)case 0xed:key=4;break;case 0xdd:key=5;break;case 0xbd:key=6;break;case 0x7d:key=7

10、;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)case 0xeb:key=8;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;void main()init();dox1=0x7f;dox2=0x7f;while(1)matrixkeyscan()

11、;switch(key)case 0:display0(shi,ge);break;case 1:display1(shi,ge);break;case 2:display2(shi,ge);break;case 3:display3(shi,ge);break;case 4:P2=0xaa;break;case 5:P2=0x55;break;case 6:lflash();break;case 7:rflash();break;case 8:TR0=0;clear();break;/ 流水灯左移8 位void lflash()P2=dox1;delayms(500);dox1=_crol_

12、(dox1,1);/ 流水灯右移8 位void rflash()P2=dox2;delayms(500);dox2=_cror_(dox2,1);心得体会:在实现实验要求时原本打算在矩阵键盘扫描查询使用switch 语句的时候,在case里面完成各功能子函数的调用以完成相应功能。但在观察现象的时候明白无论是实现数码管的动态扫描还是led 的循环移位,都需要放在while 语句中反复执行。后来通过扫描按键设置标志变量, 主函数中反复检测标志变量的方法实现了对数码管和LED的控制, 且这样编写的矩阵扫描子函数移植性更高。数码管、按键综合应用的实验并不困难,但在实现过程中的思考是从未有过的。精品文档

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1