经典c7数码管显示程序设计

合集下载

七段数码管显示程序

七段数码管显示程序

附录A 八位七段数码管显示程序library ieee;use led isport( clk : in std_logic; --Clock Signaldata_in : in std_logic_vector(7 downto 0); --data busledag : out std_logic_vector(6 downto 0); --定义七位输出信号sel : out std_logic_vector(2 downto 0) --ledag Select);end led;--------------------------------------------------------------------architecture behave of led issignal dcount : std_logic_vector(2 downto 0);signal adh,adl : std_logic_vector(6 downto 0);signal adcount : std_logic_vector(7 downto 0);signal din_h,din_l : std_logic_vector(3 downto 0);signal coclk : std_logic;beginprocess(clk) --out enable signalbeginif(clk'event and clk='1') thenif adcount="" thencoclk<='1';adcount<="00000000";elseadcount<=adcount+1;coclk<='0';end if;end if;end process;process(clk) --rd the adc databeginif(clk'event and clk='1') thendin_h<=data_in(7 downto 4);din_l<=data_in(3 downto 0);end if;end process;process(clk)begincase din_h iswhen "0000"=>adh<="0111111"; --display 0when "0001"=>adh<="0000110"; --display 1when "0010"=>adh<="1011011"; --display 2when "0011"=>adh<="1001111"; --display 3when "0100"=>adh<="1100110"; --display 4when "0101"=>adh<="1101101"; --display 5when "0110"=>adh<="1111101"; --display 6when "0111"=>adh<="0000111"; --display 7when "1001"=>adh<="1101111"; --display 9 when "1010"=>adh<="1110111"; --display a when "1011"=>adh<="1111100"; --display b when "1100"=>adh<="0111001"; --display c when "1101"=>adh<="1011110"; --display d when "1110"=>adh<="1111001"; --display e when "1111"=>adh<="1110001"; --display f when others=>adh<=adh; --no change end case;case din_l iswhen "0000"=>adl<="0111111"; --display 0 when "0001"=>adl<="0000110"; --display 1 when "0010"=>adl<="1011011"; --display 2 when "0011"=>adl<="1001111"; --display 3 when "0100"=>adl<="1100110"; --display 4 when "0101"=>adl<="1101101"; --display 5 when "0110"=>adl<="1111101"; --display 6 when "0111"=>adl<="0000111"; --display 7 when "1000"=>adl<="1111111"; --display 8 when "1001"=>adl<="1101111"; --display 9 when "1010"=>adl<="1110111"; --display a when "1011"=>adl<="1111100"; --display b when "1100"=>adl<="0111001"; --display c when "1101"=>adl<="1011110"; --display dwhen "1111"=>adl<="1110001"; --display fwhen others=>adl<=adl; --no changeend case;end process;process(coclk) --display processbeginif(coclk'event and coclk='1') thendcount<=dcount+1;sel<=dcount;case dcount iswhen "000"=>ledag<="1000000";when "001"=>ledag<="1000000";when "010"=>ledag<="1000000";when "011"=>ledag<=adh;when "100"=>ledag<=adl;when "101"=>ledag<="1000000";when "110"=>ledag<="1000000";when "111"=>ledag<="1000000";when others=>ledag<="0000000";end case;end if;end process;end behave;。

单 片 机 原 理 实 验 报 告-七段数码管的显示

单 片 机 原 理  实  验  报  告-七段数码管的显示

单片机原理实验报告一、实验目的:1、通过此次实验学会使七段数码管产生不同码段的显示。

2、通过设计中断使和使用计数器使数码管自动计数。

二、实验仪器:计算机,keil uVision3,proteus 7三、简要原理:用数码管显示自动计数,用按键来使计数开始或暂停,即按一下按键,使数码管自动加1计数,再按一下按键,使计数暂停,再按一下又继续计数。

四、实现程序和设计电路图:ORG 0000H LJMP MAIN ORG 0003H LJMP LOOP3 ORG 000BH LJMP LOOP4 MAIN:MOV R0,#00HMOV A,#00HMOV DPTR ,#TABLE MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0AFH MOV P1,#0C0H MOV P2,#0C0H SETB PX0CLR PT0SETB EASETB EX0CLR ET0SETB IT0SETB TR0LOOP:CJNE R0,#20,LOOP MOV R0,#00HMOV B,#0AHINC ACJNE A,#3CH,LOOP1 MOV A,#00HLOOP1:MOV R1,A DIV ABMOVC A,@A+DPTRMOV P2,AMOV A,BMOVC A,@A+DPTRMOV P1, AMOV A,R1AJMP LOOPLOOP3:CPL ET0RETILOOP4:MOV TH0, #3CHMOV TL0,#0AFHINC R0RETITABLE:DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHEND五、实验心得:通过这次实验,我发现中断的作用非常之大,可以用它来实现各种各样的功能。

七段数码管显示电路设计

七段数码管显示电路设计

实验五七段数码管显示电路设计一、实验目的1、了解数码管的工作原理。

2、学习七段数码管显示译码器的设计。

3、学习Verilog的CASE语句及多层次设计方法。

二、实验原理七段数码管是电子开发过程中常用的输出显示设备。

在实验系统中使用的是两个四位一体、共阴极型七段数码管。

由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。

反之则不亮。

共阳极性的数码管与之相么。

四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。

八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。

三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。

在实验中时,数字时钟选择1KHZ作为扫描时钟,用四个开关做为输入,当四个开关置为一个二进制数时,在数码管上显示其十六进制的值。

实验箱中的拨动开关与FPGA的接口电路,以及开关FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。

四、实验步骤1、打开QUARTUSII软件,新建一个工程。

2、建完工程之后,再新建一个V erilog File,打开V erilog编辑器对话框。

3、按照实验原理和自己的想法,在VHDL编辑窗口编写V erilog程序,用户可参照光盘中提供的示例程序。

源程序:module scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0]count; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程begincount <= count + 1'b1;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[31:28]; //第一个数码管3'd1:disp_dat = d[27:24]; //第二个数码管3'd2:disp_dat = d[23:20]; //第三个数码管3'd3:disp_dat = d[19:16]; //第四个数码管3'd4:disp_dat = d[15:12]; //第五个数码管3'd5:disp_dat = d[11:8]; //第六个数码管3'd6:disp_dat = d[7:4]; //第七个数码管3'd7:disp_dat = d[3:0]; //第八个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示fendcaseendendmodule4、编写完V erilog程序后,保存起来。

单片机实验报告——矩阵键盘数码管显示

单片机实验报告——矩阵键盘数码管显示

单片机实验报告信息处理实验实验二矩阵键盘专业:电气工程及其自动化指导老师:***组员:明洪开张鸿伟张谦赵智奇学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日矩阵键盘一、实验内容1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。

按其它键没有结果。

二、实验目的1、学习独立式按键的查询识别方法。

2、非编码矩阵键盘的行反转法识别方法。

3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。

4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。

5、掌握利用Keil51软件对程序进行编译。

6、会根据实际功能,正确选择单片机功能接线,编制正确程序。

对实验结果能做出分析和解释,能写出符合规格的实验报告。

三、实验原理1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。

2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。

3、识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。

这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。

由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。

七段数码管显示控制程序设计

七段数码管显示控制程序设计
数码管G段
P、B、E、F、2、3、4、5、6、8、9
网络68为停止程序。
网络69为复位程序。将M.0至M7.7全部复位。
寄存器如表4所示:
表4 对应寄存器表
P
M2.3、M6.1
L
M2.5、M6.3
C
M2.7、M6.5
B
M3.1、M6.7
E
M3.3、M7.1
F
M3.5、M7.3
1
M0.1、M5.7
2
M0.3、M5.5
(2),具体所建数据如图4所示:
图4 数据字典
(3)通信关联
关联方式如图5所示:
图5 通信关联
4.联合调试
当PLC运行的时候,打开组态王监控界面。通过虚拟界面实现对PLC的控制,图5和图6、7分别表示当PLC 启动、停止和复位,PLC与虚拟界面状态显示图。
图5 启动画面
2.硬件电路的设计
2.1I/O地址分配
根据课设要求,由于只是利用PLC控制数码管显示,所以在输入模块设计中只需要设计三个输入量,及启动、停止、复位,分别用I0.0、I0.1、I0.2表示,具体的输入模块分配表1所示。
表1 输入模块分配表
输入点
作用
I0.0
启动
I0.1
停止
I0.2
复位
根据课设要求,是在数码管上显示“1、2、3、4、5、6、7、8、9、P、L、C、B、E、F、9、8、7、6、5、4、3、2、1、P、L、C、B、E、F”,由于数码管是由七段LED灯控制,所以输出模块采用七个输出控制,具体分配如表2所示。
根据本次实验要求,程序流程图如图2所示:


图2 程序流程图
3.2PLC程序设计

组合电路——7段数码管显示驱动电路设计报告

组合电路——7段数码管显示驱动电路设计报告

实验一、组合电路——7段数码管显示驱动电路设计一、实验目的了解EDA实验箱7位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。

二、硬件要求主芯片为Cyclone V E,型号为EP4CE22F17C8,7位八段数码管显示器,四位拨码开关。

三、实验内容用四位拨码开关产生8421BCD码,用CPLD分别产生7段数码管扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。

四、实验原理1、72、动信号a,b,c,d,e,f,g。

通过调节四位拨码开关的状态,数码管应显示与之对应的字符。

五、实验连线输入:将芯片管角a0~a3分别接4个拨码开关;输出:将芯片管角led7s0~7分别接到数码管7段驱动信号a、b、c、d、e、f、g上。

六、实验源程序:decl7s.vhdlibrary ieee;use ieee.std_logic_1164.all;entity decl7s isport(a:in std_logic_vector(3 downto 0);led7s:out std_logic_vector(6 downto 0));end;architecture one of decl7s isbeginprocess(a)begincase a iswhen "0000" => led7s<="0111111"; when "0001" => led7s<="0000110"; when "0010" => led7s<="1011011"; when "0011" => led7s<="1001111"; when "0100" => led7s<="1100110"; when "0101" => led7s<="1101101"; when "0110" => led7s<="1111101"; when "0111" => led7s<="0000111"; when "1000" => led7s<="1111111"; 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;七、波形仿真结果。

实验报告2--7段数码管显示实验

实验报告2--7段数码管显示实验

SPI主机实验——7段数码显示一、实验目的1、通过本实验进一步掌握对ARM7.0软件和EasyJTAG仿真器的使用;2、进一步熟悉EasyARM2131开发板硬件结构,掌握各引脚功能和接线;3、掌握SPI主机实验,熟悉该实验程序,并能作出简单的修改并实现其功能;4、在SPI实验中,通过改变实验程序,实现7段数码管和流水灯同时运行的功能。

二、实验仪器装有ADS1.2及EasyJTAG仿真器的电脑一台;ARM7开发板一块。

三、实验原理图4.61 SPI接口控制74HC595图中已经将最高位输出(SQH)连线到LPC2131的SPI接口的MISO0,可用来读回74HC595移位输出的数据。

下图是8路LED控制电路:该实验演示在7段数码管上显示一些字符,字符的字模表存于一数组中,流程图如下图4.62所示。

图4.62 LED数码管显示实验流程图1、特性2、结构SPI总线配置及数据传输3、SPI外设描述4、基本操作5主机操作四、实验内容与结果1、实验程序如下#include "config.h"#define HC595_CS (1 << 29) // P0.29口为74HC595的片选const uint32 LEDS8 = (0xFF << 18); // P1[25:18]控制LED8~LED1,低电平点亮/************************************************************************ ******************************** 函数名称:DelayNS()** 函数功能:长软件延时** 入口参数:dly 延时参数,值越大,延时越久** 出口参数:无************************************************************************* *******************************/void DelayNS(uint32 dly){uint32 i;for(; dly>0; dly--)for(i=0; i<50000; i++);}const uint32 LED_TBL[] = {0x00, 0xFF, // 全部熄灭后,再全部点亮0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减};/********************************************************************************************************** 函数名称:MSPI_Init()** 函数功能:初始化SPI接口,设置为主机。

7段数码管显示电路

7段数码管显示电路

7段数码管显示电路4.4显示模块4.4.1 7段数码管的结构与工作原理7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。

当发光二极管导通时,相应的一个点或一个笔画发光。

控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。

发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管,如图4.9所示。

共阴极4.4.2 7段数码 ___________________发光二极管(LED 图4.9 7段数码管结构图体材料制成的,能直接将电能转变成光能的发光显示器件。

就会发光。

------------------------------ 7段数码管每段的驱动电流和其他单个段LED 和引脚分布向电压随发光材料不 7段数码管的(1)静太显示所谓静态显示,就是当显示某一字符时,相应段的发光二极管恒定地寻能可截止。

这种显示方法为每一们都需要有一个8位输出口控制。

对于 51单片机,可以在并行口上扩展多片锁存74LS573作为静态显示器接口。

静态显示器的优点是显示稳定,在发光二极管导通电注一定的情况下显示器的亮度高,控制系统在运行过程中,仅仅在需要更新显示内容时,CPU 才执行一次显示更新子程序,这样大大节省了CPU 的时间,提高了CPU 的工作效率;缺点是位数较多时,所需 I/O口太多,硬件开销太大,因此常采用另外一种显示方式一一动态显示。

(2)动态显示所谓动态显示就是一位一位地轮流点亮各位显示器(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。

虽然在同一时刻只有一位显示器在工作(点亮),但利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。

显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。

调整电流和时间参烽,可实现亮度较高较稳定的显示。

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

c dp
com
共阴结构
dp g f e d c b a
共阳结构
5.2 数码显示预备知识
数码管段码的编码:

8段正好是一个字节,通常采用如下 编码方式。(这种编码需单片机数据总线 的D0..D7分别和数码管的a、b、c、…dp 对应相连。如图所示)
dp
g
最高 位
f
e
d
c
b
a
最低位
CPU和数码管的连接
b
a g d
a
b c
CR3
dp
CR4
CR3
CR2
CR1
CR4
CR3
CR2
CR1
P22 4 .7 K S Q3 9015
P21 4 .7 K S Q2 9015
CR2
CR1
非门驱动电路
P1 7 P1 6 P1 5 P1 4 P1 3 P1 2 P1 1
c a b c dp CR3 CR2 f e g d b c dp CR1 f e dp a f e g d CR4 b c dp f e g f a g d e d



二、静态显示技术 静态显示数码管相应笔段一直处于 点亮状态,因此功耗大,而且占用硬件资 源多,几乎只能用在显示位数极少的场合。 优点:LED亮度高,可用在室外显示场合。
静态显示电路
图10-6 四位静态显示电路



三、动态显示技术 动态显示是多只数码管共享段码线, 通过位选线逐位逐位进行扫描显示。其优 点是占用硬件资源少,功耗小。 必须注意:扫描周期必须控制在视觉 停顿时间内,一般在20ms以内,否则会出 现闪烁或跳动现象。
动态显示电路
图10-7 四位动态显示的电路
4
5
三极管放大驱动电路
P17
P16
P15
P14
P13
P12
P11
P10
P23 dp
a f e g d b c dp f e
CR4
P20 4 .7 K S Q4 9015 4 .7 K S Q1 9015
g
f
a g d
e
b c dp f e
d
a g d
c
b c dp f e
VCC a b a c f b d g e e c f d g dp dp
GND
LED
共阴数码管
共阳数码管
9
330*8
LED 1 2 3 4 5 6 7 8
5.2 数码显示接口技术
5.2 数码显示接口技术


程序清单:
ORG 0030H MOV SP,#60h MOV R0,#00h DISP0:MOV DPTR,#SEGTAB DISP1: MOV A,R0 DISP3:MOVC A,@A+DPTR MOV P2,A MOV R3,#100 DISP4:ACALL D10MS DJNZ R3,DISP4 INC R0 CJNE R0,#0ah,DISP1 AJMP DISP1

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15~16脚:空脚

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160 个不同的点阵字符图形,如表所示,这些字符有:阿拉伯数字、英 文字母的大小写、常用的符号、和日文假名等,每一个字符都有一 个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们 就能看到字母“A”
5.3 液晶显示技术

一、液晶显示器及其特点 液晶显示器以其微功耗、体积小、显示内容丰富、 超薄轻巧的诸多优点,没有电磁辐射、寿命长等优点, 在袖珍式仪表和低功耗应用系统中得到越来越广泛的 应用。
这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符 的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、 2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍





5.2 数码显示接口技术

INTT0:


SEG:

MOV MOV MOV MOV MOV MOVC MOV MOV MOV RL MOV INC RETI DB DB END
TL0,#18H ;重为定时器赋初值 TH0,#0FCH P1,#0FFH ;关所有显示 A,@R0 ;取显示数字 DPTR,#SEG A,@A+DPTR ;查字段码表的段选码 P2,A ;输出段选码 A,R2 P1,A ;输出位控制字 A ;为显示下一位做准备 R2,A R0 3FH,06H,5BH,4FH,66H 6DH,7DH,07H,7FH,6FH
5.2 数码显示接口技术

例子:显示1、2、3、4
首先 扫描
最后 扫描
5.2 数码显示接口技术

显示过程:定时器T0每1ms 产生一次中断,在中 断服务程序中更换一次显示位,4位一个扫描周期, 扫描时间为4 ms。 除了定时中断扫描显示外,也可以程序控制扫 描显示,但采用定时中断扫描显示的扫描周期固 定,特别是当单片机的工作任务重时,定时中断 扫描显示是一种很好的方式。
LED显示驱动技术
LED的驱动问题其实是一个非常重要的问题,如果驱 动器驱动能力差,显示亮度就降低。而且动态和静态显示方 式对驱动电路要求是不一样的。 如果是静态显示,不需要考虑LED驱动,一般情况下 只要将单片机I/O口与数码管的段代码连接,如图10-6所示 (请确认)电路即可。 但是动态显示就需要考虑LED驱动,因为动态显示是 由段和位选信号共同配合完成的,因此必须同时考虑段和位 的驱动能力,并且段的驱动能力决定位的驱动能力。常用的 驱动电路有两种,采用集成电路芯片如SN7407或采用简单的 三极管放大电路




;字段码首地址 ;从0开始显示 ;查字符段选码 ;从P2口输出显示 ;停留 1s
;又从0开始显示
5.2 数码显示接口技术


H ;10ms延时子程序 DLY: MOV R6,#0F8H DLY1: DJNZ R6,DLY1 DJNZ R7,DLY RET SEGTAB : ;;段码表 DB 3FH,06H,5BH,4FH,66H ;;0\1\2\3\4 DB 6DH,7DH,07H,7FH,6FH ;;5\6\7\8\9 DB 77H,7cH,39H,5eH, 79H ;;a\b\c\d\e DB 71h, 73h,3Eh,6Eh,0ffh,00h ;;f\p\u\y\ 8.\灭 可根 据需 END 要造 一些 特殊 的编 码
发光二极管的驱动
+5V
发光二极管正常发光时, 电流约为5~10mA,压 降1V左右。
500
P1.0
限流电阻 R=(5V-1V)/8mA=500 Ω
引脚输出低电平时,发光 二极管导通。
数码管
共阳极数码管的结构是:将8个发光二极管排 列成一个 “8.” 的形状,所有发光二极管阳极 连接在一起做公共端com,阴极作为各个段的 控制端a,b,c,d,e,f,g,dp。 com
P1 0
b a g d b c dp a
P2 3
P2 2
P2 1
P2 0
实验板数码管连接示意图
+5V
P2.7 P2.6 com1 P2.5 com2 P2.4 com3 P2.3 com4 P2.2 com5 com6
位驱动
段驱动
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 a b c d e f g dp
LCD1602指令表

1602液晶模块内部的控制器共有11条控制指 令,如表2所示
HD44780的主要命令格式

HD44780是这种点阵字符型液晶常用驱动芯片。它的读写操作、 屏幕和光标的操作都是通过指令编程来实现的。(说 明:1为高 电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H 。 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移, 低电 平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效, 低电 平则无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表 示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示 有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁, 低电平不闪烁 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电 平时移动光标
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
a
b
c
d
e
f
g
dp
编程练习
要求:在第一位显示连续变 化的0-9,间隔时间自定。 参考课本P196页例1,在 keil中编程,生产HEX文件。 在proteus中观察运行结果。 (参考“ c6定时器应用程 序调试” 介绍的方法)
六位共阳极数码管模块 相同的段驱动端都并联在 一起。
在第一位上显示5
+5V
P2.7
0
P2.6 com1
1
P2.5 com2
1
P2.4 com3
1
P2.3 com4
1
P2.2 com5 com6
1
位驱动P2.7输出0 段驱动P0口输出“5”的段 码“10010010B” 0 1 0 0 1 0 0 1
VCC
U1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 8051
9
a b c d e f g dp
相关文档
最新文档