精华内容
下载资源
问答
  • 2021-05-22 00:46:25

    内容介绍

    原文档由会员 你的样子 发布

    多功能数字时钟

    ①页数 19

    ②字数 6932

    ③摘要

    摘 要:

    随着电子技术的发展,在诸如计时、控制等领域,设计出应用具有时间设置(小时和分钟),闹钟时间设置,闹钟开、关功能的多功能数字钟具有十分重要的意义。数字钟有显示小时、分钟,有AM、PM指示器,闹钟就绪灯,蜂鸣器等。能实现键盘控制切换现场环境温度显示(0~60℃ 1℃),切换电网频率、电压显示,电压欠压、过压报警(~220V 10%),非接触止闹等功能。该多功能数字钟具有显示年、月、日、星期、时、分、秒、温度及对各日期信息的调整功能;每天三点定时闹钟、日期提醒、闹铃音乐选择、掉电保护控制功能,此外除通过干电池供电外,还能通过MP3变压由USB线直接可用220V交流供电。主要采用STC89C52作为主控芯片,由DS1302产生时钟信号,由DS18B20温度传感器采集温度信号,并在LCD上显示时间、温度等信息,测温精度可达0.1度,整个时钟通过菜单的形式实现各个功能,界面友好、直观,易于操作。

    Abstract:

    With the development of electronic technology, such as timing, control and other areas, design application with the time setting (hours and minutes), alarm clock time setting, alarm clock, off the multi-functional digital clock is of great significance. Digital clock showing hours, minutes, with AM, PM indicator, alarm clock ready lights, buzzer and so on. To achieve control over the keyboard to switch the site displays the ambient temperature (0 ~ 60 ℃ 1 ℃), switching power grid frequency, voltage display, voltage, undervoltage, overvoltage alarm (~ 220V 10%), non-contact only the downtown and other functions. The multi-functional digital clock with a display year, month, day, week, hours, minutes, seconds, temperature and date information on the adjustment of the various functions; 3:00 regular daily alarm, date reminder, alarm music selection, power-down protection control function, in addition to, inter alia through the dry battery power supply, but also through the USB cable directly to MP3 transformer is available from the 220V AC power. STC89C52 used mainly as a master chip, the clock signal generated by the DS1302 from the temperature sensor DS18B20 collecting temperature signal, and the LCD displays time, temperature and other information, temperature measurement accuracy of up to 0.1 degrees, the entire clock is achieved through the menu in the form of various functional friendly interface, intuitive, easy to operate.

    ④目录

    目 录

    绪论 1

    1设计要求与方案论证 2

    1.1设计要求 2

    1.1.1基本要求 2

    1.1.2发挥部分 2

    1.2系统基本方案选择和论证 2

    1.2.1芯片的选择 2

    1.2.2显示模块选择方案和论证 2

    1.2.3时钟信号的选择方案和论证 2

    1.2.4测温元件的选择方案与论证 2

    1.3 电路设计最终方案决定 3

    2系统的硬件设计与实现 3

    2.1 电路设计框图 3

    2.2 系统硬件概述 3

    2.3 硬件电路结构的设计 3

    2.3.1 单片机主控模块的设计 3

    2.3.2时钟电路模块的设计 4

    2.3.3温度采集模块设计 4

    2.3.4 显示模块的设计 5

    2.4电路原理及说明 5

    2.4.1 时钟芯片DS1302的原理: 5

    2.4.2温度传感器18B20的测温原理: 7

    3系统的软件设计 7

    4 功能的调试 8

    4.1硬件调试 8

    4.2软件调试 8

    5指标测试 9

    5.1 测试仪器 9

    5.2掉电保护时间测试 9

    5.3温度测试 9

    6测试结果分析与结论 9

    6.1 测试结果分析 9

    6.2作品功能测试总结 9

    附录 12

    附录一、系统电路图 12

    附录二、程序清单 13

    ⑤关键字

    电子时钟,多功能,显示,DS18B20,DS1302

    electronic clock; multi-function; show; DS18B20; DS1302

    ⑥参考文献

    [1] 何立民.《单片机中级教程——原理与应用》.北京航空航天大学出版社.2006

    [2] 周润景等.《基于PROTEUDS的电路及单片机系统设计与仿真》.北京航空航天大学出版社.2006

    [3] 赵亮等.《单片机C语言编程与实例》.人民邮电出版社.2003

    [4] 沙占友等.《单片机外围电路设计》.电子工业出版社.2003

    [5] 张齐等.《单片机应用系统设计技术》.电子工业出版社.2004

    更多相关内容
  • 单片机实现数字时钟是一个不错的想法。有12864液晶显示屏、有按键、有DS18B20。关键的,你能从一个小的实验设计中获得设计经验,熟悉产品开发的流程,你会慢慢爱上这一行。  文末会有原理图和hex程序文件的方式,...
  • 用VHDL硬件描述语言,在实验箱上设计多功能数字时钟,可以实现时间设置、闹钟设置、整点响铃的功能,并可以通过VGA接口将时间显示在外接显示屏上
  • 本项目实现一个具有小时 分 秒的时钟 具有整点报时。手动校正时间等等功能! 适合初学者~ 初学者 , 项目 , 校正
  • 多功能数字时钟设计资料.
  • 基于multisim14的多功能数字时钟 用74161定时器与555振荡器实现 1、周期:24小时 2、显示时、分、秒 3、可校时、校分 4、实现整点报时 5、一键整体清零
  • 首先分析了多功能数字钟的设计要求、所需实现的功能,然后分析了实现每个功能所需要的基础模块,最后进一步分析了各种基础模块。在具体设计时,采用的是自底向上的设计方法。首先设计各种基础模块,然后设计各种功能...
  • 多功能数字时钟设计资料全套设计及说明材料
  • 基于Multisim10.0.1多功能数字钟的设计,同时也适用于Multisim13,均经过测试可完美实现,其基本功能如下:能够简单显示时钟、分钟、秒钟的相应时间,且该数字时钟具有校正时间(可分别对时钟、分钟、秒钟校正)、...
  • 时钟计时部分、LED显示部分、以及拨号报警部分。 随着人们生活水平的不断提高,大家对住宅和办公室的安全意识也日益增加。因此,研究和开发防盗报警装置引起了科研单位和生产厂家的重视,特别是面对普通居民、...
  • 首先分析了多功能数字钟的设计要求、所需实现的功能,然后分析了实现每个功能所需要的基础模块,最后进一步分析了各种基础模块。在具体设计时,采用的是自底向上的设计方法。首先设计各种基础模块,然后设计各种功能...
  • 多功能数字时钟.zip

    2021-01-20 18:36:52
    1、能进行正常的时、分、秒计时,分别用6个七段数码管动态扫描显示时、分、秒。时时-分分-秒秒 2、利用按键开关快速调整时间(校准):时、分 ...6、其他功能自由发挥:秒表、个闹钟、个时区、功能选择控制等
  • 多功能数字时钟设计资料.7z
  • 用HDL设计一个多功能数字钟,包含以下主要功能: 1.计时及校时,时间可以24小时制或12小时制显示 2.日历:显示年月日星期,及设定设定功能 3.跑表:启动/停止/保持显示/清除 4.闹钟:设定闹钟时间,整点提示
  • 基于multisim的多功能数字钟仿真的毕业设计论文和仿真 总体原理说明: 整体电路共分为五大模块: 脉冲产生模块、 计时模块、译码显示模块、 整点报时模块、 校时模块。 主要由555定时器器、秒计数器、分计数器、时...
  • 多功能数字时钟课程设计报告,设计目的: 熟悉数字逻辑设计的基本概念和原理。 掌握计数器、定时器等逻辑芯片的工作原理及应用设计。 熟悉数字逻辑集成芯片的外围电路设计与使用。 设计任务及要求: 设计一个数字电子...
  • 该资源基于quartusII开发 压缩包内含全部代码以及论文 eda 课程设计 多功能数字时钟 语言vhdl 功能 1.进行正常的时、分计时功能,二十四小时制计时 2.由数码管显示24h、60min 3.设置时间 4.整点报时 5.闹钟功能
  • 本设计由单片机89C51、DS18B20时钟芯片、74LS164模数转换芯片为核心,辅以必要的电路,构成了一个具有多功能数字时钟数字时钟具有时间显示、闹钟设置、环境温度测量、电网电压和电网频率显示、闹铃控制和电网...
  • 多功能数字时钟毕业设计
  • 毕业设计作品_多功能数字时钟设计资料.rar
  • 长期以来,一些电子杂志介绍的廉价防盗报警均无电话拨号报警功能,而市售的可自动拨号报警的防盗器材又价格高昂。这里介绍的电话拨号防盗报警器可在这两者之间找到平衡,即兼具高性能和低价位。为了以低成本实现高...
  • 实验五 多功能数字时钟设计.docx实验五 多功能数字时钟设计.docx实验五 多功能数字时钟设计.docx实验五 多功能数字时钟设计.docx实验五 多功能数字时钟设计.docx实验五 多功能数字时钟设计.docx实验五 多功能数字...
  • 多功能数字时钟(VHDL)

    万次阅读 多人点赞 2021-01-22 10:53:19
    功能要求2.各个模块描述三、具体实现过程描述1、小时计时2、分计时3、秒计时4、闹钟小时计时5、闹钟分计时6、闹钟比较模块7、控制器模块(设置状态转换)8、控制显示模块(显示时间以及校时,校分,秒清零,设置闹钟...


    一、课程设计内容

    1、能进行正常的时、分、秒计时,分别用6个七段数码管动态扫描显示时、分、秒。时时-分分-秒秒
    2、利用按键开关快速调整时间(校准):时、分
    3、通过按键开关设定闹铃时间,到了设定时间发出闹铃提示音,提示音长度为1分钟
    4、通过按键开关设定倒计时的时间,通过开关启动/暂停倒计时,倒计时为0时发出提示音,提示音长度为1分钟
    5、整点报时:在59分50、52、54、56、58秒时按500Hz频率报时,在59分60秒时用1KHz的频率作最后一声整点报时
    6、其他功能自由发挥:秒表、多个闹钟、多个时区、功能选择控制等

    二、实验方案分析与设计

    1.功能要求

    在这里插入图片描述
    根据功能要求的描述,我将该实验一共分为十四个模块进行设计,各个模块使用vhdl语言设计,顶层使用电路图的层次化设计。分别有以下模块:小时计时,分计时,秒计时,闹钟小时计时,闹钟分计时,控制器模块,控制显示模块,扫描显示模块,分频器模块,二选一模块,闹钟比较模块、报时模块,倒计时模块,倒计时开关模块。
    各个模块设计的思维导图:
    在这里插入图片描述

    2.各个模块描述

    1、小时计时:24进制计数器。正常显示时间时,每当分中产生的进位信号到达一次时自增一次,当时计数器每次计数到23时,在下一个分进位信号到来时,时变为00。当在校时时,接入1hz的时钟频率,每次时钟上升沿到来时自增一次,当时计数器计数到23时,在下一个时钟上升沿到来时,时直接变为00。
    2、分计时:60进制计数器。正常显示时间时,每当秒中产生的进位信号到达一次分自增一次,当分计数器每次计数到59时,在下一个秒进位信号到来时,分变为00,并且产生进位。当在校分时,接入1hz的时钟频率,每次时钟上升沿到来分自增一次,当分计数器计数到59时,在下一个时钟上升沿到来时,分直接变为00,并不产生进位。
    3、秒计时:60进制计数器。接入1hz的时钟频率,正常显示时间的状态下,每次时钟上升沿到来后秒加一,当秒计数器每次计数到59时,在下一个时钟边沿到来时,秒变为00,产生进位。当在秒清零时,秒直接变为00不产生进位。
    4、闹钟小时计时:24进制计数器。设置闹钟的小时时,接入1hz的时钟频率,每次时钟上升沿到来时自增一次,当时计数器计数到23时,在下一个时钟上升沿到来时,时直接变为00。
    5、闹钟分计时:60进制计数器。设置闹钟的分钟时,接入1hz的时钟频率,每次时钟上升沿到来分自增一次,当分计数器计数到59时,在下一个时钟上升沿到来时,分直接变为00,并不产生进位。
    6、控制器模块:控制计时时间状态,调计时的时、分、秒状态,调闹铃的时、分的状态这六个状态之间的转换。在enset打开的条件下可以,通过开关k的开闭控制状态转换,第一次打开开关k,状态从正常计时时间状态转换到校时,再次关闭开关状态将变换为校分,接下来秒清零,调节闹钟的时,调节闹钟的分,正常计时,如此循环。不论什么状态,当打开reset时,都会使当前状态变为正常计时的状态。
    7、控制显示模块:控制LED显示的是正常显示时间还是校时、校分、秒清零、设置闹钟时、分的显示,当在校时、校分、秒清零、设置闹钟时、分的显示中,被设置的数字以2hz的频率闪烁,并以1hz的频率自增,当打开set键时停止自增。
    8、扫描显示模块:以八个LED数码管扫描显示对应的数字,每一次时钟脉冲到来显示一个,八个为一组循环显示,当频率较大时因为人的视觉停留效果,使得显示表现为同时显示的效果。
    9、分频器模块:输入一个1khz的时钟频率,对1khz的时钟脉冲每两个脉冲输出一个脉冲如此得到500hz的频率,同理得到2hz和1hz的频率。
    10、二选一模块:通过显示正常计时时间和显示闹钟时间,选择合适的信号作为调整对应时间的控制条件。当在正常计时时用秒用1hz的时钟脉冲,时、分用进位信号控制,在校时、校分、设置闹钟时、分时各个都用1hz的时钟信号作为控制信号。
    11、闹钟比较模块:若闹钟的时分与目前的时间的时分相同,则输出结果为1,否则输出为0.
    12、报时模块:当控制声音的开关打开时,扬声器在每一小时59分的51、53、57秒发出频率为500Hz的低音,在59分钟的第59秒发频率为1000Hz的高音,结束时为整点,实现整点报时功能。当闹钟比较模块输出为1时,扬声器发出频率为1000Hz的高音,持续时间为60秒。
    13、倒计时模块:设置倒计时的时间,时间会按秒钟每次减少1秒,直到归零。
    14、倒计时开关模块:当控制声音的开关打开时,倒计时时间到了以后,会有1分钟的提示音。

    三、具体实现过程描述

    1、小时计时

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith;
    entity cnt24 is
    port(sld0:buffer std_logic_vector(3 downto 0);
    	sld1:buffer std_logic_vector(7 downto 4);
    	clk :in std_logic);
    end cnt24;
    architecture rtl of cnt24 is
    signal s:std_logic_vector(7 downto 0);
    begin
    process(clk)	
    begin
    	s<=sld1&sld0;
    if (clk'event and clk='1') then
    	if s="00100011"then
    		sld1<="0000";
    		sld0<="0000";
    	elsif sld0="1001" then
    		sld0<="0000";
    		sld1<=sld1+1;
    	else sld0<=sld0+1;
    	end if;
    end if;
    end process;
    end rtl;
    

    模块图如下:在这里插入图片描述

    2、分计时

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith;
    entity cnt60 is
    port(sld0:buffer std_logic_vector(3 downto 0);
    sld1:buffer std_logic_vector(7 downto 4);
    co:  out std_logic;
    clk :in std_logic);
    end cnt60;
    architecture rtl of cnt60 is
    begin
    process(clk)
    begin
    if (clk'event and clk='1') then
    if (sld1="0101"and sld0="1001")then
    sld1<="0000"; sld0<="0000";co<='1';
    elsif sld0="1001" then
    sld0<="0000";
    sld1<=sld1+1;co<='0';
    else sld0<=sld0+1;co<='0';
    end if;
    end if;
    end process;
    end rtl;
    

    模块图如下:在这里插入图片描述

    3、秒计时

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith;
    entity cnts60 is
    port(sld0:buffer std_logic_vector(3 downto 0);  --小时个位
    	sld1:buffer std_logic_vector(7 downto 4);  --小时十位
    	co:  out std_logic;
    	rest:in std_logic;
    	clk :in std_logic);
    end cnts60;
    architecture rtl of cnts60 is
    begin
    process(clk,rest)
    begin
    if rest='1' then sld1<="0000"; sld0<="0000";
    elsif (clk'event and clk='1') then
    	if (sld1="0101"and sld0="1001")then    --当sld1=5,sld0=9时
    		sld1<="0000"; sld0<="0000";co<='1';--全清零,co输出“1”
    	elsif sld0="1001" then
    		sld0<="0000";
    		sld1<=sld1+1;co<='0';        -- sld1自加“1else sld0<=sld0+1;co<='0';
    	end if;
    end if;
    end process;
    end rtl;
    

    模块图如下:在这里插入图片描述

    4、闹钟小时计时

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith;
    entity cnth24b is
    port(sld0:buffer std_logic_vector(3 downto 0);
    	sld1:buffer std_logic_vector(7 downto 4);
    	en:in std_logic;
    	clk :in std_logic);
    end cnth24b;
    architecture rtl of cnth24b is
    signal s:std_logic_vector(7 downto 0);
    begin
    process(clk,en,sld1,sld0)
    begin
    	s<=sld1&sld0;
    if (clk'event and clk='1') then
    	if en='1' then
    		if s="00100011"then
    			sld1<="0000";
    			sld0<="0000";
    		elsif sld0="1001" then
    			sld0<="0000";
    			sld1<=sld1+1;
    		else sld0<=sld0+1;
    		end if;
    	end if;
    end if;
    end process;
    end rtl;
    

    5、闹钟分计时

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith;
    entity cntm60b is
    port(sld0:buffer std_logic_vector(3 downto 0);
    	sld1:buffer std_logic_vector(7 downto 4);
    	en:in std_logic;
    	clk :in std_logic);
    end cntm60b;
    architecture rtl of cntm60b is
    begin
    process(clk)
    begin
    if (clk'event and clk='1') then
    	if en='1' then
    		if (sld1="0101"and sld0="1001")then
    			sld1<="0000"; sld0<="0000";
    		elsif sld0="1001" then
    			sld0<="0000";
    			sld1<=sld1+1;
    		else sld0<=sld0+1;
    		end if;
    	end if;
    end if;
    end process;
    end rtl;
    

    6、闹钟比较模块

    library ieee;
    use ieee.std_logic_1164.all;
    entity comp is
    port(th1,tm1:in std_logic_vector(7 downto 4);
    	th0,tm0:in std_logic_vector(3 downto 0);
    	bh1,bm1:in std_logic_vector(7 downto 4);
    	bh0,bm0:in std_logic_vector(3 downto 0);
    compout:out std_logic);
    end comp;
    architecture rtl of comp is
    begin
    process(th1,tm1,bh1,bm1,th0,tm0,bh0,bm0)
    begin
    if( th1=bh1 and tm1=bm1  and th0=bh0 and tm0=bm0 ) then
    	compout<='1';--当正常计数时间与闹钟定时时间相等时compout输出1
    else compout<='0';
    end if;
    end process;
    end rtl;
    

    7、控制器模块(设置状态转换)

    –输入端口enset,k,set键来控制6个状态,这六个状态分别是
    –显示计时时间状态,调计时的时、分、秒状态,调闹铃的时、分的状态,reset键是复位键,用来回到显示计时时间的状态。

    library ieee;
    use ieee.std_logic_1164.all;
    entity contl is
    port(clk,enset,k,set,reset:in std_logic;
    cth,ctm,cts,cbh,cbm,flashh,flashm,flashs,sel_show:out std_logic);
    end contl;
    architecture rtl of contl is
    type stats is (s0,s1,s2,s3,s4,s5);            --定义6个状态
    signal current_state,next_state:stats:=s0;
    begin
    process(clk,reset)
    begin
    if reset='1' then
    	current_state<=s0;
    elsif clk'event and clk='1' then
    	if reset='0' then
    		current_state<=next_state;
    	end if;
    end if;
    end process;
    process(current_state,enset,k,set)
    begin
    case current_state is
    	when s0=>cth<='0';ctm<='0';cts<='0';cbh<='0';cbm<='0';
    		flashh<='0';flashm<='0';flashs<='0';sel_show<='0';--sel_show为'0'时显示正常时间,为1时显示闹钟时间
    		if (enset='1' and k='1')then    --若enset和k为“1”,
    		next_state<=s1;                --由s0态转到s1态
    	else next_state<=s0;
    	end if;
    	when s1=>ctm<='0';cts<='0';cbh<='0';cbm<='0';
    		flashh<='1';flashm<='0';flashs<='0';sel_show<='0';
    	if set='1' then cth<='1';    --若set为“1”,cth输出“1else cth<='0';                --进入调小时状态。
    	end if;
    	if (enset='1' and k='0')then  --若enest为“1,k为“0”,
    		next_state<=s2;            --由s1态转到s2态
    	else next_state<=s1;
    	end if;
    	when s2=>cth<='0';cts<='0';cbh<='0';cbm<='0';
    		flashh<='0';flashm<='1';flashs<='0';sel_show<='0';---
    	if set='1' then ctm<='1';   
    	else ctm<='0';
    	end if;
    	if(enset='1' and k='1')then
    		next_state<=s3;
    	else next_state<=s2;
    	end if;
    	when s3=>cth<='0';ctm<='0';cbh<='0';cbm<='0';
    		flashh<='0';flashm<='0';flashs<='1';sel_show<='0';
    	if set='1' then cts<='1';
    	else cts<='0';
    	end if;
    	if (enset='1' and k='0')then
    		next_state<=s4;
    	else next_state<=s3;
    	end if; 
    	when s4=>cth<='0';ctm<='0';cts<='0';cbm<='0';
    		flashh<='1';flashm<='0';flashs<='0';sel_show<='1';
    	if set='1' then cbh<='1';   
    	else cbh<='0';         
    	end if;
    	if(enset='1' and k='1')then
    		next_state<=s5;
    	else next_state<=s4;
    	end if;
    	when s5=>cth<='0';ctm<='0';cts<='0';cbh<='0';
    		flashh<='0';flashm<='1';flashs<='0';sel_show<='1';
    	if set='1' then cbm<='1';
    	else cbm<='0';
    	end if;
    	if(enset='1' and k='0')then
    		next_state<=s0;
    	else next_state<=s5;
    	end if; 
    end case;
    end process;
    end rtl;
    

    8、控制显示模块(显示时间以及校时,校分,秒清零,设置闹钟)

    --该模块实现了数码管既可以显示正常时间,又可以显示闹钟时间的功能;调时,定时闪烁功能也在此模块中真正实现。
    library ieee;
    use ieee.std_logic_1164.all;
    entity show_con is
    port(th1,tm1,ts1:in std_logic_vector(7 downto 4);
    	th0,tm0,ts0:in std_logic_vector(3 downto 0);
    	bh1,bm1:in std_logic_vector(7 downto 4);
    	bh0,bm0:in std_logic_vector(3 downto 0);
    	sec1,min1,h1: out std_logic_vector(7 downto 4);
    	sec0,min0,h0: out std_logic_vector(3 downto 0);
    	q2Hz,flashs,flashh,flashm,sel_show:in std_logic);
    end show_con;
    architecture rtl of show_con is
    begin
    process(th1,tm1,ts1,th0,tm0,ts0,bh1,bm1,bh0,bm0,q2Hz,flashs,flashh,flashm,sel_show)
    begin
    if sel_show='0'then
    	if ( flashh='1'and q2Hz='1')then
    		h1<="1111";h0<="1111";  --显示小时数码管以2Hz闪烁
    		min1<=tm1;min0<=tm0;
    		sec1<=ts1;sec0<=ts0;
    	elsif (flashm='1'and q2Hz='1')then
    		h1<=th1;h0<=th0;
    		min1<="1111";min0<="1111";
    		sec1<=ts1;sec0<=ts0;
    	elsif (flashs='1'and q2Hz='1')then
    		h1<=th1;h0<=th0;
    		min1<=tm1;min0<=tm0;
    		sec1<="1111";sec0<="1111";
    	else
    		h1<=th1;h0<=th0;
    		min1<=tm1;min0<=tm0;
    		sec1<=ts1;sec0<=ts0;
    	end if;
    elsif sel_show='1'then--若sel_show为“1”,数码管显示闹钟时间
    	if(flashh='1' and q2Hz='1')then
    		h1<="1111";h0<="1111";
    		min1<=bm1;min0<=bm0;
    		sec1<="0000";sec0<="0000";
    	elsif ( flashm='1' and q2Hz='1')then
    		h1<=bh1;h0<=bh0;
    		min1<="1111";min0<="1111";
    		sec1<="0000";sec0<="0000";
    	else
    		h1<=bh1;h0<=bh0;
    		min1<=bm1;min0<=bm0;
    		sec1<="0000";sec0<="0000";
    	end if ;
    end if;
    end process;
    end rtl;
    

    9、分频器模块

    ---输入一个频率为1khz的CLK,利用计数器分出500Hz的q500Hz,2Hz的q2Hz和1Hz的q1Hz。
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    ENTITY fdiv IS
    PORT  (clk: IN STD_LOGIC ;                --输入时钟信号(1khz)
    	q500Hz: BUFFER STD_LOGIC;
    	q2Hz: BUFFER STD_LOGIC;
    	q1Hz: OUT STD_LOGIC);
    END fdiv ;
    ARCHITECTURE bhv OF fdiv IS
    BEGIN
    
    P500HZ:PROCESS(clk)              --1KHz作为输入信号,分出q500Hz
    VARIABLE cout:INTEGER:=0;
    BEGIN
    IF clk'EVENT AND clk='1' THEN
    	cout:=cout+1;
    	IF cout=1 THEN q500Hz<='0';          --二分频
    	ELSIF cout=2 THEN cout:=0;q500Hz<='1';
    	END IF; 
    END IF;
    END PROCESS;
    P2HZ:PROCESS(q500Hz)
    VARIABLE cout:INTEGER:=0;
    BEGIN
    IF q500Hz'EVENT AND q500Hz='1' THEN
    	cout:=cout+1;
    	IF cout<=125 THEN q2Hz<='0';
    	ELSIF cout<250 THEN q2Hz<='1';
    	ELSE cout:=0;
    	END IF; 
    END IF;
    END PROCESS;
    P1HZ:PROCESS(q2Hz)
    VARIABLE cout:INTEGER:=0;
    BEGIN
    IF q2Hz'EVENT AND q2Hz='1' THEN
    	cout:=cout+1;
    	IF cout=1 THEN q1Hz<='0';
    	ELSIF cout=2 THEN cout:=0;q1Hz<='1';
    	END IF; 
    END IF;
    END PROCESS;
    END bhv;
    

    10、报时模块

    --该模块既实现了整点报时的功能,又实现了闹铃的功能,蜂鸣器通过所选频率的不同,而发出不同的声音。
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity bel is
    port(tm1,ts1:in std_logic_vector(7 downto 4);
    tm0,ts0:in std_logic_vector(3 downto 0);
    compout,q1KHz,q500Hz,openbel:in std_logic;
    bell:out std_logic);
    end bel;
    architecture rtl of bel is
    signal t:std_logic_vector(7 downto 0);
    begin
    process(compout,q500Hz,q1KHz,openbel,tm1,tm0,ts1,ts0)
    begin
    if (openbel ='0' ) then
    bell<='0';
    end if;
    if (openbel ='1' ) then
    	if (compout='1') then        -- compout=1,闹铃响
    		bell<=q1KHz;              --bell输出1KHz
    	elsif (tm1="0101" and tm0="1001"and ts1="0101")then----整点报时
    		case ts0 is
    		when"0001"=>bell<=q500Hz;
    		when"0011"=>bell<=q500Hz;
    		when"0101"=>bell<=q500Hz;
    		when"0111"=>bell<=q500Hz;  --bell输出500Hz
    		when"1001"=>bell<=q1KHz;    --bell输出1KHz
    		when others=>bell<='0';
    		end case;
    	else bell<='0';
    	end if;
    end if;
    end process;
    end rtl;
    

    11、动态扫描显示模块

    --6组输入信号和7个数据输出信号和8个位选通信号来实现数码管的驱动和信号扫描,进而实现了时钟时,分,秒的动态显示。
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity SCAN_LED is
    port(clk1:in std_logic;
    h0:in std_logic_vector(3 downto 0);
    h1:in std_logic_vector(7 downto 4);
    min0:in std_logic_vector(3 downto 0);
    min1:in std_logic_vector(7 downto 4);
    sec0:in std_logic_vector(3 downto 0);
    sec1:in std_logic_vector(7 downto 4);
    ledag:out std_logic_vector(6 downto 0);
    se:out std_logic_vector(2 downto 0));
    end;
    architecture one of SCAN_LED is
    signal cnt6:std_logic_vector(2 downto 0);
    signal  a: std_logic_vector(3 downto 0) ;
    begin
    p1:process(clk1)
    begin
    if clk1'event and clk1 ='1' then
    cnt6<=cnt6+1;
    end if;
    se<=cnt6;
    end process p1;
    p2:process(cnt6,h1,h0,min1,min0,sec1,sec0)
    begin
    case cnt6 is                   --控制数码管位选
    		when "111"=>a<=sec0;---表示第八个位置的显示为
          when "110"=>a<=sec1;
          when "101"=>a<="1010";----当sel1为10的时候七段码中g段发光(第三和第六个位置为'-')
          when "100"=>a<=min0;
          when "011"=>a<=min1;
          when "010"=>a<="1010";
          when "001"=>a<=h0;
          when "000"=>a<=h1;
          when others=>a<="XXXX";
    end case;
     
    end  process p2;
    p3:process(a)
    begin
    case a is                       --控制数码管段选
    when  "0000"=>ledag<="0111111";
    when  "0001"=>ledag<="0000110";
    when  "0010"=>ledag<="1011011";
    when  "0011"=>ledag<="1001111";
    when  "0100"=>ledag<="1100110";
    when  "0101"=>ledag<="1101101";
    when  "0110"=>ledag<="1111101";
    when  "0111"=>ledag<="0000111";
    when  "1000"=>ledag<="1111111";
    when  "1001"=>ledag<="1101111";
    when  "1010"=>ledag<="1000000";		
    when others=>ledag<="0000000";
    end case;
    end process p3;
    end;
    

    12、二选一模块

    ENTITY mux21a IS 
    PORT(a,b,s:IN BIT;
    y:OUT BIT);
    END ENTITY mux21a;
    ARCHITECTURE one OF mux21a IS
    BEGIN
    PROCESS(a,b,s)
    BEGIN
    IF s='0' THEN
    y<=a;ELSE          --若s=0,y输出a,反之输出b。
    y<=b;
    END IF;
    END PROCESS;
    END ARCHITECTURE one;
    

    13、倒计时模块

    --设置倒计时时间,调频率
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith;
    entity daojishi is
        port(sld0:buffer std_logic_vector(3 downto 0);
             sld1:buffer std_logic_vector(7 downto 4);
               en:in std_logic;
             clk :in std_logic);
    end daojishi;
    architecture rtl of daojishi is
      begin
          process(clk)
        begin
         if (clk'event and clk='1') then
          if en='1' then
           if (sld1="1001"and sld0="1001")then
                sld1<="0000"; sld0<="0000";
               elsif sld0="1001" then
                     sld0<="0000";
                     sld1<=sld1+1;
                  else sld0<=sld0+1;
           end if;
          end if;
         end if;
        end process;
    end rtl;
    

    14、倒计时开关模块

    --开关控制倒计时进度
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith;
    entity bel1 is
        port(sld0:in std_logic_vector(3 downto 0);
             sld1:in std_logic_vector(7 downto 4);
    			clk:in std_logic;
    			en:in std_logic;
               compout:out std_logic);
    end bel1;
    architecture rtl of bel1 is
      begin
          process(clk,en,sld1,sld0)
    		variable sld_1:std_logic_vector(7 downto 4);
    		variable sld_0:std_logic_vector(3 downto 0);
    		begin
    		sld_0:=sld0;
    		sld_1:=sld1;
    if(en='1') then
       if (clk'event and clk='1') then
    	  while(sld_1/="0000" and sld_0/="0000")loop
               if sld_0="0000" then
                sld_0:="1001";
                sld_1:=sld_1-1;
                  else sld_0:=sld_0-1;
    				  end if;
    				  end loop;
    		if (sld_1="0000"and sld_0="0000")then
                compout<='1';
          end if;
    		end if;
    		else compout<='0';
    end if;
        end process;
    end rtl;
    

    顶层电路图如下:在这里插入图片描述

    四、结论实现效果

    用五个开关,以及一个1khz的时钟脉冲控制。
    (1)reset开关为复位键,当打开该开关时显示正常计时时间。
    (2)Openbel控制声音的开关,打开时有声音,关闭时没有声音。
    (3)Enset控制是否可以进行状态转换,打开时可以转换状态,关闭时不可以。
    (4)K控制状态之间的转换,在enset打开并且reset键关闭的条件下,每开一次或者关一次开关改变一次状态。
    (5)Set键控制校对时间设置闹钟时对应的数字是否变化。打开时暂停改变,关闭时继续依时钟频率改变。
    (6)clk为时钟频率,接入1khz的频率。

    1 功能1——正常显示时分秒的效果
    成功编译并运行,打开了K1键后,该功能便得以实现。数码管便显示出时时—分分—秒秒。
    2 功能2——利用按键快速校时
    关闭K1,打开K3,调整K4,打开K5便可实现对时、分、秒进行校时。调整到秒的时候,再调整K5,可以对秒进行清零操作。
    3 功能3——设置闹钟功能
    关闭K1,打开K3,调整K4到第四次,打开K5,便可以设置闹钟时间。再次调整K4便可以从时到分,秒。打开K2,到了闹铃规定的时间后,便会响铃一分钟。
    4 功能4——设置倒计时报时功能
    同功能3的实现和操作,倒计时到0后,便会响铃一分钟。
    5 功能5——设置整点报时功能并能发出不同频率的声音
    打开K1,打开K2,当时间到了每个小时的59分,50秒时,在50、52、54、6、58秒时会按500Hz频率报时,在59分60秒时会用1KHz的频率作最后一声整点报时。

    展开全文
  • 14,GUI人机实验-TFTLCD触摸屏实验--多功能数字时钟.rar
  • 基于单片机的多功能数字时钟设计

    千次阅读 2020-09-24 20:20:49
    文末下载完整资料 二 硬件系统方案设计 2.1电话拨号防盗报警器硬件系统方案 2.1.1 硬件系统方案设计 ...   键盘输入电路负责输入电片机中一系列工作参数及功能设定。    发光二极管数码管显示器在整个

    文末下载完整资料

    二 硬件系统方案设计
    2.1电话拨号防盗报警器硬件系统方案
    2.1.1 硬件系统方案设计
       图2.1为电话拨号报警器的系统构成方框图,由单片机控制器、键盘输入、数码管显示、触发电路、拨号电路及电源等6部分组成。
       单片机控制器是整个系统的核心,负责控制检测输入/输出显示、模拟摘机、拨号摘机、拨号报警、挂机等一系列的程序动作。这里使用了小引脚、高性能、低价位的AT89S2052。
       键盘输入电路负责输入电片机中一系列工作参数及功能设定。
       发光二极管数码管显示器在整个系统工作过程中充当一个简单的人机界面,用以显示工作状况及输入/输出的数据等。
       电话拨号防盗报警器的触发电路用磁性开关(门磁开关),简单可靠,也可用红外探测器或无线门磁,以实现全方位远距离监测。报警器应采用隐蔽安装,防止小偷发现。
       拨号及报警电路用来完成模拟摘机、拨号、发出报警音、挂机等工作过程,它的工作由单片机控制。
      &emsp电源部分负责对整个系统供电。平时由电话线上取得工作电流并对后备电池充电,拨号报警时转由后备电池供电。
    在这里插入图片描述
    2.1.2 脉冲拨号原理
       脉冲拨号是目前电话机两种拨号方式中的一种,另一种为双音多频拨号方式。
       脉冲拨号就是指在电话机上拨入的电话号码以脉冲个数的形式发出,也就是说,在已经通以直流电流的回路上,利用拨号盘及发号电路将回路断开、再接通而形成的脉冲信号,来完成输入电话号码的发送。在操作中,若用户拨1,则送出1个脉冲,回路中断一次、接通一次;拨2,则发出2个脉冲,回路断一次、接通一次、再断一次;……;而拨0时,则发出10个脉冲,回路断、接通轮流10次。图2.2为电话号码“32”的脉冲波形。
    在这里插入图片描述
       正常拨号时,电路电流中断的时间一般在58~65ms之间,视断续比的不同而不同。快速拨号时,只要取一半时间即可。电路电流接通的时间(即在同一位号码中的2个断脉冲之间的接通电流时间)约在32~42ms之间,视断续比的不同而不同。快速拨号时,只要取一半时间即可。显然脉冲周期等于脉冲中断时间和脉冲接通时间之和,每一个周期的时间为100ms左右。快速拨号时,在50ms左右。2位号码(即2组脉冲串)之间的最小时间间隔,通常为800ms左右;而快速拨号时,其值减半,为400ms左右。
       我国目前采用的电话脉冲拨号的速率是10PPS(每秒的脉冲数),即每秒发出10个脉冲,因此上述各参数不存在快速拨号时的值。
       为了提高拨号的可靠性及稳定性,这里设计时选定更低的脉冲拨号速率:1个脉冲代表播出1,2个脉冲代表拨出2,……,10个脉冲代表拨出0,每个脉冲的宽度和间隔为100ms。工作时首先进行模拟摘机,然后开始脉冲拨号,拨出1位号码后停顿500ms(保持接通)再拨下一位,直至全部拨完后再发报警音,……,最后挂机。
    2.1.3 脉冲拨号实现过程
       图2.3为脉冲拨号的实现电路。平时电话线上的电压约为50~60V左右。未拨号时电片机的P3.0、P3.1 均输出低电平。
    拨号过程如下:
       ①单片机的P3.0输出高电平,使TR1导通,由于电话线路上接入了负载R1,这样电话线的电压下降,模拟摘机。
       ②单片机的P3.0开始输出拨号脉冲,使电话线的电压(电平)也呈高、低变化。1个脉冲代表拨出1,2个脉冲代表拨出2,……,10个脉冲代表拨出0,每个脉冲的宽度和间隔均为100ms。拨出1位号码后停顿500ms(保持P3.0高电平)再拨下一位,直至全部拨完。
       ③P3.0 保持高电平(保持电话线路接通),P3.1输出1KHz的报警音脉冲驱动TR2,以2Hz进行调制(即接通1kHz信号0.5s、断开1kHz信号0.5s),这样从接听方的电话中就会听到“嘟、嘟……”的报警声。报警音的时间根据设计为60s。
       ④60后,P3.1输出低电平,TR2 截止,停止报警。随后P3.0也输出低电平,模拟挂机。完成一次报警过程。
    在这里插入图片描述

    2.2 时钟计时器的硬件设计方案论证分析
    2.2.1 功能要求
       时钟计时器要求用六位LED数码管显示时、分、秒、以二十四小时方式运行,使用按键开关实现时,分调整功能。
    2.2.2 方案论证
       为实现LED显示器的数字显示,可以采用静态显示法和动态显示法。由于静态显示法需要数据锁存器等硬件,接口复杂一些,考虑到时钟显示只有六位,且系统没有其它复杂的处理任务,所以决定用动态扫描实现LED显示。单片机采用易购的AT89S52系列,这种单片机可具有足够的空余硬件资源,以实现其它的扩充功能。若使用电池供电,可采用低电压的LV系列单片机时钟计时器电路系统的总体设计框架如图3.1所示。
    在这里插入图片描述
    2.2.3 系统硬件电路设计
       电话拨号防盗报警器的硬件电路设计描述
       为了发挥电片机强大的计算、控制能力,充分发挥软件的优势,这里极大地简化了电路,但可实现以前需要几片甚至十几片小规模数字电路才能完成的任务。
       电路原理如图所示,共有4个按键,即rst、ok、up、set。
       rst:系统复位键。
       ok:输入数据确认键。
       up:显示的数字增加键。
       set:工作模式设定键,可设定管机、工作、输入时间t1、输入时间t2及输入电话号码5种模式。
       磁性开关即为装于门或窗口的防盗感应开关,门关闭时常开,门打开时闭合接通。当然也可改用其他的感应器件,如激光探测、超声波感应、热释电感应、主动红外线探测或无线门磁等,以实现全方位远距离检测。为了防止磁性开关离控制器较远而产生引入干扰,使用了光耦作信号传递,效果良好。LED数码管用于工作状态指示或输入数据指示。L1、L2接电话线,ZND为击穿电压120V的压敏二极管,防止电路受雷电干扰。平时系统处于低功耗待机状态(此时耗电仅2mA左右),由电话线上取电工作,并对3.6V/60mA镍铬电池充电,当输入数据进行设定或进行拨号报警时,耗电会达到10mA,这时主要由镍铬电池供电。由于有镍铬电池后备供电,即使电话线断电也不会使已输入的数据丢失。该机除用于防盗报警外,若对软件进行一些修改,也可通过电话线进行远程数据传递。三极管T1、T2及电阻R1、R2构成拨号及报警电路,其工作原理前面已作详细介绍。
    4.1.2时钟计时器的硬件电路设计描述
       时钟计时器的硬件电路,采用AT89S52单片机最小化应用设计,显示采用共阳七段LED显示器,P0口输出段数码数据,P2.0~P2.5口作列扫描输出,P1.0,P1.1和P1.2口接三个按钮开关用以实现调时,调分功能.为了提供共阳LED数码管的驱动电压,用三极管8550作电源驱动输出。采用12MHZ晶振有利于提高秒计时的精确性。硬件电路图如图3.2示。
    在这里插入图片描述

    三 系统的软件设计
    3.1电话拨号防盗报警器程序设计
    3.1.1主程序设计
       主程序的工作过程为:先进行初始化工作,随后根据输入的键值分别散转输入的键值分别散转至对应的子程序(管机、警戒工作、输入时间t1、输入时间t2、输入电话号码)循环工作。T0为100ms定时中断服务子程序,它实现精确的拨号脉冲时序。INT0外中断服务子函数用于实现功能选择;而INT1外中断服务子函数则检测防盗触发开关的状态。
       主程序状态流程图如图3.6所示。INT0外中断服务子函数状态流程图及INT1外中断服务子函数的状态流程图分别如图3.7、图3.8所示。
    在这里插入图片描述


    全套资料免费下载:
    关注v-x-公-众-号:【嵌入式基地
    后-台-回-复:【毕业设计】 即可获资料
    回复【编程】即可获取
    包括有:C、C++、C#、JAVA、Python、JavaScript、PHP、数据库、微信小程序、人工智能、嵌入式、Linux、Unix、QT、物联网、算法导论、大数据等资料
    在这里插入图片描述

    展开全文
  • 多功能数字时钟设计资料.zip电子电路图PCB单片机设计案例资料多功能数字时钟设计资料.zip电子电路图PCB单片机设计案例资料多功能数字时钟设计资料.zip电子电路图PCB单片机设计案例资料多功能数字时钟设计资料.zip...
  • 长期以来,一些电子杂志介绍的廉价防盗报警均无电话拨号报警功能,而市售的可自动拨号报警的防盗器材又价格高昂。这里介绍的电话拨号防盗报警器可在这两者之间找到平衡,即兼具高性能和低价位。为了以低成本实现高...

    随着人们生活水平的不断提高,大家对住宅和办公室的安全意识也日益增加。因此,研究和开发防盗报警装置引起了科研单位和生产厂家的重视,特别是面对普通居民、价格低、运行可靠的自动报警系统。

       长期以来,一些电子杂志介绍的廉价防盗报警均无电话拨号报警功能,而市售的可自动拨号报警的防盗器材又价格高昂。这里介绍的电话拨号防盗报警器可在这两者之间找到平衡,即兼具高性能和低价位。为了以低成本实现高性能,设计时利用了电信局的交换机支持脉冲拨号方式来实现拨号报警,这样可利用单片机直接发出拨号脉冲,精简了电路,降低了成本。

       电话拨号防盗报警器作为家庭防盗报警器材的一员,非常经济实用。它进入工作警戒后,主控CPU不断检查触发开关的状态,当盗贼入室触发开关时,立即启动电话拨号报警程序向主人告警(当然也可以通过修改软件使其在现场发出高分贝报警音)。实践证明,该系统报警快速、准确。由于该系统电路简单,而且利用的是公共通信网,因此不存在建立的报警系统网络问题,具有成本低、体积小、能耗极低、体积小、能耗极低且不影响正常打电话等突出优点。平时可以作为时钟计时器来使用,真是一举两得。

    1.电话防盗报警器的拨号报警功能简介

       采用磁性开关进行检测,磁性开关即为装于门或窗口的防盗感应开关,门关闭时常开,门打开时闭合接通。实现全方位远距离监测。为了防止外界对磁性开关的影响,使用光藕传递信号。当有人触动装有磁性开关的门或窗口时,这时磁性开关闭合,实现报警。这时数码管会把信息纪录下来,同时蜂鸣器会发出尖锐的声音。告知房主。

    2.电话防盗报警器的时钟功能简介

       平时没有报警的情况下,数码管上显示的时间同我们的手表或钟表的时间是一致的。因此平时我们可以将它作为钟表来使用。数码管上显示时间的时,分,秒,以24小时计时方式运行,使用与单片机P1.0、P1.1、P1.2口相连接的按键T0、T1、T2实现对时、分、秒的调整。

        89S52单片机芯片内部逻辑结构

    89S52单片机芯片内部的逻辑结构情况介绍如下:

    1. 中央处理器(CPU)

    中央处理器简称CPU,是单片机的核心,完成运算和控制操作。按其功能,中央处理器包括运算器和控制器两部分电路。

    1. 运算器电路

    运算电路是单片机的运算部件,用于实现算术和逻辑运算。运算电路以ALU为核心,基本的算术运算和逻辑运算均在其中进行,包括加、减、乘、除、增量、减量、十进制调整、比较的算术运算,与、或、异或等逻辑运算,左、右移位和半字节交换等操作。运算和操作结果的状态由状态寄存器(PSW)保存。

    1. 控制器电路

    控制电路是单片机的指挥控制部件,保证单片机各部分能自动而协调地工作。单片机执行指令是在控制电路的控制下进行的。首先从程序存储器中读出指令,送指令寄存器保存,然后送指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,在送到系统的各个部件去进行相应得操作。这就是执行一条指令的全过程,执行程序就是不断重复这一过程。

    1. 内部数据存储器

    内部数据存储器包括RAM(128*8)和RAM地址寄存器等实际上89S52芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,供用户使用的只是前128单元,用于存放可读写的数据。因此,通常所说的内部数据存储器是指前128单元,简称“内部RAM”。

    1. 内部程序存储器

    内部程序存储器包括ROM(4K*8)和程序地址寄存器等。89S52共有4KB掩膜ROM,用于存放程序和原始数据。因此称之为程序存储器,简称“内部ROM”。

    1. 定时器/计数器

    出于控制应用的需要89S52共有两个16位的定时器/计数器 ,以实现定时或计数功能,并以其定时或计数接口结果对单片机进行控制。

    1. 并行I/O口

    89S52共有4个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入输出。

    1. 串行口

    89S52单片机有一个全双工的串行口,以实现单片机和其它数据设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。

    1. 中断控制系统

    89S52单片机的中断功能较强,以满足控制应用的需要。89S52共有5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。全部中断分为高级和低级共两个优先级别。

    1. 时钟电路

    89S52芯片的内部有时钟电路,但石英晶体和微调电容需外接,所以时钟电路是用石英晶体和电容器的符号表示的。时钟电路为单片机产生时钟脉冲序列,典型的晶振频率为12MHZ。

    1. 位处理器

    单片机主要用于控制,需要有较强的位处理功能,因此位处理器是它的必要组成部分,在一些书中常把位处理器成为布尔处理器。位处理器比状态寄存器中的进位标志位C为累加位,可进行置位、复位、取反、等于“0”转移、等于“1”转移且清“0”以及C与可寻址位之间的传送、逻辑与、逻辑或等位操作。位处理操作也是通过运算器实现的,位处理器是单片机的重要内容,因为它是单片机实现控制功能的保证。

    1. 总线

    上述这些部件都是通过总线连接起来,才能构成一个完整的单片机系统。总线以带箭头的空心线表示,系统的地址信号、数据信号和控制信号都是通过总线传送的。总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。从上述内容可以看出,虽然89S52只是一个芯片,但“麻雀虽小五脏俱全”,作为计算机应该具有的基本部件在单片机中几乎都包括,因此,实际上它已经是一个简单的微型计算机系统了,应当按计算机系统的概念来理解单片机。

    看到文章,感兴趣可以直接下载

    单片机多功能数字时钟毕业设计(含全部源程序源码总体设计电路图)-单片机文档类资源-CSDN下载

    展开全文
  • 压缩包包含word版毕业设计lun-wen,需要的请下载。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,322
精华内容 31,328
关键字:

多功能数字时钟