当前位置:文档之家› 单片机数码管计数器

单片机数码管计数器

单片机数码管计数器
单片机数码管计数器

MAIN: NOP

CALL DISPLAY0;LED动态显示刷新

CALL DELAY100

JNB B_T1IF,MAIN;每50ms处理一次。

;======================================

CLR B_T1IF

MOV A,TIMES_50MS

CJNE A,#20,NO_1S

JMP YES_1S; 满20次即为一秒钟

;=====================================

NO_1S:

MOV A,TIMES_50MS

CJNE A,#1,NO_1S_END ;TIMES_50MS不为1,返回

;当TIMES_50MS为1时,判断当前所选档位是否过高或者过低

;若计数器BUF大于100,则说明满1秒时必然大于2000,则提前调高频率衰减档位,

;并清零各计数值,重新在新档位测量

MOV A,COUNTER_BUF_H

JNZ NO_1S_1;计数器高位不为0,说明超100

MOV A,COUNTER_BUF_L

CJNE A,#100,NO_1S_0

NO_1S_0:JC NO_1S_LOW;计数器BUF小于100,继续跳转到NO_1S_LOW判断是否需要调低档位

NO_1S_1:

MOV A,FREQ_LOSS;超量程,判断当前频率衰减档位,若小于3则加一档

CJNE A,#3,NO_1S_2

JMP NO_1S_END

NO_1S_2:JC NO_1S_3

MOV A,#3

MOV FREQ_LOSS,A;档位大于3,则修正为3

NO_1S_3:

INC FREQ_LOSS;频率衰减档位加1

MOV A,FREQ_LOSS

CJNE A,#1,NO_1S_4

SETB P153_B;FREQ_LOSS=1

CLR P153_A

JMP NO_1S_20

NO_1S_4:CJNE A,#2,NO_1S_5

CLR P153_B;FREQ_LOSS=2

SETB P153_A

JMP NO_1S_20

NO_1S_5:

CLR P153_B;FREQ_LOSS=3

CLR P153_A

JMP NO_1S_20

;========================================

NO_1S_LOW:

MOV A,COUNTER_BUF_L

CJNE A,#10,NO_1S_10

NO_1S_10:JNC NO_1S_END

;偏低,则判断是否需要降低频率衰减档位

MOV A,FREQ_LOSS;

JZ NO_1S_END;已经是最低档,无需调整

DEC FREQ_LOSS;减一档

MOV A,FREQ_LOSS

CJNE A,#0,NO_1S_11

SETB P153_B;FREQ_LOSS=0

SETB P153_A

JMP NO_1S_20

NO_1S_11:CJNE A,#1,NO_1S_12

SETB P153_B;FREQ_LOSS=1

CLR P153_A

JMP NO_1S_20

NO_1S_12:

CLR P153_B;FREQ_LOSS=2

SETB P153_A

JMP NO_1S_20

NO_1S_20:;调整档位后,重新计数

CLR A

MOV TIMES_50MS,A

MOV COUNTER_BUF_L,A

MOV COUNTER_BUF_H,A

NO_1S_END:JMP MAIN

;===================================

;===================================

YES_1S:

;把计数器的数转换成10进制,并根据当前档位设定好要显示的6个数字,;存放在DISPLAY_DATA1-DISPLAY_DATA6中。

;

MOV A,COUNTER_BUF_H

MOV R7,A

MOV A,COUNTER_BUF_L

MOV R6,A

CALL CHANGE16_10

;====================================

;在频率衰减控制下,计数器数据不会超出2000多少,因此只取转换后的低4位转换成数据显示

MOV A,R3

ANL A,#0FH

MOV TEMP1,A

MOV A,R3

ANL A,#0F0H

SWAP A

MOV TEMP2,A

MOV A,R4

ANL A,#0FH

MOV TEMP3,A

MOV A,R4

ANL A,#0F0H

SWAP A

MOV TEMP4,A

;====================================

;根据频率衰减档位调整数位

MOV A,FREQ_LOSS

CJNE A,#0,LOSS_1

CLR A

MOV DATA4,A

MOV DATA5,A

JMP LOSS_END

LOSS_1:

CJNE A,#1,LOSS_2

MOV A,DATA3

MOV DATA4,A

MOV A,DATA2

MOV DATA3,A

MOV A,DATA1

MOV DATA2,A

MOV A,DATA0

MOV DATA1,A

CLR A

MOV DATA0,A

MOV DATA5,A

JMP LOSS_END

LOSS_2:

CJNE A,#2,LOSS_3

MOV A,DATA3

MOV DATA5,A

MOV A,DATA2

MOV DATA4,A

MOV A,DATA1

MOV DATA3,A

MOV A,DATA0

MOV DATA2,A

CLR A

MOV DATA0,A

MOV DATA1,A

JMP LOSS_END

LOSS_3:

MOV A,DATA2

MOV DATA5,A

MOV A,DATA1

MOV DATA4,A

MOV A,DATA0

MOV DATA3,A

CLR A

MOV DATA0,A

MOV DATA1,A

MOV DATA2,A

LOSS_END:

;高位若为0,则置为11,取出显示代码为LED全灭MOV R0,#DATA5;取最高位数据地址

MOV R2,#5

LOOP_CLR:

MOV A,@R0

JNZ DISCD

MOV A,#11

MOV @R0,A

DEC R0

DJNZ R2,LOOP_CLR

;====================================

;取表找相应显示代码

DISCD:

MOV R0,#DATA_ADDR;

MOV R1,#DISPLAY_DATA_ADDR;

MOV R2,#6;

MOV DPTR,#TAB

DILP: MOV A,@R0

MOVC A,@A+DPTR

MOV @R1,A

INC R0

INC R1

DJNZ R2,DILP

;=======================================

;重新计数

CLR A

MOV TIMES_50MS,A

MOV COUNTER_BUF_L,A

MOV COUNTER_BUF_H,A

JMP MAIN

TAB: ;/显示码码表/ DB 3FH,06H,5BH,4FH,66H;

DB 6DH,7DH,07H,7FH,6FH,0FFH;

七段数码管及其驱动七段数码管及其驱动原理,

[转]7段数码管管脚顺序及译码驱动集成电路74LS47,48 7段数码管管脚顺序及译码驱动集成电路74LS47,48 这里介绍一下7段数码管见下图7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg 这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。发光二极管的工作电压一般在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数!74ls48引脚图管脚功能表 74LS48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,下面我就给大家介绍一下这个元件的一些参数与应用技术等资料。74ls48引脚功能表—七段译码驱动器功能表http://www.51hei. com/chip/312.html74LS47引脚图管脚功能表:

8位数码管计数器

C:\Documents and Settings\Administrator\桌面\new\1.c /* 单片机52系列, 功能描述:8位数码管显示0~0-9~9 加1计数,数码管使用共阴极,数码管通过2片74HC573接到P0口,P2^6段选择,P2^7位选择 */ #include< reg52.H> #define uchar unsigned char //宏定义uchar 为无符号字符 #define N 1 //宏定义N=1,用于动态显示位 uchar code duan[]={ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f/* 0x77,0x7c,0x39,0x5e,0x79,0x71*/ }; //共阴段码表uchar code wei[]={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //8个位的开通表 uchar ge=0,shi=0,bai=0,qian=0,wan=0,swan=0,bwan=0,qwan=0,num=0; //定义变量及初始化 sbit dula= P2^6; //段变量定义 sbit wela= P2^7; //位变量定义 void delayxms(uchar x); //延时子函数声明 void main() //主函数 Page: 1 C:\Documents and Settings\Administrator\桌面\new\1.c

{ P0=duan[0]; // 装载初值 dula=1; dula=0; P0=wei[0]; // 装载初值 wela=1; wela=0; /* 中断设置*/ EA=1; //中断总允许 ET0=1; //定时器0中断允许 TMOD= 0x01; // 定时器器0工作方式1 TH0=-10000/256;// 定时10000高8位,可以直接写成TH0=-10000/256 TL0=-10000%256;// 定时10000低8位,可以直接写成TL0=-10000%256 TR0=1; // 启动定时器0 /* 程序跳转去执行定时中断程序,然后返回此处*/ while(1) //大循环 { P0=duan[qwan]; //送千万位段码 if(qwan==0) // 如果千万位等于0,关闭段选、位选{

单片机简易数字计算器汇编

基 于 单 片 机 的 简 易 计 算 器 设 计 自动化控制一班 kaoyanbaomu521

摘要: 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本任务是个简易的两位数的四则运算,程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。本任务重在设计构思与团队合作,使得我们用专业知识、专业技能分析和解决问题全面系统的锻炼。 关键词: 单片机计算器范围加减乘除 1 引言 1.1 计算器的历史 说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。 1.2 电子计算器的特殊键 在使用电子计算器进行四则运算的时候,一般要用到数字键,四则运算键和清除数据键。除了这些按键,还有一些特殊键,可以使计算更加简便迅速。 2 单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 3 芯片简介 3.1 MSC-51芯片简介 MCS-51单片机内部结构 8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。

单片机课设数码管计时器

第1章设计方案 (1) 1.1 设计目的 (1) 1.2 设计要求 (1) 1.3 设计原理 (1) 第2章硬件设计 (2) 2.1 器件说明 (2) 2.1.1 51单片机简述 (2) 2.1.2 DS12C887实时时钟芯片简介 (4) 2.1.3 MAX7219共阴极数码管显示驱动芯片简介 (6) 2.2 硬件构造说明 (7) 2.2.1复位及震荡电路 (8) 2.2.2 时间获取电路 (8) 2.2.3 显示驱动电路 (9) 第3章软件设计 (10) 3.1 软件设计简要思路 (10) 3.2 时间获取及定时计数器程序 (11) 3.2.1定时/计数器初值计算 (11) 3.2.2 计数运算程序 (11) 3.3 显示驱动程序 (12) 3.4利用数码管显示的倒计时装置设计程序 (14) 3.5 软件调试仿真 (18) 3.5.1 系统调试工具keil C51 (18) 3.5.2 系统调试工具PROTEUS (19) 第4章课程设计总结 (20) 致谢 (21) 参考文献: (22)

1.1 设计目的 本次课程设计的主要概况是了解单片机控制15秒倒计时的过程与MAX7219基本工作原理及软件设计方法,是利用时钟芯片和定时计数器的原理将倒计时过程显示在MAX7219芯片驱动的八位共阴LED数码管上;最后应用Profassional软件设计,仿真基于AT89c51单片机的倒计时实验。以到达进一步熟悉和掌握单片机的结构及工作原理;掌握单片机的接口技术及相关外围芯片的外特性与控制方法;掌握以单片机核心的电路设计的基本方法和技术;通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术以及通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应开发打下基础的目的。 1.2 设计要求 STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计利用数码管显示的倒计时时间装置。一是扩展DS12C887时钟电路设计;二是利用MAX7219驱动LG3641AH(或同型号共阴极)数码管,显示倒计时剩余时间;三是在倒计时时间减为零以后,进行加1时间显示。 1.3 设计原理 在单片机获取DS12C887时钟芯片中的秒时间后,进行数据处理和驱动MAX7219芯片驱动数码管完成显示倒计时功能。

4位按键控制下的LED、数码管SOPC计数

4位按键控制下的LED、数码管SOPC计数 要求:在Altera公司的FPGA开发板上,利用Nios II CPU软核,实现使用按键进行LED、数码管及在Nios II IDE下Console栏里计数的方法。 实验仪器:SOPC核心板、USB-Blaster下载线、开发实验底板、电源、PC。 //将库函数包含进入 #include"system.h"//SOPC生成的系统库函数 #include //中断库函数 #include"alt_types.h"//类型定义库函数 #include //io端口库函数 #include"altera_avalon_pio_regs.h"//io端口寄存器库函数 #include"altera_avalon_timer_regs.h"//定时器端口寄存器库函数 #include #define TIMER_BASE 0x00011000 #define PIO_KEY_BASE 0x00011020 #define PIO_HIGH_BASE 0x00011030 #define PIO_LOW_BASE 0x00011050 #define PIO_LED_BASE 0x00011040 #define KEY *(alt_u8 *)PIO_KEY_BASE //将按键接口寄存器的按键值取得 //计数函数 static void counter_add(alt_u8 cnt) { IOWR(TIMER_BASE,0,0); if (cnt>= 0x63)//当计数到99 进行清零 cnt= 0x00; else//当没有计数到99 将秒针加1 cnt = cnt+ 1; } //清零函数 static void counter_reset(alt_u8 cnt) {

基于51单片机的简易计算器制作

基于51单片机的简易计算器制作专业:电气信息班级:11级电类一班 姓名:王康胡松勇 时间:2012年7月12日 一:设计任务 本系统选用AT89C52单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LED 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LED上提示八个0;当除数为0时,计算器会在LED上会提示八个负号。 设计要求:分别对键盘输入检测模块;LED显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 二.硬件设计 单片机最小系统 CPU:A T89C52 显示模块:两个4位7段共阴极数码管 输入模块:4*4矩阵键盘 1.电路图

电路图说明 本电路图采用AT89C52作为中处理器,以4*4矩阵键盘扫描输入,用两个74HC573(锁存器)控制分别控制数码管的位于段,并以动态显示的方式显示键盘输入结果及运算结果。为编程方便,以一个一位共阴极数码管显示负号。 三,程序设计 #include #define Lint long int #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; //锁存器段选sbit wela=P2^7; sbit display_g=P2^0; //负号段选 sbit display_w=P2^1; //负号位选uchar code table[]={0x3f,0x06,0x5b,0x4f, //0,1,2,3

C51单片机定时器及数码管控制实验报告

理工大学信息工程与自动化学院学生实验报告 (201 — 201学年第1 学期) 课程名称:单片机技术

一、实验目的 1.掌握定时器T0、T1 的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。 2.掌握LED 数码管动态显示程序设计方法。 二、实验原理 1.89C51 单片机有五个中断源(89C52 有六个),分别是外部中断请求0、外部中断请求1、定时器/计数器0 溢出中断请求、定时器/计数器0 溢出中断请求及串行口中断请求。每个中断源都对应一个中断请求位,它们设置在特殊功能寄存器TCON 和SCON 中。当中断源请求中断时,相应标志分别由TCON 和SCON 的相应位来锁寄。五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套。在

同一优先级别中,靠部的查询逻辑来确定响应顺序。不同的中断源有不同的中断矢量地址。 中断的控制用四个特殊功能寄存器IE、IP、TCON (用六位)和SCON(用二位),分别用于控制中断的类型、中断的开/关和各种中断源的优先级别。中断程序由中断控制程序(主程序)和中断服务程序两部分组成: 1)中断控制程序用于实现对中断的控制; 2)中断服务程序用于完成中断源所要求的中断处理的各种操作。 C51 的中断函数必须通过interrupt m 进行修饰。在C51 程序设计中,当函数定义时用了interrupt m 修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按MCS-51 系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m 的取值为0~31,对应的中断情况如下: 0——外部中断0 1——定时/计数器T0 2——外部中断1 3——定时/计数器T1 4——串行口中断 5——定时/计数器T2 其它值预留。 89C51 单片机设置了两个可编程的16 位定时器T0 和T1,通过编程,可以设定为定时器和外部计数方式。T1 还可以作为其串行口的波特率发生器。

0-99手动计数器的设计要点

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 第1章绪论 1.1 计数器介绍 本设计是根据我们所学习的单片机课程,按照课程要求进行的课程设计。单片机技术是一个不可或缺的技术,尤其是对于我们电气专业来说它是我们必须要掌握的技能之一,使我们未来工作和生活的根本。现在的社会是一个信息科技高速发展的社会,也是一个电子技术和微机计算机迅速发展的时代,单片机的档次和水平在不断的提高,其应用的领域和范围也越来越广,成为现代电子系统中最重要的智能化核心部分。 随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。 现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。计数器的应用范围也遍布印刷、纺织、印染、针织、电缆、电讯、军工、轻工、机械、开关、断路器、矿山、实行多班制的纺织行业的织布机、织带机、制线、制带、造纸、制革、薄膜、高压开关电器产品、试验设备,印刷设备、短路器、医疗、纺织、机械、仓库和码头的货运、行人及车辆过往的数量计数、冶金、食品、国防、包装、配料、石油、化工、发电、机床、仪表、自动化控制等行业。 1.2 本次设计的要求 1) 上电时,数码管显示为00。 2) 利用单片机来制作一个手动计数器,在单片机的管脚上接一个轻触开关,作为手动计数的按钮,用单片机的I/O口接数码管,作为计数器,进行加计数显示。 3) 计数器计数到99后,再按计数按钮,则数码管从00重新开始计数。 1.3 本次设计的目的 1) 学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。 2) 掌握汇编语言程序设计方法。 3) 培养实践技能,提高分析和解决实际问题的能力。

8位数码管动态显示电路设计.

电子课程设计 — 8位数码管动态显示电路设计 学院:电子信息工程学院 专业、班级: 姓名: 学号: 指导老师: 2014年12月

目录 一、设计任务与要求 (3) 二、总体框图 (3) 三、选择器件 (3) 四、功能模块 (9) 五、总体设计电路图 (10) 六、心得体会 (12)

8位数码管动态显示电路设计 一、设计任务与要求 1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。 2. 要求在某一时刻,仅有一个LED 数码管发光。 3. 该数码管发光一段时间后,下一个LED 发光,这样8只数码管循环发光。 4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。 5、研究循环地址码发生器的时钟频率和显示闪烁的关系。 二、总体框图 设计的总体框图如图2-1所示。 图2-1总体框图 三、选择器件 1、数码管 数码管是一种由发光二极管组成的断码型显示器件,如图1所示。 U13 DCD_HEX 图1 数码管 数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出 不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个 74LS161计数器 74LS138译码 器 数码管

LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。 2、非门 非门又称为反相器,是实现逻辑非运算的逻辑电路。非门有输入和输出两个端,电路符号如图2所示,其输出端的圆圈代表反相的意思,当其输入端为高电平时输出端为低电平,当其输入端为低电平时输出端为高电平。也就是说,输入端和输出端的电平状态总是反相的。其真值表如表1所示。 图2 非门 表1 真值表 输入输出 A Y 0 1 1 0 3、5V电源 5V VCC电源如图3所示。 图3 5V电源

设计一个四位二进制计数器

1、要求:设计一个四位二进制计数器,将计数结果由数码管显示,显示结果为十进制数。数码管选通为低电平有效,段码为高电平有效。 分析:VHDL 描述包含五部分:计数器、将四位二进制数拆分成十进制数的个位和十位、二选一的数据选择器、七段译码、数码管选通控制信号 线定义为信号 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity counter3 is Port ( clk:in STD_LOGIC; clk1 : in STD_LOGIC; clr : in STD_LOGIC; en : in STD_LOGIC; co : out STD_LOGIC; scanout:out std_logic_vector(1 downto 0); ledout:out std_logic_vector(6 downto 0)); end counter3; architecture Behavioral of counter3 is signal cnt:std_logic_vector(3 downto 0); signal cnt1:std_logic_vector(3 downto 0); signal cnt2:std_logic_vector(3 downto 0); signal hex:std_logic_vector(3 downto 0); signal scan:std_logic_vector(1 downto 0); en clr

基于51单片机的数字计算器的设计

《单片机技术及其应用》课程设计报告 专业:通信工程 班级:09312班 姓名:某某某 学号:09031069 指导教师: 二0一二年六月十八日

目录 1设计目的 (1) 2 设计题目描述与要求 (1) 3 设计过程 (2) 4硬件总体方案及说明 (6) 5 软件总体方案及设计流程 (9) 6 调试与仿真 (13) 7 心得体会 (14) 8 指导老师意见 (15) 9 参考文献 (16) 附录一 (16) 附录二 (21)

基于51单片机的数字计算器的设计 1设计目的 简易计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用和单片机完整程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。单片机课程设计既巩固了课本学到的理论,还学到了单片机硬件电路和程序设计,简易计算器课程设计通过自己动手用计算机电路设计软件,编写和调试,最后仿真,来加深对单片机的认识,充分发挥我们的个人创新和动手能力,并提高我们对单片机的兴趣,同时学习查阅资料、参考资料的方法。 本设计是基于51系列的单片机进行的简易计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED 上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件选择AT89C51单片机和74ls164,输入用4×4矩阵键盘。显示用5位7段共阴极LED静态显示。软件从分析计算器功能、流程图设计,再到程序的编写进行系统设计。选用编译效率最高的Keil软件进行编程,并用proteus仿真。 2 设计题目描述与要求 基于AT89C51数字计算器设计的基本要求与基本思路: (1)扩展4*4键盘,其中10个数字,5个功能键,1个清零 (2)使用五位数码管接口电路

实验六 使用单片机定时器的数码管动态显示驱动实验

实验六使用单片机定时器的数码管动态显示驱动实验 一、实验目的 ●掌握数码管动态驱动方式的工作原理; ●掌握单片机定时器中断服务程序的编写方法; ●掌握基于单片机定时器中断调度方式的数码管动态显示驱动程序的编写方法。二、实验要求 ●单片机通过P1 端口连接数码管组的字型码(段码)控制端; ●单片机通过P0 端口连接数码管组的位置码(位码)控制端; ●根据电路连接方式和数码管驱动方式,设计显示0~9,A~F 的字型码; ●设置8 个字节的显示缓冲区,通过数码管动态显示驱动的方法,将显示缓冲区内容 显示在8 位数码管上。 三、实验设备 ●硬件:PC 机,nKDE-51 单片机实验教学系统; ●软件:Keil C51 集成开发环境,FlashMagic 单片机程序烧写软件。 四、实验原理 1. MCS-51 定时器/计数器的结构及功能 MCS-51 单片机内部提供两个16 位定时器/计数器,分别是定时器/计数器0(T0)和定时器/计数器1(T1)。虽然它们被称为定时器/计数器,但本质上它们都计数器。当选择单片机的机器周期作为计数对象时,由于机器周期出现的频率和晶振频率之间的关系是固定的,对固定频率的信号进行计数实际上就是定时器;当对通过T0 引脚(P3.4)或T1 引脚(P3.5)引入的外部脉冲作为计数对象时,它们是计数器。 图6-1 MCS-51 单片机定时器/计数器0、1 结构框图 定时器/计数器的基本结构如图6-1 所示。它是由6 个特殊功能寄存器组成的。其中,定时器T0 由TH0 和TL0 两个8 位计数器组成;定时器T1 由TH1 和TL1 两个8 位计数器组成。 当它们用做定时器时,其计数脉冲来源于晶振时钟输出信号的12 分频,即每个机器周期使计数器加1,所以说定时器本质上是针对机器周期的计数器,一旦单片机的晶振频率选定,机器周期也就随之确定,从而使对机器周期的计数转换为对确定时间的计数。例如,当单片机晶振频率选择为12MHz 时,一个机器周期就是1μs,即计数器对机器周期每计数一次,就是1μs,具体的定时时长可通过简单的换算变换成相应的计数值。 当它们用做计数器时,只要T0 或T1 的引脚上有一个从1 到0 的负跳变,相应的计数器就加1。由于单片机在每个机器周期的S5P2状态对T0 及T1 引脚的电平进行一次采样,因此单片机需要用两个机器周期来识别一次负跳变,所以单片机计数器的最高计数频率为晶

单片机数码管计数器

MAIN: NOP CALL DISPLAY0;LED动态显示刷新 CALL DELAY100 JNB B_T1IF,MAIN;每50ms处理一次。 ;====================================== CLR B_T1IF MOV A,TIMES_50MS CJNE A,#20,NO_1S JMP YES_1S; 满20次即为一秒钟 ;===================================== NO_1S: MOV A,TIMES_50MS CJNE A,#1,NO_1S_END ;TIMES_50MS不为1,返回 ;当TIMES_50MS为1时,判断当前所选档位是否过高或者过低 ;若计数器BUF大于100,则说明满1秒时必然大于2000,则提前调高频率衰减档位, ;并清零各计数值,重新在新档位测量 MOV A,COUNTER_BUF_H JNZ NO_1S_1;计数器高位不为0,说明超100 MOV A,COUNTER_BUF_L CJNE A,#100,NO_1S_0 NO_1S_0:JC NO_1S_LOW;计数器BUF小于100,继续跳转到NO_1S_LOW判断是否需要调低档位 NO_1S_1: MOV A,FREQ_LOSS;超量程,判断当前频率衰减档位,若小于3则加一档 CJNE A,#3,NO_1S_2 JMP NO_1S_END NO_1S_2:JC NO_1S_3 MOV A,#3 MOV FREQ_LOSS,A;档位大于3,则修正为3 NO_1S_3: INC FREQ_LOSS;频率衰减档位加1 MOV A,FREQ_LOSS CJNE A,#1,NO_1S_4 SETB P153_B;FREQ_LOSS=1 CLR P153_A JMP NO_1S_20 NO_1S_4:CJNE A,#2,NO_1S_5 CLR P153_B;FREQ_LOSS=2 SETB P153_A

实验四八位七段数码管动态显示电路的设计

实验四八位七段数码管 动态显示电路的设计 Document serial number【KK89K-LLS98YT-SS8CB-SSUT-SST108】

八位七段数码管动态显示电路的设计 一、实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、学习VHDL的CASE语句及多层次设计方法。 二、实验原理 七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。其单个静态数码管如下图4-4-1所示。 图4-1 静态七段数码管 由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相么。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。 三、实验内容 本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。在实验中时,数字时钟选择1024HZ作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。 四、实验步骤 1、打开QUARTUSII软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。 3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光盘中 提供的示例程序。 4、编写完VHDL程序后,保存起来。方法同实验一。 5、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。 6、编译仿真无误后,根据用户自己的要求进行管脚分配。分配完成后,再进行全编译 一次,以使管脚分配生效。 7、根据实验内容用实验导线将上面管脚分配的FPGA管脚与对应的模块连接起来。 如果是调用的本书提供的VHDL代码,则实验连线如下: CLK:FPGA时钟信号,接数字时钟CLOCK3,并将这组时钟设为1024HZ。

基于51单片机的红外数码管计算器

基于51单片机的数码管应用 一、设计要求 1、基本要求 (1)焊接一个单片机最小系统,接通电源后,至少能在四位数码管上同时显示四个非0的相同的数字。 (2)至少四位数码管能动态显示出[0,1,2,3],达到一定的效果。 (3)能用按键改变显示的数字。 2、发挥部分 (1)增加数码管至8位。 (2)增加4*4矩阵按键,实现简易的8位计算器功能。 (3)增加红外接收模块,实现遥控功能。 (4)增加蜂鸣器,当有按键按下时发声。 (5)利用遥控器实现倒计时功能。

二、系统硬件配置 本系统采用STC89C52RC单片机作为微控制器,分为6个模块(如下图所示):按键电路,红外感应电路,蜂鸣器响应电路,数码管显示电路,晶振以及复位电路。 下面是电路图部分 :

三、系统软件设计 1、主程序模块 主程序需要调用5 个子程序,各模块程序功能如下: ●数码管显示程序:向数码的显示送数,控制系统的显示部分。 ●按键消抖程序:采用检验连续四次按键状态的方式软件消抖。 ●矩阵按键扫描程序:每4*4 ms扫描一次按键。 ●中断设定程序:实现定时功能。 ●数值计算程序:实现8位计算四则运算功能。 主程序流程见图如下:

四、系统源代码 Main.c部分代码如下: #include sbit BUZZ = P3^3; sbit KEY_IN_1 = P2^3; sbit KEY_IN_2 = P2^2; sbit KEY_IN_3 = P2^1; sbit KEY_IN_4 = P2^0; sbit KEY_OUT_1 = P2^4; sbit KEY_OUT_2 = P2^5; sbit KEY_OUT_3 = P2^6; sbit KEY_OUT_4 = P2^7; unsigned char code LedChar[]={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E }; unsigned char code KeyCodeMap[4][4]={ {0x31,0x32,0x33,0x25}, {0x34,0x35,0x36,0x26}, {0x37,0x38,0x39,0x27}, {0x1B,0x30,0x0D,0x28} }; unsigned char KeySta[4][4]={ {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1} };

C51单片机定时器及数码管控制实验报告

昆明理工大学信息工程与自动化学院学生实验报告 ( 201 —201学年第1 学期) 课程名称:单片机技术 开课实验室: 年月日

一、实验目的 1. 掌握定时器 T0、T1 的方式选择与编程方法,了解中断服务程序的设计方法, 学会实时程序的调试技巧。 2. 掌握 LED 数码管动态显示程序设计方法。 二、实验原理 1.89C51 单片机有五个中断源(89C52 有六个),分别就是外部中断请求 0、外部中断请求 1、定时器/计数器 0 溢出中断请求、定时器/计数器 0 溢出中断请求及串行口中断请求。每个中断源都对应一个中断请求位,它们设置在特殊功能寄存器 TCON 与 SCON 中。当中断源请求中断时,相应标志分别由 TCON 与SCON 的相应位来锁寄。五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套。在同一优先级别中,靠内部的查询逻辑来确定响应顺序。不同的中断源有不同的中断矢量地址。 中断的控制用四个特殊功能寄存器 IE、IP、TCON (用六位)与 SCON(用二位), 分别用于控制中断的类型、中断的开/关与各种中断源的优先级别。中断程序由中断控制程序(主程序)与中断服务程序两部分组成: 1)中断控制程序用于实现对中断的控制; 2)中断服务程序用于完成中断源所要求的中断处理的各种操作。 C51 的中断函数必须通过 interrupt m 进行修饰。在 C51 程序设计中,当函数定义时用了 interrupt m 修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段与尾段,并按 MCS-51 系统中断的处理方式自动把它安排在 程序存储器中的相应位置。 在该修饰符中,m 的取值为 0~31,对应的中断情况如下: 0——外部中断 0 1——定时/计数器 T0 2——外部中断 1 3——定时/计数器 T1 4——串行口中断 5——定时/计数器 T2 其它值预留。 89C51 单片机内设置了两个可编程的 16 位定时器 T0 与 T1,通过编程,可以设定为定时器与外部计数方式。T1 还可以作为其串行口的波特率发生器。 2. 定时器 T0 由特殊功能寄存器 TL0 与 TH0 构成,定时器 T1 由 TH1 与TL1 构成, 特殊功能寄存器 TMOD 控制定时器的工作方式,TCON 控制其运行。定时器的中断由中断允许寄存器 IE,中断优先权寄存器 IP 中的相应位进行控制。定时器 T0 的中断入口地址为 000BH,T1 的中断入口地址为 001BH。 定时器的编程包括: 1) 置工作方式。 2) 置计数初值。

2位数码管显示00-99计数器

2位数码管显示00-99 计数器样图: C源码: #include #define out P0 unsigned char disp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit SW2=P1^0; sbit SWXS=P3^0; sbit GWXS=P3^1; unsigned char buff; unsigned int m; void delayms(unsigned int k){ unsigned int i,j; for(i=k;i>0;i--) for(j=141;j>0;j--); } bit key_test(){ bit temp; if(!SW2){

delayms(10); if(!SW2){ delayms(10); while(!SW2); temp=1; } } else temp=0; return temp; } void display(unsigned dat){ unsigned char sw,gw; sw=dat/10%10; gw=dat%10; out=0x00; SWXS=0; GWXS=1; out = disp[sw]; delayms(5); SWXS=1; GWXS=0; out=disp[gw]; delayms(5); } main(){ while(1){ if(key_test()){ buff++; if(buff>=100){ buff=0; } } display(buff); } } 原件: AT89C52 X 1 7SEG-MPX2-CC X 1 BUTTON X 1 RES (10K) X 3 RESPACK-8 (10k) x 1

数码管计数器-报告

目录 一、题目名称 (2) 二、内容摘要 (2) 三、设计任务与要求 (2) 四、系统方案,画出系统框图..................................................................................................... - 2 - 4.1 方案比较 ...................................................................................................................................... - 2 - 4.2方案论证........................................................................................................................................ - 3 - 4.3方案选择........................................................................................................................................ - 3 - 五、硬件设计,画出程序流程图 5.1 一般数字式计数器的原理....................................................................................................... - 4 - 5.2计数器方案的概述 ..................................................................................................................... - 4 - 5.3 单片机........................................................................................................................................... - 5 - 5.3.1 89S51一般概述 ..................................................................................................................... - 5 - 5.3.2引脚功能说明.......................................................................................................................... - 5 - 5.4 分频电路 ...................................................................................................................................... - 6 - 5.5 显示电路 ...................................................................................................................................... - 6 - 5.6硬件设计简介和系统整体原理图 .......................................................................................... - 7 - 5.6.1 硬件设计简介......................................................................................................................... - 7 - 5.6.2 系统整体原理图 .................................................................................................................... - 8 - 六、软件设计,画出程序流程图 ............................................................................................... - 8 - 6.1 测频软件实现原理 .................................................................................................................... - 8 - 6.2软件流程图 ................................................................................................................................... - 8 - 6.3程序设计...................................................................................................................................... - 11 - 七、系统调试........................................................................................................................................ - 11 - 7.1使用的主要仪器和仪表 ........................................................................................................ - 11 - 7.2调试电路的方法和技巧 .......................................................................................................... - 11 - 7.3调试中出现的故障、原因及排除方法 ............................................................................... - 12 - 八、设计成果........................................................................................................................................ - 12 - 九、结束语 ............................................................................................................................................. - 13 - 1.结论 .................................................................................................................................................. - 13 - 2.体会 .................................................................................................................................................. - 13 - 参考文献...................................................................................................................................................... - 14 -

相关主题
文本预览
相关文档 最新文档