文档库 最新最全的文档下载
当前位置:文档库 › 单片机数码管显示实验

单片机数码管显示实验

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

实验一数码管实验

一、实验目的

1. 了解数码管的显示原理;

2. 掌握JXARM9-2440 中数码管显示编程方法

二、实验仪器

JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE集成开发环境、串口连接线、PC机。

三、实验原理

7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。

LED显示器的接口一般有静态显示与动态显示接口两种方式。

本实验中采用的是动态显示接口,其中数码管扫描控制地址为0x20007000,位0-位5每位分别对应一个数码管,将其中某位清0 来选择相应的数码管,地址0x20006000 为数码管的数据寄存器。数码管采用共阳方式,向该地址写一个数据就可以控制LED 的显示,数据中的1对应的不亮,0对应的亮,数码管各位从高到低排列为dp-g-f-e-d-c-b-a,例如当数据寄存器是11111111时则不亮,当是01111111时则显示8,其原理图如图所示。

四、实验内容

1、编程实现:六个数码管同时正向显示0-F ,然后反向显示F-0。

2、编程实现:在六个数码管上依次显示与自己姓名有关的内容,可分辨出轮流显示。

3、编程实现:在六个数码管上依次显示与自己姓名有关的内容,分辨不出轮流显示。

4*、编程实现:在每个数码管上递增显示0—9 。

5*、自行开发。

五、实验程序

1,

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

/*文件名称:LEDSEG7.C */ /*实验现象:数码管依次显示出0、1,2、……9、a、b、C、d、E、F */ /****************************************************************************/

#define U8 unsigned char

unsigned char seg7table[16] = {

/* 0 1 2 3 4 5 6 7*/

0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,

/* 8 9 A B C D E F*/

0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,

};

void Delay(int time);

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

/* 函数说明: JXARM9-2410 7段构共阳数码管测试*/ /* 功能描述: 依次在7段数码管上显示0123456789ABCDEF */ /* 返回代码: 无*/ /* 参数说明: 无*/ /****************************************************************************/

void T est_Seg7(void) {

int i;

*((U8*)0x20007000)=0x00; /*6个数码管都亮*/

for(;;)

{

/*数码管从0到F依次将字符显示出来*/ for(i=0;i<0x10;i++)

{

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

/*数码管从F到0依次将字符显示出来*/ for(i=0x0f;i>0x00;i--)

{

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

}

// TODO

}

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

/* Function name : 循环延时子程序*/ /* Description : 循环'time' 次*/

/* Return type :void */

/* Argument : 循环延时计数器*/ /****************************************************************************/

void Delay(int time) {

int i;

int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

}

2,

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

/*文件名称:LEDSEG7.C */ /*实验现象:数码管依次显示ZHAngg,并能看出轮流显示*/

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

#define U8 unsigned char

unsigned char seg7table[16] = {

/* Z H A n g g 6 7*/

0xa4, 0x89, 0x88, 0xc8, 0x90, 0x90, 0x82, 0xf8,

/* 8 9 A B C D E F*/

0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,

/* H I N*/

0x89, 0xcf, 0x48

};

void Delay(int time);

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

/* 函数说明: JXARM9-2410 7段构共阳数码管测试*/ /* 功能描述: 在六个数码管上分别显示字母,与姓名有关*/ /* 返回代码: 无*/ /* 参数说明: 无*/ /****************************************************************************/

void T est_Seg7(void) {

int i;

*((U8*)0x20007000)=0x00;

for(;;)

{

*((U8*)0x20007000)=0x1f;

*((U8*)0x20006000)=seg7table[0];

Delay(10000);

*((U8*)0x20007000)=0x2f;

*((U8*)0x20006000)=seg7table[1];

Delay(10000);

*((U8*)0x20007000)=0x37;

*((U8*)0x20006000)=seg7table[2];

Delay(10000);

*((U8*)0x20007000)=0x3b;

*((U8*)0x20006000)=seg7table[3];

Delay(10000);

*((U8*)0x20007000)=0x3d;

*((U8*)0x20006000)=seg7table[4];

Delay(10000);

*((U8*)0x20007000)=0x3e;

*((U8*)0x20006000)=seg7table[5];

Delay(10000);

}

// TODO

}

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

/* Function name : 循环延时子程序*/ /* Description : 循环'time' 次*/

/* Return type :void */ /* Argument : 循环延时计数器*/ /****************************************************************************/

void Delay(int time) {

int i;

int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

}

3,

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

/*文件名称:LEDSEG7.C */ /*实验现象:数码管依次显示出ZHAngg,并看不出轮流显示*/

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

#define U8 unsigned char

unsigned char seg7table[16] = {

/* Z H A n g g 6 7*/

0xa4, 0x89, 0x88, 0xc8, 0x90, 0x90, 0x82, 0xf8,

/* 8 9 A B C D E F*/

0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,

/* H I N*/

0x89, 0xcf, 0x48

};

void Delay(int time);

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

/* 函数说明: JXARM9-2410 7段构共阳数码管测试*/ /* 功能描述: 在六个数码管上分别显示字母,与姓名有关*/

/* 返回代码: 无*/ /* 参数说明: 无*/ /****************************************************************************/

void T est_Seg7(void) {

int i;

*((U8*)0x20007000)=0x00;

for(;;)

{

*((U8*)0x20007000)=0x1f;

*((U8*)0x20006000)=seg7table[0];

Delay(10000);

*((U8*)0x20007000)=0x2f;

*((U8*)0x20006000)=seg7table[1];

Delay(10000);

*((U8*)0x20007000)=0x37;

*((U8*)0x20006000)=seg7table[2];

Delay(10000);

*((U8*)0x20007000)=0x3b;

*((U8*)0x20006000)=seg7table[3];

Delay(10000);

*((U8*)0x20007000)=0x3d;

*((U8*)0x20006000)=seg7table[4];

Delay(10000);

*((U8*)0x20007000)=0x3e;

*((U8*)0x20006000)=seg7table[5];

Delay(1);

}

// TODO

}

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

/* Function name : 循环延时子程序*/ /* Description : 循环'time' 次*/

/* Return type :void */ /* Argument : 循环延时计数器*/ /****************************************************************************/

void Delay(int time) {

int i;

int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

}

4,

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

/*文件名称:LEDSEG7.C */ /*实验现象:数码管依次显示出0、1,2、……9、a、b、C、d、E、F */ /****************************************************************************/

#define U8 unsigned char

unsigned char seg7table[16] = {

/* 0 1 2 3 4 5 6 7*/

0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,

/* 8 9 A B C D E F*/

0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, };

void Delay(int time);

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

/* 函数说明: JXARM9-2410 7段构共阳数码管测试*/ /* 功能描述: 依次在7段数码管各自递增显示0—9 */

/* 返回代码: 无*/ /* 参数说明: 无*/ /****************************************************************************/

void T est_Seg7(void) {

int i;

for(;;)

{

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

{

*((U8*)0x20007000)=0x1f;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

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

{

*((U8*)0x20007000)=0x2f;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

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

{

*((U8*)0x20007000)=0x37;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

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

{

*((U8*)0x20007000)=0x3b;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

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

{

*((U8*)0x20007000)=0x3d;

*((U8*)0x20006000)=seg7table[i];

Delay(10000);

}

}

// TODO

}

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

/* Function name : 循环延时子程序*/

/* Description : 循环'time' 次*/

/* Return type :void */

/* Argument : 循环延时计数器*/ /****************************************************************************/

void Delay(int time) {

int i;

int delayLoopCount=10000;

for(;time>0;time--);

for(i=0;i

}

六、实验结果与分析

实验一结果:六个数码管同时显示相同的符号,从0-F再由F-0之间的循环变换。

分析:在数码管扫描控制地址处选中六个数码管,使其同时亮,在给其数码管的数据寄存器存入不同符号对应的数值,加上相应的延迟,就

可以是轮流变换的循环的符号变换。

实验二结果:第一个数码管显示Z后,第二个显示H,接着第三个显示A,接着第四个显示n,接着第五个显示g,接着第六个显示g,接着第一

个再显示Z…..如此循环。

分析:设置控制地址使其单独并且循环显示,每个数码管的数据寄存器送

入不同的符号的数值,并设置较大的延迟时间即可产生该现象。实验三结果:六个数码管一起显示“ZHAngg”。

分析:原理同实验二,只是将延迟时间改小到人眼无法分辨的地步即使一起显示。

实验四结果:第一个数码管显示0—9之后,第二个接着显示0—9,接着第三个,第四个….

分析:设置循环使六个数码管循环单独显示,在每个数码管显示中再加入循环,使其递增显示0—9,设置较大的延迟,是我们可以看清实

验现象。

七、实验总结与心得体会

本次试验需要了解数码管的基本工作原理,基于C语言设计编程完成实验,实验的关键在于把握实现各种现象的本质上的差异,在程序上作出修改。通过本次试验对于实验的严谨性有了进一步的体验,稍有不小心实验结果就适得其反,以后要更加用心,更加认真的做实验。

关于单片机的一些小实验_06 一位数码管静态显示

/****************************************************************************** ************** * 功能:一位数码管静态显示。 * 硬件条件:1.CPU型号:AT89S52 * 2.晶振:12.000MHz * 3. P0口全部接上拉电阻。 * 4.短接P0.0__SMG1 * 短接P0.1__SMG2 * 短接P0.2__SMG3 * 短接P0.3__SMG4 * 短接P0.4__SMG5 * 短接P0.5__SMG6 * 短接P0.6__SMG7 * 短接P0.7__SMG8 * 短接P2.7__SI1 * 短接P2.6__RCK1 * 短接P2.5__SCK1 * 日期:2014年04月23号 ******************************************************************************* **************/ #include "reg52.h" // 包含头文件 /* 与编译器无关的数据类型定义*/ /****************************************************************************** **************/ typedef unsigned char uint8; // 无符号8位整型变量 typedef signed char int8; // 有符号8位整型变量 typedef unsigned short uint16; // 无符号16位整型变量 typedef signed short int16; // 有符号16位整型变量 typedef unsigned int uint32; // 无符号32位整型变量 typedef signed int int32; // 有符号32位整型变量 typedef float fp32; // 单精度浮点数(32位长度)typedef double fp64; // 双精度浮点数(64位长度) /****************************************************************************** **************/ /* 定义位变量*/ sbit P0_0 = P0 ^ 0; sbit P0_1 = P0 ^ 1; sbit P0_2 = P0 ^ 2; sbit P0_3 = P0 ^ 3; sbit P0_4 = P0 ^ 4; sbit P0_5 = P0 ^ 5; sbit P0_6 = P0 ^ 6;

单片机c语言版数码管动态显示实验报告

数码管动态显示实验 一、实验要求 1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2.在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码 管数据引脚相连,P2.0~P2.3引脚输出选控制信号 3.在Keil软件中编写程序,采用动态显示法,实现数码管显示变量unsigned int show_value的值(show_value的值范围为0000~9999),即把show_value的千百 十个位的值用数码管显示出来。 二、实验目的 1.巩固Proteus软件和Keil软件的使用方法 2.学习端口输入输出的高级应用 3.掌握7段数码管的连接方式和动态显示法 4.掌握查表程序和延时等子程序的设计 三.实验说明 (条理清晰,含程序的一些功能分析计算) 如下图(五)所示,由P1口将要显示的数字输给七段数码管;再由P2第四位输给数码管的公共端,作为扫描输入信号;用外部中断P3.2和P3.3分别接PB1与PB2,实现数字的增减。所要实现的功能是,开始运行电路功能图时,四个数码管分别显示0000,按下PB1增1,直到9999回到0000,相反按下PB2减1,直到0000回到9999。 在算相关数据时,由于要显示个十百千的不同数字,要调用disp函数, disp[0]=show/1000; //显示千位的值 disp[1]=show%1000/100; //显示百位的值 disp[2]=show%100/10; //显示十位的值 disp[3]=show%10; //显示个位的值 本实验需要用到IE寄存器与TCON寄存器。 四、硬件原理图及程序设计 (一)硬件原理图设计

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

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数码管显示程序>

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

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

数码管显示 一、数码管静态显示 1、电路图 图1 2、电路分析 该电路采用串行口工作方式进行串行显示实验,串行传输数据为8位,只能从RXD端输

入输出,TXD端用于输出同步移位脉冲。当CPU 执行一条写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始将发送缓冲器SBUF 中的8位数据按照从低位到高位依次发送出去,8位数据发送完毕,发送结束标志TI置1,必须由软件对它清0后才能启动发送下一帧数据。 因此,当输完8个脉冲后,再一次来8个脉冲时,第一帧的8位数据就移到了与之相连的第二个74LS164中,其他数据依此类推。 3、流程图

发送数据 二、数码管动态显示 1、电路图

图2 2、电路分析 R1-R7电阻值计算:一个7-seg 数码管内部由8段LED 组成,因此导通电压和电流与LED 灯相同,LED 导通压降大概在 1.5V-2.2V ,电流3mA-30mA ,单片机的工作电压是5V , 所以 一般取Rmin 和Rmax 中间值,330Ω、470Ω、510Ω。 由于P0口内部没有上拉电阻,所以在P0 口接1003025Im min 1325Im max =-===-==mA V V an U R K mA V V in U R

排阻,上拉电压。如果没有排阻的话,接上拉电阻时需要考虑数码管的电流,如果太小的话,是驱动不了数码管的。如图3: 发现电流大于5mA时,数码管才能亮,与前面电流最小3mA不符,因此计算数码管电流时使其在10mA-20mA之间,确保能驱动数码管亮。 两个74HC573实现对六位数码管的段选和位选,控制端为LE(第11脚)。 3、思路分析 先使第一个573输出同步,把数据送入573中,然后锁存,第二个573输出同步,打开第一个数

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

51单片机(四位数码管的显示)程序 基于单片机V1或V2实验系统,编写一个程序,实现以下功能:1)首先在数码管 上显示P ”个字符;2)等待按键,如按了任何一个键,则将这 4个字符清除, 改为显示0000”个字符(为数字的0)。 E3最佳答案 下面这个程序是4x4距阵键盘丄ED 数码管显示,一共可以到0-F 显示,你可以稍微 改一下就可以实现你的功能了,如还有问题请发信息,希望能帮上你! #i nclude un sig ned char code Dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1 ,0x86,0x8e}; //gongyang 数码管 0-F 代码 void key_delay(void) { int t; for(t=0;t<500;t++); } un sig ned char k; //设置全局变量k 为键盘的键值 键盘延时函数 键盘扫描函数 ***************************** */ //延时函数

void keyscan(void) //键盘初始化 //有键按下? //延时 //确认真的有键按下? //使行线 P2.4 为低电平,其余行为高电平 //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)//键盘扫描函数 { unsigned char a; P2 = 0xf0; if(P2!=0xf0) { key_delay(); if(P2!=0xf0) { P2 = 0xfe; key_delay(); a = P2; switch (a)

单片机数码管静态显示实验程序(汇编)

单片机数码管静态显示实验程序 org 00h num equ p0 ;p0口连接数码管 clr p2.0 ; mov dptr ,#tab clr a mov r2,#0 loop: movc a,@a+dptr mov num ,a acall delay_200ms inc r2 mov a,r2 cjne r2,#15, loop mov r2,#0 clr a ajmp loop tab : DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH delay_200ms: mov r3,#20 delay: acall delay_10ms djnz r3,delay ret ;;;;;;;;;;;;;;;; 非中断精确1MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; delay_1ms: MOV R7 ,#249 signed: ;循环部分4机器周期 nop nop djnz R7 ,signed ret ;返回指令2机器周期 ;2+249*4+2=1000us 可以精确定时1MS,假设外部晶振是12M

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 非中断精确10MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov r6,#9 ;2个机器周期用2us delay_10ms_sined: ;9次循环共用9(1ms+4us)=9036us acall delay_1ms djnz r6,delay_10ms_sined MOV r6 ,#240 ;2个机器中期用2us signed_10ms : ;循环部分4机器周期共240次 nop nop djnz r6 ,signed_10ms ret ;返回指令要2us ;2us+9036us+240*4us+2us = 10ms 即可精确定时10ms ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 非中断精确定时1s ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; delay_1s: mov r5,#99 ;两个机器周期2us delay_1s_signed: ;循环指令周期为4us,加上延时10ms ;(10ms+4us)*99 = 990.396ms acall delay_10ms djnz r5,delay_1s_signed mov r5 ,#9 ;两个机器周期2us signed_1s: ;循环指令周期为4us,加上延时1ms ;(1ms+4us)*9 = 9ms+36us acall delay_1ms djnz r5 ,signed_1s mov r5 ,# 140 ;机器周期2us signed_1s_: ;一次循环4us共有140次。140us*4 = 560us nop nop djnz r5,signed_1s_ ret ;2us ;2us+990ms+396us+2us+9ms+36us+2us+560us+2us = 999ms+1000us = 1s end

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

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) 置计数初值。

单片机实验四 I O显示控制实验(数码管显示实验)

电子信息工程学系实验报告 课程名称:单片微型计算机与接口技术Array 实验项目名称:实验四 I/O显示控制实验实验时间: 班级: **** 姓名:**** 学号:******** 一、实验目的: 1、熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。 2、了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。 3、学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。 二、实验环境: 1、Windows XP系统; 2、Keil uVision2、proteus系列仿真调试软件 三、实验原理: 1、LED数码管的结构和原理 LED显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种。 (a)共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮; (b)共阳极LED显示器的发光二极管阳极并接。 2、七段显示器与单片机接口:只要将一个8位并行输出口与显示器的发光二极管引脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符,如下表所示。通常将控制发光二极管的8位字节数据称为段选码。 八段选码(显示码)的推导(以共阳数码管显示C为例): 要显示C则a、f、e、d四个灯亮2.为是共阳数码管,则a、f、e、d应送0时亮3.dp-a为11000110B 3、多位数码管的显示:电路结构、动态静态两种实现原理: LED显示器有静态显示与动态显示两种方式。 (1) LED静态显示方式 各位LED的位选线连在一起接地或接+5V;每位LED的段选线(a-dp)各与一个八位并行口相连; 在同一时间里每一位显示的字符可以各不相同。

数码管实验报告

篇一:实验八数码管led实验报告 苏州大学实验报告 院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期 实验名称:数码管led实验 一.实验目的 理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管lg5641ah与mcu的接线图。二.实验内容 理解8段数码管原理,运行与理解各子程序,编制一个4连排8段数码管程序,mcu的排8段数码管显示mcu复位后的开始到现在的运行时间。由于只有四个数码管,所以只显示mcu 运行到目前为止的分钟和秒,当计时达到一个小时,就重新从00:00开始计时。另外,也可以通过pc方的串口通信程序,指定计时的开始值。三.实验过程(一)原理图 图8-2数码管外形 dp a b c e f g dp 图8-1 数码管(二)接线图 图8-3 mcu与4连排8段数码管的连接第1页 (三)基本原理 8段数码管一般由8个发光二极管(llight-emitting diode,led)组成,每一个位段就是一个发光二极管。一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。根据公共端所接电平的高低,可分为共阳极和共阴极两种。有时数码管不需要小数点,只有7个位段,称7段数码管。共阴极8段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:要使a段发光,则在发光。 四.编程 (一)流程图 图8-4 数码管led显示流程图(及其中断子程序) (二)所用寄存器名称及其各个位 程序中没有使用与led显示相关的控制和状态寄存器,仅仅使用了通用i/o口a口和b口。(三)主要代码段 1第2页第3页 2.c 第4页 第5页 篇二:数码管实验报告 单片机实验报告 一、实验名称 数码管动态扫描显示01234567(实验五) 二、实验目的 (1)掌握数码管显示数字的原理。 (2)通过不同的编程实现灵活运用数码管。 三、实验原理 四、相关原理图 五、实验内容

基于51单片机的LED数码管动态显示

基于51单片机的LED数码管动态显示 LED数码管动态显示就是一位一位地轮流点亮各位数码管,对于每一位LED数码管来说,每隔一段时间点亮一次,利用人眼的“视觉暂留"效应,采用循环扫描的方式,分时轮流选通各数码管的公共端,使数码管轮流导通显示。当扫描速度达到一定程度时,人眼就分辨不出来了。尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,认为各数码管是同时发光的。若数码管的位数不大于8位时,只需两个8位I/O口。 1 硬件设计 利用51单片机的P0口输出段码,P2口输出位码,其电路原理图如下所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“DT.DSN”。在器件选择按钮中单击

“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。 51单片机AT89C51 一片 晶体CRYSTAL 12MHz 一只 瓷片电容CAP 22pF 二只 电解电容CAP-ELEC 10uF 一只 电阻RES 10K 一只 电阻RES 4.7K 四只 双列电阻网络Rx8 300R(Ω) 一只 四位七段数码管7SEG-MPX4-CA 一只 三极管PNP 四只 若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER 和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 LED数码管动态显示是一位一位地轮流点亮各位数码管的,因此要考虑每一位点亮的保持时间和间隔时间。保持时间太短,则发光太弱而人眼无法看清;时间太长,则间隔时间也将太长(假设N位,则间隔时间=保持时间X(N-1)),使人眼看到的数字闪烁。在程序中要合理的选择合适的保持时间和间隔时间。而循环次数则正比于显示的变化速度。 LED数码管动态显示的流程如下所示。

单片机课设-数码管显示滚动控制

《单片机设计与实训》 设计报告 题目:数码管滚动显示控制 姓名:王伟杰 班级:自动化四班 学号: 2014550430 指导老师:莹 提交日期: 2016年10月29日

目录 一、设计题目与要求 (3) 1.1设计题目 (3) 1.2设计要求 (3) 二、系统方案设计 (3) 2.1硬件电路设计 (3) 1.单片机最小系统简介 (3) 2.数码管显示电路 (6) 2.3硬件选型及说明 (6) 1. ST89C51单片机 (6) 2. 四位一体七段共阴极显示数码管 (8) 三、系统原理图设计与仿真 (9) 3.1系统仿真图 (9) 3.2系统仿真结果 (10) 四、程序设计 (11) 4.1程序设计 (11) 4.2程序流程图 (12) 五、系统调试 (14) 5.1系统硬件调试 (14) 5.2系统软件调试 (14) 六、总结与体会 (14) 附录一 (16) 附录二 (17) 附录三 (27)

一、设计题目与要求 单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机部资源的使用。单片机课程设计容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能。 1.1设计题目 数码管滚动显示控制 1.2设计要求 自制一个单片机最小系统,包括串口下载、复位电路,采用两个四位一体数码管作为显示器件,通过按钮选择实现四种滚动显示模式,例如从左至右,从右至左,缩,外扩等,滚动信息可以是数字或有意义的英文字符。 二、系统方案设计 2.1硬件电路设计 本设计的硬件电路主要包括的模块有:单片机最小系统、七段数码管显示模块、 1.单片机最小系统简介 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。结构图如下:

实验四 数码管静态显示

实验四数码管静态显示 一、实验目的 1.熟练掌握单片机定时器的原理和应用方法。 2.了解数码管的原理,掌握数码管的真值表的计算方法。 二、实验内容 通过对单片机编程来实现数码管静态显示。 三、实验知识点 3.1定时器的初步认识 时钟周期:时钟周期T是时序中最小的时间单位具体计算的方法就是1/时钟源,我们KST-51单片机开发板上用的晶振是11.0592M,那么对于我们这个单片机系统来说,时钟周期=1/11059200秒。 机器周期:我们的单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的,而C语言一条语句的时间是不可计算的。51单片机系列,在其标准架构下一个机器周期是12个时钟周期,也就是12/11059200秒。 定时器和计数器。定时器和计数器是单片机内部的同一个模块,通过配置SFR(特殊功能寄存器)可以实现两种不同的功能。 顾名思义,定时器就是用来进行定时的。定时器内部有一个寄存器,我们让它开始计数后,这个寄存器的值每经过一个机器周期就会加1一次,因此,我们可以把机器周期理解为定时器的计数周期。我们的秒表,每经过一秒,数字加1,而这个定时器就是每过一个机器周期的时间,也就是12/11059200秒,数字加1。 3.2 定时器的寄存器描述 标准的51里边只有定时器0和定时器1这两个定时器,现在很多单片机也有多个定时器的,在这里我们先讲定时器0和1。那么我前边提到过,对于单片机的每一个功能模块,都是由他的SFR,也就是特殊功能寄存器来控制。而和定时器有关的特殊功能寄存器,有TCON和TMOD,定时值存储寄存器。 a)定时值存储寄存器 表4-1中的寄存器,是存储计数器的计数值的,TH0/TL0用于T0, TH1/TL1用于 T1。 表4-1 定时值存储寄存器 表4-2 TCON--定时器/计数器控制寄存器的位分配(地址:88H) 表4-3 TCON--定时器/计数器控制寄存器的位描述

数码管动态显示实验报告

实验四数码管动态显示实验一 一、实验要求 1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2.在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码 管数据引脚相连,P2.0~P2.3引脚输出选控制信号 3.在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1,2,3,4 二、实验目的 1.巩固Proteus软件和Keil软件的使用方法 2.学习端口输入输出的高级应用 3.掌握7段数码管的连接方式和动态显示法 4.掌握查表程序和延时等子程序的设计 三.实验说明 本实验是将单片机的P1口做为输出口,将四个数码管的七段引脚分别接到P1.0至P1.7。由于电路中采用共阳极的数码管,所以当P1端口相应的引脚为0时,对应的数码管段点亮。程序中预设了数字0-9的段码。由于是让四个数码管显示不同的数值,所以要用扫描的方式来实现。因此定义了scan函数,接到单片机的p2.0至p2.3 在实验中,预设的数字段码表存放在数组TAB中,由于段码表是固定的,因此存储类型可设为code。 在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序,生成Hex文件,把Hex文件导到Proteus软件中进行仿真。为了能够更好的验证实验要求,在编写程序时需要延时0.5s,能让人眼更好的分辨;89C51的一个机器周期包含12个时钟脉冲,而我们采用的是12MHz晶振,每一个时钟脉冲的时间是1/12us,所以一个机器周期为1us。在keil程序中,子函数的实现是用void delay_ms(int x),其中x为1时是代表1ms。 四、硬件原理图及程序设计 (一)硬件原理图设计 电路中P1.0到P1.7为数码管七段端口的控制口,排阻RP1阻值为220Ω,p2.0到p2.3为数码管的扫描信号。AT89c51单片机的9脚(RST)为复位引脚,当RST为高电平的时间达到2个机器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器。18、19引脚是接晶振脚。而接地和电源端在软件中已经接好,所以不用在引线。 如下图所示:

51单片机数码管显示电子时钟C程序

#include #define LEDLen 6 ; #define tick10000; #define T100us=(256-100); unsigned char hour,minute,second; unsigned int c100us; xdata unsigned char OUTBIT_at_0x8002; xdata unsigned char OUTSEG_at_0x8004; unsigned char LEDBuf[6]; code unsigned char LEDMAP[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 }; void DisplayLED() { unsigned char i,j,pos,LED; pos = 0x20 ; for( i=0;i<6;i++ ) { OUTBIT =0; LED=LEDBuf[i]; OUTSEG =LED; OUTBIT = pos; Delay(1); pos>>=1; } } void main() { TMOD=0x02; TH0=T100us; TL0=T100us; EA=1,IT0=1; hour=0; minute=0 second=0; c100us=tick; TR0=1; while(1) { LEDBuf[0]=LEDMAP[hour/10] ; LEDBuf[1]=LEDMAP[hour%10] ;

LEDBuf[2]=LEDMAP[minute/10]; LEDBuf[3]=LEDMAP[minute%10]; LEDBuf[4]=LEDMAP[second/10]; LEDBuf[5]=LEDMAP[second%10]; DISplayLED(); } } void T0_interrupt1 { c100us--; if(c100us==0) { c100us=tick; second++; if(second==60) { second=0; minute++; if(minute==60) { minute==0; hour++; if(hour==24)hour==0; } } } }

51单片机控制的交通灯系统实验报告

系统实验报告 ——基于51单片机的交通灯设计 专业:XX 学生姓名:xx XX 学号:00000000000 指导教师:wwwwwwwwwww 2000年x月x日

目录 1 设计任务和性能指标 (1) 1.1设计任务 (1) 1.2性能指标 (1) 2 设计方案 (2) 2.1任务分析 (2) 2.2方案设计 (2) 3 系统硬件设计 (3) 3.1单片机的最小系统 (3) 3.2电源电路 (4) 3.3数码管显示时间电路设计 (4) 3.4信号灯控制电路设计 (5) 4 系统软件设计 (5) 4.1主程序设计 (5) 5 调试及性能分析 (6) 5.1调试分析 (6) 5.1.1 软件调试 (6) 5.1.2 硬件调试 (6) 5.1.3 系统功能调试 (6) 6 心得体会 (6) 参考文献 (8) 附录1 系统原理图 (9) 附录3 程序清单 (10) 附录3元器件清单 (14)

1 设计任务和性能指标 1.1设计任务 利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图上图所示。设东西向为主干道,南北为支干道。 1.2性能指标 1. 状态1:仅亮灯,数码管不工作。 按下键4,红/黄/绿三色灯交替亮: 红—〉(20秒)黄(闪烁)—〉(5秒)绿—〉(20秒) 黄(闪烁)—〉(5 秒)红 2. 状态2:灯和数码管相结合,模拟十字路口的交通灯 在以上功能的基础上数码管倒计时显示时间。 南 北 东 西

数码管动态显示的51单片机时钟设计

一看就会,适合初学者参考 T0,T1同时开中断,和别人的有点不一样 源程序如下 //数码管设计的可调电子钟 //K1,K2分别调整小时和分钟 #include<> #include<> #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99, //共阳段码 0x92,0x82,0xF8,0x80,0x90,0xFF}; uchar DSY_BUFFER[]={0,0,0xBF,0,0,0xBF,0,0}; //显示缓存uchar Scan_BIT; //扫描位,选择要显示的数码管 uchar DSY_IDX; //显示缓存索引 uchar Key_State; //P1端口按键状态 uchar h,m,s,s100; //十分秒,1/100s void DelayMS(uchar x) //延时 { uchar i; while(x--) for(i=0;i<120;i++); } void Increase_Hour() //小时处理函数 { if(++h>23)h=0; DSY_BUFFER[0]=DSY_CODE[h/10]; DSY_BUFFER[1]=DSY_CODE[h%10]; } void Increase_Minute()//分钟处理函数 { if(++m>59) { m=0;Increase_Hour(); } DSY_BUFFER[3]=DSY_CODE[m/10]; DSY_BUFFER[4]=DSY_CODE[m%10]; }

单片机数码管静态显示实验

实验五串行口静态显示 一.实验目的 1.学习用单片机的串行口扩展74LS164 实现静态显示方法。 2.学习用单片机I/O 口模拟串口工作实现静态显示的编程方法。 3.掌握静态显示的编程方法和数码管显示技术。 二.实验任务 1.根据共阳数码管的功能结构,自编一组0~F 的笔形码,并按顺序存放建立程序数据表格。 2.利用单片机串行口扩展74LS164,完成串--并转换输出,实现静态显示:要求循环显示0~F 这数字,即输出数字“0”时,四位同时显示0,显示1 秒后再输出数字“1”,即四位同时显示1, 依次类推,相当于数字自检循环显示。 3.利用单片机串行口(RXD、TXD)编写静态显示程序,在数码显示器上30H、31H 单元的内 容,30H、31H 单元为任意的十六进制数。 4.用P1.6、P1.7 分别替代RXD、TXD 做模拟串口完成任务3 的静态显示程序。 三.实验电路 静态显示实验电路 连线方法:静态显示只要连接2 根线:单片机的RXD 与DAT 节点连接,TXD 与CLK 接点连 接,要把电源短路片插上。PW11 是电源端。 四.实验原理说明 1.静态显示实际上动态的过程,静态的显示,单片机串行口输出的数据通过74LS164 串并转换 输出,每输出一个数据,把原先的的数据推挤到下一个显示位上显示。实验时,单片机串行口应工作在方式0,RXD(P3.0)输出串行数据,TXD(P3.1)输出移位时钟,在移位时钟的作用下,串行口发送缓冲器的数据一位一位地从RXD 移入到74LS164 中,并把后面送入的数据推挤原先的数据到下一个级联的 74LS164 中输出,每输出一个数据可以延时1ms。实验时,通过改变延时时间,可以更清楚地观察到数据推挤的过程。 2.串行口工作在方式0 时,串行传输数据为8 位,只能从RXD 端输入输出。TXD 端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12,由软件置位串行控制寄存器SCON 的REN位才能启动串行接收。在CPU 将数据写入SBUF 寄存器后,立即启动发送,第8 位数据输送完后,硬件将SCON 寄存器的TI 位置1,必须由软件对它清0 才能启动发送下一帧数据。 3.静态显示笔型码: 笔形码:0 1 2 3 4 5 6 7 8 9 A B C D E F 11H,D7H,98H,92H,56H,32H,30H,97H,10H,12H,14H,70H,39H,D0H,38H,3CH 五.程序流程图和资源分配

用单片机实现1位LED数码管显示0-9

单片机课程设计 题目1位LED数码管显示0-9 姓名陈益明 学号 班级 09电力 指导老师许丽汪厚新 目录 一:实验目的与任务…………………二:实验要求…………………………三:实验内容…………………………... 四:实验器材…………………………五:关于PLC控制LED介绍………. 六:原理图绘制说明…………………

七:流程图绘制以及说明……………八:电路原理图与仿真………………九:源程序……………………………十:心得体会………………………… 十一:参考文献……………………… 一、实验与任务 结合实际情况,编程设计、布线、程序调试、检查与运行,完成一个与接近实际工程项目的课题,以培养学生的实际操作能力,适应生产一线工作的需要。做到能检查出错误,熟练解决问题;对设备进行全面维修。 通过实训对PLC的组成、工作原理、现场调试以及基于网络化工作模式的基本配置与应用等有一个一系列的认识和提高。 利用51单片机、1个独立按键及1位7段数码管等器件,设计一个单片机输入显示系统,要求每按一下独立按键数码管显示数据加1(数码管初始值设为0,计到9后再加1 ,则数码管显示0)。 本次设计采用12MHz的晶体振荡器为单片机提供振荡周期,外加独立按键,复位电路和显示电路组成。 二、实验要求 1掌握可编程序控制器技术应用过程中的一些基本技能。 2、巩固、加深已学的理论知识。 3了解可编程控制器的装备、调试的全过程。

4、培养我们综合运用所学的理论知识和基本技能的能力,尤其是培养我们 把理论和实际结合起来分析和解决问题的能力。适应世界生产的需要。 培养出一批既有理论知识又有动手能力的人才。 三、实验内容 1、练习设计、连接、调试控制电路; 2、学习PLC程序编程; 四、元器件清单 五、关于PLC控制LED介绍: PLC可编程控制器:它采用一类可编程的存储器,用于其内部存储程序、执行逻辑运算、顺序控制、定时、计数与算数操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。 用PLC控制LED直接进行数据显示,可以降低成本,使得数据显示直观。 传统数显有两种方法:1、由PLC编制程序进行译码,来控制显示a-g段;2、利用译码组合电路产生a-g各段译码信号实现LED数码管显示。前一种方法逻辑译码关系复杂,后一种方法译码电路冗长,都不利于显示的实现。传统数显逻辑译码关系复杂,而用PLC的位组合元件和译码功能指令方法来实现

相关文档
相关文档 最新文档