单片机应用技术-基于STC15系列单片机 课件 3.2 数码管显示按键按下次数_第1页
单片机应用技术-基于STC15系列单片机 课件 3.2 数码管显示按键按下次数_第2页
单片机应用技术-基于STC15系列单片机 课件 3.2 数码管显示按键按下次数_第3页
单片机应用技术-基于STC15系列单片机 课件 3.2 数码管显示按键按下次数_第4页
单片机应用技术-基于STC15系列单片机 课件 3.2 数码管显示按键按下次数_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目抢答器的实现抢答器的实现任务目录任务一开关控制LED灯显示任务二数码管显示按键按下次数任务三多路抢答器的实现项目任务实现1位共阳极数码管显示按键按下次数序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED数码管7seg-com-anode13排阻RX847014按键button1数码管显示按键按下次数1数码管2独立按键主要内容数组数码管的应用数码管的分类数码管的外观和引脚数码管的内部结构abcdefgCOM共阳极bcadefgCOM共阴极数码管的内部电路及公共端控制共阳极共阴极VCCGND数码管电路设计在共阳极数码管上循环显示数字0~9电路设计序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED数码管7seg-com-anode

13排阻RX84701数码管电路设计在共阳极数码管上循环显示数字0~9电路设计数码管为共阳管,公共端接电源;受控端a~g采用低电平点亮数码管,通过限流电阻连接到单片机P0口;阻值越大,电流越小,数码管点亮时越暗,阻值越小,电流越大,数码管点亮时越亮,但阻值过小,会导致P0口的总负载电流过大数码管显示原理dpgfedcba11000000字形码0XC0111110010XF9端口的控制电平为低,LED灯亮;端口的控制电平为高,LED灯灭数码管字形码显示字符共阴字形码共阳字形码显示字符共阴字形码共阳字形码03FHC0H96FH90H106HF9HA77H88H25BHA4HB7CH83H34FHB0HC39HC6H466H99HD5EHA1H56DH92HE79H86H67DH82HF71H8EH707HF8HP73H8CH87FH80H“灭”00HFFH数码管显示控制原理显示数字共阳极共阴极0C03F1F9062A45B3B04F499665926D6827D7F8078807F9906F共阳数码管,如果要显示“0”,单片机只要给连接到受控端的并口输出0XC0,如果要显示“1”,给并口输出0XF9,以此类推;共阴数码管,如果要显示“0”,单片机只要给连接到受控端的并口输出0X3F,如果要显示“1”,给并口输出0X06,以此类推;单片机只要将字形码输出到并口,数码管就会显示字形码对应的字符程序控制原理数码管静态显示程序设计voidmain() {P0M0=0x00;P0M1=0X00;while(1)

{P0=0xc0; delay_ms(1000);

P0=0xf9; delay_ms(1000);

P0=0xa4; delay_ms(1000);

P0=0xb0; delay_ms(1000);

P0=0x99; delay_ms(1000);

P0=0x92; delay_ms(1000);

P0=0x82; delay_ms(1000);

P0=0xf8; delay_ms(1000);

P0=0x80; delay_ms(1000);

P0=0x90; delay_ms(1000);}}设计程序:在共阳极数码管上循环显示数字0~9P0=0XC0…………延时1秒P0=0XF9延时1秒P0=0X90延时1秒将字形码定义成一个数组,优化程序数组#include<stc15.h>voiddelay_ms(unsignedintms);#defineMAIN_Fosc11059200L unsignedcharsegtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidmain(void)

{unsignedchari=0;

P0M0=0x00;P0M1=0X00;

while(1) //主(外)循环{for(i=0;i<10;i++)//内循环{P0=segtab[i];//数组元素引用delay_ms(1000);}}}主(外)循环循环次数+1送数组元素延时1s

循环10次?YN数组初始化数码管静态显示程序设计数码管外部引脚、内部电路及显示原理小结共阳码和共阴码设计静态显示电路和控制程序,实现了循环显示0~9数码管显示按键按下次数——按键库函数抢答器——按键的使用库函数按键按键分类什么是按键编码键盘

非编码键盘

矩阵键盘键盘上按键的识别由专用的硬件编码器实现,并产生键值。如:普通的PC键盘(PS2接口、USB接口)。需要靠软件编程来识别按键的称为非编码键盘,在单片机组成的各种系统中,用的最多。独立按键按键:又称按钮开关,是嵌入式系统中常见的一种人机交互输入设备。分类什么是按键ABCD

AD引脚内部连通BC引脚内部连通按键与单片机的连接序号名称Proteus中元件名参数数量1单片机STC15W4K32S412按键button4按键测试按键用作开关:在proteus中编程实现按键按下,P1.0连接灯亮,按键弹起来,灯灭;按键测试:在proteus中编程实现按键按下一次,P1.0连接灯状态切换一次。按键的识别P3.2引脚电平状态思考:如何判断按键是否按下一次?机械式按键按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,不能马上稳定地接通或断开,最终由于机械在过渡时的不稳定会以电信号抖动的形式体现出来。

按键实际波形:机械式按键机械式按键抖动时间:长短由按键的机械特性决定,一般为5ms~10ms;按键按下:一般为20ms按键按下时的电平变化:干扰、噪声:去抖方法如何消抖:(1)硬件消抖

RS触发器:常用并联电容法:利用电容的的硬件去抖。

放电延时,实现硬件消抖。

去抖方法如何消抖:(2)软件消抖

软件消抖的方法:检测出键闭合后执行一个延时程序(10ms左右的延时),等待抖动消失后再检测一次键的状态,如果仍然保持闭合状态,则确认为真正有键按下。

5-10ms20ms10ms独立式按键电路设计开始按键是否按下延时去抖按键是否按下执行按键功能按键是否释放按键测试:在proteus中编程实现按键按下一次,P1.0连接灯状态切换次。YNYYNN20ms独立式按键电路设计开始按键是否按下延时去抖按键是否按下执行按键功能按键是否释放按键测试:在proteus中编程实现按键按下一次,P1.0连接灯状态切换次。YNYYNN20ms机械式按键内容拓展:1.如何优化软件去抖部分10ms的延时程序段;2.是否需要后延去抖;3.如何识别按键双击;

期待你的解决思路或者效果展示!统计按键次数,显示在单个数码管上,按键次数不超过9次独立式按键电路设计序号名称Proteus中元件名参数数量1单片机STC15W4K32S4127段共阳数码管7seg-com-anode

13排阻RX847014按键button1独立式按键判别处理流程P3.2==0?NP3.2==0?YNY延时几个ms去抖P3.2==0?NY次数+1,显示退出按键状态判别:判到按下,软件消抖;确认按键按下的处理;按键松开判别次数超9,清0数码管显示按键次数程序sbitKEY=P3^2;unsignedcharcodesegtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0xff};voidmain(void){unsignedcharnum=0;//统计按键次数的变量P0M0=0x00;P0M1=0X00;P3M0&=~0X04;P3M1&=~0X04;P0=segtab[0];//数码管初始显示0while(1){if(KEY==0)//按键引脚电平是否为0,为0,有可能有按键按下{delay_ms(10);//去抖动if(KEY==0)//再次判断按键引脚电平是否为0,为0,有按键按下 {num++;if(num>9)num=0; }while(KEY==0); //等待按键释放

}P0=segtab[num];}}4个按键,在单个数码管上,显示按键号按键电路设计4个按键判别处理方法是否有任意按键按下;有键按下,延时消抖;确认键号,按键处理;等待该键松开保留位”&1”,其他位”&0”即P3&二进制数11110000即P3&0xf0位与P3&0xf0P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0无键按下:0xf011110000S1按下:0xe011100000S2按下:0xd011010000S3按下:0xb010110000S2按下:0x70011100004个按键判别处理流程P3&0xf0=0xf0?NNYY延时10msYY显示”1”退出P3&0xf0=0xf0?P3&0xf0=0xf0?显示”2”显示”3”显示”4”N0xe00xd00xb00x70显示按键号程序unsignedcharcodesegtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0xff};voidmain(){P0M0=0x00;P0M1=0X00;P3M0&=~0X04;P3M1&=~0X04;P0=0xff;while(1) {if((P3&0xf0)!=0xf0)//高4位不为f,有键按下 {delay_ms(10);//去抖动 if((P3&0xf0)!=0xf0)//高4位不为f,有键按下 {switch(P3&0xf0) {case0xe0:P0=segtab[1];break;//1号键 case0xd0:P0=segtab[2];break;//2号键

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论