按键计数器方案
乐高按钮计数器教程
乐高按钮计数器教程
(原创版)
目录
1.乐高按钮计数器简介
2.乐高按钮计数器的组成部分
3.乐高按钮计数器的使用方法
4.乐高按钮计数器的编程技巧
5.乐高按钮计数器的实际应用案例
6.总结
正文
【1.乐高按钮计数器简介】
乐高按钮计数器是一种可以用于计算乐高机器人按下按钮次数的设备。
它可以帮助乐高机器人爱好者和编程初学者更好地了解和掌握乐高机器人的编程技巧,从而提高他们的编程水平。
【2.乐高按钮计数器的组成部分】
乐高按钮计数器主要由两部分组成:硬件和软件。
硬件部分包括乐高机器人主体、按钮计数器模块、电机模块、传感器模块等;软件部分则包括乐高机器人编程软件、按钮计数器编程软件等。
【3.乐高按钮计数器的使用方法】
使用乐高按钮计数器需要先安装好乐高机器人编程软件和按钮计数器编程软件。
然后,通过编程软件编写程序,并将程序下载到乐高机器人中。
最后,让乐高机器人执行程序,按下按钮,即可计算按钮被按下的次数。
【4.乐高按钮计数器的编程技巧】
编程乐高按钮计数器需要掌握一些基本的编程技巧,例如:如何使用循环结构、条件语句、函数等编程元素来编写程序。
此外,还需要了解乐高机器人的编程语法和按钮计数器的硬件接口。
【5.乐高按钮计数器的实际应用案例】
乐高按钮计数器可以应用于各种需要计算按钮按下次数的场景中,例如:计数机器人按下的次数、计数游戏玩家按下的次数等。
通过使用乐高按钮计数器,可以方便地实现这些功能。
【6.总结】
乐高按钮计数器是一种实用的乐高机器人编程设备,它可以帮助乐高机器人爱好者和编程初学者更好地掌握乐高机器人的编程技巧。
eda按键计数课程设计
eda按键计数课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握按键计数器的设计原理。
2. 学生能运用已学知识,分析并设计简单的数字电路,实现按键计数功能。
3. 学生了解计数器在现实生活中的应用,理解其工作原理和电路组成。
技能目标:1. 学生能运用EDA软件进行电路设计,实现按键计数器的搭建。
2. 学生掌握基本电路调试方法,能够对按键计数器进行测试与优化。
3. 学生具备团队协作能力,能够与同学共同完成设计任务。
情感态度价值观目标:1. 学生培养对电子工程的兴趣,激发创新意识,提高实践能力。
2. 学生在设计和调试过程中,培养耐心、细心和责任意识。
3. 学生通过团队协作,培养沟通能力,学会分享与合作,增强团队荣誉感。
课程性质:本课程为实践性课程,结合理论知识和实际操作,培养学生动手能力和团队协作能力。
学生特点:本课程面向初中年级学生,学生对电子工程有一定了解,具备基本电路知识和操作能力。
教学要求:教师需引导学生运用所学知识,注重实践操作,鼓励学生创新和团队协作,提高学生的综合能力。
通过本课程的学习,使学生将理论知识与实际应用相结合,为后续学习打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 电子设计自动化(EDA)基本概念介绍:使学生了解EDA软件的功能和用途,掌握基本操作方法。
2. 按键计数器原理学习:讲解计数器的基本工作原理,分析按键计数器电路的组成和功能。
3. 电路设计与搭建:- 教学学生如何运用EDA软件设计按键计数器电路;- 引导学生进行电路搭建,学会使用相关电子元器件;- 指导学生进行电路调试,解决常见问题。
4. 教学大纲安排:- 第一节课:介绍EDA基本概念,进行软件操作演示;- 第二节课:学习按键计数器原理,分析电路组成;- 第三节课:指导学生使用EDA软件设计电路;- 第四节课:学生进行电路搭建、调试与优化。
5. 教材章节关联:- 《电子技术基础》第三章:数字电路基础;- 《电子技术基础》第四章:计数器及其应用。
基于STM32的按键计数说明书
按键计数说明书
一:原理图
按键电路图
右边K1、K2、K3为本实验测试的按键。
二:工作原理
K1、K2、K3按下去,引脚KEY1、KEY2输出低电平。
在K1或K2或K3按下后要对其进行消抖的工作,在定时器中断中判断按键的状态,为低电平,计数加1,连续60次计数,超过2/3,则证明按键已经按下,通过两个变量分别保存按键的当前状态与上一个状态来判断是上升沿、下降沿、低电平、高电平的触发方式。
寄存器的具体说明可参考《STM32中文参考资料》。
三:实验现象及操作
本实验涉及K1、K2两个按键。
? 下载程序后,数码管左边三位点亮,为000;
? 当K1每按一次,则显示的三位十进制值加1,当加到999时,再按一次,值变为000;
? 当K2每按下一次,显示的值减1,当减到000时,再按一次,则值变为999。
《单片机应用技术》教学课件项目二按键计数器
任务一 按键输入检测
三、 按键抖动 通常按键所用开关多为机械弹性开关,当机械触点断开、闭合时
,电压信号波形如图所示。
知识准备
任务一 按键输入检测
四、 按键程序编写 由于按键按下后,会出现抖动,单片机应该避开这段时间,待键
盘稳定后,再对键盘的信息进行识别。
任务实施 一、 绘制原理图 二、 编写源程序 三、 程序分析
件中绘制的原理图, 如图所示。
任务三 多位数码管显示
任务实施
二、 动态显示电路图 2. 编写源程序 3. 编译与仿真
任务三 多位数码管显示
任务实施
二、 动态显示电路图 3. 编译与仿真
任务三 多位数码管显示
任务实施
任务三 多位数码管显示
知识拓展 试修改程序并仿真,看能否动态显示59到00倒计数。
任务二 单只数码管显示
知识准备
任务二 单只数码管显示
二、 LED七段数码管结构原理 LED七段数码管通常由8个LED发光二极管组成,其中7个发光
LED二极管构成7笔字形,一个构成小数点,通称七段LED数码管。
知识准备
任务二 单只数码管显示
三、 LED七段数码管显示字符和字母的方法 如果我们要显示“6”,并不是给数码管写个“6”就行了,而是
目标检测
知识准备
任务四 按键计数器制作与调试
本次任务是在前面几个任务的基础上,制作一个按键计数器电路 ,并能够根据控制要求编写单片机程序。具体的功能要求为: 系统刚 上电时,数码管显示“00”,每次按动加法键,数码管显示数据增加1 ,每次按动减法按钮,显示数据减1,通过按键设置,让数码管显示范 围在“00~20”之间变化。
① 按键识别的步骤: 先判断按键是否按下,如果没按,直接退出。如 果按下,此时还不能确定是否为有效按下,有可能是抖动,此时应去抖动 ,调用延时函数。
单片机原理与应用---按键计数器实验报告
实验报告(2021--2022学年第二学期)课程名称:单片机原理与应用实验项目名称:按键计数器实验一、实验目的1.掌握数码管的动态显示方法;2.掌握独立按键的扫描及去抖动方法。
二、实验仪器1、安装Keil uVison4的计算机;2、USB转串口驱动CH341SER.EXE;3、ISP下载软件stc-isp-15xx-v6.82e.exe;4、单片机开发板一块和USB线(公对公)一条。
三、实验内容编写程序对独立按键进行扫描,根据不同的按键完成不同的操作。
当S2按下时,执行加1操作;当S3按下时,执行减1操作;当S4按下时,执行加2操作;当S5按下时,执行减2操作,并将按键计数值显示在数码管上,显示格式如下所示。
四、实验步骤①在桌面建立一个文件夹。
先用Keil软件建立一个新的工程,芯片选择STC里的89C52RC芯片。
然后新建空白文件,将其保存为后缀为“.c”的文件并添加到这个工程中。
②根据实验要求把要调用的函数做出声明,按要求将代码编写完成。
写完之后要点击“Target Options”选项,在“Output”选项选择“Create HEX File”,将文件编译后生成后缀为“.hex”的文件。
③将程序烧入开发板中并运行,根据实验要求按下S2、S3、S4、S5按钮并拍照记录实验结果。
五、实验原始数据记录与数据处理#include <reg52.h>sbit WE=P2^7;sbit DU=P2^6;unsigned char code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X0 7,0X7F,0X6F,0X00,0X40};unsigned char dspbuf[]={0,1,2,2,11,1,4,5};unsigned char dspcom;void delayms(unsigned int x);void Display();unsigned char counter;void main(){unsigned char temp;while(1){Display();P3=0X0F;/temp=P3&0X0F;if(temp!=0x0F);{delayms(10);temp=P3&0X0F;if(temp!=0X0F);{switch(temp){case 0X0E:counter--;break;case 0X0D:counter++;break;case 0X0b:counter+=2;break; case 0X07:counter-=2;break; default:break;}dspbuf[5]=counter/100;dspbuf[6]=counter/10%10;dspbuf[7]=counter%10; while((P3&0X0F)!=0X0F);}}}}void Display(){P0=0X00;DU=1;DU=0;P0=~(1<<dspcom);WE=1;WE=0;P0=table[dspbuf[dspcom]];DU=1;DU=0;if(++dspcom==8)dspcom=0;}void delayms(unsigned int x) {unsigned int i,j;for(i=x;i>0;i--);for(j=113;j>0;j--);}六、实验结果与分析讨论根据编写的程序,第一次运行时,显示的是“0138-122”当S2按下时,执行加1操作,屏幕显示为“0138-123”,当S3按下时,执行减1操作,屏幕显示还原为“0138-122”。
实验报告三 数显按键计数器设计
实验三数显按键计数器设计
时间:第周星期节课号:
成绩指导教师批阅日期院系专业:
姓名:学号:座号:
============================================================================================
一、实验目的
1、理解掌握51单片机中断原理;
2、理解中断服务程序入口地址的含义;
3、熟练掌握外部中断的设置及程序设计。
二、实验任务
1、复习51单片机中断的基本原理,理解中断服务程序入口地址,掌握中断控制寄存器
的设置方法及中断服务程序的设计;
2、参考下面所示电路,INT0端与按键相连作为外部中断0输入源,要求每按一次按键
数码管显示的数值加1,实现数显计数器的设计。
要求分别用汇编和C语言编写单片机程
序。
三、实验步骤
1、根据参考电路,利用Proteus软件设计绘制完整的应用电路。
2、绘制程序设计流程图
3、具体程序代码(分别用汇编和C语言完成)。
矩阵式键盘计数器课程设计
单片机课程设计报告计算器**:***学号:********成员:李洋,肖勇,吴和贤,周兵一、设计目的1、进一步熟悉89C51单片机外部引脚线路连接,掌握单片机全系统调试的过程及方法。
2、通过计算器控制系统的设计,掌握矩阵式键盘的使用方法,和简单程序的编写,3、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力二、设计要求1、设计一个十六个按键的矩阵式计算器的模拟系统2、该系统具有加减乘除等功能。
3、用Proteus 7仿真工作的全过程,用Protel 99se画出原理图及PCB图4、有相应的实物图5、掌握4×4矩阵式键盘程序识别原理,掌握4×4矩阵式键盘按键的设计方法。
三、设计分析(1的序号。
键盘中对应按键的序号排列如图(1)所示。
数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、11接X2;12、13、14、15接X3。
即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。
该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。
(2)按键的识别判断键盘上有无按键闭合,先判断行线X0—X3输出低电平“0”,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。
(3)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。
(4)判别键号先判断行线X0—X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号=行号*4+列号的计算。
(5)显示结果.7,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。
按键加减计数(数码管显示,中断方式)
按键加减计数(数码管显⽰,中断⽅式)按键加减计数(数码管显⽰,中断⽅式)(合肥⼯⼤周宁)课程设计对象A08电⽓⼯程及⾃动化本科班,共38+39⼈。
⼀.课程设计的任务和⽬的本课程设计要求学⽣在1.5周内编程设计⼀个单⽚机应⽤系统,完成设计报告。
通过设计实践,使学⽣掌握单⽚机的应⽤特点、编程⽅法,学会单⽚机实际应⽤系统的设计开发过程及设计报告的规范书写,为毕业设计打下良好的基础。
⼆.课程设计内容及要求(⼀)、课程设计题⽬可从如下⽅⾯参考选择(⾃⼰出题的必须经⽼师批准):1.单⽚机在计时控制⽅⾯的应⽤设计。
如:时钟、频率计、彩灯、交通灯2.单⽚机在计数控制⽅⾯的应⽤设计。
如:计数器、计分器、抢答器、报警器3.单⽚机在运算控制⽅⾯的应⽤设计。
如:密码锁、计算器、乒乓球游戏机4.单⽚机在波形发⽣⽅⾯的应⽤设计。
如:电⼦琴、⾳乐盒、调光LED灯5.单⽚机在通讯技术⽅⾯的应⽤设计。
如:双机通讯、PC可控单⽚机系统、对话机器⼈6.单⽚机A/D转换技术⽅⾯的应⽤设计。
如:电压表、温度计、照度计(⼆)、具体要求:1.完成控制程序的编制,能演⽰系统功能。
2.完成设计并上交纸质设计报告1份。
3.系统功能要求及设计报告格式范⽂见附件1、附件2。
三.时间与学时安排1.课程设计时间在本学期第16-17周(共1.5周)。
2.总体教学时间安排:课程设计成绩按学⽣设计报告按五级评分制综合评定。
六.评分标准1.设计报告:按版⾯格式、⽂字语法、观点正确性、图表规范性等综合评分。
机电⼯程学院电⽓系胡佳⽂2010年12⽉12⽇附件1:单⽚机原理与应⽤课程设计功能要求1.单⽚机在计时控制⽅⾯应⽤的设计功能要求:(1)时钟能计时,可校准时间,⾄少有⼀种附带功能(如秒表、定时器或闹钟功能);(2)频率计能测试并显⽰1HZ—10KHZ频率、5V的⽅波,可附带⽅波发⽣器功能;(3)彩灯要求控制16个LED有两种以上闪烁⽅式;(4)交通灯要求模拟控制⼗字路⼝交通信号,有倒计时显⽰。
按键计数器课程设计
按键计数器课程设计一、课程目标知识目标:1. 学生能理解按键计数器的基本原理和功能,掌握其内部电路结构和计数方法。
2. 学生能运用所学的数学知识,进行简单的计数统计,并解释计数结果。
3. 学生了解按键计数器在现实生活中的应用,并能够举例说明。
技能目标:1. 学生能够独立完成按键计数器的组装和调试,提高动手操作能力。
2. 学生能够运用编程思维,设计简单的计数程序,实现计数功能。
3. 学生能够通过小组合作,共同解决问题,提高沟通与协作能力。
情感态度价值观目标:1. 学生对电子技术产生兴趣,培养探索精神和创新意识。
2. 学生在实践过程中,养成认真观察、细心操作的良好习惯。
3. 学生能够认识到团队合作的重要性,培养集体荣誉感。
课程性质:本课程为电子技术实践课程,旨在通过按键计数器的制作与调试,帮助学生将理论知识与实际操作相结合,提高学生的动手能力、编程思维和团队协作能力。
学生特点:学生处于中学阶段,具有一定的电子技术基础和数学知识,好奇心强,喜欢动手实践。
教学要求:教师需关注学生的个体差异,提供适当的指导与帮助,引导学生主动探索,鼓励学生积极参与,确保每个学生都能在课程中收获成长。
通过课程目标的设定,将学习成果具体化,便于教学设计和评估。
二、教学内容1. 理论知识:- 按键计数器原理:介绍按键计数器的基本工作原理,包括按键输入、信号处理、计数显示等。
- 电子元件:学习常用电子元件如电阻、电容、二极管、晶体管等的作用和选型。
- 数学统计:回顾与计数相关的数学知识,如加法原理、乘法原理等。
2. 实践操作:- 组装与调试:指导学生根据电路图组装按键计数器,并进行调试。
- 编程设计:教授简单的编程知识,使学生能够设计计数程序,实现计数功能。
3. 教学大纲:- 第一课时:介绍按键计数器原理,学习电子元件,回顾数学统计知识。
- 第二课时:指导学生进行按键计数器的组装与调试。
- 第三课时:教授编程设计,学生动手编写计数程序。
任务5 51单片机实验板功能演示(按键计数器)
上电或复位后程序计数指针PC的值为0000H,则CPU总是从0000H地址单元读取指令,
并执行程序,如果用户程序不是从0000H单元开始存放,则要在0000H单元存放无条件转 移指令以改变PC的值,使其转移到用户程序所在的地方去执行程序。0003H-002AH共40 个地址单元,每8个单元为一组,分别用来存储5个中断源的中断服务程序,所以用户程序 一般从002BH之后的地址单元开始存放。
任务5 51单片机实验板项目介绍 ---------按键计数器
• (1)工作寄存器区(00H-1FH) • 工作寄存器区共有32个单元。这32个单元每连续的8个单元分成1 组,共有4组,在任何时刻,CPU只能使用其中一组工作寄存器,被使 用的那组称为当前工作寄存器组,并且分别用R1-R7来表示其中8个存 储单元。没有被使用的可以当一般的RAM使用。通过对特殊功能寄存 器的PSW中的RS0、RS1位的设置来选择哪一组为当前工作寄存器组, 其选择与地址分配如表5-1。使用有R0-R7表示的当前工作寄存器组为 工程人员编写程序带来很大的灵活性。
0000h0002单元一般用来存放一条无条件转移指令因为单片机上电或复位后程序计数指针pc的值为0000h则cpu总是从0000h地址单元读取指令并执行程序如果用户程序不是从0000h单元开始存放则要在0000h单元存放无条件转移指令以改变pc的值使其转移到用户程序所在的地方去执行程序
任务5 51单片机实验板项目介绍 ---------按键计数器
(2)位寻址区(20H-2FH) 位寻址区可作为一般的RAM单元按字节操作,也可以进行位操作。这16个字节
共128位,位地址范围从20H单元的D0位(位地址为00H)到2FH单元的D7位(位
地址为7FH)。其位地址空间分布如表5-2所示。
任务13 在自制的单片机实验板上实现按键计数器
13.1.3 跟我学
1. 相关指令的学习 1)加1指令 ) 指令INC 指令
INC A INC Rn INC direct INC @Ri INC DPTR ;A←(A)+1 将A中的内容加1 ;Rn←(Rn)+1 将工作寄存器Rn中的内容加1 ;direct←(direct)+1 将直接地址中的内容加1 ;(Ri)←((Ri))+1 将Ri中的内容为地址,并将该地址中数加1 ;DPTR←(DPTR)+1 将14位数据指针中的数加1
13.1.3 跟我学
(2)中断控制寄存器 ) 51单片机为用户提供了四个专用寄存器:定时/计数器控制寄存器 TCON、串行口控制寄存器SCON、中断允许控制寄存器IE、中断优先 级控制寄存器IP,来控制单片机的中断系统。 定时器/计数器控制寄存器(TCON),该寄存器用于锁存外部中断请求 标志以及定时器/计数器的溢出中断请求标志等。进行字节操作时,寄存 器地址为88H。按位操作时,各位的地址为88H~8FH。寄存器各位的 含义及位地址见表13-1。
• DEC direct • DEC @Ri 加1 •
减1指令的功能是将所指出的操作数内容减1,操作后不会影响标志 位。如果操作数为00H,则减1后为0FFH,且不影响标志位。4位一体 的LED数码管结构原理图
13.1.3 跟我学
• • • 2. 51单片机中断系统学习 单片机中断系统学习 中断的概念 所谓中断,是指当 CPU 正在处理某项事务的时候,如果系统出现 了某些急需处理的异常情况或特殊的请求,这时要求 CPU 暂停正在处 理的工作,而转去处理这个随机发生的紧急或特殊事件,待该事件处 理完后,自动回到原来被中断的地方,继续执行被中断的程序,这个 过程称作中断。
按键计时器
击键过程
传统的按键检测代码
unsinged char KeyScan(void) { unsinged char KeyScan(void)
{
unsigned char KeyValue=0; // 检测到有按键按下 if(KEY_IO != 0xFF) { DelayNms(20); // 延时 20 毫秒(严重影响单片机的运行效率) if(KEY_IO != 0xFF) // 确认按键按下 { switch(KEY_IO) { case 0xFE: KeyValue=1;break; case 0xFD: KeyValue=2;break; default:KeyValue=0;break; }
T/C0 一秒事件标志位置 1
T/C0 一秒事件标志位置 1 返回
按键计数器函数列表
函数列表 序号 1 2 3 4 5 6 7 8 9 10 函数名称 LS164Send RefreshDisplayBuf SegDisplay TimerInit Timer0Start Timer0Stop PortInit KeyRead main 中断服务函数 Timer0IRQ T/C0 中断服务函数 说明 74LS164 串行输入并行输出函数 刷新数码管显示缓存 数码管显示数据 T/C 初始化 T/C0 启动 T/C0 停止 I/O 口初始化 按键值读取 函数主体
按键 KEY1(P1.0) KEY2(P1.1)
功能 启动/停止计数器 选择要修改的位
按键 KEY3(P1.2) KEY4(P1.3)
功能 当前位加 1 当前位减 1
程序开始 初始化I/O(T/C等) 死循环
流程图
T/C0 中断服务函数
T/C0 重载初值 T/C0 中断事件标志位置 1 T/C0 中断事 件标志位>0 按键扫描 不同的按键完成 T/C0 一秒事 件标志位>0 设置模式与计数 模式之间切换 刷新数码管显示缓存 T/C0 一秒计 数器>200? 显示数码管数值
按键实现0~9999计数器 单片机
按键调节数码管显示功能:通过按键加减数码管所显示的数字按下k1加1,最大加到9999按下k2减1,最小减到0按下k3清零复位C语言程序//---------------------------------------------------------------------- //名称:按键调节数码管显示//---------------------------------------------------------------------- //功能:通过按键加减数码管所显示的数字// 按下k1加1,最大加到9999// 按下k2减1,最小减到0// 按下k3清零复位//---------------------------------------------------------------------- //姓名:陈润源//地点:内江职业技术学院//时间:2019年4月6日21:40:41//---------------------------------------------------------------------- #include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit k1 = P1^0; //加sbit k2 = P1^1; //减sbit k3 = P1^2; //复位void key(void);void display(void);uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数组char m=99,n=98; //显示初值,m,n的值决定开机显示数值//****************************************//延时程序//****************************************void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}//***********************************************//显示程序//***********************************************void display(void){P2=0X08;P0=table[m%10]; //显示个位delayms(5);P2=0X04;P0=table[m/10]; //显示十位delayms(5);P2=0X02;P0=table[n%10]; //显示百位delayms(5);P2=0X01;P0=table[n/10]; //显示千位delayms(5);}//***************************************************//按键处理//***************************************************void key(){if(k1==0) //检测按键是否被按下{ //延时消抖delayms(10);if(k1==0) //再次检测是否真正按下按键{m++; //m自加一if(m>=100) //如果m加到100则n加一 (限制m的取值范围) 个位、十位最大显示99 {n++; //n自加一m=0; //使m又从0开始计数if(n>=100) //如果n加到100则m=n=99 (限制n的取值范围) 百位、千位最大显示99 {m=99; //最大显示9999n=99;}}}while(!k1); //按键松开}if(k2==0) //检测按键是否被按下{ //延时消抖delayms(10); //再次检测是否真正按下按键if(k2==0){ //m自减一m--;if(m<=0) //如果m减到0则n减一 (限制n的取值范围) 个位、十位最小显示00 {m=99; //重新给m装初值n--; //n自减一if(n==-1) //如果n减到-1,则m=n=0 (限制n的取值范围) 百位、千位最小显示00{n=0; //最小显示0000m=0;}}}while(!k2); //按键松开}if(k3==0) //检测按键是否被按下{delayms(10); //延时消抖if(k3==0) //再次检测是否真正按下按键{m=0; //复位,显示0000n=0;}while(!k3); //按键松开}}void main(){while(1){ //调用按键检测key(); //数码管显示display(); }}。
[计算机]DSP系统设计按键计数器程序设计
湖南工程学院课程设计课程名称DSP 原理及应用课题名称DSP系统设计+按键计数程序设计专业班级学号姓名LY指导教师2011年12月20日湖南工程学院课程设计任务书课程名称DSP原理及应用课题名称DSP系统设计+按键计数程序设计专业班级学生姓名学号指导老师审批任务书下达日期2011年12月20日任务完成日期2011年12月31日目录第1章 DSP硬件系统设计 (1)1.1系统总框图 (1)1.2各硬件介绍 (2)1.2.1 TMS320LF2407主要特点 (2)1.2.2 时钟、锁相环 (3)1.2.3 电源电路 (3)1.2.4 JTAG电路及复位电路 (4)1.2.5 输入、输出电路 (4)1.2.6 RAM (5)1.3最小系统原理图 (6)第2章软件设计 (7)2.1程序设计思路 (7)2.2程序流程图 (7)2.3程序清单 (8)2.3.1 初始化程序 (8)2.3.2 中断服务程序 (8)第3章总结 (9)参考文献 (10)附录 (11)附录A系统原理图 (11)附录B程序清单 (12)第1章DSP硬件系统设计1.1 系统总框图系统由电源、锁相环、时钟、复位电路、JTAG仿真等电路组成,如下图所示:图1-1 系统结构图1.2 各硬件介绍1.2.1 TMS320LF2407主要特点1.该模块上的资源有32千字FLASH2.2千字SARAM,544字DARAM,外扩64千字的程序ROM,64千字的数据RAM3.两个事件管理器EVA和EVB4.可扩展外部存储器总共192K字空间:64K程序存储器,64K字数据存5.19位A/D转换器6.高达40个可单独编程或复用的通用输入/输出引脚GPIO7.电源管理包括3种低功耗模式1.2.2 时钟、锁相环系统采用有源晶振提高系统的稳定性和时钟的准确性,PLL模块使用外用滤波器电路回路来抑制信号抖动和电磁干扰,使信号抖动和干扰最小,其锁相环和晶振电路如下:图 1-3 锁相环和晶振电路1.2.3 电源电路系统采用TPS7333Q进行3.3V电压的转换对最小系统供电,并添加滤波电容。
按键控制加法计数器
按键控制加法计数器一、提出问题:如何用自己的FPGA开发板实现两个按键控制加法计数器的程序?并且要求计数值在两个数码管上显示。
Key1控制一个6位的加法计数器,key2控制一个9位的加法计数器。
二、解决方法:方法一:用VHDL语言实现1、程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORT (CLK,RST,EN,KEY1,KEY2:IN STD_LOGIC;CQ1,CQ2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT1,COUT2:OUT STD_LOGIC);END CNT6;ARCHITECTURE aaa OF CNT6 ISsignal p:std_logic_vector(31 downto 0);BEGINCOM1: PROCESS (CLK,RST,EN,KEY1,KEY2)VARIABLE CQI1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1'OR KEY1='0' THEN CQI1:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1'THENp<=p+1;if(p=25000000)thenp<="00000000000000000000000000000000";IF EN='1' AND KEY1='1' THENIF CQI1<6 THEN CQI1:=CQI1+1; COUT1<='0';ELSE CQI1:=(OTHERS=>'0'); COUT1<='1';END IF;END IF;END IF;End if;CQ1<=CQI1;END PROCESS;COM2: PROCESS (CLK,RST,EN,KEY2)VARIABLE CQI2:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1'OR KEY2='0' THEN CQI2:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1'THENp<=p+1;if(p=25000000)thenp<="00000000000000000000000000000000";IF EN='1' AND KEY2='1' THENIF CQI2<9 THEN CQI2:=CQI2+1;COUT2<='0';ELSE CQI2:=(OTHERS=>'0');COUT2<='1';END IF;END IF;END IF;End if;CQ2<=CQI2;END PROCESS;END aaa;2.程序分析:采用两个进程分别实现6进制加法计数器和9进制加法计数器,这连个计数器均是异步清零、同步使能的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C1
30pF
C2
X1
CRYSTAL
30pF
C3
1uF
R1
1k
R2
10k
电路工作原理图
RP2
RESPACK-8
1 2 3 4 5 6 7 8 9
U1
19 XTAL1 18 XTAL2
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
排针
排线
附录
型号 AT89S52 12MHZ
30pf Respack9
10k BUTTON_1 10管脚共阳
1K 10uF BUTTON_2
数量 1 1 2 1 1 1 2 1 1 1
若干
若干
用途 控制核心 时钟电路 时钟电路 上拉电阻 复位电路 发出信号 显示电路 复位电路 复位电路 复位电路
连接
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
Company Logo
软件电路 软件设计思路
Company Logo
2.设计内容
在AT89S52单片机的P3.7管脚接一个轻触开关,作为手 动计数的按钮,用单片机的P2.0-P2.7接一个共阳数码管, 作为00-99计数的个位数显示,用单片机的P0.0-P0.7接 一个共阳数码管,作为00-99计数的十位数显示。
单片机原理及应用课程设计
系统方案
1.硬件思路 2.软件思路 3.系统框图
《单片机原理及应用》
课程设计名称:按键计数器 指导老师:苏智华
小组成员:刘富强丶姜子龙
单片机原理及应用课程设计
1. 设计功能 2. 系统方案 3. 工作原理 4.设计过程
Company Logo
单片机原理及应用课程设计
1.功能及用途
设计功能
Company Logo
利用AT89S52单片机来制作一个手动按键计数器。可应 用于药品灌装,食物封装计数等等。
80C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
实现00-99计数功能,子程序实现将高低 电位转化为数码管的十进制数字,实现
手动开关计数。通过手动给脉冲信号, 实现计数,再加到99时,在手动给脉冲 时,回到初始状态00,从而实现00到99 加计数。
开始
Company Logo
Count初始为0
程
序
数码显示“00”
流
程
N
图
按键识别成 功吗?
Y
Count=Count+1
Company Logo
硬件电路
Company Logo
硬件设计思路
00-99加计数器硬件系统主要由AT89S52单片机 ,数码管,电容,电源等元件组成,利用单片机的 P0口、P2口作为输出端,来控制数码管的显示, 通过单片中烧入程序,然后利用 P3.7口作为输入 端,通过点动控制实现开关量的控制和计数,然后 再通过数码显示器显示出来。通过调试仿真从而 实现00-99加计数。
Y Count=100 吗? N
显示Count计数器
调试结果
先在keil 4中为所编的程序设置环境, 然后输入程序检测并编译,之后用 Proteus将编译好的程序输入到已设 计好的电路的AT89s52中,开始模 拟调试,如图按键按到63。
元件清单
元件名称 单片机 晶振 电容 排阻 电阻 按键开关 数码管 电阻 电解电容 按键开关
连接
小组成员及分工
• 成员刘富强:主要负责查找资料,软件的设计以及调试, 文档的撰写。
• 成员姜子龙:主要负责硬件电路的焊接,PPT的制作以及 答辩。
致谢 感谢苏老师这周辛勤的指导!
人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。