当前位置:文档之家› 如何实现数码管3位计数器

如何实现数码管3位计数器

如何实现数码管3位计数器

如何实现数码管3位计数器

利用两个定时器来实现 3 位数码管同时显示计时器,即从0- 999 范围

的计时#include//共阴极数码管编码范围unsigned char code table[10]

={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0xef };unsigned char first=0;unsigned char second=0;unsigned char third=0;unsigned int number=0;unsigned char t=0;void Delay(){ unsigned char j; unsigned char i; for(i=10;

i>0; i--) for(j=110; j>0; j--);}void main(){ TMOD=0x11; //设置两个定时器T0,T1

的工作方式: 使用16 位寄存器的方式1 EA=1; //打开全局中断ET0=1; // 打开

定时器T0 的中断ET1=1; TR0=1; // 启动定时器T0 TR1=1; TH0=(65536-50000)% 256; TL0=(65536-50000)%256; TH1=(65536-50000)%256; TL1=(65536- 50000)%256; while(1) { if(t==20) { t=0; number++; first=number/100; second=(number-first*100)/10; third=(number- first*100)%10; } }}void TimerLED0() interrupt 1 using 1{ TH0=(65536- 50000)%256; TL0=(65536-50000)%256; t++;}void TimerLED1() interrupt 3 using 2{ TH1=(65536-10000)%256; TL1=(65536- 10000)%256;P2=0xfe;P0=table[first];Delay();P2=0xfd;P0=table[second];Delay();P2 =0xfb;P0=table[third];Delay();}tips:感谢大家的阅读,本文由我司收集整编。仅

供参阅!

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

[转]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引脚图管脚功能表:

实验三 数码管显示实验

实验十九数码管显示实验 一、实验目的 1、了解数码管的显示原理; 2、掌握数码管显示的编程方法。 二、实验内容 1、编写数码管显示程序,循环显示0-F字符 三、实验设备 1、硬件: JX44B0实验板; PC机; JTAG仿真器; 2、软件: PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2; Multi-ICE V2.2.5(Build1319); 四、基础知识 1、掌握在ADS集成开发环境中编写和调试程序的基本过程。 2、了解ARM 应用程序的框架结构; 3、了解数码管的显示原理; 五、实验说明 1、LED显示原理 发光二极管数码显示器简称LED显示器。LED显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,目前广泛应用于各类电子设备之中。 7段LED由7个发光二极管按“日”字排列。所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。一般共阴极可以不需要外接电阻。 其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g端加上高电压,其它加低电压。这样如果按照dp、g、fe、d、c、b、a的顺序排列的话对应的码段是:6DH。其它的字符同理可以得到。

2、数码管显示驱动 数码管的显示一般有动态显示和静态显示两大类,另外按照驱动方式又分串行驱动和并行驱动两种方式。串行驱动主要是提供串-并转换,减少控制线数量;并行驱动对每一个段提供单独的驱动,电路相对简单。这方面参看数字电路相关内容。 下面主要介绍静态显示和动态显示: 1)静态显示: LED数码管采用静态接口时,共阴极或共阳极节点连接在一起地或者接高电平。每个显示位的段选线与一个8位并行口线相连,只要在显示位上的段选位保持段码电平不变,则该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O口,也可以采用串行驱动。相应的电路如下: 很明显采用静态显示方式要求有较多的控制端(并行)或较复杂的电路(串行)。但是在设计中对器件的要求低。

数码管显示程序注释

/***************************************************** (本程序基于本人单片机实际电路开发,只需改动个别地方,即可实现) 数码管显示其实就是利用视觉停留来显示 实际上它是一个接着一个亮,但人以为是一起亮的 当然它也可以全部一起亮(不同数字)但物理连接麻烦得多,成本高,所以一般不采用(个人理解) ***************************************************/ #include #define unint unsigned int #define unchar unsigned char /***************************************************** 位声明 ***************************************************/ sbit guan1=P2^4; //位选:第1个数码管io sbit guan2=P2^5; //位选:第2个数码管io sbit guan3=P2^6; //位选:第3个数码管io sbit guan4=P2^7; //位选:第4个数码管io unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管编码 /***************************************************** 函数功能:延时 ***************************************************/ void delay(unsigned int i) { unsigned char j; for(;i>0;i--) for(j=110;j>0;j--); } void display(unint num)//带参数显示函数 { unchar ge,shi,bai,qian,sh,fe; //存储个,十,百,千位的空间 sh=num/100; //将num数的前两位分离并存储在sh fe=num%100;//将num数的后两位分离并存储在fe guan1=0;//P2=0Xbf;//11101111 第一个数码管亮位选开 qian=sh/10; //分离千位 P0=table[qian];//段选 delay(60); //延时 guan1=1; //位选关 guan2=0;//P2=0X7f;//11011111 bai=sh%10; //分离百位 P0=table[bai]; //段选

基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真

单片机原理及接口技术 课程设计报告 设计题目:计算器设计 学号:100230205 姓名:费博文 指导教师:张扬 信息与电气工程学院 二零一三年七月

计算器设计 单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。 数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。 注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。字数不要太多,300-500字。 另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。 1. 设计任务 结合实际情况,基于AT89C51单片机设计一个计算器。该系统应满足的功能要求为: (1) 实现简单的四位十进制数字的四则运算; (2) 按键输入数字,运算法则; (3) LED数码管移位显示每次输入的数据和运算结果; (4) 当运算结果超出范围时实现报错。 主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。 注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。

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,关闭段选、位选{

6位7段LED数码管显示

目录 1. 设计目的与要求..................................................... - 1 - 1.1 设计目的...................................................... - 1 - 1.2 设计环境...................................................... - 1 - 1.3 设计要求...................................................... - 1 - 2. 设计的方案与基本原理............................................... - 2 - 2.1 6 位 8 段数码管工作原理....................................... - 2 - 2.2 实验箱上 SPCE061A控制 6 位 8 段数码管的显示................... - 3 - 2.3 动态显示原理.................................................. - 4 - 2.4 unSP IDE2.0.0 简介............................................ - 6 - 2.5 系统硬件连接.................................................. - 7 - 3. 程序设计........................................................... - 8 - 3.1主程序......................................................... - 8 - 3.2 中断服务程序.................................................. - 9 - 4.调试............................................................... - 12 - 4.1 实验步骤..................................................... - 12 - 4.2 调试结果..................................................... - 12 - 5.总结............................................................... - 14 - 6.参考资料........................................................... - 15 - 附录设计程序汇总.................................................... - 16 -

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

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

数码管显示程序(汇编语言)

实验三数码显示 一、实验目的 了解LED数码管动态显示的工作原理及编程方法。 二、实验内容 编制程序,使数码管显示“DJ--88”字样。 三、实验程序框图 四、实验步骤 联机模式: (1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM

文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)数码管显示“DJ--88”字样。 脱机模式: 1、在P.态下,按SCAL键,输入2DF0,按EXEC键。 2、数码管显示“DJ--88”字样。 五、实验程序清单 CODE SEGMENT ;S6.ASM display "DJ--88" ASSUME CS:CODE ORG 2DF0H START: JMP START0 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB ?,?,?,?,?,? data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0 c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1 CON1: CALL DISP JMP CON1 DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL MOV CL,0DFH ;显示子程序 ,5ms MOV BX,OFFSET BUF DIS1: MOV AL,[BX] MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB

模拟计算器数字输入及显示课程设计

摘要 本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。 显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。 按键部分:采用4*4键盘。采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。 执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。注:结果不能超出65535。(具体操作见后面仿真图)

目录 1 概述 1.1MCS-51单片机在自动化仪表中的作用 (3) 1.2掌握单片机仿真软件Proteus的使用方法 (3) 1.3设计方法 (3) 1.4基本功能 (4) 2 系统总体方案及硬件设计 2.1计算器总体思想 (5) 2.2硬件的选择与连接 (6) 3 软件设计 3.1显示程序设计 (7) 3.2键盘识别程序设计 (8) 3.3运算程序设计 (10) 3.4风鸣器程序设计 (10) 4 Proteus软件仿真 (12) 5课程设计体会 (16) 参考文献 (18) 附1:源程序代码 (19) 附2:计算器模拟系统电路图 (31)

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电源

基于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} };

单片机数码管计数器

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

51单片机并行口驱动LED数码管显示电路及程序

51单片机并行口驱动LED数码管显示电路及程序 介绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。 1 硬件电路 多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法,图1所示是该电路的硬件原理图。其中,74LS138是3线-8线译码器,74LS164是8位并行输出门控串行输入移位寄存器,LED采用L05F型共阴极数码管。 显示时,其显示数据以串行方式从89C52的P12口输出送往移位寄存器74LS164的A、B 端,然后将变成的并行数据从输出端Q0~Q7输出,以控制开关管WT1~WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1~LED8。位选码由89C52的P14~P16口输出并经译码器74LS138送往开关管Y1~Y8的基极,以对数码管LED1~LED8进行位选控制,这样,8个数码管便以100ms的时间间隔轮流显示。由于人眼的残留效应,这8个数码管看上去几乎是同时显示。

<51单片机并行口驱动LED数码管显示电路> 2 软件编程 该系统的软件编程采用MCS-51系列单片机汇编语言完成,并把显示程序作为一个子程序,从而使主程序对其进行方便的调用。图2所示是其流程图。具体的程序代码如下:

<51单片机并行口驱动LED数码管显示程序>

数码管显示程序

数码管显示程序 一、程序X1 1、程序X1的功能:最右边的数码管显示“0” 2、程序: ORG 0 LJMP STR ORG 0100H STR: MOV P3, #0FEH ;送最低位有效的位码 MOV P0, #0C0H ;送“0”的段码“0C0H” SJMP STR END 二、程序X2: 用查表方式显示某个显示缓冲器中的数字 1、查表显示的预备知识 设从右到左各显示器对应的显示缓冲器为片内RAM79H~7EH

3、 实例: 例:已知(79H )= 0 7H , 查段码表在最右边的数码管显示79H 中的 “7”; 注:共阳极的段码表: TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH 若:(A )= 0XH 则数字“X ”对应的段码在段码表中的表地址 = TAB + X ORG 0 LJMP STR ORG 0100H ① 各显示器与显示缓冲器地址对应关系 显示缓冲器: 7EH 7DH 7CH 7BH 7AH 79H 对应显示 器: ② 显示缓冲器的值与显示数字的关系: 显示缓冲器中的值 对应段码表地址 显示的数字 0XH 表首址+OXH X

STR: MOV P3, #11111110B ;送最低位有效的位码 MOV 79H , #07H ;送要显示的数据到显示缓冲器 MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0) SJMP STR TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH END 例2:. 查段码表在最右边的数码管循环显示“0”~“F” ORG 0 LJMP STR ORG 0100H STR: MOV P3, #11111110B ;送最低位有效的位码 LP0: MOV 79H , #0H ;送要显示的数据的初值到显示缓冲器MOV R3 , #6 ; 送要显示的数据的个数 LP: MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTR MOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0)

数字电路设计——加法计算器

姓名罗银贵班级1208105 学号1120810501 实验日期节次教师签字成绩 加法计算器 1.实验目的 通过对加法计算器的设计,掌握组合逻辑电路、时序逻辑电路的分析和设计方法; 了解及掌握中规模集成电路以及各个芯片的管脚图及结构图。 掌握全加器、计数器等芯片的功能及实现方法; 锻炼动手实践能力,提高自身设计能力。 2.总体设计方案或技术路线 设计一个简单的加法计算器,能实现简单的加法运算,计算结果为0—16的和数,并输出到数码管。加法运算的实现要求:用四个开关代表四位二进制数,操纵开关,输入二进制数码,则在相应的数码管上显示出相应的十进制数,即代表被加数;用同样的方法在另外的四个开关上输入二进制数,则在相应的数码管上显示相应的十进制数,即代表加数;当加数与被加数都输入后,在另外的两个数码管上出现两数的和。

3.实验电路图 4.仪器设备名称、型号和技术指标 直流稳压电源、试验箱、万用表; 2个74LS00D、1个74LS283D、1个74LS04D、2个74LS08D、1个74LS20D; 单刀双掷开关9个、导线若干。

5.理论分析或仿真分析结果 开关9置0,闭合J1、J2、J3、J4相应开关输入被加数: 开关9置0,闭合J5、J6、J7、J8相应开关输入加数:

开关9置1,输入相应的被加数和加数,并求和,输出到另外两个数码管上: 6.详细实验步骤及实验测量数据记录 根据实验电路图连接好电路; 检查实验电路无误后,开关9置0; 闭合J1、J2、J3、J4相应开关输入被加数; 闭合J5、J6、J7、J8相应开关输入加数; 开关9置1,输出相应被加数与加数的和。

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

4位数计算器的设计

摘要 0 1 总体任务 (1) 1.1设计目的 (1) 1.2设计内容和要求 (1) 1.3 设计思路 (1) 2 设计原理分析 (2) 2.1 计算器的工作原理 (2) 2.1.1 计算器的工作流程 (2) 2.1.2 编程实现控制 (2) 2.1.3 功能拓展 (2) 2.2 单片机计算器的基本构成及原理 (2) 3硬件电路的设计 (4) 3.1系统硬件总电路构成及原理 (4) 3.2硬件电路的部分组成元器件的简介 (4) 3.2.1AT89C51单片机 (4) 3.2.2 八段LED数码管 (4) 3.2.3 矩阵键盘 (6) 3.3 元器件清单 (7) 3.4 电路原理图 (7) 4 系统程序的简单设计 (8) 4.1 程序方框图 (8) 4.2 计算器程序 (8) 5 系统的仿真调试 (15) 6 课程设计总结 (16) 参考文献 (17)

本文论述了单片机4位数加法计算器的设计,从对设计任务的分析到画电原理图到编程和最后的仿真调试,都进行了一个简单的描述。 在设计过程中,采用Keil软件编写源程序,用Protues 7 professional的ISIS 7 professional软件画电原理图并且仿真,通过对编程时的编译和对仿真结果现象的观察,不断地对源程序以及电原理图的修改,最后成功设计出了一个能够进行4位数加法运算的计算器。该计算器通过4×4的矩阵键盘输入数字及运算符,若运算结果超过4位十进制数,则显示为E;另外,也能进行减法、乘法以及除法的运算,在进行减法运算时,若运算结果小于零,则显示其绝对值;进行除法运算时,若除数等于零,则显示E。 关键词:计算器;单片机;数码管;矩阵键盘

数码管2位计算器(报告)

两位计算器设计报告 一、实验任务: 1.利用单片机控制来制作一个按键计算器 2.开机时,显示“0000” 3.单片机能对按键进行识别并处理相对应的键 4.要能够计算两位数的加、减、乘、除。 5.单片机对计得的数值要能进行数码显示。 二、思路: 由于此计算器最重要的是软件部分,所以我们一开始先把程序编出来,然后用仿真软件进行仿真,在软件上仿真成功后,再在硬件上调试,这样避免在硬件上试程序时,损坏硬件。数码管选用共阴,因为不需要再接驱动。 三、硬件及仿真 1、系统板上硬件连线: 1).把“单片机系统“区域中的P1.0-P1.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4R1-R4端口上; 2). 把74LS164作为8位LED的段码输出口,用P3.3-3.6作为4位数码显示的位选;2、硬件制作过程: 我们一开始使用protel99绘制了PCB图,由于电路元件不多,连线也不是很复杂,于是采用了手工布线,手工布线比较工整,做出的PCB板也比较美观。其PCB板如图: 3、仿真: 在这次制作过程中,我们用软件对程序进行了改革,先在仿真软件上仿真、调试,成功后再把程序写入单片机中,进行显示。仿真软件原理图如下:

三、原理介绍及电路原理图: 利用AT89S51单片机来制作一个按键计数器,在AT89S51单片机的P1。0-1。 7处接上16个按键,作为0-9及等于号、清零、加、减、乘、除等的输入键。用单片机的P3.3-P2.6接一个共阴数码管,作为两位计算数的结果的显示。用单片机的P3.0、P3.1接一个74LS164来扩展并行IO口,作为数码管串行输入并行输出的移位寄存器,以节约单片机资源。将数从键盘读入后送到数码管后从低位至高位从右到左显示出来.电路原理图如下: 四、相关程序设计内容 1).行列式键盘输入及按键功能设定; 2).动态数码显示; 3).数码显示方式处理; 4).加、减、乘、除的计算及结果的显示; 五、程序的流程图如下:

数码管显示

数码管显示 第3讲数码管显示 第3讲数码管显示 一、数码管显示原理 我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。 其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。 数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。如下图。

二、点亮一个数码管 下面以七段共阴数码管为例讲述如何点亮一个数码管。 l 51系列单片机的P0口没有上拉电阻(其他端口有),所以如果直接接数码管的段选线,那么不能将其点亮。我们需要为其加上220欧姆的上拉电阻,注意,上拉电阻阻值不能过大。实验原理图如下。 其中,7SEG-COM-CAT-GRN为七段共阴数码管,显示为绿色。RES为电阻。查找电阻时,需要选中下面的Resistors,如下图。

数码管之简单加减法计算器--项目总结

数码管之简单加减法计算器--项目总结 总结人:徐冉1.项目使用到的硬件板载资源 1)单片机STC89C52RC作为系统的处理器 2)6位共阳极数码管作为计算器的数字显示器件 3)LCD1602液晶显示一些提示信息如计算时的符号(正/负) 4)4*4矩阵按键作为计算器的数字输入设备 5)8个贴片LED小灯,用于走马灯效果作为修饰 6)用到了单片机的内部资源定时器T0 2.项目的基本功能 通过程序的烧录,将工程中的hex文件烧录到Kingst-51开发板上。现象如下: 初始时 1)最右边的数码管上显示0,其余数码管不显示。 2)五个LED小灯像小火车一样循环跑着。 3)LCD1602液晶的左上角显示Symbol:字样,用于显示符号。 正数不显示,负数时将显示‘-’。 进行简单的加减法运算 当用户使用按键输入相应的数字时,会在数码管上显示。数字值将进行进位累加方式实现。数字键(k13 k1 ~ k3 k5 ~ k7 k9 ~ k11 0 ~ 9),k4加法功能键,k12减法功能键,k14 ESC清零键,k4和

k12是双功能键,即k4既是加法键也是计算键,k12既是减法键也是计算键。达到一键两用的效果。注意:用户在进行加法计算时可以随意计算,但在计算减法时第一步需要进行一次加法,然后才能进行减法运算。当计算结果是负数时会在数码管上显示相应的数值的绝对值,而在LCD1602液晶上显示‘-’。在计算期间LED 小灯会一直循环流动。这个计算器可以实现连加连减,计算十分方便,但没有处理小数。当计算完成时,或输入错误时可按k14进行清零操作。 3.项目的创新点 首先该项目使用了LED 的跑马灯效果进行了装饰,为了程序的简单且直观性程序使用了LCD1602进行运算时符号的显示。程序在计算上使用了一键两用的功能设计,这样设计方便快捷。 4.项目的设计流程 N Y 上电 LCD1602液晶 初始化 74HC138译码器初始化 配置定时器T0定时1ms 中断 Lcd1602初始化显示Symbol 主函数while 循环进行按键动作检测 1ms 到 按键扫描 LED 小灯&数码管扫描 结束

51单片机(四位数码管的显示)程序

51单片机(四位数码管的显示)程序 基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管上显示“P_ _ _”4个字符;2)等待按键,如按了任何一个键,则将这4个字符清除,改为显示“0000”4个字符(为数字的0)。 最佳答案 下面这个程序是4x4距阵键盘,LED数码管显示,一共可以到0-F显示,你可以稍微改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你! #include unsigned char code Dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1 ,0x86,0x8e}; //gongyang数码管0-F 代码 unsigned char k; //设置全局变量k 为键盘的键值 /************************************键盘延时函数****************************/ void key_delay(void) //延时函数 { int t; for(t=0;t<500;t++); } /************************************键盘扫描函数******************************/ void keyscan(void) //键盘扫描函数 { unsigned char a; P2 = 0xf0; //键盘初始化 if(P2!=0xf0) //有键按下? { key_delay(); //延时 if(P2!=0xf0) //确认真的有键按下? { P2 = 0xfe; //使行线P2.4为低电平,其余行为高电平 key_delay(); a = P2; //a作为缓存 switch (a) //开始执行行列扫描 { case 0xee:k=15;break; case 0xde:k=11;break; case 0xbe:k=7;break; case 0x7e:k=3;break; default:P2 = 0xfd; //使行线P2.5为低电平,其余行为高电平 a = P2; switch (a)

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