当前位置:文档之家› 基于proteus的51单片机仿真实例六十、8位数码管显示实例

基于proteus的51单片机仿真实例六十、8位数码管显示实例

基于proteus的51单片机仿真实例六十、8位数码管显示实例

1、本例实现在8位数码管上同时显示多个不同字符。

2、本例使用了8只集成式7段共阳数码管(pruteus中元件标识为7seg-mpx8-ca-blu,共阳为ca,共阴为cc),所有8个数码管的段码引脚a,b,c,d,e,f,g,dp都是分别并联在一起,任何时候发送的段码均会传送到所有数码管上,所有的数码管的共阳极是独立的,本例中个数码管的共阳极分别与8只NPN三极管射极相连,程序运行时,任意时刻仅允许一只数码管的共阳极连接+5V,当向连接段码的端口发送段码值时,相应数字只会显示在某一只数码管上。

3、为了使不同数码管显示不同字符,本例使用的是集成式多位数码管常用的动态扫描显示技术,他利用了人的视觉暂留特征,选通第一只数码管时,发送1的段码;选通第二只数码管时,发送2的段码,...每次仅选通一只数码管,发送相应的段码,每次切换选通下一数码管并发送相应段码的时间间隔非常短,视觉惰性使人感觉不到字符是一个接一个显示在不同的数码管上的,而会觉得所有的字符很稳定的同时显示在不同数码管上。

在控制两位数码管选通的时间间隔时,要注意全屏的扫描频率要高于视觉暂留频率

16-20Hz。对于程序中的点亮一位数码管的延时时间,我们可以尝试将延时时间改为其他数值,观察会出现什么样的效果。

4、在keil c51中新建工程ex48,编写如下程序代码,编译并生成ex48hex文件

/***************************************************************************** * LED数码管显示演示程

*

* 在8个LED数码管上依次显示

1,2,3,4,5,6,7,8 *

******************************************************************************* /

#include //包含头文件

#include //包含移位函数头文件

//段码表

unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off

//毫秒级延时函数

void delay(unsigned int x)

{

unsigned char i;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主函数

void main()

{

unsigned char k,m=0x80; //变量定义

P0 = 0xff; //先关闭数码管

P2 = 0x00; //

while(1)

{

for(k = 0;k < 8;k++) //循环8次

{

P2 = 0x00; //每显示一位都要关闭位选端口一次

m=_crol_(m,1); //循环左移

P2=m; //每次选通一个位选端口

P0=dis_code[k+1]; //段码送P0口

delay(2);

}

}

}

5、在proteus中新建仿真文件ex48.dsn,电路原理图如下所示

6、将ex48.hex文件载入at89c51中,启动仿真,观察程序运行结果,下图是程序运行结果。我们也可以试着将程序中的“P2 = 0x00; //每显示一位都要关闭位选端口一次”这句话去掉,然后再观察程序运行结果,观察会出现什么情况,并解释这种情况。

[整理版]proteus仿真单片机实例

[整理版]proteus仿真单片机实例 用器和存储器、断点和单步模式Proteus一部分是智能原理图输入系统引言Keil C51 运行可提供单片机体积小Proteus进行编译,编译成功后生成30的多种元件库,超过 ISIS,重量轻,进入仿真软件的主界面,如图等多种系列的处理器。IAR C-SPY,Keil,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多ISIS(Intelligent Schematic Input System)8000data.hex,也可以仿真模拟数字混合电路。种模拟、数字元器件。可以按照设计的要求选择、MPLAB文件。Protues 等开发工具的源程序进行调试的功包含强大的调试工具,具有对寄存1 所示。主界面分为菜单栏,工具3.2 绘制电路图,编写和虚拟系统模型 data.c文件,能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创VSM(Virtual Model System)利栏,模型显示窗口,模型选择区,元件列表区等。种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单;另一部分是高级布线及编辑软件 ARES(Adv-Ancd Routing 进行仿真。建。,nd Editing Software) 片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开除拥有丰富的元器件外, 2.2 Proteus PCB 也就是PCB. ProteusProteus 2.1 Proteus VSM还提供了

单片机仿真实例

《单片机C语言程序设计实训100例—基于8051+P r o t e u s仿真》案例 第01篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间隔闪 烁 */ #include #defineucharunsignedchar #defineuintunsignedint sbitLED=P1^0; //延时 voidDelayMS(uintx) { uchari; while(x--) { for(i=0;i<120;i++); } } //主程序 voidmain() { while(1) { LED=~LED; DelayMS(150); } } 02从左到右的流水灯 /* 名称:从左到右的流水 灯 说明:接在P0口的8个 LED从左到右循环依次点 亮,产生走马灯效果 */ #include #include #defineucharunsignedchar #defineuintunsignedint //延时 voidDelayMS(uintx) { uchari;

while(x--) { for(i=0;i<120;i++); } } //主程序 voidmain() { P0=0xfe; while(1) { P0=_crol_(P0,1);//P0的值向左循环移动 DelayMS(150); } } 038只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #defineucharunsignedchar #defineuintunsignedint //延时 voidDelayMS(uintx) { uchari; while(x--) { for(i=0;i<120;i++); } } //主程序 voidmain() { uchari; P2=0x01; while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1);//P2的值向左循环移动 DelayMS(150); } for(i=0;i<7;i++) {

单片机课程设计-利用 proteus 仿真一个数据通讯显示系统

单片机课程设计-利用 proteus 仿真一个数据通讯显示系统

西北工业大学 单片机课程设计 实验报告 学院: 电子信息学院 班级: 08031001 姓名: 杨振 张功成 指导老师: 日期: 2013 年 06 月

一.题目: 利用proteus 仿真一个数据通讯显示系统 1)系统基本功能要求 1,系统具有1路RS232串行通信接口; 2,系统能够完成接受信息的8位数码显示; 3,系统具有开始、停止等控制按键; 2)课设目的 学生通过实际动手对课程题目进行设计,巩固已有的单片机知识,进行课设的同时,熟练掌握proteus、虚拟串口(Virtual Serial Port Driver)和串口调试助手等软件的应用。 培养学生动手能力,及发现问题、解决问题的能力。 让知识与实际想接轨,培养学生的学习兴趣。 3)设计硬件要求 1)单片机:AT89C52; 2)输出锁存器:74LS373; 3)RS232驱动器用MAX232; 4)键盘、显示接口:8279; 二设计方案 1.总体模块

上图是本次课设的设计方案原理图,图中COMPIM作为虚拟串口的输入,将输入的信息送入RS232串行数据通信接口。52单片机接收RS232送来的数据信息,并通过P0口发送出去,此时P0作为数据通信接口。同时51单片机像8279发出地址信息,选通8279的地址区域,其中,低8位地址信息通过P0口发送给8279,此时P0口作为地址通信接口。高8 位地址信息通过P2口送给8279,选中8279的地址区域。8279将接收来的数据信息存在52单片机选中的FIFO RAM中,并通过一个LS74138译码器,将串口数据送入LED数码显示器中。LED数码显示器,通过74LS245作为驱动器,驱动数码管中的二极管发亮。 2.串口发送模块:

基于proteus的51单片机仿真实例六十、8位数码管显示实例

基于proteus的51单片机仿真实例六十、8位数码管显示实例 1、本例实现在8位数码管上同时显示多个不同字符。 2、本例使用了8只集成式7段共阳数码管(pruteus中元件标识为7seg-mpx8-ca-blu,共阳为ca,共阴为cc),所有8个数码管的段码引脚a,b,c,d,e,f,g,dp都是分别并联在一起,任何时候发送的段码均会传送到所有数码管上,所有的数码管的共阳极是独立的,本例中个数码管的共阳极分别与8只NPN三极管射极相连,程序运行时,任意时刻仅允许一只数码管的共阳极连接+5V,当向连接段码的端口发送段码值时,相应数字只会显示在某一只数码管上。 3、为了使不同数码管显示不同字符,本例使用的是集成式多位数码管常用的动态扫描显示技术,他利用了人的视觉暂留特征,选通第一只数码管时,发送1的段码;选通第二只数码管时,发送2的段码,...每次仅选通一只数码管,发送相应的段码,每次切换选通下一数码管并发送相应段码的时间间隔非常短,视觉惰性使人感觉不到字符是一个接一个显示在不同的数码管上的,而会觉得所有的字符很稳定的同时显示在不同数码管上。 在控制两位数码管选通的时间间隔时,要注意全屏的扫描频率要高于视觉暂留频率 16-20Hz。对于程序中的点亮一位数码管的延时时间,我们可以尝试将延时时间改为其他数值,观察会出现什么样的效果。 4、在keil c51中新建工程ex48,编写如下程序代码,编译并生成ex48hex文件 /***************************************************************************** * LED数码管显示演示程 序 * * 在8个LED数码管上依次显示 1,2,3,4,5,6,7,8 *

基于proteus的51单片机仿真

基于proteus的51单片机仿真实例及应用开发说明 一、单片机系统的开发流程 1、搭建硬件电路; 2、编写控制程序; 3、将程序“装”到单片机里面; 4、运行单片机系统,并检查、调试运行结果。 二、学习单片机的基本条件 单片机是一门实践性很强的技术,它牵涉到软件和硬件的学习。 软件指的是单片机控制程序;硬件则是保证单片机运行的基本电路。无论是程序设计还是电路设计,都需要经过大量的实践练习才能够准确理解和熟练掌握。 1、软件条件: 单片机软件的开发流程是:1)编写控制程序;2)对程序进行编译、排错、仿真、调试;3)生成可以用特定软件能烧写到单片机里面的二进制或十六进制文件。一般的单片机的软件开发用到以下软件: 程序编写、编译软件(其中用到最广泛的Keil51):用来编写、编译单片机的控制程序(其中用到最广泛的是AVR fighter或者是STCISPV38A); 仿真软件:proteus软件能很好地模拟展示单片机程序是否完成了既定功能; 2、硬件条件: 程序编写调试完成后,需要在硬件系统中运行,才能够组成一个完整的单片机系统。一般的必备硬件有: 编程器:用来将程序烧录到单片机中的工具; 单片机学习板:用来演示和检验单片机系统是否实现了既定功能。 三、对于单片机的硬件电路的设计

需要指出的是,单片机的硬件电路是千差万别的,尤其是在制作电路板的时候,牵涉到元器件的布局、走线、抗干扰等多种环境问题,所以单单依靠一个仿真软件是很难真实模拟单片机系统的工作的。 所以在这里的学习,只是作为一种辅助开发的手段,我们可以先将我们的电路和程序在该软件上进行验证,验证通过后在制作电路板进行实际验证。 四、下面简单地对proteus软件的入门进行以下介绍 PROTEUS软件是英国Labcenter electronics公司研发的EDA工具软件。它是一个集模拟电路、数字电路、模/数混合电路以及多种微控制器系统为一体的系统设计和仿真平台。是目前同类软件中最先进、最完整的电子类仿真平台之一。它真正实现了在计算机上完成从原理图、电路分析与仿真、单片机代码调试与仿真、系统测试与功能验证到PCB板生成的完整的电子产品研发过程。 已经安装了Proteus ISIS7软件的桌面上就会有图标。双击该图标,出现工作界面如图1所示。界面中包括:标题栏、下拉主菜单、快捷按钮栏、标准工具栏、绘图工具箱、状态栏、选择元器件按钮、预览对象方位控制按钮、仿真操作按钮、预览窗口、电路原理图编辑窗口等。 1、电路图的绘制 运行的程序后, 进入该仿真软件的主界面。 作图步骤: (1)绘图前, 为了便于作图, 可作一些设置。如设置栅格、栅格捕捉精度、图形界面颜色、大小等。 (2)通过对象选择按钮P, 利用其搜索引擎, 将所需元器件加入到对象选择器窗口。 列元件清单。 (3)放置元器件至图形编辑窗口, 并调整到合适位置。 (4)修改属性,如电阻, 设置电阻值 (5)放置总线至图形编辑窗口。 (6)完成元器件之间以及元器件与总线的连线。 (7)给与总线连接的导线贴标签, 以便于系统识别。

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 /* 8位数码管显示时间格式 055000 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #includereg52.h sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管09 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,second; //定义并初始化为12:30:00 void delay(unsigned int cnt) {

while(cnt); } /********************************************************** ********/ /* 显示处理函数 */ /********************************************************** ********/ void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //显示 StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示 StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main() { TMOD |=0x01; //定时器0 10ms inM crystal 用于计时

《单片机C语言程序设计实训100例—基于8051+Proteus仿真

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 02 从左到右的流水灯 /* 名称:从左到右的流水灯 说明:接在P0口的8个LED 从左到右循环依次点亮,产生走 马灯效果 */ #include #include #define uchar unsigned char #define uint unsigned int

//延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {

基于Proteus虚拟终端51单片机仿真:串口发送字符串,数码管显示

先上图: 实验程序: /******************************************************************** ************* * 【编写时间】: 2016年6月17日 * 【作者】:小瓶子 * 【实验平台】: Proteus 7 * 【外部晶振】: 11.0592mhz * 【主控芯片】: STC89C51 * 【编译环境】: Keil μVisio4 * 【程序功能】:在虚拟终端发送8个字符,通过数码管和虚拟 * 终端显示出来,8个字符发送完毕,显示发送完毕

********************************************************************* *************/ #include #include #define uchar unsigned char #define uint unsigned int uchar bufr[]="------\r\n";//存放接收数据 uchar *prx=&bufr;//接收指针 bit str; //接收完毕标志位 //段码 uchar code leddata[]={ 0xC0, //"0" 0xF9, //"1" 0xA4, //"2" 0xB0, //"3" 0x99, //"4" 0x92, //"5" 0x82, //"6" 0xF8, //"7" 0x80, //"8" 0x90, //"9" 0x88, //"A" 0x83, //"B" 0xC6, //"C" 0xA1, //"D" 0x86, //"E" 0x8E, //"F" 0x89, //"H"

51单片机键盘数码管显示(带程序)

期 中 大 作 业 学院:物理与电子信息工程学院

课题: 【利用8255和51单片机实现数码管显示按键数值的程序】要求: 【4*4矩阵键盘,按0到15,数码管上分别显示0~9,A~F】 芯片资料: 8255: 8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。 8255特性: 1.一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。 2.具有24个可编程设置的I/O口,即3组8位的I/O口,分别为PA口、PB口和PC 口。它们又可分为两组12位的I/O口:A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O三种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.

引脚说明 RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。RD:读信号线,当这个输入引脚为低电平时,即CS=0且RD=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,即CS=0且WR=0时,允许CPU将数据或控制字写入8255。 D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。 PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。 PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。 当A1=0, A0=0时,PA口被选择; 当A1=0, A0=1时,PB口被选择; 当A1=1, A0=0时,PC口被选择; 当A1=1. A0=1时,控制寄存器被选择。 74ls373芯片资料: 74ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D 触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片.本文将介绍74ls373的工作原理,引脚图(管脚图),内结构图、主要参数及在单片机系统中的典型应用电路.

单片机原理----C51编程及Proteus仿真 习题答案 (金宁治) 习题8答案

思考题及习题8 一、填空题: 1.利用DAC0832产生两路同步模拟输出,那么须将其置于双缓冲工作方式。 2.对于电流输出型的D/A转换器,为了得到电压输出,应使用运算放大器构建流控电压源电路。 3.假设单片机发送给8位D/A转换器0832的数字量为65H,基准电压为5V,那么D/A转换器的输出电压为1.98V。 4.假设A/D转换器0809的基准电压为5V,输入的模拟信号为2.5V时,A/D转换后的数字量是7FH。 二、简答题: LD/A转换器的主要性能指标都有哪些?设某DAC为二进制12位,满量程输出电压为 5V,试问它的分辨率是多少? 答:主要性能指标有:分辨率、建立时间、转换精度等;12 位 D/A 转换分辨率:1 LSB = 5V/4096= 1.22mVo 2.分析A/D转换器产生量化误差的原因,一个8位的A/D转换器,当输入电压为0〜 5V时,其最大的量化误差是多少? 答:量化误差是把连续的模拟量转换为离散的数字量时必然存在的,是不可防止的。例如,8位ADC,单极性输入。〜5V,数字量为。〜255,它能分辨的最小输入信号是A = 5V / 256 = 20mV,如4.98〜5.00V输入对应的数字均为255,这是不可防止的。 3.简述DAC0832芯片的输入寄存器和DAC寄存器二级缓冲的原理。 答:DAC0832内部共有两级8位寄存器。 第一级为8位输入寄存器,用于存放单片机送来的数字量,使得该数字量得到缓冲和锁存,由国(即Ml=l时加以控制; 第二级为8位DAC寄存器。用于存放待转换的数字量,由说控制(即M3=l时)。 两级寄存器可以分别单独控制,从而形成二级缓冲式的工作方式。根据两个寄存器工作状态不同,DAC0832可以工作在三种工作方式:直通方式、单缓冲方式、双缓冲方式。 4.为什么要消除按键的机械抖动?消除按键机械抖动的方法有几种?分别加以说明。 答:按键开关过程的机械抖动可能会将一次按键动作误认为屡次按键操作,从而产生错误的控制动作,因此为了确保单片机对一次按键动作只确认一次按键有效,必须消除抖动的影响。 两种去抖动方法: (1)一种是用软件延时来消除按键抖动,基本思想: ①在检测到有键按下时,该键所对应的行线为低电平; ②执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平; ③如果仍为低电平,那么确认该行确实有键按下; ④当按键松开时,行线的低电平变为高电平; ⑤执行一段延时10ms的子程序后,检测该行线为高电平,说明按键确实已经松开。 (2)另一种去除按键抖动的方法是采用专用的键盘/显示器接口芯片,这类芯片中都有自动去抖动的硬件电路。 ⑥.说明矩阵式键盘按键按下的识别原理? 答:矩阵式键盘的每个按键连接一条行线和一条列线。行线通过上拉电阻接+5V,每根行、列线连接单片机的一个I/O引脚。

单片机实验——数码管显示

数码管显示 一、数码管静态显示 1、电路图 图1 2、电路分析 该电路采用串行口工作方式进行串行显示实验,串行传输数据为8位,只能从R*D 端输入输出,T*D端用于输出同步移位脉冲。当CPU执行一条写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始将发送缓冲器SBUF中的8位数据按照从低位到高位依次发送出去,8位数据发送完毕,发送结束标志TI置1,必须由软件对它清0后才能启动发送下一帧数据。 因此,当输完8个脉冲后,再一次来8个脉冲时,第一帧的8位数据就移到了与之相连的第二个74LS164中,其他数据依此类推。 3、流程图 开始 发送数据 移位 TI=0 ? N 结束 二、数码管动态显示 1、电路图 图2 2、电路分析

R1-R7电阻值计算:一个7-seg数码管内部由8段LED组成,因此导通电压和电流与LED 灯相同,LED导通压降大概在,电流3mA-30mA,单片机的工作电压是5V,所以 一般取Rmin和Rma*中间值,330Ω、470Ω、510Ω。 由于P0口内部没有上拉电阻,所以在P0口接排阻,上拉电压。如果没有排阻的话,接上拉电阻时需要考虑数码管的电流,如果太小的话,是驱动不了数码管的。如图3:发现电流大于5mA时,数码管才能亮,与前面电流最小3mA不符,因此计算数码管电流时使其在10mA-20mA之间,确保能驱动数码管亮。 两个74HC573实现对六位数码管的段选和位选,控制端为LE(第11脚)。 3、思路分析 先使第一个573输出同步,把数据送入573中,然后锁存,第二个573输出同步,打开第一个数码管,这样就把第一个数显示在了第一个数码管上,然后以此类推,把数据送到相应的数码管上显示,进行短暂的延时,在频率快的时候,人的眼睛看的是数码管一直在显示,实际上是以特别快的频率在闪烁。(必须进行一个短暂的延时,延时时间可根据实际情况调整。如果没有延时的话,数码管上的电流在瞬间是达不到LED的导通电流,所以数码管不会显示,经过proteus仿真实验论证确实如此。) 4、动态显示流程图 开始 初始化 段选573打开,位选573 锁存,送入显示的数据 段选573锁存,位选573打 开,送入数据选择数码管 延时 结束 5、实验总结 在用proteus仿真用573搭载电路的动态数码管显示时,有的数字显示不出来,但是在低频的时候会显示出来,然后频率逐渐变快,数字就没有了,比如:要求六位数码管以次显示123456,结果显示的是1234 6,5是显示不出来的,经过多次调试,发现一般只能显示出来偶数。 附: 74LS164引脚图及功能介绍 引脚图功能图 74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可以并接。T(第8脚)为时钟输入端,可连接到串行口的T*D端。每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,复位;R=1时,允许脉冲。 功能表

51单片机应用:8只数码管同时显示多个不同字符

51单片机应用:8只数码管同时显示多个不同字符设计要求 单片机控制8只数码管,同时显示8个字符。例如,从左至右显示“”,接着显示“”,在接着显示“”,……“”,“”, 分析及方案设计: 本题可以采用扩展I/O口或直接用单片机自身的I/O口的方法实现。为节省硬件设施并使电路连线尽量简单,采用直接使用单片机自身I/O口的方式,8个数码管同时显示数字则需采用动态显示方法,初步设定以P0口给出数码管显示字段,P1口选中某一时刻动态点亮的数码管。 软件设计可以有以下几种方案: a)将全部显示状态列出,放在主程序中不断循环 b)将显示状态放入8个数组中,每个状态循环一次后主程序重新开始循环 c)只设置两个数组,其中一个取值不变,为正序的从1到8的共阳极数码管段码,另一个数组中的数值不断被修改,即每次显示状态改变的时候都相应改变一次,如从的段码改为的段码。 从上述方案可以看出,若设置太多的数组或列出所有显示状态,程序虽然清晰易懂但占用程序存储空间明显较大,且用delay()函数延时的话会不断占用CPU;用两个数组和两个定时器虽然算法略复杂,但程序可以达到最简化。 详细的方案说明: 1)采用数码管动态显示方法。 2)8个数码管由P3控制位选,即决定某一时刻哪一个数码管亮,由P0发出的总线控制显示的段码。 3)定时器T0和T1同时工作,定时时间均为 0."5毫秒,采用方式1定时,每次溢出后由软件重装初值。

4)设置中间变量temp,用于不断左移并给P3赋值;数组display[]为code 即取之不变的数组,数组show[]中的取值变化。 5)每次T0计数溢出时,temp左移一次,相应的P3左移一次,数码管由第i 个点亮变为第i+1个点亮,与此同时赋给P0口的值由show[i]变为show[i+1],达到动态显示的效果。 6)定时器T1也是每 0."5毫秒计数溢出一次,但只有到1秒时才执行定时器1中断中修改数组show[]取值的程序,用变量t记录T1溢出的次数,达到200次时数组show[]中的内容开始进行修改并且t清零。假设showp[0]到show[7]中的取值分别为共阳极数码管显示 1、" 2、 3、" 4、 5、" 6、 7、"8的段码,修改后分别变为显示 2、" 3、 4、" 5、 6、" 7、

单片机设计60秒倒计时正计时+Proteus仿真

60秒倒计时设计 一:1.目的 课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。 2.要求 单片机控制的60s倒计时 (1)用单片机AT89C51的定时器实现60s倒计时。 (2)用PROTEUS设计,仿真基于AT89c51单片机的60s倒计时实验。 3. 目标 通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法。 2:方案选择

图2.1:60秒倒计时总体电路设计 本设计由硬件设计和软件设计两部分组成,总电路框图如图2.1所示。 具体设计:通过AT89C51型号单片机,由P1和P2两组I/O引脚分别控制两个7SEG–COM –ANODE型号数码管,分十位控制和个位控制,达到显示60秒倒计时的目的。通过复位电路,在仿真过程中点击开关实现60复位 3.1 AT89C51

外形及引脚排列如图3.1所示 图3.1:89C51的核心电路框图 主要特性 ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式

·片内振荡器和时钟电路 管脚说明 (1)电源及时钟引脚(4个) Vcc: 电源接入引脚 Vss:接地引脚 XTAL1:晶振震荡器接入的一个引脚(采用外部振荡器时,此引脚接地); XTAL2:晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器信号的输入端)。 (2)控制线引脚(4个) RST/Vpd:复位信号输入引脚/备用电源输入引脚; ALE:地址锁存允许信号输出引脚/编程脉冲输入引脚: EA:内外存储器选择引脚/片外EPROM编程电压输入引脚; PSEN:外部程序存储器选通信号输出引脚。 (3)并行I/O引脚 P0.0-P0.7:一般I/O口引脚或数据/低位地址总线复用引脚; P1.0-P1.7:一般I/O口引脚; P2.0-P2.7:一般I/O口引脚或高位地址总线引脚; P3.0-P3.7:一般I/O口引脚或第二功能引脚 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度

单片机数码管动态显示实验报告

单片机数码管动态显示实验报告单片机数码管动态显示实验程序(汇编) 单片机数码管动态显示实验程序 org 00h ajmp head org 0030h head: mov sp,#0070h num equ p0 ;p0口连接数码管 reset: mov dptr ,#tab mov r0,#4 sh: acall show_tab call dptr_add djnz r0,sh mov r0 ,#4 sjmp reset dptr_add: inc dptr inc dptr inc dptr inc dptr

ret tab : db 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H, 0A1H,86H,8EH ;;;;;;;;;;;;;;;;;;;;; 函数的功能是用来动态显示dptr上的四个数 据 ;;;;;;;;;;;;;;;;;;;;;; show_tab: clr a mov r2,#0 mov r3,#148 mov p2,#238 loop: movc a,@a+dptr mov num ,a acall delay_5ms inc r2 mov a,r2;调用片选函数前注意A的变化acall select_mov cjne r2,#4,loop mov r2,#0 clr a djnz R3,loop ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;

单片机实验

单片机实验教案 实验一流水灯的设计 实验目的:学习C51开发软件KEIL的使用,会编写简单的程序实现对51单片机IO口的控制;学习仿真软件PROTEUS的使用,会用PROTEUS对51单片机仿真。 实验要求:用51单片机的P0口控制外接的八个发光二极管LED,使其按照二进制加法的规律一直循环点亮。 实验内容:打开PROTEUS仿真软件,建立一个上述要求的单片机仿真系统,如图1所示。打开单片机开发软件KEIL,建立一个控制八个LED的工程,并编写控制P0口的程序,如图2所示。 图1-1 单片机流水灯仿真系统图

图1-2 单片机开发软件KEIL窗口 程序如下: #include"at89x51.h" DELAY() {int i; for(i=0;i<5000;i++) {} } main() { P0=0X00; while(1) { P0=P0+1; DELAY(); } } 编译程序,并产生后缀为.HEX的可执行文件,将该文件下载到PROTEUS单片机仿真系统中的51单片机中,运行该仿真,观察 仿真结果。

实验二数码管静态显示控制 实验目的:学会使用单片机的IO口控制八段数码管,掌握八段数码管的代码的编码原理,学习51单片机对静待数码管显示的控制方法。 实验要求:在PROTEUS中建立一个51单片机仿真系统,用51单片机的P0控制一个LED八段数码管循环显示0—9十个数字。实验内容:打开PROTEUS仿真软件,分别添加单片机,和一个八段数码管等主要器件,按照图2-1所示连接。连接好电路图以后打开KEIL软件,编写软件程序。 图2-1 静态数码管系统图 编写软件程序时要注意八段数码管的编码规则,共阴极数码管和共阳极数码管的编码规则刚好是相反的,这里以共阴极为例。共阴极数码管的公共端是要接地的,而所有的阳极连接单片机的控制端,即,单片机的IO口输出1时,对应八段数码管的一个段

单片机原理-数码管动态显示实验-单片机原理-实验报告

单片机原理-数码管动态显示实验-单片机原理-实验报告

实验目的: 1. 巩固Proteus软件和Keil软件的使用方法 2. 学习端口输入输出的高级应用 3. 掌握7段数码管的连接方式和动态显示法 4. 掌握查表程序和延时等子程序的设计 实验要求: 1. 在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2. 在电路中增加八位7段数码管(共阳/共阴自选),将P2口作数据输出口与7段数码管数据引脚相连,P3引脚输出位选控制信号 3. 在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1-8 4. 实现指定数值的显示(可使用缓存数值) 5. 实现类似时钟的效果,如“ 13-23-25” 13时23分25秒 6. 实现时钟的自动计时 7. 扩展要求:结合LED显示,实现带数码显示 的交通灯 实验设备(环境): 1.计算机 2.Proteus ISIS 7 Professional应用程序 3.Keil应用程序 实验内容: 数码管动态显示技术要求实现:

1.动态显示法,实现数码管分别显示数字1-8; 2.实现指定数值的显示(可使用缓存数值)(33355223); 3.实现类似时钟的效果,如“ 13-23-25” 13时23分25秒; 4.实现时钟的自动计时; 扩展要求:结合LED显示,实现带数码显示的交通灯;

实验步骤、实验结果及分析: 1 实验步骤: 1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件 2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。 3、构建仿真电路:

用Proteus仿真单片机的方法

用PROTEUS对单片机进行仿真实例 Proteus软件是英国Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB 的设计; ISIS模块用来完成电路原理图的布图和仿真。它可以进行模拟电路仿真、数字电路仿真,也可以进行单片机及其外围电路组成的系统的仿真;软件提供了各种虚拟仪器,如示波器、逻辑分析仪、信号发生器、电压表、电流表等。和其它仿真软件相比,Proteus ISIS最大特色是对单片机系统的仿真,目前支持的单片机类型有: 68000系列、8051系列、ARM系列、AVR系列、PIC系列、Z80系列、HC11系列等。本文主要介绍Proteus软件在单片机方面的仿真功能,即ISIS模块的用法。 在单片机学习开发的过程中,程序的调试是一个很重要的环节,要安装电路进行实验,而且电路在调试过程中往往要进行调整和改变,这不紧增加了费用和难度,而且也影响了学习和开发的进度,这也成了一些初学者学习的障碍。如果使用Proteus 软件就可以大大节省时间和开发费用,可以在软件仿真通过后再制作印刷电路板进行电路实验。 一、Proteus ISIS软件的工作环境和一些基本使用方法 下面通过一个流水灯的实例来说明Proteus的基本使用方法,使用的软件版本是Proteus.Professional 7.1 SP2。 流水灯使用AT89C51单片机,用P2口作输出口。先在Keil uVision编译器中输入下列程序: #include void Delay1ms(unsigned int count)//延时子程序 { unsigned int i,j; for(i=0;i>LEDIndex); if(LEDIndex==7) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; Delay1ms(200); } } 将上述程序编译生成目标文件LED.hex。 然后按下列步骤进行: 1. 运行Proteus 7 Professional(ISIS 7 Professional) 出现如图1所示的界面:

基于Proteus仿真的51单片机数字频率计

目录 前言 (1) 正文 (1) 2.1 设计目的和意义 (1) 2.2 设计方法和步骤 (1) 2.2.1 数字频率计概述 (1) 2.2.2 频率测量仪的设计思路与频率的计算 (1) 2.2.3 基本设计原理 (2) 3.1数字频率计(低频)的硬件结构设计 (2) 3.1.1 系统硬件的构成 (2) 3.1.2 系统工作原理图 (2) 3.1.3 AT89C51单片机及其引脚说明 (3) 3.2 信号调理及放大整形模块 (5) 3.3 时基信号产生电路 (5) 3.4 PROTEUS仿真电路图 (7) 3.5 显示模块 (7) 3.6 软件设计 (9) 总结 (10) 参考文献 (11) 附录汇编源程序代码 (12)

前言 本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。 正文 2.1 设计目的和意义 数字频率计以其可靠性高,体积小,价格低,功能全等优点,广泛用于各种智能仪器中。这些智能仪器的操作在进行仪器校核以及测量控制的过程中,达到了自动优化,传统仪器面板上的开关和按钮被键盘所代替,测试人员在测量时只需按需要的键,省掉了许多繁琐的人工调节。智能仪器通常能自动选择量程自动校准,这样不仅方便了操作,也提高了测量精度。 2.2 设计方法和步骤 2.2.1 数字频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。 本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。用单片机实现自动测量功能。 基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。 2.2.2 频率测量仪的设计思路与频率的计算 频率测量仪的设计思路主要是:对信号分频,测量一个或 几个被测量信号周期中已知标准频率信号的周期个数,进而测 量出该信号频率的大小,其原理如右图1所示。 若被测量信号的周期为,分频数m1,分频后信号的周期为 T,则:T=m1Tx 。由图可知: T=NTo 图1 频率测量原理图(注:To为标准信号的周期,所以T为分频后信号的周期, 则可以算出被测量信号的频率f。) 由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;

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