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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数码管按键综合应用.docx

1、数码管按键综合应用重庆邮电大学微处理器与嵌入式系统设计课程实验报告实验名称:数码管、按键综合应用学期: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、按下

2、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文件通

3、过STC-ISP软件导入到单片机中; 3、观察相应的实验现象; 4、根据实现现象优化相应代码。 实验步骤: 1、通过keil软件建立工程并添加文件; 2、编写控制单片机并实现相应功能的程序; 3、编译生成相应的hex文件; 4、将生成的hex文件通过STC-ISP软件导入到单片机中; 5、观察相应的实验现象; 6、根据实现现象优化相应代码。 实验效果: 因数码管图片过多,故截取相应几张呈现实验效果 温馨推荐您可前往XX文库小程序享受更优阅读体验 不去了立即体验实验代码: #include #include #define uint unsigned int #define uchar unsi

4、gned char sbit 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();/数码管不显示且显示的数字清零 Uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x

5、7d,0x07,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;x0;x-) for(y=110;y0;y-); /1、2位数码管显示 void display0(uchar shi,uchar ge) SLock=1; P2=tableshi; SLock=0; P0=0xfe; delayms(5); SLock=1

6、; P2=tablege; 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

7、=tablege; SLock=0; P0=0xdf; delayms(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; 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

8、 T0_time(void) interrupt 1 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; void matrixkeyscan() uchar temp; P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xee

9、: key=0; break; case 0xde: key=1; break; 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:

10、 key=5; break; case 0xbd: key=6; break; case 0x7d: 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) case 0xeb: key=8; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0;

11、void main() init(); dox1=0x7f; dox2=0x7f; while(1) matrixkeyscan(); 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(

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

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

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