数码管时钟显示(含有原理图)
ds1302时钟数码管显示时分秒
![ds1302时钟数码管显示时分秒](https://img.taocdn.com/s3/m/87e1651ba8956bec0975e377.png)
ds1302时钟数码管显示时分秒单片机原理课程设计课题名称:基于DS1302的数码管显示数字钟专业班级:电子信息工程学生学号:0414070126学生姓名:张向阳指导教师:张云马崇霄设计时间:2010年6月21日--2010年6月25日目录摘要 ...................................................................................1 设计任务和要求 ...........................................................2 方案论证 .......................................................................3 系统硬件设计 ...............................................................3.1................................................................. 系统总原理图3.2元器件清单...................................................................................... ................................................3.3 PCB板图...................................................................................... .................................................3.4................................................................ P roteus仿真图3.5.......................................................... 分电路图及原理说明3.5.1 主控部分(单片机MCS-51)..............................................................................3.5.2 计时部分(实时时钟芯片DS1302)..................................................................3.5.3 显示部分(共阳极数码管)................................................................................3.5.4 调时部分(按键)................................................................................................4系统软件设计 ...............................................................4.1................................................................... 程序流程图4.2........................................................... 程序源代码5心得体会 ....................................................................... 6参考文献 ....................................................................... 7结束语 ...........................................................................基于DS1302的数码管显示数字钟设计摘要本次课程设计的是使用专门的时钟芯片DS1302在数码管上显示的数字电子钟,并能通过按键对其进行调时和校准。
实验二 数码管显示
![实验二 数码管显示](https://img.taocdn.com/s3/m/4e3ec7c526fff705cc170a35.png)
实验二数码管显示本实验的目的是掌握数码管的工作原理与使用,实现数码管的静、动态显示。
静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。
不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。
数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。
而它们的公共端又可分为共阳极和共阴极,中间图为共阴极内部原理图,右图为共阳极内部原理图。
上图展出了常用的两种数码管的引脚排列和内部结构。
总所周知,点亮发光二极管就是要给予它足够大的正向压降。
所以点亮数码管其实也就是给它内部相应的发光二极管正向压降。
如上图左(一共a、b、c、d、e、f、g、DP 八段),如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮a、b、c、e、f、g 这六段LED;我们还知道,既然LED 加载的是正向压降,它的两端电压必然会有高低之分:如果八段LED 电压高的一端为公共端,我们称之为共阳极数码管(如上图中);如果八段LED 电压低的一段为公共端,则称之为共阴极数码管(上图右)。
所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电平。
对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。
当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。
如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g, dp”这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。
【CPLD EPM570】Verilog实现数码管电子时钟
![【CPLD EPM570】Verilog实现数码管电子时钟](https://img.taocdn.com/s3/m/5ed3b7220066f5335a81211d.png)
Verilog实现数码管电子时钟1 原理图8位8段LED数码管,实现时钟的秒、分、小时、日期年月日的显示,其中主显示月、日、小时和分,按住按键S1显示年和秒;8x8的LED阵列显示秒的跳变,每一分钟点亮一圈,8位LED的跑马灯以1秒的频率移动;S1~S4按键实现时钟的设置,S1显示年和秒,S2选择设置的时钟段,S3实现设置数据的增加,S4跳出设置;4x4的矩阵按键,用了K1~K10共10个键,实现数据1~9、0的输入,可用于设置时钟(参考实例图)。
数码管显示的原理图如下,2个4位的8段数码管,组成的8位8段数码管,每个4位数码管的数据线独立,其实是可以以总线形式连接在一起的,可以减少IO。
共阳极的供电端用了三极管增加驱动,否则IO供电驱动多个数码管时有困难。
按键检测及跑马灯原理图如下,共5个按键,其中一个作为Reset按键(设计未加电容,可以考虑优化),每个按键采用一个IO检测,低电平表示有按键按下。
共8个LED灯,每个灯采用一个IO驱动,高电平点亮。
8x8的矩阵LED,行H1-H8为共阳,采用三极管增加驱动,但此实验板采用5V供电,因此无论行控制信号输出高电平或是低电平,都会导致LED有供电,只是供电强弱不一样,但都可能点亮LED,所以实现时需要将不供电时输出高阻z,同理对数据信号V1-V8。
此矩阵显示原理也是分时显示每一列数据,轮流显示速率较快,让人眼无法反映识别出来,避免闪烁。
4x4的矩阵按键,8个IO,检测原理是IO63、66、67、68作为输出信号,轮流赋值高电平,IO59、60、61、62作为输入信号,检测对应的按键按下。
比如,在IO68赋值高电平时,检测到IO59信号为高电平,则表示按键K1被按下,本时钟只用了10个按键,K1~K10。
2 CPLD代码module clock (clk_24m, //24M时钟reset_n, //全局异步复位/******************************************* 8位8段数码管显示接口信号*******************************************/ Bit_line,Data_line_h,Data_line_l,/******************************************* 8位跑马灯接口信号*******************************************/ led_Bit_line,/******************************************* S1-S5按键信号*******************************************/Key_line,/*******************************************8x8 LED数码管矩阵接口信号*******************************************/Hline,Vline,/*******************************************按键阵列接口信号*******************************************/Keyarray_Vline,Keyarray_Hline);input wire clk_24m;input wire reset_n;output wire [7:0] Hline;output wire [7:0] Vline;output wire [7:0] Bit_line;output wire [0:7] Data_line_h;output wire [0:7] Data_line_l;output wire [7:0] led_Bit_line;input wire [3:0] Key_line;input wire [3:0] Keyarray_Vline;output wire [2:0] Keyarray_Hline;/*************************************************************** 内部分频时钟,便于计数。
纯数字电路数字时钟原理图(免费)
![纯数字电路数字时钟原理图(免费)](https://img.taocdn.com/s3/m/6357601ba8114431b90dd858.png)
做成时钟,并不难,把十进改成6进就行了如下:1,震荡电路的电容用晶震,记时准确.2, 时:用2块计数器,十位的用1和2(记时脚)两个脚.分:用2块计数器,十位的用1,2,3,4,5,6,(记时脚)6个脚.秒:同分.评论:74系列的集成块不如40系列的,如:用CD4069产生震荡,CD4017记数,译码外加.电压5V.比74LS160 74LS112 74LS00好的.而且CD4069外围元件及少.如有需要我可以做给你.首先需要产生1hz的信号,一般采用CD4060对32768hz进行14分频得到2hz,然后再进行一次分频。
(关于此类内容请参考数字电路书中同步计数器一章)(原文件名:4060.JPG)一种分频电路:(原文件名:秒信号1.JPG)采用cd4518进行第二次分频另一种可以采用cd4040进行第二次分频第三种比较麻烦,是对1mhz进行的分频(原文件名:秒信号2.JPG)介绍一下cd4518:CD4518,该IC是一种同步加计数器,在一个封装中含有两个可互换二/十进制计数器,其功能引脚分别为1~7和9~{15}。
该计数器是单路系列脉冲输入(1脚或2脚;9脚或10脚),4路BCD码信号输出(3脚~6脚;{11}脚~{14}脚)。
此外还必须掌握其控制功能,否则无法工作。
手册中给有控制功能的真值(又称功能表),即集成块的使用条件,如表2所示。
从表2看出,CD4518有两个时钟输入端CP和EN,若用时钟上升沿触发,信号由CP输入,此时EN端应接高电平“1”,若用时钟下降沿触发,信号由EN端输入,此时CP端应接低电平“0”,不仅如此,清零(又称复位)端Cr也应保持低电平“0”,只有满足了这些条件时,电路才会处于计数状态,若不满足则IC不工作。
计数时,其电路的输入输出状态如表3所示。
值得注意,因表3输出是二/十进制的BCD码,所以输入端的记数脉冲到第十个时,电路自动复位0000状态(参看连载五)。
另外,该CD4518无进位功能的引脚,但从表3看出,电路在第十个脉冲作用下,会自动复位,同时,第6脚或第{14}脚将输出下降沿的脉冲,利用该脉冲和EN端功能,就可作为计数的电路进位脉冲和进位功能端供多位数显用。
电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告
![电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告](https://img.taocdn.com/s3/m/6e555c3826d3240c844769eae009581b6bd9bd2f.png)
电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1. 6个数码管动态扫描显示驱动2. 按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3. 用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。
要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。
实验目的: 1)学会看硬件原理图, 2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机, 2)硬件实验箱, 3)Quartus II软件开发平台。
1.打开Quartus II , 连接实验箱上的相关硬件资源, 如下图1所示。
2.建立新文件, 选择文本类型或原理图类型。
3. 编写程序。
4.编译5. 仿真, 加载程序到芯片, 观察硬件输出结果(数码管显示)6.结果正确则完成。
若结果不正确, 则修改程序, 再编译, 直到正确。
模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时, 实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。
第一讲 电子钟的组成及工作原理
![第一讲 电子钟的组成及工作原理](https://img.taocdn.com/s3/m/222920e229ea81c758f5f61fb7360b4c2e3f2ab4.png)
多功能大尺寸LED 时钟显示屏的设计与制作LED 数码管时钟显示屏的组成及工作原理一、时钟显示屏的组成数码管时钟显示屏的组成电路如图所示:由电源电路,单片机最小系统,时钟电路,键盘电路,数码管驱动显示电路,温湿度检测电路,红外接收电路,光亮度检测电路,语音报时电路、电器控制电路,通讯电路等组成。
图3-1 多功能时钟显示屏的组成框图二、时钟显示屏的工作原理时钟显示屏以单片机为核心完成对时钟芯片DS1302管理和数码管的驱动显示控制。
数码管采用静态显示方式,由多片串入并出芯片74HC595(功能等同74HC164)级联的方式进行驱动。
通过温湿度传感器实现温湿度的检测,红外接收电路完成无线调表和多种定时等时钟功能的设置,用按键也可实现时钟调整等以及各种时钟功能的设定。
光亮传感器可以监测环境明暗,实时调整数码管的显示亮度。
语音报时电路实现语音报时,电器控制电路可实现家用电器的定时控制或者上课打铃的控制等,通讯电路可进行有线、无线通讯、控制等。
单片机最小系统数码管红外接收电路键盘电路温湿度传感器光亮检测电路驱动电路语音报时电路通讯电路电器控制电路扩展接口时钟电路功能与特点一、功能:1、年、月、日、时、分、秒、星期;2、温度、湿度检测与显示;3、农历日期的显示;4、手动按键调表;5、红外遥控器调表;6、预留光亮度检测及显示亮度的自动调整;7、预留继电器控制(10A,可实现定时打铃、家电定时控制等);8、预留语音报时和音乐报时功能;9、预留RS232和485串行通讯接口,实现与微机通讯或者远程通讯;10、预留蜂鸣器提示音功能;11、预留无线通讯接口,可实现无线通讯;12、预留I/O接口,方便今后功能扩展。
13、电源保护电路,防止电源反接烧坏路线板元件;二、特点:1、大尺寸,由1.5~2.3寸数码管显示;2、农历、星期能尾随日期变化自动调整;3、采用时钟芯片和备用电池,走时准确,断电不影响计时;4、静态显示工作模式,延长时钟显示屏使用寿命;5、采用新型单片机功能更强、速度更快;6、硬件设计功能丰富;7、可实现数码管显示亮度随环境明暗自动调节,人性化设计,使用舒适;8、可实现多种显示模式,以实现节能目的;9、软件开辟可实现多种扩展功能;10、插接件接口设计,便于组装、维护。
项目六数码管显示原理分解
![项目六数码管显示原理分解](https://img.taocdn.com/s3/m/168dd67f284ac850ac02422c.png)
项目六 数码管显示原理学习目的:1. 介绍 STC89C51的数码管显示的原理;2. 掌握单个数码管静态显示的原理;3. 熟悉四位一体数码管动态显示的原理;4. 掌握单片机数码管显示的 C51 程序编程。
常用的 LED 显示器有 LED 状态显示器(俗称发光二极管) 、 LED 七段显示器(俗称数码 管)和 LED 十六段显示器。
发光二极管可显示两种状态, 用于系统状态显示;数码管用于数 字显示; LED 十六段显示器用于字符显示。
一、数码管简介1.数码管的结构数码管由 8 个发光二极管 (以下简称字段) 构成,通过不同的组合可用来显示数字 0 ~9、 字符 A ~F 、H 、L 、P 、R 、U 、Y 、符号“ -”及小数点“ .”。
数码管的外形结构如下图所示。
数码管又分为共阴极和共阳极两种结构。
常用的 LED 显示器为 8 段(或 7 段,8 段比 7段多 了一个小数点“ dp ”段) 。
有共阳极和共阴极两种 其结构如下图所示:图 6-1 数码管结构图2.数码管工作原理共阳极数码管的 8 个发光二极管的阳极(二极管正端)连接在一起。
通常,公共阳极接 高电平(一般接电源) ,其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为低电平 时,则该端所连接的字段导通并点亮。
根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流, 还需根据外接电源及额定段导通电流来确 定相应的限流电阻。
共阴极数码管的 8 个发光二极管的阴极(二极管负端)连接在一起。
通常,公共阴极接 低电平 (一般接地),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为高电平时, 则该端所连接的字段导通并点亮, 根据发光字段的不同组合可显示出各种数字或字符。
此时, 要求段驱动电路能提供额定的段导通电流, 还需根据外接电源及额定段导通电流来确定相应 的限流电阻。
3.数码管字形编码要使数码管显示出相应的数字或字符, 必须使段数据口输出相应的字形编码。
LED七段数码管数字钟
![LED七段数码管数字钟](https://img.taocdn.com/s3/m/7ef0ec687e21af45b307a8bd.png)
设 计 题 目: LED 七段数码管数字钟 学 院 名 称: 计算机科学与工程学院 专 业: 计算机科学与技术 班 级: 05计1 姓 名: 丁 琳 指导教师姓名: 白凤娥 指导教师职称: 教 授设 计 成 绩: 评 阅 教 师: 评 阅 日 期:2008年 12月 日微机原理与接口技术课程设计报告JIANGSU TEACHERS UNIVERCITY OF TECHNOLOGY目录一、设计任务书 (3)二、设计题目 (3)三、设计方案 (3)四、硬件原理 (4)1.七段数码管显示 (4)2.键盘扫描显示 (5)3.8253计数器和8259中断 (6)4.硬件连接 (6)五、程序流程图及程序清单 (7)1.七段数码管显示 (8)2. 键盘扫描显示 (9)3.定时器设计 (12)4.总程序设计 (15)六、调试过程及结果 (29)七、设计总结和体会 (30)八、参考文献 (30)一、设计任务书《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,会使我们学会系统地综合运用所学的理论知识,提高我们在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。
培养我们实事求是和严肃认真的工作态度。
通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。
集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
数码管时钟电路的设计
![数码管时钟电路的设计](https://img.taocdn.com/s3/m/b2252c1b0b4e767f5acfce70.png)
前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习、应用,以AT89C205芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示。
.数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。
本系统是基于AT89C2051单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。
目录摘要时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
本文利用单片机实现数字时钟计时功能的主要内容,其中AT89C2051是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。
数字时钟
![数字时钟](https://img.taocdn.com/s3/m/87de1aec4afe04a1b071de96.png)
数字时钟设计方案1.前言数字时钟是由计数器、时钟信号源、数码管等组成的,具有整点报时功能。
数字时钟是一种计时装置,它具有时、分、秒计时功能和显示计时功能。
数字时钟精度高、稳定性好,不需经常校对,便于携带。
再定时控制和时间程序控制等方面得到了广泛的应用2、设计方案该方案通过计数器和数码管来设计的,该方案的原理是:首先时钟脉冲源给“1/10秒”计时器一个频率为0.1Hz的连续时钟脉冲,“秒”计时器通过串联进位方式与“分”位、“时”位进行连接,计时器芯片采用74LS160,用数码管来进行显示。
首先时钟脉冲源给“1/10秒”一个脉冲信号,当“1/10秒”计时器的数位10时就给秒计数器产生一个进位,将这个进位输出作为“秒”计时器的脉冲输入端CP,当“秒”计时器的数为60时产生进位,作为“分”计数器的信号输入端CP,“分”计数器也是一样,“时”计数器产生进位后,利用与非门对其进行清零。
3、单元模块设计3.1“1/10秒”位设计该部分是采用10进制计数器,对“1/10秒”进行计数,通过数码管来进行显示,并用进位输出给“秒”计时器一个计数脉冲。
选取74LS160D芯片、与非门74LS00D、时钟脉冲源和数码管等。
将74LS160D芯片的输出端QA、QB、QC、QD从左到右依次和数码管的管脚相连接。
时钟脉冲源一端接地,另一端和74LS160D的信号输入端CP进行连接,给74LS00D的引脚控制端一个高电平,让74LS00D 输入端的两端分别接输出端QB、QD,将输出端与74LS160D的清零端连接,在计数到9时实现请零,74LS160D的输出端和“秒”计时器的CP端进行连接,将其作为秒”计时器计数脉冲信号。
3.2“秒”位设计该部分是采用60进制计数器,对“秒”进行计数,通过数码管来进行显示,并用进位输出给“分”计时器一个计数脉冲,同时接收“1/10秒“计时器计数脉冲选取2片74LS160D芯片U3、U4和两个数码管U1、U2和与非门74LS00D,让芯片U3的输出端QA、QB、QC、QD 和数码管U2的管脚依次进行连接,芯片U4和数码管U1连接方式与U3、U2连接方式相同。
电子技术数字时钟报告电路原理图
![电子技术数字时钟报告电路原理图](https://img.taocdn.com/s3/m/dc8419ce760bf78a6529647d27284b73f2423684.png)
电子技术课程设计报告设计题目:数字电子时钟班级:学生姓名:学号:指导老师:完成时间:一.设计题目:数字电子时钟二.设计目的:1.熟悉集成电路的引脚安排和各芯片的逻辑功能及使用方法;2.了解数字电子钟的组成及工作原理 ;3.熟悉数字电子钟的设计与制作;三、设计任务及要求用常用的数字芯片设计一个数字电子钟,具体要求如下:1、以24小时为一个计时周期;2、具有“时”、“分”、“秒”数字显示;3、数码管显示电路;4、具有校时功能;5、整点前10秒,数字钟会自动报时,以示提醒;6、用PROTEUS画出电路原理图并仿真验证;四、设计步骤:电路图可分解为:1.脉冲产生电路;2.计时电路;3.显示电路;4校时电路;5整点报时电路;1.脉冲电路是由一个555定时器构成的一秒脉冲,即频率为1HZ;电路图如下:2.计时电路即是计数电路,通过计数器集成芯片如:74LS192 、74LS161、74LS163等完成对秒脉冲的计数,考虑到计数的进制,本设计采用的是74LS192;秒钟个位计到9进10时,秒钟个位回0,秒钟十位进1,秒钟计到59,进60时,秒钟回00,分钟进1;分钟个位计到9进10时,分钟个位回0,分钟十位进1,分钟计到59,进60时,分钟回00,时钟进1;时钟个位记到9进10时,时钟个位回0,时钟十位进1,当时钟计数到23进24时,时钟回00.电路图如下:3.显示电路是完成各个计数器的计数结果的显示,由显示译码器和数码管组成,译码器选用的是4511七段显示译码器,LED数码管选用的是共阴极七段数码管,数码管要加限流电阻,本设计采用的是400欧姆的电阻;电路图如下:4.校时电路通过RS触发器及与非门和与门对时和分进行校准,电路图如下:5.整点报时电路即在时间出现整点的前几秒,数值时钟会自动提醒,本设计采用连续蜂鸣声;根据要求,电路应在整点前10秒开始整点报时,也就是每个小时的59分50秒开始报时,元器件有两个三输入一输出的与门,一个两输入一输出的与门,发生器件选择蜂鸣器;具体电路图如下:六.设计用到的元器件有:与非门74LS00,与门74LS08,74LS11,7段共阴极数码管,计数器芯片74LS192,555定时器,4511译码器,电阻,电容,二极管在电路开始工作时,对计数电路进行清零时会使用到,单刀双掷开关;设计电路图如报告夹纸;七.仿真测试:1.电路计时仿真电路开始计数时:计数从1秒到10秒的进位,从59秒到一分钟的进位,从1分到10分的进位,从59分到一小时的进位,从1小时到10小时的进位,从23小时到24小时的进位,然后重新开始由此循环,便完成了24小时循环计时功能,仿真结果如下:1. 7.2.8.3. 9.4. 10.5. 11.6. 12.13.2.电路报时仿真由电路图可知,U18:A和U18:B的6个输入引脚都为高电平时,蜂鸣器才会通电并发声,当计数器计数到59分50秒是,要求开始报时,而59分59秒时,还在报时,也就是说只需要检测分钟数和秒计数的十位,5的BCD码是4和1,9的BCD码是8和1,一共需要6个测端口,也就是上述的6个输入端口,开始报时时,报时电路状态如图:3.校时电路仿真正常计时校时U15:D和u15:C是一个选通电路,12角接的是秒的进位信号,9角接的是秒的脉冲信号,当SW1接到下引脚时,U15:D接通,u15:C关闭,进位信号通过,计数器的分技术正常计时;当SW1接到上引脚时,U15:D关闭,u15:C接通,校时的秒脉冲通过,便实现了分钟校时,时钟的校时与分钟校时大致相同;八.心得体会以及故障解决设计过程中遇到了一个问题,就是在校时电路开始工作时,校时的选择电路会给分钟和时钟的个位一个进位信号,也就是仿真开始时电路的分钟和时钟个位会有一个1;为了解决这个问题,我采用的是在电路开始工作时,同时给分钟和时钟的个位一个高电平的清零信号来解决,由于时钟的个位和十位的清零端是连在一起的,再加上分钟的个位,在校时小时的时候且当小时跳完24小时时,会给分钟的个位一个清零信号,这时在电路中加一个单向导通的二极管变解决了,具体加在那儿,请参考电路图;在设计过称中,我们也许遇到的问题不止一个两个,而我们要做的是通过努力去解决它;首先我们要具备丰富的基础知识,这是要在学习和实际生活中积累而成的;其次,我们还有身边的朋友同学老师可以请教,俗话说:三人行,必有我师;最后,我们还有网络,当今是个信息时代,网络承载信息的传递,而且信息量非常大,所以我们也可以适当的利用网络资源;通过这次对数字钟的设计与制作,让我了解了设计电路的步骤,也让我了解了关于数字钟的原理与设计理念,要设计一个电路总要先用仿真,仿真成功之后才实际接线;但是仿真是在一个比较好的状态下工作,而电路在实际工作中需要考虑到一些驱动和限流电阻等等,因为,再实际接线中有着各种各样的条件制约和干扰;而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功;所以,在设计时应考虑两者的差异,从中找出最适合的设计方法;这次学习让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解,才能在实际生活和工作中应用起来;。
单片机数码管显示
![单片机数码管显示](https://img.taocdn.com/s3/m/88fd6cedd0f34693daef5ef7ba0d4a7302766c0a.png)
三 LED显示器动态显示及应用实例
1. 动态显示的特点 优点:当显示位数较多时,采用动态显示方式比较节省I/O 口,硬件电路也较静态显示简单。 缺点:其稳定度不如静态显示方式。而且在显示位数较多时 CPU要轮番扫描,占用CPU较多的时间。
}
3.串行静态显示
为了解决静态显示I/O口占用过多的问题 ,可采用串行接口扩展LED数码管的技术。
利用串入并处移位寄存器74LS164可以 实现串行接口的扩展。
注意:74LS164的CLK端每产生一个下降沿, 输出端的数据左移一位。
思考:用下图电路显示1、2的程序 怎样编写?
三 LED显示器动态显示及应用实例
1. 动态显示的特点
动态扫描方法是用一个接口电路把所有数码管的8个笔划段a~ g和dp同名端连在一起,而每一个数码管的公共极COM各自独 立 地受一条I/O线控制。CPU向字段输出口送出字形码时,所 有 数码管接收到相同的字形码。但究竟是哪个数码管亮,则 取 决于COM端,COM端与单片机的I/O口相连接,由单片机输 出位 码到I/O控制何时哪一位数码管亮。
动态扫描用分时的方法轮流控制各个数码管的COM端,使各 个数码管轮流点亮。在轮流点亮数码管的扫描过程中,每位 数码管的点亮时间极为短暂。但由于人的视觉暂留现象及发 光二极管的余辉,给人的印象就是一组稳定的显示数据。
三 LED显示器动态显示及应用实例
2. 应用实例 【例】 采用四位数码管动态扫描显示0、1、2、
int i,j; for(i=0;i<x;i++)
LED数码管数字钟ppt课件
![LED数码管数字钟ppt课件](https://img.taocdn.com/s3/m/e8953347c281e53a5902ff1a.png)
CLR TR1 ;关闭定时器T1 CLR ET1 ;关定时器T1中断 SETB TR0 ;开启定时器T0 SETB ET0 ;开定时器T0中断(计时开始) LJMP START1 ;跳回主程序 SET1: LCALL DISPLAY ;键释放等待时调 用显示程序(调分) AJMP SET2 ;防止键按下时无时钟显示 SET3: LCALL DISPLAY ;等待调分按键时 时钟显示用
SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50MS×20) START1: LCALL DISPLAY ;调用显示子程 序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调 整程序 SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程 序SETMM
N
按键>0.5S?
Y
Y
分调整闪烁标志清零
Y
按键释放?
N 调显示子程序
关闭显示,进入省电模式
调显示子程序
调显示子程序
加1分 N
分>60? Y
分计时单元清零
退出调整模式
;当调时按键按下时进入此程序 SETMM: cLR ET0 ;关定时器T0中断 CLR TR0 ;关闭定时器T0 LCALL DL1S ;调用1秒延时程序 JB P3.7,CLOSEDIS ;键按下时间小于1秒, 关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时 初值 SETB ET1 ;允许T1中断 SETB TR1 ;开启定时器T1 SET2: JNB P3.7,SET1 ;P3.7口为0(键未释 放),等待 SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB P3.7,SET3 ;等待键按下 LCALL DL05S ;有键按下,延时0.5秒 JNB P3.7,SETHH ;按下时间大于0.5秒转调 小时状态
数码管时分秒动态显示
![数码管时分秒动态显示](https://img.taocdn.com/s3/m/e07eb534f111f18583d05ace.png)
数码管时分秒动态显示1、目的:数码管显示时、分、秒,实现计时功能。
2、原理:定时器产生中断,一秒钟计数一次,计数值转换成时、分、秒后,数码管动态显示。
3、原理图4、函数思路。
单片机工作频率是12MHZ,定时器12分频后累加计数,也就是1us计数一次。
定时一秒,定时器装入初值50000,则需进入中断20次,才能实现(50000*20=100000=1s)!数码管动态显示,要求控制显示延时时间和消隐。
累计计数转换成时、分、秒,转换思路是计数分割。
一分等于60,秒,一小时等于60分。
计数累加,计数一次,秒加1,;计数60次,分加1,;计数3600次,时加1.计数86400次,24小时满,而后计数清零。
5、程序#include<reg52.H>#include<intrins.H> // 加载头文件#define uchar unsigned char // 宏定义无符号字符型#define uint unsigned long int // 宏定义无符号长整型uint num ; // 定义num和cunt为全局变量,全局更改有效uchar cunt ;uchar tab1[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; // 数码管段选编码高电平有效uchar code tab2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //数码管位选编码,低电平有效void display(uint num ); // 显示函数函数声明void delay (); // 延时函数声明void init () // 中断初始化{TMOD=0x01; // 设置定时器T0为16位定时模式TH0=(65535-50000)/256; // T0装入初值50000TL0=(65535-50000)%256; // / 取整,%取余。
51单片机数码管时钟电路的设计
![51单片机数码管时钟电路的设计](https://img.taocdn.com/s3/m/c573b47f915f804d2a16c10c.png)
另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。在定时器1中断时,被登记的功能正式执行。期间用时约10ms,用以消除机械抖动。
MOV A, cmode
INC A
CJNE A, #07H, enmode
MOV A, #00H
enmode:
MOV cmode, A
ANL A, #04H
JZ notalapage
MOV npage, #02H
ACALL preala;时钟调整页准备
notalapage:
MOV A, cmode
MOVC A, @A + DPTR
MOV m, #00H
MOV A, h ;h
INC A
DA A
MOV h, A
CJNE A, #24H, incn
MOV h, #00H
incn:
SETB bPalse
JNB bAlaOn, alarmoff
ACALL checkala ;check alarm when alarm is ON
alarmoff:
CJNE A, #60H, notset
MOV s, #00H
SJMP notset
setae:
CPL bAlaOn ;闹钟开关
SJMP notseta
setah:
MOV A, ah ;闹钟时设置
INC A
DA A
MOV ah, A
CJNE A, #24H, notseta
课题四 数码管显示
![课题四 数码管显示](https://img.taocdn.com/s3/m/7b81d69151e79b89680226fa.png)
图4-1 数码管显示实物图
任务一
LED数码管的静态显示
本任务就是将单片机与数码管接成图 4-2所示静态显示方式,编程实现数码管 每隔0.5s的0-9数字显示。
图4-2
数码管显示电路图
一、任务分析
所谓静态显示,就是当单片机某一端口输出 一组显示数据之后,该端口一直保持该数据输出, 维持数码管的显示数字,直到端口数据改变,又 保持显示下一数据的显示方式。 在具体电路连接上,将单片机一个端口的八 个端子接在一只数码管的八个引脚上(h端为小数 点),控制数码管的七段LED的亮或熄,显示器 出数字,这种显示控制方式就是静态显示。静态 显示电路连接特点是单片机端口的每一位与数码 管的一个端相连接,相当于单片机的一个引脚外 接一只发光二极管。
unsigned char dispcount; void delay02s(void) { unsigned char i,j,k; for(i=10;i>0;i--) for(j=200;j>0;j--) for(k=248;k>0;k--);} void main(void) { while(1) {for(dispcount=0;dispcount<8;dispcount++) { P0=tablewe[dispcount]; P1=tabledu[dispcount]; delay02s(); } } }
数码管段码表
表4-1 共阴数码管显示数字的段码表
段名称 dp g f e d c b a 对应段码
对应引脚
数字0 数字1 数字2 数字3 数字4 数字5 数字6 数字7 数字8
P1.7
0 0 0 0 0 0 0 0 0
P1.6
0 0 1 1 1 1 1 0 1
基于单片机的电子时钟6位LED数码管显示
![基于单片机的电子时钟6位LED数码管显示](https://img.taocdn.com/s3/m/ea97bfee0975f46527d3e100.png)
数码管显示电子时钟设计一.功能要求1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时间时、分、秒。
2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。
二.方案论证1.数字时钟方案数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.数码管显示方案方案一:静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。