按键控制数码管显示数字加减
实验一数码管按键控制
课程名称: TAJYUAN UNn'ERSII\r OF TECHNOLOGY本科实验报告智能仪器实验项目: 按键控制数码管显示实验地点:____________________专业班级:_ 学号:学生姓名: ______________________________ 指导教师: _______________ 吕青2015年10月25日实验一按键控制数码管显示一、实验目的二、实验要求本实验要求设计四个按键,从而控制数码管的显示。
四个按键的具体功能为:第一个按键为复位功能、第二个按键为移位功能、第三个按键为加1功能、第四个按键为减1功能。
三、设计方案本实验中,数码管采用Proteus内部已经封装好的四位数码管显示器,该显示器输入端口由位信号和段信号组成。
该数码管内部采用共阳极接法。
除此之外,位信号可由端口直接给,不需要增加端口的驱动能力。
段信号由P0 口提供,位信号有P2 口的低四位提供。
P0 口接段信号时,需要加上拉电阻。
四、实验设计1、整体电路图整体电路图2、单片机选型U1_MTAL1• XTAL2RSTPSENALEEA1 £y £5_ 6P1J0 P11 P12 P13 FM* P15 P1.6 P17P3.0/RXD P3.1/TXD P382/IITno P3.3/IMT1 P3.4/TO P3.S/T1P3.6WRP3J/RD_!£作13伯15_1£17ATS9051"单片机选型本次实验选择的单片机为AT89C51型号,段信号由P0 口提供,位信号有P2 口的低四位提加由展LIET rojrAK I■烦%” FEW健F3AT1 F di! FDFB* H v* *3>A E *ZiMl- iS^E Hgll U#M ・AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。
按键调节数码管的显示数字(百、十、个可单独调节)
{ init();
nuቤተ መጻሕፍቲ ባይዱ=521;
while(1)
{ keyscan();
if(i>=20)
{ i=0;
num--;
}
display(num);
}
}
void init() //定时器初始化
{ TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
bai=num/100;
shi=num%100/10;
ge=num%10;
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(2);
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uchar x);
void init();
void keyscan();
void display(uint num);
void delay(uchar x);
/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6; //数码管段选
sbit wela=P2^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.引言1.1 概述概述部分的内容可以按照以下方式编写:引言是文章的起点,它应当简要介绍本文将要讨论的主题以及相关背景信息。
本文将讨论关于单片机数码管加减二进制程序设计的内容。
单片机数码管是指一种数字显示装置,它由七段LED数码管组成,能够显示0~9十个数字及部分字母。
二进制编码是计算机用来表示和处理数字的一种最基本的编码方式。
本文将首先介绍单片机数码管的基本原理和工作原理,包括其结构、显示方式和控制方法等。
然后,将详细探讨二进制编码的原理,包括二进制数的表示方法和转换方式。
最后,将展示如何通过程序设计来实现单片机数码管的加减功能,给出相应的示例代码和运行结果。
通过本文的阅读,读者将能够了解到单片机数码管的基本知识和原理,并掌握二进制编码的相关概念和计算方式。
同时,读者还将学会如何通过程序设计来实现单片机数码管的加减功能,从而加深对单片机编程和数字电路设计的理解和应用能力。
总之,本文旨在介绍单片机数码管加减二进制程序设计的相关知识,帮助读者理解和掌握该领域的基本原理和实际应用。
接下来的章节将逐一展开相关内容的详细介绍。
1.2文章结构文章结构部分的内容可以包括以下内容:本文主要分为三个部分:引言、正文和结论。
引言部分主要包括概述、文章结构和目的。
概述部分介绍了本文要讨论的主题——单片机数码管加减二进制程序设计。
数码管是一种常见的显示设备,而单片机则是控制和操作数码管的核心组成部分。
本文旨在介绍单片机数码管的基本原理,并通过编写加减二进制程序来实现相应的功能。
文章结构部分说明了整篇文章的组织结构。
根据逻辑和内容的安排,本文分为引言、正文和结论三个部分。
引言部分首先简要介绍了本文要解决的问题和讨论的主题,接着给出了文章结构的组成部分和各部分的内容概要。
这样读者在阅读时可以清楚地知道本文的结构和主要内容,在阅读时可以更好地理解和掌握文章的内容和意义。
正文部分是本文的核心内容,主要包括单片机数码管的介绍和二进制编码原理的讲解。
AVR 数码管显示设计 按键加减数
AVR 数码管显示设计按键加减数//******************************FileName:Counter.C**************************////******************************ICCAVR 编译*****************************//#include #define uchar unsigned char#define uint unsigned int//数码管字型表,对应0,1,2,3,4,5,6,7,8,9//uchar Table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar Data[4]={0,0,0,0}; // 显示初始值:0 0 0 0uint CNT=0; //初始计数值:0uchar Key_Up; //加计数按键标志uchar Key_Down; //减计数按键标志void DelayMs(uint i) //Ms 级延时,参数i 为延时时间{uint j;for(;i!=0;i--) {for(j=8000;j!=0;j--) {;}}}void Display(uchar *p) //动态显示函数,参数p 为待显示的数组名{uchar i,sel=0x01;for(i=0;i//******************************计数值处理函数******************************////功能:此函数用于将计数值拆分为BCD码的千,百,十,一数据,用于查表显示////参数说明:参数i:计数值;参数p:处理数据存放的数组名//void Process(uint i,uchar *p){p[0]=i/1000;i=i%1000;p[1] =i/100;i=i%100;p[2]=i/10;i=i%10;p[3]=i;}void Init_IO(void) //初始化I/O 口{DDRA=0xff; //设置A 口为推挽1 输出PORTA=0xff;DDRB=0x00; //设置B 口为不带上拉电阻输入PORTB=0x00;DDRC=0xff; //设置C 口为推挽1 输出;PORTC=0xff;}void Get_Key(void) //按键扫描函数{while((PINB&0x01)==0) //若S1 按下,置位加计数标志;{Key_Up=1;Display(Data);}while((PINB&0x02)==0) //若S2 按下,置位减计数标志;{Key_Down=1;Display(Data);}}。
按键控制数码管增减
单片机两位数码显示器,并根据端口的接线情况编写相应的程序,使其具有以下功能:
1.单片机系统具有双向循环显示功能,两位数码管采用十进制,最大显示
值是99,最小显示值是00,
2.按下S1后,数码管的数值自动增1;(00—99)
3.按下S2后,数码管的数值自动减1;(99—00)
4.按下S3时,数码管停止递增或递减,并显示当时的数值;
5.数码管数值自动增、减时间间隔T 0.5S<T<1S。
评定内容:
1.组装好单片机部分
2.组装好数码管部分
3.组装好电源部分
4.单片机及数码管能够工作
5.按键S1工作正常
6.按键S2工作正常
7.按键S3工作正常
8.数码管数字在改变时没有闪烁。
数码管、按键的使用
数码管、按键的使用1、程序结构程序分为三个部分:按键处理、拨码开关和数码管显示。
结构如下:程序结构示意图按键处理放到主线程里面,控制显示什么数据,以及对数据进行操作。
数码管显示(以及LED显示)放到定时中断里面,只负责对数码管数据缓冲区的显示2、按键处理按键有四个(S2-S5)。
在主线程里面对所有键进行扫描,确认按键成功后,执行相应功能。
设端口输入为P,num,用于去抖动和连加/减,N为常量按键处理流程图S2:对激活数据(由拨码开关确定)进行加1,长按连加。
S5:对激活数据(由拨码开关确定)进行减1,长按连减。
3、拨码开关拨码开关(DIP5-8)要完成:确定什么数据送入数码管显示缓冲区(LedCount[8]),确定当前激活什么数据的第几位。
具体如下:●DIP8=0 处理IP显示以及变化(用到DIP6、DIP7、DIP8)●DIP8=1 显示MAC地址(用到DIP6、DIP7、DIP8)说明:DIP8区别IP与MAC①显示IP时:DIP7、DIP6编码对应激活IP地址的四字节。
②显示MAC时:显示MAC地址时最左边两个数码管不是地址信息,三字节地址信息由右边六个数码管显示第一个数码管:0 后面六个数码管显示前三字节MAC地址1 后面六个数码管显示后三字节MAC地址第二个数码管:熄灭4、数码管显示由于数码管公用“段线”(即同一时刻所有数码管数字一样),所以控制“位线”(数码管使能控制位)让数码管轮流显示。
设置整型变量flag取值1-8。
定时刷新显示。
具体流程为:数码管显示流程图5、程序的实现。
EDA流水灯,数码管显示01234567,加减计数,
练习1.两位的循环彩灯,自定义的循环彩灯2.用另外的方式实现按键控制数码管加减3.设计一个在四个数码管上,显示拨码开关给定的值。
1、设计一个流水灯。
原理图设计:(8位流水灯)程序设计:(16位流水灯)module led_s(rst,clk,leds);input rst,clk;output [15:0] leds;reg [15:0] leds;reg [3:0]count;always @(posedge clk)beginif (rst)count <=16 'h00_00;elsebeginif(count==4'hf)count <=16 'h00_00;elsecount <=count+1;endendalways @(count)begincase(count)0: leds<= 16 'b0000_0000_0000_0001;1: leds<= 16 'b0000_0000_0000_0010;2: leds<= 16 'b0000_0000_0000_0100;3: leds<= 16 'b0000_0000_0000_1000;4: leds<= 16 'b0000_0000_0001_0000;5: leds<= 16 'b0000_0000_0010_0000;6: leds<= 16 'b0000_0000_0100_0000;7: leds<= 16 'b0000_0000_1000_0000;8: leds<= 16 'b0000_0001_0000_0000;9: leds<= 16 'b0000_0010_0000_0000;10: leds<=16 'b0000_0100_0000_0000;11: leds<=16 'b0000_1000_0000_0000;12: leds<=16 'b0001_0000_0000_0000;13: leds<=16 'b0010_0000_0000_0000;14: leds<=16 'b0100_0000_0000_0000;15: leds<=16 'b1000_0000_0000_0000;default: leds<=16 'hxxxx;endcaseendendmodule2、设计一个加减计数器,计数器的值在一位数码管上显示出来。