多位数码管动态扫描protues仿真

合集下载

四位数码管动态扫描

四位数码管动态扫描

数码管学习数码管控制要点:扫描时间不能太短,太短数码管会只显示8,太长就不能看到几个数码管同时亮的感觉,不同的需要会选不同的扫描时间。

举个实例:在proteus里仿真如下,连接电路图。

注意:在proteus里可以不连51的最小系统,但是必须双击单片机在Edit Component设置晶振为12M或其它的。

使用P1口注意其内部没有集成上拉电阻,必须外接10K电阻。

51程序:/*四位数码管动态显示*/#include<reg52.h>#define uint unsigned int#define uchar unsigned charuint num;uchar code table[]={ //共阴数码管0~90x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delayms(uint z){ //延时毫秒函数uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(uint date){ //四位数码管显示函数uint a,b,c,d;a=date/1000;P0=0x0E;P2=table[a];delayms(10);b=date%1000/100;P0=0x0d;P2=table[b];delayms(10);c=date%100/10;P0=0x0b;P2=table[c];delayms(10);d=date%10;P0=0x07;P2=table[d];delayms(10);}void main(){ //主函数while(1){if(num==10000)num=0;display(num++);}}。

(九):proteus仿真辅助数码管的学习

(九):proteus仿真辅助数码管的学习

(九):Proteus仿真辅助数码管的学习数码管又称LED数码管,它是由7段或8段LED构成的显示器件。

有共阴极和共阳极两种。

按其显示方式则可分为静态显示方式和动态显示方式两种。

关于数码管的其他知识请参阅相关参考文献,此处不作讨论。

下面我们将主要讲述数码管显示的仿真。

1.静态显示方式静态显示方式较为简单,编程十分容易,但占用IO口线较多。

实际使用中不太多见。

下面我们就通过一个简单的例子来予以说明。

例1.单片机的P2口接一个共阳极数码管,利用该数码管显示从0到9,然后返回到0的循环。

该例子较为简单,源文件如下图:源文件编辑结束以后,将其保存为汇编文件,然后进行编译/汇编,并产生相应的源代码,准备用于仿真。

下面我们编辑电路图。

此例的电路图十分简单,只需将一个共阳极数码管连到单片机的P2口即可。

数码管使用关键词“7Seg”进行查找。

可以看到有很多结果,注意区分共阳极“Anode”和共阴极“Cathode”即可。

这里我们选用较为简单的“7SEG-COM-ANODE”数码管。

最后得到的电路图如下图所示:绘制好电路图,我们就可以将前面所生成的源代码装入单片机,然后点击仿真按钮进行仿真。

可以看到数码管显示的数字按照我们程序中设定的要求进行变化着,仿真中的一个画面如上图所示。

2.动态显示方式动态显示方式是一种相对较为高级的显示方式,它编程较为复杂,但占用IO口线少,达到了节约硬件资源的目的,实际使用中较多利用。

下面我们也利用一个实例来详细说明这种显示方式。

例2.数码管动态显示方式。

单片机P2口接一个二位数码管的8位段码线,P3口的低二位接数码管的两位位码线。

程序使得二位数码管做0到99的循环显示。

该例源文件如下图所示:源文件编辑结束以后,将其保存为汇编文件,然后进行编译/汇编,并产生相应的源代码,准备用于仿真。

接下来我们绘制电路图。

此例电路图比较简单,如下图所示,但有几点需要注意:(1)单片机的IO口的驱动能力有限,所以此例我们选用了大功率晶体管驱动电路,即图中的两个NPN三极管,单片机通过控制它们的通断来达到控制位码的目的。

(整理)较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版)

(整理)较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版)

单片机课程设计题目动态数码管显示学院机电工程学院专业班级电子信息工程12-1班姓名组员指导教师张、王老师2015 年 5 月30 日课程设计量化评分标准目录一、概述 (1)1. 单片机简介 (1)2. Proteus简介 (2)3. 设计任务与要求 (3)二、硬件设计 (3)1. 单片机最小系统设计 (1)2. 数码管显示部分 (4)3. 数码管驱动部分 (5)三、软件设计 (6)1. 仿真原理图 (6)2. 仿真参数设置 (6)3. 仿真结果 (7)4. 程序流程图 (8)5. 程序代码.................................................... .9四、心得体会............................................... (11)五、参考文献 (12)精品文档一、概述1. 单片机简介如图1.1和图1.2分别为PDI P封装的AT89C52引脚图和实物图图1.1 引脚图图1.2 实物图AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

基于Proteus的单片机动态显示仿真设计

基于Proteus的单片机动态显示仿真设计

基于Proteus的单片机动态显示仿真设计摘要:本文以MCS-51单片机为例,介绍在Proteus中进行单片机的动态显示设计和仿真过程。

关键词:单片机;proteus动态显示;仿真单片机技术应用于各行各业,是一种实用的智能控制技术,单片机技术也是各大高校电类学生学习的主要专业课程,单片机应用技术所涉及的实践环节较多,且硬件投入较大,如果因为控制方案有误而进行相应的开发设计,会浪费较多的时间和经费。

Proteus仿真软件很好地解决了这些问题,它可以像Protel 一样绘制硬件原理图并实现硬件调试,再与Keil编程软件进行联调,实现对控制方案的验证。

尤其对于初学单片机的用户提供了极大的方便。

1 ProteusProteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。

它可以仿真、分析各种模拟器件和集成电路,该软件的特点是:1)实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路、数字电路仿真、单片机及其外围电路的仿真、各种虚拟仪器,如示波器等功能。

2)支持主流单片机系统的仿真。

3)提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

4)具有强大的原理图绘制功能。

Proteus软件的使用彻底改变了传统单片机学习和开发方式,初学者可以在没有实验硬件条件下进行仿真实验,开发者可以直接用Proteus进行电路设计和仿真运行程序,运行成功后再制作产品,缩短开发周期,节约开发成本。

下面笔者就以MCS-51单片机为例,介绍在Proteus中进行单片机的动态显示设计和仿真过程。

2 电路原理设计在MCS-51单片机用数码管显示信息时,由于每个数码管至少需要8个I/O口,如果需要多个数码管,则需要多个I/O口,而单片机I/O口是有限的。

实际应用中一般采用动态显示方式解决问题。

如何做呢?在编程时,需要输出段选和位选信号,位选信号选中其中一个数码管,然后输出段码,使该数码管显示所需要的内容,延时一段时间后,再选中另一个数码管,再输出对应的段码,高速交替,这就是动态显示。

基于Proteus的数码管动态显示与计数设计

基于Proteus的数码管动态显示与计数设计

www�ele169�com | 73应用技术0 引言随着社会的不断进步与发展,不同类型与性能的数码管相继发明出现。

数码管可以显示数字与相应信息,其亮度高、控制简单、性能稳定、呈现速度即时等诸多优点,使得数码管在电子设计应用中得到广泛应用。

本文运用Proteus 仿真软件,利用汇编语言进行编码,将程序写入并编译仿真实现数码管的动态显示与设计。

1 Proteus 简介Proteus 是一款高性能的EDA 工具软件,配置有完善的电子设计开发环境,器件库齐全,功能形象。

可进行原理图设计、搭建、仿真,PCB 设计等多功能操作。

支持C51、ARM、DSP 诸多处理器。

在软件中进行虚拟仿真,力求实证现实;在Proteus 软件中可直接在原理图搭建完成后,进行编译输出得到结果,进行实时电路分析与实物仿真。

Proteus 软件大大缩短了设计时间,降低器件损耗的开发成本,途径灵活,仿真结果准确,在实际开发与教学中得到广泛应用。

2 数码管动态显示与计数工作原理■2.1 定时器结构与原理定时器T0/T1的结构如图1所示,其中振荡器经12分频后作为定时器的时钟脉冲,T1引脚为外部计数脉冲输入端,通过开关进行选择。

反相器,或门,与门共同构成启/停控制信号。

TH 和TL 为加1计数器,TF 为中断标志。

每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF 将被置1。

计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD 和TCON。

■2.2 脉冲产生利用单片机U1 P3.0口进行脉冲的输出,通过定时器模式选择与初值的设定,完成定时器定时功能的实现。

运用定时器进行端口定时控制,实现每1ms 高低电平变换。

就可以实现一个占空比为50%的矩形脉冲输出。

图1 定时器T0(T1)结构图■2.3 脉冲计数利用单片机U1 P3.0口输出的脉冲连接到单片机U2的中断INT0口P3.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数,再通过数码管显示出数字信息。

使用Proteus 建立4位LED动态扫描显示

使用Proteus 建立4位LED动态扫描显示

使用Proteus 建立4位LED动态扫描显示1.关键器件选型Pic18f452的特点:高灌/拉电流:25mA/25mA;3个外部中断引脚,定时器0模块:具有8位可编程预分频器的8/16位定时器/计数器;定时器1模块:16位定时器/计数器;定时器2模块:具有8位周期寄存器的8位定时器/计数器(时基为脉宽调制);定时器3模块:16位定时器/计数器;辅助振荡器时钟选项:定时器1/定时器3;2个捕捉/比较/PWM模块。

CCP引脚,可以配置为:捕捉输入:16位捕捉模块,最大分辨率是6.25ns(TCY/16);16位比较模块,最大分辨率为100ns(TCY);PWM输出:最大PWM是1~10位。

最大PWM频率:当8位分辨率为156kHz,10位分辨率为39kHz;主同步串口(MSSP)模块;2种运作模式:3线SPITM(支持所有4线SPI模式);I2CTM主从模式;2.系统设计基本原理:利用单片机的两个I/.O端口,一个送位选择码,一个送字型码。

每次选择一位LED公共端有效,然后送出字型码,延时后送下一组数据。

设计程序:#include <p18F452.h>#include <adc.h>#include <delays.h>rom near char look7[10]=//7-segment lookup table{0x3f, //00x06, //10x5b, //20x4f, //30x66, //40x6d, //50x7d, //60x07, //70x7f, //80x6f, //9};int result,i,w;void main( void ){TRISD=0x00;TRISC=0x00;PORTD=0x00;while(1){PORTC=0xfe;// configure A/D convertorOpenADC( ADC_FOSC_32 &ADC_RIGHT_JUST &ADC_8ANA_0REF,ADC_CH0 &ADC_INT_OFF );// A/D 时钟源,晶振32分频率// A/D 转换结果右对齐// A/D 参考电压源,电源工作电压// 通道选择// 中断关闭,查询模式Delay10TCYx( 5 ); // Delay for 50TCYConvertADC(); // Start conversionwhile( BusyADC() ); // Wait for completionresult = ReadADC(); // Read resultCloseADC(); // Disable A/D converter//display the resultfor(i=0;i<4;i++){w=result%10;PORTD=look7[w];Delay1KTCYx(5);result=result/10;PORTD=0x00;PORTC=(PORTC<<1)|1;}}}设计结果:2.结束语通过本次实验基本掌握了对数模转换的设计,更深入的了解了pic18f452的使用与功能,其次本次实验的完成也让我对程序的编写能力得到了提升。

8位LED数码管动态显示电路的仿真测试

8位LED数码管动态显示电路的仿真测试

数字电子技术仿真实验实验题目:8位LED数码管动态显示电路院系:电子与信息工程学院专业:电子信息工程班级:2010级X班老师:XXX姓名:XXX学号:XXXXXXXXXX8位LED数码管动态显示电路的仿真测试一,实验目的:(1)掌握LED数码管动态显示的工作原理。

(2)掌握BCD—七段显示译码器74LS48,3—8线译码器74LS138的应用。

(3)掌握MultiSIM中LED数码管的应用。

二,实验原理:LED数码管有静态显示和动态显示2种显示方式。

LED数码管工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地,且使用一片译码驱动芯片驱动一位七段LED数码管进行数码显示。

LED数码管工作于动态显示方式时,使用一片译码驱动芯片驱动多位七段LED数码管,有控制电路控制各位显示器分别进行数码显示,即每个显示器按照不同的时间轮流使用这片译码驱动芯片,从而是电路更加简单。

三,实验设配及元器件:四,仿真结果:1,显示相同数码电路的仿真测试:2,显示不同数码电路的仿真实验:(1)当频率为100HZ时:LED数码管显示的数码及显示的顺序:(2)当频率为100KHZ时:LED数码管显示的数码及显示的顺序:五,实验总结:通过此次实验,不仅让我对仿真更加熟悉,也加深了我对数字电子电路的理解。

在仿真过程中,我遇到了很多困难,经过思考和尝试,终于将实验做成功了。

例如刚开始我不知道字符信号发生器再那里,于是就在原件中一个一个的试,很快就在工具栏上的图标中找到了。

还有数码管,在元件库中找了很久,终于在Indicators下面的HEX_DISPLAY中才找到。

电路图连接完后,因为字符信号发生器没有接地,数码管始终不能显示。

改正后,刚开始又始终只有一位数码管显示,经过思考,原来是频率低了,当我把频率变大后,循环扫描的速度变得足够快,就可以看到8位LED数码管的持续发光。

protues课件数码管动态扫描电路的仿真实验

protues课件数码管动态扫描电路的仿真实验

段码线占用一个8位I/O口,而位选控制使用一个I/O口
的4位口线。
13
图6-4 4位8段LED动态显示的原理电路

工作原理:动态显示就是通过段码线向显示器(所有
的)输出所要显示字符的段码。每一时刻,只有一位位 选线有效,其他各位都无效。逐位地每隔一定时间轮流
点亮各位显示器(扫描方式),由于LED数码管的余辉
型、“米”字型和“点阵”型LED显示器,如图10-2所
示。厂家也可根据用户的需要定做特殊字型的数码管。
图6-2
其他各种字型的LED显示器
8
6.1.2 LED数码管显示器的两种显示方式

LED数码管有静态显示和动态显示两种显示方式。
9
1.LED静态显示方式

静态显示指无论多少位LED数码管,都同时处于显示状态。
电路连接:数码管工作于静态显示方式时,各位的共阴极
(或共阳极)连接在一起并接地(或接+5V);每位的段码 线(a~dp)分别与一个8位的I/O口锁存器输出相连。

如果送往各个LED数码管所显示字符的段码一经确定,则
相应I/O口锁存器锁存的段码输出将维持不变,直到送入另 一个字符的段码为止。

优点:静态显示无闪烁,亮度较高,软件控制比较容易。
数码管显示单个数字
如图6-6所示为共阳极数码管。
7段数码管有段码和位码两个不同控制端。8
个数码管的段码a,b,c,d,e,f,g,dp并联在一起, 通过上拉电阻接到了51单片机的P0口,而每 一位数码管的位码则通过三极管分别接到51 单片机的P2口,其中P2口接三极管的基极, 发射极接到数码管的位码选择端。 电路符合数码管动态显示的原理。
11

利用proteus做51单片机的数码管动态显示

利用proteus做51单片机的数码管动态显示

利用proteus做51单片机的数码管动态显示
单片机爱好者
最近我用proteus做了一下数码管的动态显示仿真,参考了郭天祥老师的《新概念51单片机C语言教程》上第4章独立按键检测的程序,仿真原理图如下:
按郭老师的程序编好烧写进去并运行,发现数码管显示不正常,我在网上发现也有许多类似的问题,分析后发现存在以下几个问题:
1 位选信号和段选信号共用P0口;
2 先送段选信号后送位选信号;
3 设置了消影,我觉得作用不明显
改进:
首先,我把段选信号和位选信号分开,分别由P0和P1发送,第二,我对显示子函数(即void display(uchar numdis))做了一些修改,将位选信号的发送放到段选之前,另外删除了消影,下面是修改后的display()子函数:void display(uchar numdis)
{
uchar i,j;
i=numdis/10;
j=numdis%10;
wela=1;
P1=0xfd;
wela=0;
dula=1;
P0=table[j];
dula=0;
delayms(5);
wela=1;
P1=0xfe;
wela=0;
dula=1;
P0=table[i];
dula=0;
delayms(5);

做了上面的修改后,数码管显示正常,可以实现书上的加、减、清0和开启定时自动加1的功能,如下。

上传上来,大家可以分析一下,对我的方法提出质疑,或者给出更好的解决办法。

多位数码管动态扫描protues仿真

多位数码管动态扫描protues仿真

实验题目:多位数码管动态扫描电路设计与调试一、实验要求与目的1、设计要求8位数码管显示“8.8.8.8.8.8.8.8.”,即点亮显示器所有段,持续约500ms 之后,数码管持续约1s ;最后显示“HELLO —10”,保持。

2、实验目的1、掌握数码管动态扫描显示原理及实现方法。

2、掌握动态扫描显示电路驱动程序的编写方法。

二、设计思路1、在Proteus 中设计仿真电路原理图。

2、在Keil C51软件中编译并调试程序,程序后缀必须是.c 。

调试时生成hex 文件,确认 无误后将生成的hex 文件添加到原理图的单片机中进行仿真。

3、观察电路仿真结果对程序进行更改直至达到预期结果三、实验原理p2[0..3]p0[0..7]p 00p 00p 07p 06p 0605p 02p 05p 04p 04p 03p 03p 02p 02p 01p 01p 07p 23p 22p 21p 20A 15B 14C 13D120112233445566779810911U27445A 02B 018A 13B 117A 24B 216A 35B 315A 46B 414A 57B 513A 68B 612A 79B 711C E 19A B /B A1U374HC245234567891RP1RESPACK-8XTAL218XTAL119RST9P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115AD[0..7]A[8..15]ALE 30EA 31PSEN29P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78U4AT89C52图1 原理图LED数码管动态显示的基本做法在于从那时起轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应数码管后,即在显示字段上得到显示字形码。

制作并仿真一个4位的计数器。该计数器至少具有两个按键,加1按键以及清零按键

制作并仿真一个4位的计数器。该计数器至少具有两个按键,加1按键以及清零按键

成绩实验名称:简单4位计数器仿真实验
一、实验目的
1、了解动态扫描显示的基本原理。

2、能够运用多位数码管显示指定内容。

3、熟悉动态扫描显示方法。

二、实验仪器
三、实验内容
四、实验原理
实验报告
五、实验步骤
1、根据给定的实验要求,分析实验的目的以及实验要求。

2、通过计算机仿真软件Proteus,根据给定电路图设计电路,并绘制电路。

3、复习练习动态扫描显示驱动程序写法,通过程序控制数码显示每一位都不同的数字,
例如“1234”。

4、根据自己所设计的电路,编写控制程序。

5、调试所编写的控制程序,直至程序没有语法错误,可以通过编译。

6、将所编写的无语法错误的程序下载至仿真软件,并进行调试,根据仿真结果,修改程
序。

六、实验程序
#include <reg51.h>
sbit K1=P3^4;
sbit K2=P3^5;
七、实验分析、心得。

较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版)

较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版)
void display();
void delay(uint z)//延时函数
{
uint i,j;
for(i=z;i>0;i--)
for(j=50;j>0;j--);
}
void main()
{
num=60;
TMOD=0x01;
TH0=(65536-50000)/256;//定时器赋初值
TL0=(65536-50000)%256;
3.数码管驱动部分
这里使用74HC573来控制数码管的显示,如图2.3所示
74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
它是数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。驱动数码管需要两个信号,一个是段选信号,一个是片选信号。段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与数码管位数相同的。对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就占用了2组共16个IO口,非常浪费使用573锁存器后,只占用8+2=10个IO口,其中2个用于控制锁存器使能,另外8个输出信号。先关闭控制片选信号的573芯片的锁存功能,然后单片机输出片选信号,随后开启锁存,此时无论573的输入端如何变化,输出端都是不变的,也就是原来输入的信号被锁住了。然后,再关闭控制段选的573的锁存功能,输出段选信号,再锁存,这样就巧妙的实现了数据线的复用,让一组IO口既输出段选又输出片选
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(flag==1)

proteus仿真用法

proteus仿真用法

proteus仿真用法
Proteus仿真软件可以用于电子电路设计和验证,以及嵌入式系统开发。

以下是使用Proteus进行仿真的一般步骤:
1. 打开Proteus软件,并创建一个新的电路设计文件(Schematic File)。

2. 在原理图编辑器中,选择并放置所需的元件(如电阻、电容、晶体管等),并使用导线进行连接。

可以通过右键单击元件来设置其属性。

3. 配置元件的参数,如电源电压、电阻阻值等。

4. 添加测试工具,例如信号发生器、示波器、频谱分析仪等,以生成和监测电路中的信号。

5. 进行仿真设置,如仿真时间范围、仿真步长等。

可以使用Proteus的MPLAB X仿真器插件连接到外部硬件进行仿真。

6. 运行仿真,观察电路的行为并收集数据。

可以使用示波器和其他工具来验证电路的性能。

7. 对仿真结果进行分析和评估,以确定电路的工作状态和性能是否符合设计要求。

8. 如有必要,对电路进行调整和优化,并重复以上步骤以进行进一步的仿真和验证。

使用Proteus进行仿真可以帮助设计师在实际制造电路之前,先验证其功能和性能,避免了可能的设计错误和昂贵的实验室测试。

此外,Proteus还提供了自
动化测试和调试功能,使整个设计过程更加高效和可靠。

proteus仿真动态数码管时钟仿真

proteus仿真动态数码管时钟仿真
File ■"EditTmI*gUgnSourceLibrity TemplateHelp
*9 9*播给玉峑■■Z
F齡孫曲倚漉A詛L£1IB
图1.3
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是 目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已 受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工 作者的青睐。
Proteus
题目:动态
院系内蒙古大学鄂尔多斯学院
专业名称自动化
学生姓名吴启民
学号0135124180
2016年6月30日
摘要AT89C52是一个低电压,高性能CMOS8位单片机,在proteus仿真中,单片机采用定时器中断方法,制作一个简易时钟,要求用定时器实现 精确定时,使用数码管动态显示,完成时钟的秒走时显示。本课程设计是利用 两位共阴极数码管显示数字59,然后每隔1s顺序-1,减到00时,再循环从59-00。
关键词
1、绪论4.
1.1背景介绍4.
1.2AT89C52单片机4.
1.3Proteus使用介绍.6.
1.4动态数码管设计任务与要求7
2、硬件设计8.
2.1单片机最小系统.8.
2.2数码管显示部分.8.
2.3数码管驱动部分.9.
3、软件设计1.0
3.1仿真原理图11
3.29C52有PDIP、PQFP/TQF及PLCC等三种封装形式,以适应不同产品的 需求。本课程设计中使用的是PDIP封装的AT89C52单片机。
1.3 Proteus
如图1.3为Proteus7.0的工作界面图

ATmega8-Protues仿真之二 LED 数码管

ATmega8-Protues仿真之二 LED 数码管

第二讲 LED数码管的学习提要:主要学习Atmega8通用数字I/O接口控制LED数码管的应用。

2.1 I/O口的结构及特点:Atmega8有23个I/O引脚,分成3个8位的端口B、C和D,其中C口只有7位。

I/O端口作为通用数字输入/输出口使用时,都具备真正的读-修改-写(R-M-W)特性。

每个I/O引脚采用推挽式驱动,不仅能提供大电流的输出驱动,而且也可以吸收20mA的电流,因而能直接驱动LED显示器。

Atmega8采用3个8位寄存器来控制I/O端口,它们分别是方向寄存器DDRx,数据寄存器PORTx 和输入引脚寄存器PINx(x为B或C或D,分别代表B口、C口或D口;n为0~7,代表寄存器中的位置),其中DDRx和PORTx是可读写寄存器,而PINx 为只读寄存器。

每个I/O引脚内部都有独立的上拉电阻电路,可通过程序设置内部上拉电阻是否有效。

方向寄存器DDRx中的每个位用于控制I/O口一个引脚的输入输出方向,即控制I/O口的工作模式为输出模式还是输入模式。

当DDRxn=1时,I/O的Pxn引脚处于输出模式。

此时当PORTxn=1时,I/O 引脚呈高电平,同时可提供输出20mA的电流;当PORTxn=0时,I/O引脚呈低电平,同时可吸收20mA的电流。

当DDRxn=0时,I/O的Pxn引脚处于输入模式。

此时引脚寄存器PINxn中的数据就是外部引脚的实际电平。

此时可通过PORTxn的设置可控制内部的上拉电阻使用或不使用。

表2-1 I/O口设置表(n=7,6,…,1,0)DDRxn PORTxn PUD I/O模式内部上拉电阻引脚状态说明0 0 X 输入无效三态(高阻)0 1 0 输入有效外部引脚拉低时输出电流0 1 1 输入无效三态(高阻)1 0 X 输出无效低电平推挽输出,吸收电流(≤20mA)1 1 X 输出无效高电平推挽输出,输出电流(≤20mA)通用I/O口主要特点:1 都具备真正的读-修改-写(R-M-W)。

数码管显示实验报告

数码管显示实验报告

一、实验目的1. 理解数码管的工作原理及驱动方式。

2. 掌握51单片机控制数码管显示的基本方法。

3. 学会使用动态扫描显示技术实现多位数码管的显示。

4. 提高编程能力和实践操作能力。

二、实验原理数码管是一种常用的显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母或其他符号。

根据LED的连接方式,数码管可分为共阴极和共阳极两种类型。

本实验使用的是共阳极数码管。

51单片机控制数码管显示的基本原理是:通过单片机的I/O口输出高低电平信号,控制数码管的各个段(a-g)的亮灭,从而显示相应的数字或符号。

动态扫描显示技术是将多个数码管连接到单片机的I/O口,通过快速切换各个数码管的显示状态,实现多位数码管的显示。

三、实验器材1. 51单片机实验板2. 共阳极数码管3. 电阻、电容等元件4. 仿真软件(如Proteus)5. 编译器(如Keil)四、实验步骤1. 搭建电路:按照实验原理图连接51单片机、数码管和电阻等元件。

2. 编写程序:使用Keil软件编写控制数码管显示的程序。

程序主要包括以下部分:a. 初始化:设置单片机的工作状态,配置I/O口等。

b. 显示函数:根据需要显示的数字或符号,控制数码管的各个段亮灭。

c. 动态扫描函数:实现多位数码管的动态显示。

3. 编译程序:将编写好的程序编译成机器码。

4. 仿真测试:使用Proteus软件对程序进行仿真测试,观察数码管的显示效果。

5. 实验验证:将程序烧录到51单片机实验板上,进行实际测试。

五、实验结果与分析1. 实验结果:通过仿真测试和实际测试,数码管能够正确显示0-9的数字。

2. 结果分析:实验结果表明,51单片机可以成功地控制数码管显示数字。

动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。

六、实验总结1. 通过本次实验,我们掌握了51单片机控制数码管显示的基本方法,提高了编程能力和实践操作能力。

2. 动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。

多位数码管动态显示

多位数码管动态显示

【006】多位数码管动态显示 [51]点击数:2102 发布日期:2006-4-16 16:04:00 【收藏】【评论】【打印】【编程爱好者论坛】【关闭】实验目的:数码管动态显示多位数字。

实验参考:笨笨工作室实验五、多位数码动态显示。

(查看原文)实验板: FB51A(查看)。

该实验用到实验板的资源电路图如下:其中P0口是段码,低电平有效。

P2口是位码,高电平有效。

P2.0口控制第1个数码管,一直到P2.7口控制第8个。

该板的段码表如下:各个数码管的段码都是p0口的输出,即各个数码管输入的段码都是一样的, 为了使其分别显示不同的数字, 可采用动态显示的方式,即先只让最低位显示0 (含点),经过一段延时,再只让次低位显示1,如此类推。

由视觉暂留,只要我们的延时时间足够短,就能够使得数码的显示看起来非常的稳定清楚。

过程如下图。

采用上述方法思路编写如下:org 0000hstart: mov a,#08h ;0 ;段码mov p0,amov p2,#01h ;位码lcall delay_1msmov a,#0abh ;1mov p0,amov p2,#02hlcall delay_1msmov a,#12h ;2mov p0,amov p2,#04hlcall delay_1msmov a,#22h ;3mov p0,amov p2,#08hlcall delay_1msmov a,#0a1h ;4mov p0,amov p2,#10hlcall delay_1msmov a,#24h ;5mov p0,amov p2,#20hlcall delay_1msmov a,#04h ;6mov p0,amov p2,#40hlcall delay_1ms; mov a,#0aah ;7; mov p0,amov p0,#0aah ;感觉用这句和上面两句实现一样,可能这种习惯以后会有用吧mov p2,#80hlcall delay_1msljmp startdelay_1ms: mov r6,#2temp: mov r5,#0ffhdjnz r5,$djnz r6,tempretend下载到板上得到测结果为从低到高八位分别显示0到7(含点)。

第十一节多个数码管动态显示

第十一节多个数码管动态显示

第十一节多个数码管动态显示一、编写程序步骤一:打开bascom-avr编程环境;步骤二:新建空白编程文件;步骤三:设置系统频率,系统的波特率步骤四:输入程序程序举例:将下面程序在bascom-avr中编译及仿真'——————————————————————————————————'名称: 多个数码管动态显示程序'目的: 多个数码管动态显示程序,了解I/0口及数码管。

'目标芯片: Mega16'作者: 张恩锋'编译环境: BASCOM-A VR 1.11.8.4'protues 7仿真通过'———————————————————————————————————$regfile = "m16def.dat" ' 单片机型号$crystal = 8000000 ' 定义晶振频率Config Porta = Output '定义A口为输出口Config Portb = OutputDim I As ByteDim T As ByteDim S As ByteDim D As ByteDim Dled(16) As Byte '定义七段数码管显示数据数组Restore Dataled7 '为读入数据准备,调用子程序DaimaFor I = 1 To 16 '依次把0-F的显示值输入到数组Dled () Read Dled(i)Next IDo '死循环S = &B00000001 '第一个显示数字的数码管为最低位For I = 1 To 4 '在数码管上显示数字1-4循环4次T = I + 1 '选择在数据数组中显示数字的对应数据Porta = 0 '关数码管Portb = S '数码管选择数据为二进制11111110 Porta = Dled(t) '显示数据Waitms 1Rotate S , Left , 1 '选择数码管Next I '循环DO__LOOP LoopEndDataled7: 'LED 7段显示代码表Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F , &H77 , &H7C , &H39 , &H5E , &H79 , &H71'——————————————————————————————————'共阴极字形码'&H3F 0'&H06 1'&H5B 2'&H4F 3'&H66 4'&H6D 5'&H7D 6'&H07 7'&H7F 8'&H6F 9'&H77 a'&H7C b'&H39 c'&H5E d'&H79 e'&H71 f '——————————————————————————————————步骤五:保存程序步骤六:编译文件如下图所示:在菜单栏中单击“compile program”或按F7键编译文件,若提示错误请认真检查并及时更正错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验题目:多位数码管动态扫描电路设计与调试一、实验要求与目的1、设计要求8位数码管显示“8.8.8.8.8.8.8.8.”,即点亮显示器所有段,持续约500ms 之后,数码管持续约1s ;最后显示“HELLO —10”,保持。

2、实验目的1、掌握数码管动态扫描显示原理及实现方法。

2、掌握动态扫描显示电路驱动程序的编写方法。

二、设计思路1、在Proteus 中设计仿真电路原理图。

2、在Keil C51软件中编译并调试程序,程序后缀必须是.c 。

调试时生成hex 文件,确认 无误后将生成的hex 文件添加到原理图的单片机中进行仿真。

3、观察电路仿真结果对程序进行更改直至达到预期结果三、实验原理p2[0..3]p0[0..7]p 00p 00p 07p 06p 0605p 02p 05p 04p 04p 03p 03p 02p 02p 01p 01p 07p 23p 22p 21p 20A 15B 14C 13D120112233445566779810911U27445A 02B 018A 13B 117A 24B 216A 35B 315A 46B 414A 57B 513A 68B 612A 79B 711C E 19A B /B A1U374HC245234567891RP1RESPACK-8XTAL218XTAL119RST9P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115AD[0..7]A[8..15]ALE 30EA 31PSEN29P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78U4AT89C52图1 原理图LED数码管动态显示的基本做法在于从那时起轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应数码管后,即在显示字段上得到显示字形码。

这种方式不但能提高数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。

动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。

其接口电路是把所有显示器的8个笔画段A~DP同名端并联在一起,而每个显示器的公共极COM各自独立地受I/O线控制,CPU向字输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。

而所谓动态扫描是指采用从分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。

在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

采用总路线驱动器74HC245提供LED数码管的段驱动,输出高电平时点亮相应段;采用集电极开路的BCD-十进制译码器/驱动器完成LED数码管位驱动,输出低电平时选通相应位。

P2口每个口线输出灌电流不足以驱动一个数码管显示器的位—公共极,所以通过集电极开路的BCD—十进制译码器/驱动器7445驱动,即节约P2口线,又增加驱动能力。

四、功能概述及方案设计系统主要组成单元组成单元项目电路图完成的功能AT89C52XTAL218XTAL119RST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115AD[0..7]A[8..15]ALE30EA31PSEN29P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78U1AT89C52通过预置的程序控制电路的输出,即控制数码管的选通并输出驱动信号7445A15B14C13D12112233445566779810911U57445完成LED数码管位驱动,输出低电平时选通相应位74HC245A02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U674HC245提供LED数码管的段驱动,输出高电平时点亮相应段RESSPACK8 234567891RP2RESPACK-8限流电阻保护电路以免电流过大烧坏电路7SEG-MPX8-CC-BLUE 译码显示五、实验运行程序#include<intrins.h>#include<REGX52.H>#define TRUE 1#define dataPort P0#define ledConPort P2unsigned char code ch[8]={0x76,0x79,0x38,0x38,0x3f,0x40,0x06,0x3f}; void time(unsigned int ucMs);void main(void){unsigned char i,counter;for(i=0;i<30;i++){for(counter=0;counter<8;counter++){ledConPort=counter;dataPort=0xff;time(5);}}ledConPort=0xff;time(2000);while(TRUE){for(counter=0;counter<8;counter++){ledConPort=counter;dataPort=ch[counter];time(5);}}}void delay_5us(void) {_nop_(); _nop_(); }void delay_50us(void) {unsigned char i; for(i=0;i<4;i++) {delay_5us(); } }void delay_100us(void) {delay_50us(); delay_50us(); }void time(unsigned int ucMs) {unsigned char j; while(ucMs>0) {for(j=0;j<10;j++) delay_100us(); ucMs--; } }六、仿真结果p2[0..3]p0[0..7]p 00p 00p 07p 07p 06p 06p 05p 04p 04p 03p 03p 02p 02p 01p 01p 23p 22p 21p 20p 05A 15B 14C 13D120112233445566779810911U27445A 02B 018A 13B 117A 24B 216A 35B 315A 46B 414A 57B 513A 68B 612A 79B 711C E 19A B /B A1U374HC245234567891RP1RESPACK-8XTAL218XTAL119RST9P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115AD[0..7]A[8..15]ALE 30EA 31PSEN29P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78U4AT89C52p2[0..3]p0[0..7]p 00p 00p 07p 07p 06p 06p 05p 04p 04p 03p 03p 02p 02p 01p 01p 23p 22p 21p 20p 05A 15B 14C 13D120112233445566779810911U27445A 02B 018A 13B 117A 24B 216A 35B 315A 46B 414A 57B 513A 68B 612A 79B 711C E 19A B /B A1U374HC245234567891RP1RESPACK-8XTAL218XTAL119RST9P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T 014P3.7/RD17P3.6/WR 16P3.5/T 115AD[0..7]A[8..15]ALE 30EA 31PSEN29P1.0/T 21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78U4AT89C52七、实验心得指导教师评语和成绩评定:实验报告成绩:指导教师签字:年 月 日。

相关文档
最新文档