按键控制数码管和流水灯设计优质报告实验报告.docx
- 文档编号:27497268
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:18
- 大小:380.78KB
按键控制数码管和流水灯设计优质报告实验报告.docx
《按键控制数码管和流水灯设计优质报告实验报告.docx》由会员分享,可在线阅读,更多相关《按键控制数码管和流水灯设计优质报告实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
按键控制数码管和流水灯设计优质报告实验报告
摘要
单片机自20世纪70年代以来,以其极高性价比,和方便小巧受到大家极大重视和关注。
本设计选择msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示控制。
经过单片机内部控制实现对硬件电路设计,从而实现对4*4矩阵键盘检测识别。
用单片机P3口连接4×4矩阵键盘,并以单片机P3.0-P3.3口作键盘输入列线,以单片机P3.4-P3.7口作为键盘输入行线,然后用P0.0-P0.7作输出线,经过上拉电阻在显示器上显示不一样字符“0-F”。
在硬件电路基础上加上软件程序控制来实现本设计。
其工作过程为:
先判定是否有键按下,假如没有键按下,则继续检测整个程序,假如有键按下,则识别是哪一个键按下,最终经过LED数码管显示该按键所对应序号。
关键字:
单片机、流水灯、数码管、控制系统
SCMsincethenineteenseventies,withitshighprice,andaconvenientcompactattentionandgreatconcern.Thisdesignusesmsp430f249chipasthecontrolchip,torealizethecontroloftheLEDdigitaltubedisplaymatrixkeyboard.Throughtheinternalcontrolsinglechiptorealizethehardwaredesignofthecircuit,soastorealizethedetectionandrecognitionof4*4matrixkeyboard.4*4matrixkeyboardconnectedwiththeMCUP3port,andtheMCUP3.0P3.3portforakeyboardinput,MCUP3.4P3.7portasthelinesofkeyboardinput,andthenusetheP0.0P0.7astheoutputline,byapull-upresistordisplaydifferentcharacters"0Fondisplay".Controlwithsoftwareprogramsbasedonthehardwarecircuittorealizethedesign.Theworkingprocessis:
firsttodeterminewhetherakeyispressed,ifnokeyispressed,itwillcontinuetotestthewholeprocedure,ifakeyispressed,the
Keywords:
SCM,waterlights,digitaltubes,controlsystem
键盘控制流水灯和数码管试验汇报
一设计目标....................................................................2
二任务描述及方案设计...................................................3
1.任务描述....................................................................................3
2.方案设计.....................................................................................3
三硬件设计方案...........................................................................3
1.Msp430f149单片机功效说明.................................................3
2.显示器功效..................................................................................4
3.复位电路......................................................................................4
4.按键部分..................................................................................4
5.74HC573特点............................................................................4
6.流水灯和数码管电路原理图......................................................4
7.元器件清单..................................................................................4
四程序设计方案...........................................................................5
1.用IAREmbeddedWorkbench软件编程序..............................................5
2.仿真电路图...................................................................................................6
五实物试验...............................................................................7
1.实物图..........................................................................................................7
2.测试结果和分析.....................................................................................7
六结论................................................................................................11
八参考文件..........................................................................................16
一、设计目标
1、深入巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文件查阅、汇报撰写等基础技能;
2、培养学生实践动手能力及独立分析和处理工程实践问题能力;
3、培养学生团体协作精神、创新意思、严厉认真治学态度和严谨求实工作作风。
二、任务描述及设计方案
1.任务描述
闭合按键1时,从P1.0—1.7逐一灯,而且P1.0亮一下,P1.1亮两下,P1.2亮三下,P1.3亮四下,P1.4亮五下,P1.5亮六下,P1.6亮七下,P1.7亮八下;再是P1.0亮一下,P1.0—1.1亮两下,P1.0—1.2亮三下,P1.0—1.3亮三下,P1.0—1.4亮五下,P1.0—1.5亮六下,P1.0—1.6亮七下,P1.0—1.7亮八下。
闭合按键2时,先是从P1.0—1.7逐一灯亮,再是P1.0、P1.1—P1.6、P1.7两两灯亮,接着是P1.0、P1.1、P1.2—P1.6、P1.7每三个灯亮,最终是P1.0、P1.1、P1.2、P1.3—P1.4、P1.5、P1.6、P1.7每四个灯亮。
闭合按键3时,从P1.0—P1.7逐一亮,而且在P1.X灯亮过后紧接着前面灯两两灯亮。
7ESG-MPX4-CC数码管按a、b、c、d、e、f、g次序组成“8”字形。
2、设计方案
试验此功效有两种方案,一个是使用传统模拟电路,另一个是用单片机控制电路。
我们选择单片机控制系统。
其中系统工作原理为:
我们利用循环移位指令,采取循环程序结构进行编程。
我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其它位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这么就实现了“流水”效果了。
以共阳极八段数码管为例,当控制某段发光二极管信号为低电平时,对应发光二极管点亮,当需要显示某字符时,就将该字符对应全部二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。
电平信号根据dp,g,e...a次序组合形成数据字称为该字符对应段码。
7SEG-MPX4-CC是四个共阴二极管显示器,它1234是阴极公共端。
三、硬件设计方案
1、单片机功效说明
1CPU:
MSP430系列单片机CPU和通用微处理器基础相同,只是在设计上采取了面向控结构和指令系统。
MSP430内核CPU结构是根据精简指令集和高透明宗旨而设计,使用指令有硬件实施内核指令和基于现有硬件结构仿真指令。
这么能够提升指令速度和效率,增强了MSP实时处理能力。
2存放器:
存放程序、数据和外围模块运行控制信息。
有程序存放器和数据存放器。
对程序存放器访问总是以字形式取得代码,而对数据能够用字或字节方法访问。
其中MSP430各系列单片机程序存放器有ROM、OTP、EPROM和FLASH型。
3外围模块:
经过MAB、MDB、中止服务及请求线和CPU相连。
MSP430不一样系列产品所包含外围模块种类及数目可能不一样。
它们分别是以下部分外围模块组合:
时钟模块、看门狗、定时器A、定时器B、比较器A、串口0、1、硬件乘法器、液晶驱动器、模数转换、数模转换、端口、基础定时器、DMA控制器等。
2、显示器功效
显示器通常也称为监视器。
显示器是属于电脑I/O设备,即输入输出设备。
它能够分为CRT、LCD等多个。
它是一个将一定电文件经过特定传输设备显示到屏幕上再到反射到人眼显示工具。
3、复位电路
电阻给电容充电,电容电压缓慢上升直到vcc,没到vcc时芯片复位脚近似低电平,于是芯片复位,靠近vcc时芯片复位脚近高电平,于是芯片停止复位,复位完成。
复位原理图
4、按键部分
4.1键盘结构形式通常有独立式键盘和矩阵式键盘两种。
独立式键盘就是各个按键相互独立,每个按键各接一个I/O接口线,而不会影响其它I/O接口线,所以我们在控制流水灯三种闪法时用是独立式键盘。
矩阵式键盘又叫行列式键盘,在键盘中按键数量较多时,为了降低I/O口占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是经过一个按键加以连接。
这么,一个端口(如P1口)就能够组成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区分越显著,比如再多加一条线就能够组成20键键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要键数比较多时,采取矩阵法来做键盘是合理。
矩阵式结构键盘显然比直接法要复杂部分,识别也要复杂部分,上图中,列线经过电阻接正电源,并将行线所接单片机I/O口作为输出端,而列线所接I/O口则作为输入。
这么,当按键没有按下时,全部输入端全部是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这么,经过读入输入线状态就可得悉是否有键按下了。
4·键盘,检测,首先要处理问题是键盘抖动现象。
消抖方法有两种,软件消抖和硬件消抖。
因为硬件消抖结构比软件复杂,所以本设计采取是软件消抖方法,既在程序中加入5毫秒延时,延时后再次返回P3值二次判定是否有键盘按下。
5、74HC573特征
74HC573八个锁存器全部是透明D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立数据电平上。
输出控制不是影响锁存器内部工作,即老数据能够保持,甚至当输出被关闭时,新数据也能够置入。
这种电路能够驱动大电容或低阻抗负载,可和直接和系统总线接口并驱动总线,而不需要外接口。
74HC573引脚图
Z=高阻抗
数码管引脚图
6、流水灯和数码管电路原理图
假如要让接在P1.0口LED1亮起来,那么只要把P1.0口电平变为低电平就能够了;假如要接在P1.0口LED1熄灭,就要把P1.0口电平变为高电平;同理,接在P1.1—P1.7口其它7个LED点亮和熄灭方法同LED1。
要实现流水灯功效,我们只要将发光二极管LED1—LED8依次点亮、熄灭,8只LED灯便会一亮一暗做流水灯了。
在此我们应该注意一点,因为人眼视觉暂留效应和单片机实施每条指令时间很短,我们在控制二极管亮灭时候应该延时一段时间,不然我们就看不到“流水”效果了。
7SEG-MPX4-CC数码管就是阴极为数码管公共端,根据发光管二极管原理,当阳极接电源正极,阴极接电源负极,发光二极管点亮。
换句话说,共阴极数码管,当a,b,c,d,e,f,g脚分别接到电源正极,而COM脚接电源负极,此时相当于7个发光二极管同时点亮,而且显示数字“8”~~~
所以一些类型数码管称为7端数码管~~别漏了“dp”,是小数点~~共阳极取反就是了
6.1流水灯和数码管电路原理图
6.2独立按键控制流水灯部分
6.3单片机复位部分
7、元器件清单
元器件
型号
数目
单片机
MSP430f249
1
电阻
100
5
发光二极管
LED-BIBY
8
开关
BUTTON
18
数码管
7SEG-MPX4-CC
1
电容
CAP
1
芯片
74HC573
1
四、程序设计方案
1、用IAREmbeddedWorkbench软件编程序
#include
#defineROWP4OUT//矩阵键盘行宏定义
#defineCOLP4IN//矩阵键盘列宏定义
#defineDPYOUTP1OUT//数码管输出口宏定义
#defineucharunsignedchar
#defineuintunsignedint
ucharkeyval;
ucharm=0;
ucharremain=0xff;
uchartable1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchartable2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
uchartable3[]={0x03,0x06,0x0c,0x18,0x30,0x60,0xc0};
ucharseg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voiddelay(uintn)
{
uinti,j;
for(i=0;i for(j=0;j<225;j++); } ucharkeyscan() { inti=0; ucharkey=0; ROW=0x0f; if((COL&0x0f)! =0x0f) { doi++; while(i<3000); ROW=0x7f; if((COL&0x0f)==0x0f) {ROW=0xbf; if((COL&0x0f)==0x0f) {ROW=0xdf; if((COL&0x0f)==0x0f) {ROW=0xef; if((COL&0x0f)==0x0f) key=17; elsekey=((ROW&0xf0)|(COL&0x0f)); } elsekey=((ROW&0xf0)|(COL&0x0f)); } elsekey=((ROW&0xf0)|(COL&0x0f)); } elsekey=((ROW&0xf0)|(COL&0x0f)); } returnkey; } voidfun1() { uinti,j; for(i=0;i<8;i++) for(j=0;j<=i;j++) { P3OUT=table1[i];delay(50); P3OUT=0X00;delay(50); } for(i=0;i<8;i++) for(j=0;j<=i;j++) { P3OUT=table2[i];delay(50); P3OUT=0X00;delay(50); } } voidfun2() { uinti; P3OUT=0X01;delay(100); for(i=1;i<8;i++) {P3OUT<<=1;delay(100);} P3OUT=0X03;delay(100); for(i=1;i<=4;i++) {P3OUT<<=2;delay(100);} P3OUT=0X07;delay(100); for(i=1;i<=3;i++) {P3OUT<<=3;delay(100);} P3OUT=0X0f;delay(100); P3OUT=~0X0f;;delay(100); } voidfun3() { uinti,j; for(i=0;i<8;i++) { P3OUT=table1[i];delay(100); P3OUT=0X00;delay(100); for(j=0;j { P3OUT=table3[j];delay(100); P3OUT=0X00;delay(100); } } } voidmain(void) { WDTCTL=WDTPW+WDTHOLD; //keyval=17; P4DIR|=0Xf0; P1DIR|=0Xff; P1OUT|=0Xff; P3SEL=0X00; P3DIR|=0XFF; P3OUT&=~0xff; P2DIR|=0X00; P2IE=0X07;P2IES=0X07; _EINT(); while (1) { delay(100); switch(keyscan()) { case0xd7: DPYOUT=seg[0];remain=seg[0];break; case0x77: DPYOUT=seg[13];remain=seg[13];break; case0x7b: DPYOUT=seg[12];remain=seg[12];break; case0x7d: DPYOUT=seg[11];remain=seg[11];break; case0xb7: DPYOUT=seg[15];remain=seg[15];break; case0xbb: DPYOUT=seg[9];remain=seg[9];break; case0xbd: DPYOUT=seg[6];remain=seg[6];break; case0xbe: DPYOUT=seg[3];remain=seg[3];break; case0xdb: DPYOUT=seg[8];remain=seg[8];break; case0xdd: DPYOUT=seg[5];remain=seg[5];break; case0xde: DPYOUT=seg[2];remain=seg[2];break; case0xe7: DPYOUT=seg[14];remain=seg[14];break; case0xeb: DPYOUT=seg[7];remain=seg[7];break; case0xed: DPYOUT=seg[4];remain=seg[4];break; case0xee: DPYOUT=seg[1];remain=seg[1];break; case0x7e: DPYOUT=seg[10];remain=seg[10];break; default: DPYOUT=remain;break; } switch(m) { case1: fun1();break; case2: fun2();break; case3: fun3();break; default: break; } } } #pragmavector=PORT2_VECTOR __interruptvoidPORT2(void) { P2IFG=0x00; if(P2IN! =0X07) { switch(P2IN&0X07) { case0X06: m=1;break; case0X05: m=2;break; case0X03: m=3;break; default: m=0;break; } } } 2.仿真电路图 闭合按键1时仿真图 闭合按键2时仿真图 闭合按键3时仿真图 数码管仿真图 五、实物试验 1、实物图 2.测试结果和分析 经过用软件做硬件仿真后,将程序烧进MSP430单片机后,经过独立式键盘控制流水灯三种“流”法,按下某一个键时,流水灯就会实现编程所设计“流”法,而矩阵键盘则是经过特定按键控制数码管显示程序控制字符,从0~9,a,b,c,d,e,f字符显示,复位按键则是是单片机复位。 六、心得体会 经过这段时间课程设计试验设计大大培养了我们动手能力和同学间相互合作精神。 从一开始看到这个题目就在想怎样才能设计出一个正确原理图,这个很关键,也是全部工作基础,假如要完成原理图设计工作,这就要求我们有足够理论知识贮备,这个功夫就在平时了;原理图设计是理论和实践交叉点,原理图设计好以后,我们能够利用仿真软件进行仿真,这么便能够我们设计正确性,积累了经验而且掌握了软件基础使用方法和部分快捷用途。 当电路板做好以后,就是焊接器件了,需要相互共同合作,这次试验增强了我们处理问题能力和团体合作能力。 七、参考文件 【1】康华光。 模拟电子技术基础高等教育出版社, 【2】康华光。 数字电子技术基础高等教育出版社, 【
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 按键 控制 数码管 流水 设计 优质 报告 实验