基于单片CPU的8LED显示电子码表设计及扩展
单片机课程设计-8x8LED点阵显示的技术
郑州科技学院《单片机》课程设计题目8x8LED点阵显示的技术学生姓名X X X专业班级电气工程及其自动化X班学号XXXXXX院(系)电气工程学院指导教师X X完成时间2015 年XX 月X 日目录1 设计目的 (3)2 设计任务及要求 (3)3 设计方案 (3)4 设计原理及功能说明 (4)5 元器件的介绍及选用 (5)6单元电路设计说明 (9)7 硬件的焊接与调试 (11)7.1元器件焊接 (11)7.2电路调试 (12)8 软件介绍 (13)9 设计总结 (14)参考文献 (16)附录1:总体电路原理图 (17)附录2:实物图 (18)附录3:元器件清单 (19)1 设计目的为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期一周的单片机课程设计。
通过实际操作使我们在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。
单片机课程设计的目的是培养我们综合设计的能力,训练学生灵活应用所学知识,独立完成问题分析、总体设计和编程实现等软硬件开发全过程的综合实践能力。
巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。
为今后学习其他计算机课程打下基础。
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程能力和创新意识。
2 设计任务及要求利用8x8点阵显示屏,自己设计、焊接并调试电路板,实现单片机的控制下,点阵显示“电子设计”,显示方式分别为左右滚动显示、上下滚动显示。
系统功能说明:系统在正常工作模式下为上下左右循环显示“滚动光柱”,当按下复位开关时点阵显示屏开始上下左右各三次循环显示。
在点阵显示过程中按下复位开关后单片机复位,程序从新开始。
3 设计方案本设计采用STC89C52单片机作为主控制器,外部加数码管显示。
基于C51单片机的8×8 LED点阵屏汉字显示
单片机课程设计报告—8×8 LED点阵屏显示“大”字第一章设计内容及要求 (3)第二章总体设计 (3)2.1 系统框图.........................................................3、4 2.2 设计步骤 (4)第三章各部分电路设计 (4)3. 1 复位电路………………………………………………4 、5 3.2时钟电路……………………………………………5、 63.3显示电路.........................................................6、7 3. 4大字取模 (7)3.5 LED 引脚连接方式..........................................8、9 3.6总体电路 (9)第四章程序设计 (9)4.1软件流图......................................................9、10 4.2大字的模 (10)4.2主程序......................................................10、11 4.3 C51单片机开发工具:keil 4 Proteus使用方法...11、16 第五章仿真结果 (16)第六章总结与体会................................................17、18 第七章参考文献 (18)附录程序清单……………………………………………19、20基于C51单片机的8×8 LED点阵屏汉字显示一设计要求1、设计一个8*8点阵LED电子显示屏2、要求在目测条件下LED显示屏各点亮度均匀、充足,可静态显示一个大字。
二总体方案设计2.1系统框图根据设计要求与设计方案,硬件电路的设计框图如图1所示。
硬件电路结构由8个部分组成:时钟电路、复位电路、按键接口电路、电源电路、点阵显示阳极电路、点阵显示阴极电路和8*8点阵显示电路。
南邮设计 基于CPU的8LED温度显示控制器的设计的程序
#include <reg52.h>#include <intrins.h>#include <string.h>#include <stdio.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int#define Self_Define_ISP_Download_Command 0x3D#define pb XBYTE[0xff7d]#define pa XBYTE[0xff7c]#define ps XBYTE[0xff7f]sfr IAP_CONTR=0xE7;sbit DQ = P3^5; //DS18B20接入口uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;//0123456789 uchar send[8];uchar pos[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};char i,bai,shi,ge; //定义变量void Init_Com(void){TMOD = 0x20;SM0=0;SM1=1;REN=1;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;EA=1;ES=1;}/*延时子函数*/void delay(uint num){while(num--) ;}/*************DS18b20温度传感器函数*********************/Init_DS18B20(void) //传感器初始化{uchar x=0;DQ = 1; //DQ复位delay(10); //稍做延时DQ = 0; //单片机将DQ拉低delay(80); //精确延时大于480us //450DQ= 1; //拉高总线delay(20);x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败delay(30);}//读一个字节ReadOneChar(void){uchar i=0;uchar dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;delay(8);}return(dat);}//写一个字节WriteOneChar(unsigned char dat){uchar i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay(10);DQ = 1;dat>>=1;}delay(8);}//读取温度int ReadTemperature(void){uchar a,b;float tt;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delay(150);Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar();//低位b=ReadOneChar();//高位tt=(b*256+a)*0.0625*100;//2个8位合成16位t=(int)tt;/*t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; */return(t);}/*显示子函数*/void display(){int temp,bai,shi,ge;uchar led_bai,led_shi,led_ge;temp=ReadTemperature();//读温度bai=temp/1000;//显示百位shi=temp%1000/100;//显示十位ge=temp%100/10;//显示个位led_bai=table[bai];led_shi=table[shi];led_ge=table[ge];led_shi=led_shi|0x80;send[0]=led_bai;send[1]=led_shi;send[2]=led_ge;send[3]=0x63;send[4]=0x39;send[5]=0x00;send [6]=0x00;send[7]=0x00;ps=0x80;for(i=0;i<8;i++){P2=pos[i];//传送的位置P0=send[i];//传送的数字delay(500);//防止程序发生错误delay(5);// delay(50);}void main(){Init_Com();//初始化while(1){//ReadTemperature(); display();//显示函数}}。
基于单片机控制的8X8点阵汉字显示屏的设计
陕西理工学院毕业设计基于单片机控制的点阵汉字显示屏的设计【摘要】该设计是一款以单片机AT89c51为控制器的LED点阵显示屏系统。
该系统可实现汉字的静态和动态特效显示。
系统采用PC机作为上位机,上位机向单片机发送控制命令和上位机所存储的显示代码,AT89c51单片机接收并处理PC机的控制命令以及显示代码,由显示驱动模块驱动一个16×16分辨率的LED点阵显示屏的扫描显示。
PC机与单片机之间的通信采用RS—232C通信标准来实现。
【关键字】AT89c51;LED点阵显示;串行通信陕西理工学院毕业设计Design and Realization of the Lattice Screen of LEDBased on AT89C51Abstract:This paper introduces a design of the LED lattice display system base on MCU AT89c51. The system can display Chinese characters of the show and from top to bottom and move around the magi c show. And can be cascaded to expand the screen size to achieve increased content purposes. The PC sends control commands and displays code to microcontroller, A T89c51 receives control commands from PC and shows the code, Driver module drives a 16×16-reso lution LED lattice LED’s panel display scan showed. Communication between PC and the microcontroller using RS-232C communications standards.Key words:A T89c51;lattice LED’s panel display;serial communication陕西理工学院毕业设计目录引言 (1)1.课题相关知识 (2)1.1AT89C51简介 (2)1.2串并转换器74LS164简介 (2)1.3锁存器74L373简介 (3)1.4DSP简介 (3)1.5EDA简介 (3)2.系统设计方案 (5)2.1通信系统设计 (5)2.2LED点阵显示屏设计 (5)2.3硬件设计方案图 (6)2.4系统软件编译器的选择 (6)2.5上位机控制传输软件设计 (7)3. 硬件开发 (8)3.1硬件整体设计概述及功能分析 (8)3.2控制系统设计 (8)3.3译码电路设计 (10)3.4列驱动电路设计 (10)3.5通信系统硬件设计 (11)3.6电源设计 (11)3.7LED显示屏设计 (12)4. 软件设计及开发 (14)4.1程序设计流程图 (14)4.2LED显示屏的显示方式的设计 (14)4.2.1点阵数据表达方式的设计 (15)4.2.2 显示程序的设计 (16)4.3通信设计 (17)5. 系统测试 (19)5.1系统硬件部分调试方法 (19)5.1.1串口调试 (19)5.2系统联合调试及结果 (19)总结 (21)致谢 (22)参考文献 (23)科技外文翻译 (24)附录A 硬件原理图 (31)附录B 仿真图 (32)附录C 设计程序 (33)陕西理工毕业设计引言随着现代计算机技术和自动化技术的发展,带动了嵌入式技术的飞速发展。
基于MCS51单片机的LED显示屏控制器设计与实现
基于MCS51单片机的LED显示屏控制器设计与实现一、概述随着科技的飞速发展,LED显示屏已广泛应用于各种公共场合,如商场、车站、广场等,成为信息传播和展示的重要工具。
要使LED 显示屏正常工作并呈现出丰富多彩的视觉效果,就需要一个高效、稳定的控制器。
基于MCS51单片机的LED显示屏控制器,以其性价比高、编程灵活、稳定性强等特点,在LED显示屏控制领域得到了广泛的应用。
MCS51单片机,作为一种经典的8位单片机,自问世以来就在工业自动化、智能仪表、消费类电子等领域发挥着重要作用。
其强大的IO处理能力、灵活的编程方式以及稳定的性能,使得它成为LED显示屏控制器的理想选择。
本文将详细介绍基于MCS51单片机的LED显示屏控制器的设计与实现过程。
我们将对LED显示屏的基本原理和工作方式进行阐述,接着分析MCS51单片机的特点和在LED显示屏控制中的应用优势。
我们将从硬件设计和软件编程两个方面,详细介绍如何构建一个稳定、高效的LED显示屏控制器。
我们将通过实例展示,验证所设计的LED显示屏控制器的实际效果和应用价值。
通过本文的阅读,读者将能够深入了解基于MCS51单片机的LED 显示屏控制器的设计与实现过程,为实际工程项目中的LED显示屏控制器的设计与开发提供有益的参考和借鉴。
1. LED显示屏的发展背景和应用领域随着科技的飞速发展,信息显示技术也取得了巨大的进步。
LED 显示屏作为一种先进的显示技术,以其高亮度、高清晰度、色彩鲜艳、寿命长、功耗低等优点,逐渐在各个领域取代了传统的显示设备。
LED 显示屏的发展背景和应用领域广泛,为现代社会的信息传播和视觉呈现提供了强有力的支持。
在LED显示屏的发展背景方面,其技术进步是扩大市场需求及应用的最大推动力。
随着半导体材料和芯片制造技术的不断突破,LED 的性能得到了极大的提升,从而推动了LED显示屏的快速发展。
同时,随着大规模集成电路和计算机技术的不断进步,LED显示屏的控制技术也得到了显著提升,使得LED显示屏在显示效果、稳定性和可靠性等方面都有了很大的提高。
基于单片机的led显示屏的课程设计报告书
摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
本设计是8×8点阵LED电子显示屏的设计。
整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。
该电子显示屏可以显示各种文字或单色图像,全屏能显示1个汉字,采用1块8×8点阵LED显示模块来组成1个8×8点阵显示模式。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能与原理、相应软件的程序设计,以与使用说明等。
关键词:AT89C51;LED;点阵显示;动态显示目录摘要第一章设计描述第二章设计分析2.1设计要求2.2设计任务2.3运行环境2.4开发工具第三章硬件设计3.1 总体设计3.2 电源、单片机系统与其管脚3.3点阵与其驱动部分3.4硬件电路连线3.5显示部分第四章软件设计4.1显示驱动程序4.2系统主程序第五章调试与性能分析总结参考文献附录 c语言程序代码第一章设计描述本设计主要是设计一个实用的8×8点阵屏的图文显示,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字稳定、清晰无串扰。
图形或文字显示有静止和移入移出等显示方式。
本文还重点介绍了单片机对LED点阵屏的控制电路,驱动电路的设计方法,并根据LED点阵屏的硬件特点,对其软件实现的算法给出了具体的分析。
从而实现了显示的字体能够进行自下向上移动。
此次课设中显示的是“乐❤里仁”。
第二章需求分析2.1设计要求(1)设计一个能显示8×8点阵图文LED显示屏;(2)要求能显示图形或文字;2.2设计任务(1)首先设计单片机系统与外围电路、列驱动电路和行驱动电路;(2)画出主模块的流程图;(3)编写代码;(4)程序分析与调试。
基于单片机的8X8 LCD汉字显示器的课程设计
中北大学课 程 设 计 说 明 书学生姓名: 学 号: 学 专 题 院: 业: 目: 中北大学信息商务学院电子信息工程 专业综合实践之硬件部分:基于单片机的汉字点阵系统的设计指导教师:张敏娟职称:讲师2013年 元 月 6 日I中北大学课程设计任务书2012/13 学年第 一 学期学 专院: 业:中北大学信息商务学院 电子信息工程学 生 姓 名: 学 号: 课程设计题目: 专业综合实践之硬件部分:基于单片机的汉字点阵系统的设计起 迄 日 期: 课程设计地点: 指 导 教 师: 系 主 任:2013 年 1 月 7 日~2013 年 1 月 18 日无损楼 201,510 张敏娟 王浩全下达任务书日期:II2013 年 1 月 6 日课 程 设 计 任 务 书1.设计目的:基于 C51 单片机,完成 LCD 汉字点阵系统的设计。
使学生将掌握的硬件理论知 识与实践结合,提高学生的科研、综合创新能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等) :任务要求: 1、 掌握和熟悉单片机系统的开发环境 KEIL C51 和相应的软件; 2、 采用 80C51 单片机和 LCD 点阵显示模块实现组合点阵显示; 3、 具有显示内容自动更新功能,完成对任意存储信息完整显示。
5、基于实验箱对系统进行仿真和程序调试; 6、基于 PROTEL99 或 altium deisigner 绘制系统的原理图和制版图。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、 实物样品等〕 :系统的硬件原理图和制版图; 基于实验箱调试成功的系统软件程序和界面; 设计说明书III课 程 设 计 任 务 书4.主要参考文献:[1]潘松,黄继业.EDA 技术实用教程.-3 版.-北京:科学出版社,2006 综合电子设计与 实践,王振红,清华大学出版社,2008 年 9 月第 2 版; [2]曾繁泰,陈美金.VHDL 程序设计.北京:清华大学出版社,2000; [3]褚振勇,翁木云.FPGA 设计及应用.西安:西安电子科技大学出版社,2002 [4] 综合电子设计与实践王振红清华大学出版社 2008 年 9 月第 2 版; [5] EDA 实用技术及应用刘艳萍国防工业出版社 2006 年第 1 版 [6] 基于 QuartusII 的 FPGA/CPLD 数字系统设计实例张丽敏电子工业出版社 2007 [7] CPLD/FPGA 常用模块与综合系统设计实例精讲罗苑棠电子工业出版社 2007。
单片机控制8×8LED点阵屏显示数字的设计
case 5: display5();break;
case 6: display6();break;
case 7: display7();break;
case 8: display8();break;
case 9: display9();break; } b++;if(b==10)b=0; } } } //*****************定时中断函数****************// void ext1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; t++; } 四、 电路仿真及仿真结果分析:
{
if(t==40)
{
t=0;
switch(b)
{
case 0: display0();break;
case 1: display1();break;
case 2: display2();break;
case 3: display3();break;
case 4: display4();break;
for(i=0;i<9;i++)
{P1=wxuan[i];P0=dxuan0[i];delay(1);} }
void
display1(){for(a=50;a>0;a--)
for(i=0;i<9;i++)
{P1=wxuan[i];P0=dxuan1[i];delay(1);} }
void
display2(){for(a=50;a>0;a--)
uint i,a,b=0,t; uchar code dxuan0[]={0x00,0x18,0x24,0x24,0x24,0x24,0x24,0x18,}; //"0" uchar code dxuan1[]={0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x00,}; //"1" uchar code dxuan2[]={0x00,0x3C,0x24,0x0C,0x18,0x30,0x3C,0x00,}; //"2" uchar code dxuan3[]={0x00,0x3C,0x24,0x18,0x0C,0x24,0x38,0x00,}; //"3" uchar code dxuan4[]={0x00,0x08,0x18,0x38,0x28,0x3C,0x08,0x00,}; //"4" uchar code dxuan5[]={0x00,0x3C,0x20,0x3C,0x04,0x24,0x38,0x00,}; //"5" uchar code dxuan6[]={0x00,0x18,0x24,0x20,0x38,0x24,0x24,0x18,}; //"6" uchar code dxuan7[]={0x00,0x3C,0x04,0x08,0x08,0x10,0x10,0x10,}; //"7" uchar code dxuan8[]={0x38,0x44,0x44,0x38,0x44,0x44,0x44,0x38,}; //"8" uchar code dxuan9[]={0x18,0x24,0x24,0x24,0x1C,0x04,0x24,0x18,}; //"9" uchar code wxuan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,};//位选
电子设计竞赛-程序资料-8位动态LED数码管显示实验
8位动态LED数码管显示实验2008-03-18 18:04** 实物图与原理图本实验仪配置带8位动态扫描显示模块一个。
实物图如下:为减少IO的使用,我们采用串入并出芯片CD4094来扩展了IO口,即采用3个IO来实现数据的传输。
原理图如下:所以,我们占用3个IO来传输数据,8个IO来进行8个LED数码管的位选。
在本实验仪中链接管教分布如下:STK-----P2.5DAT-----P2.6CLK-----P2.7B0、B1、B2、B3、B4、B5、B6、B7接P0口(P0.0 P0.1 P0.2 P0.3 P0.4 P0.5P0.6 P0.7)由于上一节已经讲述了CD4094驱动一位LED数码管的问题,这里我们讲如何来扫描8位数码管。
8.2 LED动态显示原理根据原理图管脚连接,我们知道P0口控制了8个LED数码管的位选中,所以如果想让8个数码管都亮起来,我们可以逐位扫描8位数码管。
动态显示原理:原理上同一时刻只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是常说的动态扫描显示。
动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。
如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,所以一般均取几个ms左右为宜。
8.3 DG3000 动态显示头文件display_s.h//----------------------------------------------------------//程序作用:显示头文件display_s.h//----------------------------------------------------------#ifndef _display_#define _display_#include <intrins.h>sbit SDA=P2^6; //定义显示管脚sbit CLK=P2^7;unsigned char data display_bit;unsigned char codeled[20]={0xc0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89,0x8C};//定义段码//延时程序void delay(unsigned int k){ unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<100;j++);}//数据传输void send(unsigned char a){unsigned char i;for(i=0;i<8;i++){if(_crol_(a,i)&0x80)SDA=1;elseSDA=0;CLK=0;CLK=1;}}//显示程序 8位LED数码管扫描void display(unsigned chardisplay_buffer[8]){unsigned char i,k;display_bit=0xfe;for(i=0;i<8;i++){k=led[display_buffer[i]];send(k);P0=display_bit;delay(0x01);P0=0xff;display_bit=_crol_(display_bit,1);}display_bit=0xfe;8.4 8位数码管动态显示01234567(C51程序)//----------------------------------------------------------//程序作用:动态扫描显示01234567//----------------------------------------------------------#include<REG52.h>#include<display_s.h> //调用显示头文件main(){unsigned chara[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6, 0x7};//显示01234567while(1){display(a); //显示数据}}8.5 8位数码管动态显示01234567(汇编);----------------------------------------------------------;程序作用:8位数码管动态显示01234567(汇编);----------------------------------------------------------;定义变量DBUF DATA 40H ;显示缓冲区首址SP_BT DATA 60H ;堆栈指针初值; LED 位选LED_CS1 BIT P0.0LED_CS2 BIT P0.1LED_CS3 BIT P0.2LED_CS4 BIT P0.3LED_CS5 BIT P0.4LED_CS6 BIT P0.5LED_CS7 BIT P0.6LED_CS8 BIT P0.7;4094接口SDA_4094 BIT P2^6CLK_4094 BIT P2^7ORG 0000HAJMP MAIN;-------------------------------ORG 0030HMAIN: MOV SP,#60HMOV R0,#0FFH;单元清零RES1: MOV @R0,#0DJNZ R0,RES1MOV DBUF,#00H;显示数据MOV DBUF+1,#01HMOV DBUF+2,#02HMOV DBUF+3,#03HMOV DBUF+4,#04HMOV DBUF+5,#05HMOV DBUF+6,#06HMOV DBUF+7,#07HSAMP1:LCALL DIR ;调用显示SJMP SAMP1;------------------------------------------------------;显示数据;-------------------------------------------------------DIR:;显示程序MOV DPTR,#TABLEMOV A,DBUFMOVC A,@A+DPTRACALL DISP_da ;送段码输出CLR LED_CS1 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS1 ;关闭显示MOV A,DBUF+1MOVC A,@A+DPTR//ANL A,#7FH;加小数点ACALL DISP_da ;送段码输出CLR LED_CS2;选通第1位数码管LCALL DELAY_4094SETB LED_CS2;关闭显示MOV A,DBUF+2MOVC A,@A+DPTRACALL DISP_da ;送段码输出CLR LED_CS3 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS3 ;关闭显示MOV A,DBUF+3MOVC A,@A+DPTRACALL DISP_da ;送段码输出CLR LED_CS4;选通第1位数码管LCALL DELAY_4094SETB LED_CS4;关闭显示MOV A,DBUF+4MOVC A,@A+DPTRACALL DISP_da ;送段码输出CLR LED_CS5 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS5 ;关闭显示MOV A,DBUF+5MOVC A,@A+DPTR// ANL A,#7FH;加小数点ACALL DISP_da ;送段码输出CLR LED_CS6;选通第1位数码管LCALL DELAY_4094SETB LED_CS6;关闭显示MOV A,DBUF+6MOVC A,@A+DPTRACALL DISP_da ;送段码输出CLR LED_CS7 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS7 ;关闭显示MOV A,DBUF+7MOVC A,@A+DPTRACALL DISP_da ;送段码输出CLR LED_CS8;选通第1位数码管LCALL DELAY_4094SETB LED_CS8;关闭显示;-------------------------------------RETTABLE: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9DB 88H,83H,0C6H,0A1H,86H,8EH ;A~F;-------------------------延时子程序---------------------------------DELAY_4094: MOV R4,#2 ;延时程序3,精确延时1000微秒D_4094:MOV R5,#248DJNZ R5,$DJNZ R4,D_4094RETDISP_DA:MOV R3,#08HDUP: RLC AMOV SDA_4094,C CLR CLK_4094 SETB CLK_4094 DJNZ R3,DUPRETEND。
基于单片机的8×8LED字幕显示设计概述
第一章方案选择及总体设计1.1 方案确定1.1.1 功能要求1、采用STC-52单片机作为微处理器。
2、设计一个8×8点阵LED数码字符显示器。
3、在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰。
4、动态显示“0——9”几个字符。
1.2.2 方案确定采用ST89C52单片机作为微处理器,将共阳极二极管用共阴型接法连接成8×8点阵LED数码字符阵列,通过程序控制,采用动态显示,建立字符库“0——9”。
1.2 器件选择微处理器采用ST89C52系列单片机,ST89C52单片机是这几年在我国非常流行的单片机,是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)高性能单片机,可擦除只读存储器可以反复擦除100次,具有低功耗、高性能的特点。
第二章控制系统设计2.1 控制系统硬件设计2.1.1整体模块设计本设计行、列驱动电路,显示器电路,运用单片机的智能化,系统的将每个功能电路模块连接在一起,总体结构设计如图1所示。
图1 硬件系统框图此次需要实现的功能是利用一个ST89C52,一个8×8LED点阵,动态显示“0——9”10个字,采用PC上位机驱动显示电路。
2.1.2 单片机最小系统设计ST89C52单片机最小系统电路由复位电路、晶振电路两部分组成。
2.1.2.1 晶振电路设计ST89C52单片机芯片内部设有一个由反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡电路的的输入端和输出端,时钟可有内部或外部生成,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就会产生自激振荡。
系统采用的定时元件为石英晶体和电容组成的并联谐振回路。
晶振频率采用12MHZ,C1、C2的电容值取30pF,电容的大小起频率微调的作用。
晶振电路图如图所示。
XTAL1XTAL2图2 晶振电路图2.1.2.2 复位电路设计 ST89C52单片机在启动运行时或者出现死机时需要复位,使CPU 以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作。
8位动态LED数码管显示实验——【全国大学生电子设计大赛】
8位动态LED数码管显示实验2008-03-18 18:048.1 实物图与原理图本实验仪配置带8位动态扫描显示模块一个。
实物图如下:为减少IO的使用,我们采用串入并出芯片CD4094来扩展了IO 口,即采用3个IO来实现数据的传输。
原理图如下:所以,我们占用3个IO来传输数据,8个IO来进行8个LED数码管的位选。
在本实验仪中链接管教分布如下:STK-----P2.5DAT-----P2.6CLK-----P2.7B0、B1、B2、B3、B4、B5、B6、B7接P0口(P0.0 P0.1 P0.2 P0.3 P0.4 P0.5P0.6 P0.7)由于上一节已经讲述了CD4094驱动一位LED数码管的问题,这里我们讲如何来扫描8位数码管。
8.2 LED动态显示原理根据原理图管脚连接,我们知道P0口控制了8个LED数码管的位选中,所以如果想让8个数码管都亮起来,我们可以逐位扫描8位数码管。
1动态显示原理:原理上同一时刻只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是常说的动态扫描显示。
动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。
如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,所以一般均取几个ms左右为宜。
8.3 DG3000 动态显示头文件display_s.h----------------------------------------------------------程序作用:显示头文件display_s.h----------------------------------------------------------#ifndef _display_#define _display_#include <intrins.h>sbit SDA=P2^6; 定义显示管脚sbit CLK=P2^7;unsigned char data display_bit;unsigned char codeled[20]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89,0x8C};2旗开得胜定义段码延时程序void delay(unsigned int k){ unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<100;j++);}数据传输void send(unsigned char a){unsigned char i;for(i=0;i<8;i++){if(_crol_(a,i)&0x80)SDA=1;elseSDA=0;CLK=0;CLK=1;}}3显示程序8位LED数码管扫描void display(unsigned char display_buffer[8]){unsigned char i,k;display_bit=0xfe;for(i=0;i<8;i++){k=led[display_buffer[i]];send(k);P0=display_bit;delay(0x01);P0=0xff;display_bit=_crol_(display_bit,1);}display_bit=0xfe;8.4 8位数码管动态显示01234567(C51程序)----------------------------------------------------------程序作用:动态扫描显示01234567----------------------------------------------------------#include<REG52.h>#include<display_s.h> 调用显示头文件4main(){unsigned chara[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};显示01234567 while(1){display(a); 显示数据}}8.5 8位数码管动态显示01234567(汇编);----------------------------------------------------------;程序作用:8位数码管动态显示01234567(汇编);----------------------------------------------------------;定义变量DBUF DATA 40H ;显示缓冲区首址SP_BT DATA 60H ;堆栈指针初值; LED 位选LED_CS1 BIT P0.0LED_CS2 BIT P0.1LED_CS3 BIT P0.2LED_CS4 BIT P0.35旗开得胜LED_CS5 BIT P0.4LED_CS6 BIT P0.5LED_CS7 BIT P0.6LED_CS8 BIT P0.7;4094接口SDA_4094 BIT P2^6CLK_4094 BIT P2^7ORG 0000HAJMP MAIN;-------------------------------ORG 0030HMAIN: MOV SP,#60HMOV R0,#0FFH;单元清零RES1: MOV R0,#0DJNZ R0,RES1MOV DBUF,#00H;显示数据MOV DBUF+1,#01HMOV DBUF+2,#02HMOV DBUF+3,#03HMOV DBUF+4,#04H6旗开得胜MOV DBUF+5,#05HMOV DBUF+6,#06HMOV DBUF+7,#07HSAMP1:LCALL DIR ;调用显示SJMP SAMP1;------------------------------------------------------;显示数据;-------------------------------------------------------DIR:;显示程序MOV DPTR,#TABLEMOV A,DBUFMOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS1 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS1 ;关闭显示MOV A,DBUF+1MOVC A,A+DPTRANL A,#7FH;加小数点7ACALL DISP_da ;送段码输出CLR LED_CS2;选通第1位数码管LCALL DELAY_4094SETB LED_CS2;关闭显示MOV A,DBUF+2MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS3 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS3 ;关闭显示MOV A,DBUF+3MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS4;选通第1位数码管LCALL DELAY_4094SETB LED_CS4;关闭显示MOV A,DBUF+4MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS5 ;选通第1位数码管LCALL DELAY_40948SETB LED_CS5 ;关闭显示MOV A,DBUF+5MOVC A,A+DPTRANL A,#7FH;加小数点ACALL DISP_da ;送段码输出CLR LED_CS6;选通第1位数码管LCALL DELAY_4094SETB LED_CS6;关闭显示MOV A,DBUF+6MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS7 ;选通第1位数码管LCALL DELAY_4094SETB LED_CS7 ;关闭显示MOV A,DBUF+7MOVC A,A+DPTRACALL DISP_da ;送段码输出CLR LED_CS8;选通第1位数码管LCALL DELAY_4094SETB LED_CS8;关闭显示;-------------------------------------9RETTABLE: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9DB 88H,83H,0C6H,0A1H,86H,8EH ;A~F;-------------------------延时子程序---------------------------------DELAY_4094: MOV R4,#2 ;延时程序3,精确延时1000微秒D_4094:MOV R5,#248DJNZ R5,$DJNZ R4,D_4094RETDISP_DA:MOV R3,#08HDUP: RLC AMOV SDA_4094,CCLR CLK_4094SETB CLK_4094DJNZ R3,DUPRETEND10。
基于单片机的LED点阵显示系统的设计
单位代码: 005分类号: TN873 本科毕业论文(设计)题目:基于单片机的LED点阵显示系统的设计专业:电子信息工程姓名:学号:指导教师:职称:讲师毕业时间:二零一三年六月基于单片机的LED点阵显示系统的设计摘要:本文是一款以单片机STC89C51为控制器的LED点阵显示屏系统的设计。
该系统选用四块8×8点阵模块构建一个16×16的LED点阵屏,可实现中英文字符的显示及其动态特效显示。
选定STC89C51单片机为核心控制器件,74LS164为译码电路,三极管8550和74HC595做行和列驱动。
STC89C51单片机处理控制命令以及显示代码,将显示内容通过I/O口串行输出并且控制译码电路完成串并转换并行输出,最后由显示驱动电路模块驱动LED点阵显示屏的扫描显示。
由于制作简单,电子显示屏安装方便,成本低,广泛用于各种公共场所,如车站,广告画面和公告栏等。
LED点阵电子显示屏,其功能有固定汉字、字母、数字的显示;平行左移、平行右移、上移、下移;固定内容的循环显示;显示屏的亮度调节等等。
关键词:STC89C51;74HC595;74LS164;16*16点阵;LEDSystem design of LED dot matrix display based on MCUAbstract:This is a LED dot matrix display system controller based on the single chip STC89C51 design. This system adopts four pieces of 8 x 8 dot matrix module to construct a 16 x 16 LED dot matrix display screen, and can realize the dynamic effects of English characters of the show. The selected STC89C51 microcontroller as the core control device, 74LS164 as the decoding circuit, a triode 8550 and 74HC595 as the row and column driver. STC89C51 single-chip processing of control commands and displays the code, will display the content through I/O serial output and control decoding circuit to complete string conversion and parallel output, and finally by the display driving circuit module driver LED dot matrix display scanning display. Because of the simple, electronic display screen, convenient installation, low cost, widely used in various public places, such as the station, the advertisement picture and bulletin. LED dot matrix display, its function is fixed Chinese characters, letters, digital display; parallel shift left, right, up, down parallel; fixed content display; the display brightness adjustment etc..Key words:STC89C51;74HC595;74LS164;16*16dot array;LED目录1. 引言 (1)2. 方案选择 (1)2.1 系统硬件方案 (1)2.1.1 通信系统 (2)2.1.2 硬件设计方案 (2)2.2 系统软件方案 (2)3. 硬件整体设计概述及功能分析 (3)3.1 控制单元设计 (3)3.1.1 控制系统设计 (4)3.2 串并转换器74LS164 (4)3.3 驱动电路设计 (5)3.3.1 行驱动电路设计 (5)3.3.2 列驱动电路设计 (5)3.4 通信系统硬件设计 (6)3.5 电源设计 (7)4. 系统软件设计 (7)4.1 程序设计 (7)4.2 显示程序的设计 (8)4.2.1 点阵数据表达方式 (8)4.2.2 显示程序的流程图 (8)5. 系统调试 (9)5.1 硬件调试 (9)5.2 软件调试 (9)6. 结束语 (10)参考文献 (11)谢辞 (12)附录1程序清单 (13)附录2系统原理图 (18)附录3实物图 (20)1. 引言LED显示屏是八十年代后期在全球快速发展起来的新型信息显示媒体,显示屏由几万到几十万个半导体发光二极管像素点均匀排列而组成。
基于FPGA芯片实现单片式8路高速数字信号分析仪的设计
基于FPGA芯片实现单片式8路高速数字信号分析仪的设计1引言由于数字信号只有高电平和低电平两种情况,因此,用单片机(MCU)就可直接实现多路数字信号进行采集和逻辑分析。
但由于单片机的时钟频率较低,完成一次采样的时间受程序执行指令速度的限制,采样速率通常不超过IMHz因0此,用单片机只能实现对低速率数字信号进行逻辑分析。
FPGA的工作时钟速率通常可达200MHZ以上,可对高速数字信号进行采样,但普通的FPGA在与外部设备进行数据交换时显得不灵活。
为了解决上述问题,通常是将MCU与FPGA结合起来,用FPGA对高速数字信号进行采样,用MCU负责与外部设备进行数据交换,从而实现对高速数字信号进行逻辑分析,如图1所示。
——∙FPGA输入数字信号Fr- UART÷-→MCU<~►1CD图1逻辑分析仪框图随着可编程逻辑器件的发展,AItera公司研发了可以嵌入软CPU核的CyC1one系列和Stra1iX系列的FPGA迫上嵌入式软核与普通硬核的的大差别在于它的可裁减性,设计者可根据设计需求定制出不同结构的软核处理器。
软CPU核的嵌入实现了CPU与FPGA的无缝连接,使芯片既能处理高速数字信号,又能方便灵活地与芯片外部设备进行数据交换,还增加了系统的集成度和可靠性。
2定制软CPU核软核的定制要利用A1tera公司提供的SOPCBUiIder软件。
2.1定制N3H处理器早期的软核处理器是Nios,但其稳定性不够好,现已被NioSI1所替代。
NioS11处理器有三种类型:e(经济型)、s(标准型)和f(增强型)。
选择不同类型的处理器所占用的逻辑资源和存储器资源大小不同,处理器的运算速度处理能力也有所差别。
2.2定制片内RAM片内RAM作为软核程序的运行空间,对于没有扩展外部存储器的设计,片内RAM是必须的部分。
通过软件设计向导,可以设置片内存储器的类型,大小,以及初始化文件。
CyC1One系列芯片有13~64个片内RAM块,每个RAM块的大小是4K(128字X36位),用户可根据需要设置存储器的字数和字长。
基于简单IO口地8LED显示电子码表设计
case 0x0b:lie=2;break;
case 7:lie=3;break;
}
P3=0xf0;
P3=0xf0;
switch(P3&0xf0)
{
case 0xe0:hang=0;break;
case 0xd0:hang=1;break;
case 0xb0:hang=2;break;
3)在PROTEUS平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。
4)仿真正确后,制作实际单片机系统电路,并将目标代码文件下载到实际单片机中运行、调试,直至运行成功。
实验代码:
#include<>
#define uchar unsigned char
#define uint unsigned int
{
int key;
key=keys();
if(key==15)
{
key3n++;
if(key3n==10)
{key3n=0;TR1=0;}
}
if(key==11)
{
TR1=~TR1;
}
if(TR1==0)
if(key<10)
key3n=key;
}
zhuanhuan()
{
shu1[7]=tt;
shu1[6]=tt1;
case 0x70:hang=3;break;
}
P3=0x0f;
while(P3!=0x0f)
{
P2_1=1;
if(key1n==0&key2n==0&key3n==0)
display();
基于单片CPU的8LED显示存储示波器设计
uchar flickOne[] = {0x02, 0x61, 0x43, 0x03, 0x43, 0x63, 0x02, 0x63};
VCC:供电电压。
GND:接地。
RST:复位输入。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
/PSEN:外部程序存储器的选通信号。
/EA/VPP:当/EA保持低电平时,此间外部程序存储器,不管是否有内部程序存储器。当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
3.2动态显示模块9
3.3键盘模块10
第四章程序代码设计11
第五章仿真测试15
第六章设计小结18
1.1
在理论课程的基础上,重点培养动手能力,通过电路设计,理论计算,实际编程,调试,测试,分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作。通过proteus软件的使用,能够较全面的了解单片机的原理和结构组成,单片机系统的扩展应用,较好的掌握单片机的汇编语言程序设计和硬件结构设计,通过实验了解单片机系统研制中的软件,硬件设计和系统程序调试等的全过程,掌握应用单片机系统设计解决实际问题的方式和方法。巩固单片机的课堂所学。
图2.1
3.1 AT89C51
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
基于51单片机的8乘8LED点阵显示屏的设计
基于单片机的8*8LED点阵显示屏的设计随着单片机在各个领域的广泛应用,许多用单片机作控制驱动LED显示屏也应运产生。
本系统设计使用单片机MCS-51控制扫描方法实现LED点阵显示器的字符的显示,介绍了用单片机进行显示系统开发的方法,单片机软件、硬件调试技术,还有点阵显示驱动扩展的一般方法。
1.引言1.1 研究的目的、意义LED因其体积小,耗电量低,亮度及环保等优点而被广泛应用于公共场所的大屏显示上,LED点阵大屏可应用于户外广告,交通导航,大厅公告,比赛的多媒体实时显示等领域。
本设计作品的用途正是在于实现大屏显示的核心功能,即汉字的显示,可实际应用于简单的显示系统中,如简单的排队叫号显示屏,电梯显示屏等。
通过此次设计将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。
1.2 本设计所要做的工作为了完成该设计实现,经过考虑论证,决定分为以下几个阶段进行:(1)对课题进行全面的分析,明确系统要实现的功能,大致了解要解决的问题,制定总的设计方案;(2)根据论证设计硬件系统并画出电路图,并根据电路图在面包板上连接电路图;(3)在硬件的基础上设计软件程序;(4)利用仿真器编译软件程序,进行调试仿真;(5)把调试成功的程序利用烧入器烧入到芯片中去;(6)把固化好程序的芯片插入到实际应用系统,投入到实际使用。
2.系统设计方案2.1系统构成框图3.硬件电路设计3.1 主要器件介绍3.1.1 LED点阵LED点阵显示屏采用1个8*8共64个象素的点阵,通过LED点阵资料判断出该点阵的引脚分布,如图3.1所示。
8*8的LED点阵为单色共阳模块,单点的工作电压为正向(Vf)=1.8v,正向电流(if)=8-10MA。
静态点亮器件时(64点全亮)总电流为640mA。
总电压为1.8v,总功率为1.15w.动态时取决于扫描频率(1/8或1/16秒),单点瞬间电流可达80-160mA。
图3.1点阵LED扫描法介绍点阵LED一般采用扫描式显示,实际运用分为三种方式:(1)点扫描(2)行扫描(3)列扫描若使用第一种方式,其扫描频率必须大于16*64=1024HZ,周期小于1MS即可。
八段LED显示设计和调试
1.前言目前单片机已经渗透到我们生活的各个领域,几乎很难找到那个领域没有单片机的踪迹。
导弹的导航装置、飞机上各种仪表的控制、计算机的网络通信与数据传输、工业自动化过程的实时控制和数据处理、广泛使用的各种智能IC卡、民用豪华轿车的安全保障系统、照相机、摄像机、全自动洗衣机的控制、以及程控玩具、电子宠物等等,这些都离不开单片机。
随着单片机技术的不断深入发展,单片机同时带动传统控制检测日新月异更新。
在实施检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件开始用,仅单片机方面只是是不够的还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本片课程设计论文讨论了八段LED显示设计和调试制作方法,对于八段LED显示和设计,我们用单片机89C51芯片和LED数码管为核心,辅以必要的外围电路,构成了一个单片机中断切换电路。
关键词:单片机、89C51、LED数码显示器、中断切换电路2. MCS-51单片机介绍MCS-51单片机是把那些作为控制电路应用所必需的基本内容都集中在一个尺有限的集成电路芯片上。
如果按功能分,他有如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
他们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用功能寄存器(SFR)的集中控制方式。
2.1. 控制器控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各性能部件,从而保证单片机各部分能自动而协调的工作。
单片机执行指令是在控制器的控制下进行的。
首先从程序储存器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,姨妈结果送定时控制逻辑电路,由定时器控制逻辑产生各种定时信号和控制信号,再送到单片机的各个部件去进行相应的操作。
八段LED显示系统设计说明书
八段LED显示系统设计说明书1 99 倒计时显示规律上电复位,复位后系统初始化,两位八段LED显示00,按开关开始倒记时倒记时到00 后又显示99 又重新开始倒记时。
2 单片机介绍2.1 MCS-51 系列单片机主要由以下部分组成(1)一个8 位中央处理器(CPU)(2)一个时钟电路(3)128B 内部数据存储器(RAM(4)21 个特殊功能寄存器(SFR)(5)4KB片内程序存储器(ROM(6)2 个16位定时器/计数器(7)32 根双向并行口, 可按位寻址的I/O 口线(8 )一个全双工异步串行口(9) 5 个中断源,具有两个优先级2.2 MCS-51 单片机芯片引脚MCS-51系列单片机芯片均为40个引脚,HMOS工艺制造的芯片采用双列直插方式封装,其引脚示意及功能分类如图2-3所示。
CMOSE艺制造的低功耗芯片也有采用方型封装的,但为44个引脚,其中4个引脚是不是用的。
2.2.1 电源引脚(2 条)VCC (40脚)为+ 5V 电源线,VSS (20脚)为接地线2.2.2外部晶振引脚(2条)XTAL1 (19脚):接外部晶体的一个引脚。
在单片机内部,它是反相器的输 入端。
这个放大器构成了片内振荡器。
当采用外部时钟时,该引脚接地。
XTAL2 (18脚):接外部晶体的另一个引脚。
在单片机内部,接上述振荡器 的反相器的输出端。
当采用外部时钟时,该引脚输入外部时钟脉冲。
2.2.3输入/输出引脚P0、P1、P2、P3 (共 32 根)图1引脚图2.2.4控制引脚(4条)ALE/PROG 地址锁存允许信号端。
8051上电正常工作后,自动地在ALE/PROG 线上输出频率为fosc/6的时钟脉冲序列。
CPU 访问外存储器时,ALE 输出的信 号下降沿作为锁存低8位地址的控制信号。
PSEN 片外程序存储器允许输出信号端。
在访问片外 ROM 寸,8051自动在 PSEh 线上产生一个负脉冲,用于为片外 ROMS 片的选通。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京邮电大学通信与信息工程学院课程设计实验报告实验名称基于单片CPU的8LED显示电子码表设计班级学号BXXXX 姓名___ ____ XXX _ _________ 指导老师___ XXXXXXXXXX ____开课时间 2011/2012 学年,第二学期__________课程设计实验报告1.1 实验目的在理论课程的基础上,重点培养动手能力,通过电路设计,理论计算,实际编程,调试,测试,分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作。
通过proteus软件的使用,能够较全面的了解单片机的原理和结构组成,单片机系统的扩展应用,较好的掌握单片机的汇编语言程序设计和硬件结构设计,通过实验了解单片机系统研制中的软件,硬件设计和系统程序调试等的全过程,掌握应用单片机系统设计解决实际问题的方式和方法。
巩固单片机的课堂所学。
1.2 实验课题和基本要求课题:基于单片CPU的8LED显示电子码表设计基本要求:1 设计秒表功能,精度为0.01秒。
2 可同时记录和存储10个秒表数据。
(连续记录并显示已存储记录数)3 秒表记录数据查询和清除功能(能分辨次和时间对应关系)。
4 按键声音提示功能发挥部分:1 外部脉冲数据记录(一信道,快速脉冲信号)。
2 外部记录触发信号输入(二信道,慢速存储信号)3 自动存储和手动回放。
动态显示格式:自定1.3 实验设备:硬件:微机(Windows XP)软件:Proteus 7.5 sp3 ,Keil uVersion31.4 .1 设计思路:根据实验给出的要求,我们选择了8LED进行动态显示。
并通过按键切换不同的功能,来达到分别显示各种要求的动态效果。
同时,对于按键我们在每次按键按下时判断是否由于抖动还是真的按下。
而抬起时,还要判断是否按键抬起,来正确的实现功能。
显示部分LED显示的数据由显示缓冲区单元中的数据决定,每按下按键保存数据,待计数完成后,按下按键可现示每次的数据。
因为延时是用软件做的,所以精度通过选择适当的晶振来实现。
声音提示功能通过按钮和蜂鸣器连接,每按一次响一次。
原理图:(1)AT89C52为8 位通用微处理器,采用工业标PDIP封装的AT89C52引脚图准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。
P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中P3控制位选,P2控制段选,P1^0控制开始计数、P1^1控制记录成绩。
(2) LED数码管显示说明由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。
LED有共阴极和共阳极两种。
如图所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED不被损坏,需外加限流电阻。
g f com a bfeddp c bage d com c dp本设计采用8LED 7SEG-MPX8-CA-BLUE,是共阳极各段码位的对应关系段码位 D7 D6D5D4D3D2D1D0显示段 dpgfedcba1.4.2 流程图:NO开始初始化 外部K 启动计时,n=1 Save>10 K1保存数据,save++ Save=10 每按一次K1显示数据显示FULL ,回放数据按K清零再按K重新计数1.4.3发挥部分:(1)外部脉冲数据记录(一信道,快速脉冲信号)外部记录触发信号输入(二信道,慢速存储信号)可以利用单片机的定时器可以工作在外部脉冲信号的计数方式,比如我们可以用定时器来测试外部输入的脉冲信号的脉冲宽度,例如输入一个数字信号01110111。
该数字信号接入T0Pin,即可编程测试出该3个1来。
;外部脉冲宽度(在5到250ms)之间,测量存放在R0。
程序如下。
#include "reg51.h"#include <absacc.h>#define uchar unsigned char#define uint unsigned intuchar code DispTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x0f8,0x80,0x90,}; void delay(uchar ms){uchar t;while(ms--);{for(t=1;t<=120;t++);}}void inter0() interrupt 0{TH0 = 0;TL0 = 0;}void main(){long int n;long int gw,sw,bw,qw,ww,qww;EA=1;EX0=1;IT0=1;TMOD = 0X05;TH0 = 0;TL0 = 0;TR0 = 1;while(1){n=TH0*256+TL0;gw=n%10;sw=n%100/10;bw=n%1000/100;qw=n%10000/1000;ww=n%100000/10000;qww=n%1000000/100000;P2=0x80;P0=DispTab[gw];delay(5);P2=0x40;P0=DispTab[sw];delay(5);P2=0x20;P0=DispTab[bw];delay(5);P2=0x10;P0=DispTab[qw];delay(5);}}将两个程序结合在一起。
(2)结合基于单片CPU的8LED显示电子琴设计,将提示声音改为电子琴声音。
1.5 实验电路图操作使用说明:按K开始计时,再按一次暂停,如果想重新计时第三次按K清零,第四次按K 重新计时。
正常计时时每按一次K1存储一个数,存满10个后若想再存数据,根据题目要求计10个数,再按K1则显示FULL并自动显示第一个成绩,显示结束后按K清零后可重新计时。
1.6 部分结果图:从左到右,第一二位表示分,三四位表示秒,五六位计数,七八位表示存储数。
按下K开始跑表:第一次计数:第八次计数:第十次计数:闪动显示存满:FULL第一个数据:第二个数据:再次按K数据清零:测脉冲宽度:开始测宽度:按清零键后:1.7 C语言编程(将两个程序结合在一起实现码表和测外部脉冲宽度功能)/******************************************************功能说明:99马表,可实现记录10人成绩,和记录外部脉冲数接线说明:P0控制位选123(通过排阻),P2控制段选abc,P1^4启动计数功能,P1^0控制开始计数、P1^1控制记录成绩;P1^2启动测脉冲功能,P3^2脉冲数清零。
******************************************************/#include<reg52.h>#include <absacc.h>#define S P3sbit k=P1^0;sbit k1=P1^1;sbit k2=P1^4;sbit k3=P1^2;sbit k4=P3^2;unsigned int n,i,j;unsigned int hour=0;unsigned int min=0;unsigned int second=0;unsigned int save=0;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char table1[10][3]={{0,0,0},{0,0,0}}; //储存成绩//-------------------延时-------------------------//void delay(unsigned int delaytime){while(delaytime--);}//-------------------数码管显示------------------//void display(){S=0x01;delay(5);P2=table[hour/10]; delay(500);S=0x02;delay(5);P2=table[hour%10]&0x7f;delay(500);S=0x04;delay(5);P2=table[min/10]; delay(500);S=0x08;delay(5);P2=table[min%10]&0x7f;delay(500);S=0x10;delay(5);P2=table[second/10]; delay(500);S=0x20;delay(5);P2=table[second%10]; delay(500);S=0x80;delay(5);P2=table[save%10]; delay(500);S=0x40;delay(5);P2=table[save/10]; delay(500);}//--------------------初始化--------------------------//void t0nit(){TMOD=0x01; //00000001,16位定时模式TH0=(65536-10000)/256;TL0=(65536-10000)%256;EA=1;ET0=1;TR0=1;}//-------------------中断---------------------------//void timer0() interrupt 1{if(n==1) //按下按键k,开始计时{second++;if(second==100){min++;second=0;if(min==60){hour++;min=0;if(hour==60){hour=0;min=0;second=0;}}}if(k1==1&&i<10) //按下按键k1,记录成绩{delay(500); //确保按键处于高电平状态if(k1==1){table1[i][0]=hour;table1[i][1]=min;table1[i][2]=second;i++;save++;}while(k1==1); //检验按键释放}}TH0=(65536-10000)/256;TL0=(65536-10000)%256;}void main(){if(k2==0){t0nit();while(1){ if(k==0){delay(500);if(k==0){n++;}while(k==0);}if(n<3&&j<10) //再次按下k,停止计数{if(k1==1){delay(500);if(k1==1) //显示成绩{hour=table1[j][0];min=table1[j][1];second=table1[j][2];delay(10000);j++;save++;if(save>10){n++;S=0x01;delay(5);P2=0x8e;delay(500000000);S=0x02;delay(5);P2=0xc1;delay(500000000);S=0x04;delay(5);P2=0xc7;delay(500000000);S=0x08;delay(5);P2=0xc7;delay(500000000);}while ( save>10){save=save%10;}}while(k1==1);}}if(n==3) //第3次按下k,归零{second=0;min=0;hour=0;save=0;for(i=0;i<10;i++){table1[i][0]=0;table1[i][1]=0;table1[i][2]=0;}i=0;j=0;}if(n==4) //第4次按下k,计数{n=1;TH0=(65536-10000)/256;TL0=(65536-10000)%256;}display();}}if(k3==0){long int m;long int gw,sw,bw,qw,ww,qww;EA=1;EX0=1;IT0=1;TMOD = 0X05;TH0 = 0;TL0 = 0;TR0 = 1;while(1){m=TH0*256+TL0;gw=m%10;sw=m%100/10;bw=m%1000/100;qw=m%10000/1000;ww=m%100000/10000;qww=m%1000000/100000;P3=0x80;P2=table[gw];delay(500);P3=0x40;P2=table[sw];delay(500);P3=0x20;P2=table[bw];delay(500);P3=0x10;P2=table[qw];delay(500);}if(k4==0){TH0 = 0;TL0 = 0; }}}1.8 实验小结初学单片机,对所学知识掌握不够全面,这次的系统设计有点粗糙,正所谓困难重重,刚好有个电子钟的课程设计,就按照它的设计过程的思想作为参考,本想把所学知识全应用起来,做一个带创新的思路的系统设计,但是还是没有头绪。