当前位置:文档之家› lcd显示数字--原创

lcd显示数字--原创

lcd显示数字--原创
lcd显示数字--原创

上图是一个16行,8列的数据,术语叫做1608字库。

看A这一列是16行,每个格子是1个bit,(注意没有填的都是0)那么A这列的值是0x00 0x00, (注意方向是从上到下,最高bit是在上面)

同理可得到B 这一列的值是 0x0E 0x38

得到c 这一列的值是 0x11 0x44

得到D 这一列的值是0x1084

得到E这一列的值是0x1084

得到F这一列的值是 ,0x1144,

得到G这一列的值是0x0E38,

得到H这一列的值是0x0000

问:为什么要从上面第一开始算?

答:这个是编程序比较方便。一般都是认为屏幕的左上角是(0,0)点,

从左到右,X方向,逐渐增多。从上到下y方向,依次增大。

另外lcd扫描的特性,可以从Z字形开始扫描。常规的是,从上到下扫描,再从左到右扫描。以左上角为例,有两种方式,先向下扫描,到屏幕的底部的时候,再从左向

右扫描。那么同理右上角,左下角,右下角也是每个都有2 种扫描方式。4个角加起来,总共有8种扫描方式。根据常规(即符号正常人的思维和编程方便),所以都是选择第一个左上角的,先下扫描,再从左到右扫描。

明显,上面的图,如果不是色盲的话,看到的就是一个数字8。在编程的时候,

每个格子都对应lcd屏幕上的一个点。已经知道lcd从上到下扫描的,

假设要把数字8,显示在lcd屏幕的左上角(认为坐标是0,0)。那么就要先把第一列的值A1,A2,A3,…A16,把这16个bit的数据写到对应的坐标位置,如下面代码(注意y方向在变化)

WriteDot(0,0,A1)

WriteDot(1,0,A2)

WriteDot(2,0,A3)

WriteDot(3,0,A4)

WriteDot(4,0,A5)

WriteDot(5,0,A1)

WriteDot(6,0,A2)

WriteDot(7,0,A3)

WriteDot(8,0,A4)

WriteDot(9,0,A5)

WriteDot(10,0,A1)

WriteDot(11,0,A2)

WriteDot(12,0,A3)

WriteDot(13,0,A4)

WriteDot(14,0,A5)

WriteDot(15,0,A16)

然后再写第二列数据

WriteDot(0,0,B1)

WriteDot(1,0,B2)

WriteDot(2,0,B3)

…..

WriteDot(14,0,B14)

WriteDot(15,0,B15)

那么可以写成一个两层的for循环来实现。

先把图中的bit数据,弄成一个数组

U8 digit8 = { 0x0000,0x0E38,0x1144,0x1084,0x1084,0x1144,0x0E38,0x0000};

For(i=0 ;i<8; i++)

{

Temp = digit8[i]

For(j=0 ;j<16; j++)

//此处显示16个bit,代码省略具体结果lcd编程手册

}

//----------------------------------

一般如果显示0~9 ,就要把所有的数字对应的数组都要,放到二维数组里面。下面给出一个

unsigned short digital_Array[10][8] = {

{0x0000,0x07F0,0x0808,0x1004,0x1004,0x0808,0x07F0,0x0000},/*"0" */

{0x0000,0x0804,0x0804,0x1FFC,0x0004,0x0004,0x0000,0x0000},/*"1" */

{0x0000,0x0E0C,0x1014,0x1024,0x1044,0x1184,0x0E0C,0x0000},/*"2" */

{0x0000,0x0C18,0x1004,0x1104,0x1104,0x1288,0x0C70,0x0000},/*"3" */

{0x0000,0x00E0,0x0320,0x0424,0x0824,0x1FFC,0x0024,0x0000},/*"4" */

{0x0000,0x1F98,0x1084,0x1104,0x1104,0x1088,0x1070,0x0000},/*"5" */

{0x0000,0x07F0,0x0888,0x1104,0x1104,0x1888,0x0070,0x0000},/*"6" */

{0x0000,0x1C00,0x1000,0x10FC,0x1300,0x1C00,0x1000,0x0000},/*"7" */

{0x0000,0x0E38,0x1144,0x1084,0x1084,0x1144,0x0E38,0x0000},/*"8" */

{0x0000,0x0700,0x088C,0x1044,0x1044,0x0888,0x07F0,0x0000},/*"9" */

};

简单例子,

U8 str[10] = “012356789”;

U8 temp;

U16 * p;

For(i=0; i<10; i++)

{

P = digital_Array[str[i] –‘0’];

For(i=0 ;i<8; i++)

{

Temp = p[i]

For(j=0 ;j<16; j++){

//此处显示每个bit,代码省略,具体结合lcd编程手册

}

}

}

八位七段数码管动态显示电路设计

八位七段数码管动态显示电路的设计 一七段显示器介绍 七段显示器,在许多产品或场合上经常可见。其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角)。 图4.1、七段显示器俯视图 由于发光二极管只有在顺向偏压的时候才会发光。因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极( 高电位动作)七段显示器,如下图4.2所示。 ( 共阳极) ( 共阴极) 图4.2、共阳极(低电位动作)与共阴极(高电位动作)

要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC电源。而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。 图4.5、七段显示器模块接线图 七段显示器之常见应用如下 ?可作为与数值显示相关之设计。 ?电子时钟应用显示 ?倒数定时器 ?秒表 ?计数器、定时器 ?算数运算之数值显示器

实验三 数码管显示实验

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

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

液晶屏显示数字电压表

1 引言 数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。 电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器]1[(A/D)。数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。一般说来,A/D 转换的方式可分为两类:积分式和逐次逼近式。 积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。 逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。 在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。本设计以AT89C51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD1602为主体,构造了一款简易的数字电压表,能够测量1路0~5V 直流电压,最小分辨率0.02V。

2 仿真软件介绍 2.1 仿真软件简介 2.1.1 Proteus 6 Professional ISIS 6 Professiona软件是它不仅具有其它EDA工具软件的仿真]2[功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。它从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 ISIS 6 Professiona软件具有的功能:原理布图;PCB自动或人工布线;SPICE 电路仿真。 2.1.2 Keil uVision2 Keil提供了包括C编译器、宏汇编]3[、连接器、库管理和一个功能强大仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。 Keil C51集成开发环境主要由菜单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部分组成。工具栏为一组快捷工具图标,主要包括基本文件工具栏、建造工具栏和调试工具栏,基本文件工具栏包括新建、打开、拷贝、粘贴等基本操作。建造工具栏主要包括文件编译、目标文件编译连接、所有目标文件编译连接、目标选项和一个目标选择窗口。调试工具栏位于最后,主要包括一些仿真调试源程序的基本操作,如单步、复位、全速运行等。在工具栏下面,默认有三个窗口。左边的工程窗口包含一个工程的目标(target)、组(group)和项目文件。右边为源文件编辑窗口,编辑窗口实质上就是一个文件编辑器,我们可以在这里对源文件进行编辑、修改、粘贴等。下边的为输出窗口,源文件编译之后的结果显示在输出窗口中,会出现通过或错误(包括错误类型及行号)的提示。

七段数码显示译码器电路的设计

WHEN "1001" => LED7s <="1101111"; WHEN "1010" => LED7s <="1110111"; WHEN "1011" => LED7s <="1111100"; WHEN "1100" => LED7s <="0111001"; WHEN "1101" => LED7s <="1011110"; WHEN "1110" => LED7s <="1111001"; WHEN "1111" => LED7s <="1110001"; WHEN OTHERS => NULL; END CASE; END PROCESS; END; 在完成源程序的编辑后,执行”Processing”菜单下的“Start Compilation”命令,对DECL7s.vhd进行编译。在完成对源文件的编译后,执行“File”菜单的“New”命令,或者直接按主窗口上的“创建新的文本文件”按钮,在弹出的新文件类型选择对话框中,选择“Vector Waveform File”生成仿真文件。 对引脚进行锁定。执行”Assignments”菜单下的“Pins”命令,根据下图进行引脚设置。 用电缆连接电脑与设备箱,执行”Tools”菜单下的“Programmer”命令,在弹出的对话框中,单击“Hardware Setup”并在新弹出的对话框中选择驱动,然后退出至上一层对话框,单击“Start”进行下载烧录。 【实验数据整理与归纳】

DECL7s11.vhd 实际效果图 DECL7s11.vwf 【实验结果与分析】 计数译码系统电路的仿真波形如图DECL7s.vwf所示,键值为"0000"时,数码管显示数值应为"0";键值为"0001"时,数码管显示数值应为"1",依此类推。仿真结果验证了设计的正确性。而实际情况与仿真结果相吻合。 【实验中遇到的问题及解决方案】 1.驱动安装失败。 解决方案:根据老师发的教程,更换别的方法进行安装。 2.虽然数码管显示数值正确,但对应按键与想象的有出入。 解决方案:经排查发现是管脚分配时颠倒了顺序导致的,按键时亦随之颠倒顺序即可。

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

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

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

1602液晶字符显示

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

液晶屏背光板工作原理电路图

液晶屏背光板工作原理电路图 一、前言随着液晶电视机销量的逐渐增多,需要投入更多的精力来研究液晶电视机的维修,而目前液晶电视机中背光板的维修量占有较大的比例,同时由于背光板是显示屏供应商供屏时自带的,供应商出于对技术的保密性,现在我们还拿不到背光板的电路图和IC资料,这对我们背光板的维修带来了很大的难处。为了改善我们的背光板修理,本文对背光板的通用工作原理及常见故障判断作一介绍,对网络维修具有一定的参考价值。本文的目的是想帮助网络提高维修技能,但由于我们对背光板的电路和维修了解得还不多,因此其中的一些观点可能有不准确或描述错误的地方,请大家指出来共同讨论,从而共同提高我们的维修水平,谢谢!二、背光板在液晶电视机中的作用背光板也称Inverter板即逆变器板,它的作用是将一个直流电压转变为多个交流电压,作为液晶屏灯管的工作电压,它的输入、输出连接框图如下图。背光板有三个输入信号,分别是供电电压、开机使能信号、亮度控制信号,其中供电电压由电源板提供,一般为直流24V(个别小屏幕为12V);开机使能信号ENA即开机控制电平由数字板提供,高电平3V时背光板工作,低电平0V 时背光板不工作;亮度控制信号DIM由数字板提供,它是一个0-3V的模拟直流电压,改变这它可以改变背光板输出交流电压的高低,从而改变灯管亮度。背光板有多个交流输出电压,一般为AC800V,每个交流电压供给一个灯 管。三、背光板工作原理方框图背光板电路由输入接口电路、PWM控制电路、MOS管导通与直流变换电路、LC振荡及高压输出回路、取样反馈电路等几部分组成,其工作原理 方框图:四、背光板各部分电路介绍1、输入接口电路1)供电输入电压输入接口电路中的供电输入电压一路直接加到MOS管导通电路,作

EDA课程设计八位数码管扫描显示电路的设计资料

《EDA技术及应用》 课程设计报告 题目:八位数码管扫描显示电路的设计院(系):机电与自动化学院 专业班级:电气自动化技术1001 学生姓名: 学号: 20102822018 指导教师:何为 2012年6月10日至2012年6月23日

《EDA技术及应用》课程设计任务书 一、设计题目 八位数码管扫描显示电路的设计 二、设计主要内容 本课题要求掌握使用Quartus II设计数字系统的设计思路和设计方法。学习VHDL基本逻辑电路的综合设计应用。掌握VHDL语言的语法规范,掌握时序电路描述方法。掌握多个数码管动态扫描显示的原理及设计方法。 设计一个八位数码管共阴极动态扫描显示控制电路,要求显示学生自己的学号。利用实验室设备完成系统设计并进行运行调试。 1、具体设计内容如下: (1)静止显示学号; (2)动态循环显示学号。 2、提供设计报告,报告要求包括以下内容:设计思路、设计输入文件、设计与调试过程、模拟仿真结果和设计结论。 三、原始资料 1、LED显示模块原理 LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。 多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。 2、系统结构图信号名与芯片引脚对照表

DS1302数码管显示程序

/************************************************************************/ // huaqinMCU DS1302 实验程序数码管显示时钟设置说明 // "8键"为时钟设置、时分切换、保存"0键"为加"4键"为减 /************************************************************************/ #include #define uchar unsigned char #define uint unsigned int //===以下IO定义请根据您硬件的连接修改=== sbit T_RST=P3^5;//ds1302-5 sbit T_IO=P3^4;//ds1302-6 sbit T_CLK=P3^6;//ds1302-7 sbit ACC0=ACC^0; sbit ACC7=ACC^7;//累加器A 51单片机原理中有介绍 sbit up=P3^1; sbit down=P3^2; sbit set=P3^0; uchar a,b,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg; int hour,mie,sei; uchar clk_time[3]; //秒,分,时寄存器初始值 code uchar ledmap[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40}; //数码管段码 /******************DS1302:写入操作(上升沿)*********************/ void write_byte(uchar da) { uchar i; ACC=da; for(i=8;i>0;i--) { T_IO=ACC0; T_CLK=0; T_CLK=1; ACC=ACC>>1; } } /******************DS1302:读取操作(下降沿)*****************/ uchar read_byte(void) { uchar i;

已经采用过-LCD1602显示字符和(RAM)数字的汇编程序

单片机LCD1602显示字符和数字的汇编程序(无聊原创) 1,单片机和LCD1602的连线,和程序结果显示如下图: 2,LCD第一行显示字符XIAORENGUANG第二行显示RAM中40H到46H中的数字。程序如下: ORG 0000H AJMP MAIN RS EQU P2.4 RW EQU P2.5 E EQU P2.6 MAIN: MOV SP,#60H MOV 40H,#01H MOV 41H,#02H MOV 42H,#03H MOV 43H,#04H MOV 44H,#05H MOV 45H,#06H MOV 46H,#07H ACALL DD1 ;DD1是LCD初始化

MOV DPTR,#TABLE1 ACALL DD2;DD2是LCD第一行显示TABLE1 ACALL PPP ;PPP是LCD第二行显示RAM中40H到46H中的数据 SJMP $ DD1: MOV p0,#01H ;清屏 CALL ENABLE MOV p0,#38H ;显示功能 CALL ENABLE MOV p0,#0FH ;显示开关控制 CALL ENABLE MOV p0,#06H ;+1 CALL ENABLE RET DD2: MOV p0,#80H;第一行的开始位置 cALL ENABLE CALL WRITE1;到TABLE1取码? RET DD3: MOV p0,#0C0H;第二行的位置 CALL ENABLE CALL WRITE1;到TABLE2 取码 RET ENABLE: CLR RS ;送命令 CLR RW CLR E CALL DELAY SETB E RET WRITE1: MOV R1,#00H ;显示table中的值 A1: MOV A,R1;到table取码 MOVC A,@A+DPTR call wRITE2 ;显示到lcd INC R1 CJNE A,#00H,A1 ;是否到00h RET WRITE2:MOV p0,A ;显示 SETB RS CLR RW CLR E CALL DELAY SETB E RET

8位数码管动态显示电路设计.

电子课程设计 — 8位数码管动态显示电路设计 学院:电子信息工程学院 专业、班级: 姓名: 学号: 指导老师: 2014年12月

目录 一、设计任务与要求 (3) 二、总体框图 (3) 三、选择器件 (3) 四、功能模块 (9) 五、总体设计电路图 (10) 六、心得体会 (12)

8位数码管动态显示电路设计 一、设计任务与要求 1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。 2. 要求在某一时刻,仅有一个LED 数码管发光。 3. 该数码管发光一段时间后,下一个LED 发光,这样8只数码管循环发光。 4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。 5、研究循环地址码发生器的时钟频率和显示闪烁的关系。 二、总体框图 设计的总体框图如图2-1所示。 图2-1总体框图 三、选择器件 1、数码管 数码管是一种由发光二极管组成的断码型显示器件,如图1所示。 U13 DCD_HEX 图1 数码管 数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出 不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个 74LS161计数器 74LS138译码 器 数码管

LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。 2、非门 非门又称为反相器,是实现逻辑非运算的逻辑电路。非门有输入和输出两个端,电路符号如图2所示,其输出端的圆圈代表反相的意思,当其输入端为高电平时输出端为低电平,当其输入端为低电平时输出端为高电平。也就是说,输入端和输出端的电平状态总是反相的。其真值表如表1所示。 图2 非门 表1 真值表 输入输出 A Y 0 1 1 0 3、5V电源 5V VCC电源如图3所示。 图3 5V电源

51单片机并行口驱动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数码管显示程序>

1602液晶显示计算器电路图及程序

#include #include #include #include unsigned char code Error[]={"error"}; unsigned char code Systemerror[]={"system error"}; unsigned char code Lcd[]={"lcd calculate"}; char str[16]; sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; /*********************** 函数功能:延时1ms ***********************/ void delay1ms() { unsigned char i,j; for (i=0;i<10;i++) for (j=0;j<33;j++) ; } /************************ 函数功能:延时n毫秒 入口参数:n ************************/ void delaynms(unsigned char n) { unsigned char i; for (i=0;i

数码管显示程序

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

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

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

51单片机1602LCD显示数字频率计

51单片机1602LCD显示数字频率计 ;硬件连接:1602lcd 显示000000hz 短接p1.4--p3.5则显示0000010hz ;LCD1602显示在不增加外部计数硬件的情况下,本试验软件可测最高频率达到460KHz ;工作原理: ;1S 钟内对输入脉冲所计数的次数则为频率值。 ;16位二进制加法计数器的最大计数值为65535。 ;设置定时器0 工作在定时方式1,定时1S。 ;设置定时器1 工作在计数方式1,对输入脉冲进行计数,溢出产生中断。 ;将定时器1中断定义为优先。在中断处理程序里对中断次数进行计数。1S到后, ;将中断次数和计数器里的计数值取出进行综合数据处理,处理后的数据送LCD1602显示? ;信号来源: ;1、软件里对P1.4定时取反,形成输出脉冲,接到P3.5 可自测。 ; 显示结果:P1.4 →P3.5 显示:000010 (Hz) ;如果有条件的话,可使用专用设备(信号发生器和频率计)进行校正。 ;频率计的程序 ;包含:外部中断设置,中断服务程序,定时程序,定时服务程序 ;以及数据处理,显示,包括三位十进制数转化为四位BCD码, ;------------------------------------------------------------ BEEP BIT P3.7 LCD_RS BIT P2.0 LCD_RW BIT P2.1 LCD_EN BIT P2.2 LCD_X EQU 3FH ;LCD 地址变量 TIMER_H EQU 30H ;定时器高位字节单元 TIMER_L EQU 31H ;定时器低位字节单元 TIMCOUNT EQU 32H ;时间中断数 INT_G EQU 35H ;中断计数缓冲单元高地址 INT_H EQU 34H ;中断计数缓冲单元中地址 INT_L EQU 33H ;中断计数缓冲单元低地址 T_S EQU 36H ;数据显示低位 T_M EQU 37H ;数据显示中位 T_H EQU 38H ;数据显示高位 T_G EQU 39H ;数据显示最高位 ;---------------------------------------------------------- ORG 0000H

8位数码扫描显示电路设计

EDA与VHD1语言课 程 实验报告 实验名称: 班级: 学号: 姓名:实验日期:8位数码扫描显示电路设计2012.10.27

实验五8位数码扫描显示电路设计 一、实验目的:学习硬件扫描显示电路的设计。 二、实验原理:图1所示是8位数码扫描显示电路。图1中g~a为数码管段信号输入端,每个数码管的七个段(g、f、e、d、c、b、a)都分别连在一起;k1~k8 为数码管的位选信号输入端。 8个数码管分别由8个位选信号k1、k2、…k8来选通,被选通的数码管才显示数据,未选通的数码管关闭。如在某一时刻,k3为高电平,其余选通信 号均为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。因此,如果希望在8个数码管上显示希望的数据,就必 须使得8个选通信号k1、k2、…k8分别被单独选通,同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫 描显示的目的。 AAAAAAAA K1 K2 K3 K4 K5 K6 K7 K3 图1 8位数码扫描显示电路 三、实验内容1:用VHDL语言设计8位数码扫描显示电路,显示输出数据直接在程序中给出。 1、程序设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY scan play IS PORT( CLK:IN STD_LOGIC; SI:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); BI:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ; ARCHITECTURE bhv OF scan play IS SIGNAL S: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL B: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) --产生动态扫描显示的控制信号 VARIABLE SIO: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE BIO: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

数码管显示

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

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

关于1602显示数字程序设计

//LCD循环显示本站网址和电话 //硬件要求:LCD直接与单片机的A口和D口相连接 //所有拨码开关置OFF #include __CONFIG(0x1832); //芯片配置字,看门狗关,(上电延时开)这个重要,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define rs RB2 #define rw RB3 #define e RB4 const char web[ ]={' ','W','W','W','.','P','I','C','1','6','.','C','O','M',' ',' '}; //显示公司web地址 const char tel[ ]={'T','E','L','0','7','5','5','-','2','8','1','8','7','9','7','5'}; //显示公司电话号码 void init(); //申明I/O口初始化函数 void lcd_init(); //申明LCD初始化函数 void write_web(); //申明显示公司web地址函数 void write_tel(); //申明显示公司tel函数 void write(char x); //申明显示1字节数据函数 void lcd_enable(); //申明LCD显示设置函数 void delay(); //申明延时函数 //--------------------------------------- //主函数 void main() { while(1) { init(); //调用I/O口初始化函数 lcd_init(); //调用LCD初始化函数 write_web(); //调用显示公司web地址函数 PORTD=0XC0; //设置第2行显示地址 lcd_enable(); //调用LCD显示设置函数 write_tel(); //调用显示公司tel函数 } } //--------------------------------------- //I/O口初始化函数 void init() { ADCON1=0X07; //设置A口为普通I/O口

数码管显示设计

数码管显示设计 数码管是非常常见的东西,他能显示数字,以及字母,应用非常的广泛,本文我来和大家谈谈如何用单片机来驱动数码管 数码管的结构 数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理. 基本的半导体数码管是由7个条状的发光二极管(LED)按图1所示排列而成的,可实现数字"0~9"及少量字符的显示。另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,我们分别把这些发光二极管命名为"a,b,c,d,e,f,g,dp",排列顺序如下图1。 数码管引脚图及外形图 数码管按各发光二极管电极的连接方式分为共阳数码管和共阴数码管两种。 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。共阴数码管内

部连接如图3所示。 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阳数码管内部连接如图2所示 图2:共阳数码管内部连接图 数码管的显示方式 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 ①动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 ②静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 前面我们学习了数码管的基础知识,现在马上来看看S51增强型实验板的数码管吧(图4),S51实验板上有5位高亮度共阳数码管DG1~DG5,可以用来做计数器(最大计数值99999)、温度显示、电子钟等显示实验,掌握数码管的静态显示驱动和动态显示驱动。

七段LED数码管显示电路设计(精)

实验七七段LED数码管显示电路设计 一、实验目的 1.学习EDA软件的基本操作 2.学习使用原理图进行设计输入 3.初步掌握软件输入、编译、仿真和编程的过程 4.学习实验开发系统的使用方法 二、实验说明 本实验通过七段LED数码管显示电路的设计,初步掌握EDA 设计方法中的设计输入、编译、综合、仿真和编程的基本过程。七段LED数码管显示电路有四个数据输入端(D0-D3),七个数据输出端(A-G。 三、实验要求 1、完成七段LED数码管显示电路的原理图输入并进行编译 2、对设计的电路经行仿真验证 3、编程下载并在实验开发系统上验证设计结果 四、实验步骤 1、新建工程 2、新建Verilog HDL文件 3、在文本输入窗口键入代码 4、保存HDL文件

5、编译文件直至没有错误 6、新建波形文件 7、添加观察信号 8、添加输入激励,保存波形文件 9、功能仿真 七段LED数码管显示电路真值表: 输入D3D2D1D0G F E D C B A 000000111111 100010000110 200101011011 300111001111 401001100110 501011101101 601101111101 701110001111 810001111111

910011101111 A10101110111 B10111111100 C11001111001 D110111011110 E11101111001 F11111110001五、电路原理图 啊Verilog代码描述: module qiduan(data_in,data_out; input [3:0]data_in; output [6:0]data_out; reg [6:0]data_out; always @(data_in begin casex(data_in 4'b0000:data_out<=7'b0111111;

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