按键控制数码管显示数字加减
实验一数码管按键控制
课程名称: 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; //数码管位选
51单片机数码管加减
} } 这个键盘子程序的思路可以借鉴,以后 得这样用。 主程序:
void main() {
while(1) {
display(shu); keyscan(); } } 键盘,显示子程序均需要不停地扫
描。
这里要注意的是:由于要求中要满
足,不松开按键时,数字间隔增加
或减少,所以在键盘子程序中就不
能像平时一样,key 是否为 0,延时,
键盘子程序:
void keyscan() {
P1=0xff; // P1 口赋初值, key_code=P1;//将 P1 口的状态赋予一 个变量,便于以后的检测。 if(key_code!=0xff)//如果条件满足说 明有按键被按下。 {
for(i=0;i<30;i++) display(shu);//这小段子程序有两个 作用:1、不断的扫描显示子程序。这样就 会避免一种现象:按键被按下时,所有的
是否为 0,while(!key);等待按 键释放。这样写永远也实现不了功 能,这就是这个程序的巧妙之处, 以后不要死板硬套,要根据功能去 写程序。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
按键加减计数(数码管显示,中断方式)
按键加减计数(数码管显⽰,中断⽅式)按键加减计数(数码管显⽰,中断⽅式)(合肥⼯⼤周宁)课程设计对象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、了解51系列单片机I/O端口的作用,学会通过I/O端口控制外部设备。
2、学习延时子程序的编写和使用。
3、学习单片机程序的录入,调试和运行方法。
二、实验原理按照结构和使用方法的不同,可以将按键分为两大类:独立键盘和矩阵键盘,其结构如图1所示。
简单的说:独立键盘编程简单,但是浪费IO口,毕竟单片机系统的I/O资源很有限。
而矩阵键盘编程复杂,但可以节省I/O口。
两者的优缺点详见表1。
一般而言,键盘数超过8个时,就会采用矩阵键盘。
图1 独立键盘和矩阵键盘表1 独立键盘和矩阵键盘的比较(1)矩阵键盘的工作原理:每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
每个按键的状态同样需变成数字量“0”和“1”,开关的一端通过电阻接Vcc(列)、而接地是通过程序输出数字“0”实现的。
行线置零,若无按键按下时,行线处于高电平的状态,而当有按键按下时,与键盘相连的列线电平也置零。
(2)行列式键盘的扫描步骤:1)粗扫描。
所有行置零,判断整个键盘是否有按键按下。
2)细扫描,逐行置零,读列值。
判断被按键的具体位置。
3)计算被按键的键值,以确定要完成的键值。
三、实验内容按照如图2的电路图,编写程序,使得按下按键后,2位共阴极数码管能够显示与按键相符的数字,一个显示十位,一个显示个位。
图2 数码管模块和矩阵键盘模块的电路连接四、实验步骤1、绘制仿真电路图,并注意连线的合理排布。
2、建立一名为项目文件和一个源文件,将源文件加载到项目文件下,编写并录入程序。
3、编译、调试程序。
如有错误,一一排查错误,直至无错误为止,然后生成HEX文件。
4、将HEX文件下载到单片机开发板中,并验证结果的正确性。
单片机数码管加减二进制程序设计
单片机数码管加减二进制程序设计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.数码管数字在改变时没有闪烁。
51单片机数码管加减
实现的功能:按下key1键数字加1,按下key2键数字减1,按下key3键数字归零。
并且满足,在不松开按键时,数字会按一定时间间隔持续递增或递减。
数码管显示程序:void display(uchar shu){uchar bai,shi,ge;bai=shu/100;shi=shu/10%10;Ge=shu%10;P2=0x7f;P0=table[ge];delay(5);P2=0xbf;P0=table[shi];delay(5);P2=0xdf;P0=table[bai];delay(5);}这里是利用传送函数,在传送过程中我们传送的是一个值,这个值的百、十、个位,我们在子函数中进行分解。
再通过数组将段码、位码,传送到相应的I/O。
此外还要注意的一点是:这里是动态扫描,不能忘了原理,是一位一位的显示,只是太快了,看不出来,所以在每一个数码管亮之间一定要有10毫秒的延时!!!键盘子程序:void keyscan(){P1=0xff; // P1口赋初值,key_code=P1;//将P1口的状态赋予一个变量,便于以后的检测。
if(key_code!=0xff)//如果条件满足说明有按键被按下。
{for(i=0;i<30;i++)display(shu);//这小段子程序有两个作用:1、不断的扫描显示子程序。
这样就会避免一种现象:按键被按下时,所有的数码管会闪烁,加了这小段程序后给人的感觉是各个数码管是独立的,互不影响,它加他的,我前面几位该不变就不变。
2、还起到延时作用。
switch(key_code)//利用switch可以是程序事半功倍,又好读,应该借鉴。
{case 0xfe://注意格式的书写if(shu<255)shu++;break;//不要忘了case 0xfd:if(shu>0)shu--;break;case 0xfb:shu=0;}key_code=0xff;//这句程序得格外注意,容易丢,为下一次判断Key_code做准备。