LED数码显示时钟实验
- 格式:doc
- 大小:58.00 KB
- 文档页数:7
第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
微机原理闹钟实验报告实验名称:微机原理闹钟实验报告实验目的:1. 了解单片机的基本工作原理和编程方法;2. 学习如何使用单片机设计并实现闹钟功能;3. 掌握数字时钟显示技术。
实验器材:1. 单片机实验箱;2. AT89C52单片机;3. LED数码管;4. 4位开关;5. 电源线;6. 连线线缆。
实验原理:本次实验使用单片机AT89C52来设计和实现闹钟功能。
单片机是一种微型电子计算机系统,具有高度集成、功能强大等特点。
数码管是一种常见的数字显示装置,适用于时钟、计时器等场合。
实验步骤:1. 将AT89C52单片机与LED数码管通过连接线连接起来,保证电源线的正负极连接正常。
2. 编写C程序,实现显示当前时间的功能。
通过编程可以将当前时间在数码管上显示出来。
3. 设定闹钟时间和闹铃的功能,通过编程实现。
当闹钟时间到达时,数码管上会显示闹钟时间,并通过蜂鸣器发出声音。
4. 调试程序,确保闹钟功能正常运行。
5. 完成闹钟的相关操作,包括设置闹钟时间、启动闹钟、关闭闹钟等功能。
实验结果:经过编程和调试,我们成功实现了微机原理闹钟的功能。
我们能够通过设置闹钟时间并启动闹钟来实现报时的功能。
当闹钟时间到达时,数码管上会显示相应的时间,并通过蜂鸣器发出声音,起到提醒作用。
实验总结:通过这次实验,我深入了解了单片机的基本工作原理和编程方法。
同时,我学会了使用单片机设计和实现闹钟功能,并掌握了数字时钟显示技术。
这次实验让我对单片机的应用有了更深刻的认识,并提高了我对数字电路设计和编程的能力。
同时,我还发现了实验过程中可能存在的问题和改进的空间。
例如,我可以进一步完善闹钟功能,加入更多的定时和报时功能,提高闹钟的多样化和实用性。
此外,我还可以优化程序的运行效率,提高系统的稳定性和响应速度。
总之,本次实验对我的学习和提高具有重要意义。
通过实践操作,我深入理解了微机原理闹钟的设计与实现,拓宽了我的知识面和实践能力。
我将继续深入学习和掌握微机原理和相关技术,为以后的学习和研究打下坚实的基础。
实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。
利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。
二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。
定时采用软件查询工作方式,利用JNB TF0, HERE实现。
置P0.6和P0.7端口为0,位选信号选定末位数码管。
通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R0自增1,并赋给A以取出下一个显示段码数据。
为减短代码长度,利用CJNE指令实现循环结构。
当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。
2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。
三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。
led数码管显示控制实验报告篇一:单片机实验报告——LED数码管显示实验《微机实验》报告LED数码管显示实验指导教师:专业班级:姓名:学号:联系方式:一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-9,显示切换频率为1Hz。
提高要求:在4位数码管显示器上依次显示当天时期和时间,显示格式如下:yyyy(月份.日)(小时.分钟)思考题:数码管采用动态驱动方式时刷新频率应如何选择?为什么?二、设计思路C8051F310单片机片上晶振为,采用8分频后为,输入时钟信号采用48个机器周期。
0到9对应的断码为:FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H 基础部分:由于只需要用末位数码管显示,不需要改变位码,所以只需要采用LED的静态显示。
采用查表的方法,通过循环结构,每次循环查找数据表下一地址,循环十次后重新开始循环。
每次循环延时1s,采用定时器0定时方式1。
提高部分:四个数码管都要显示,所以采用LED的动态显示。
由于数码管的位选由、控制,P0端口的其他引脚都没用到,所以对P0端口初始化赋00H,每次循环加40H、选中下一位,四次后十六进制溢出,P0端口变又为00H回到第一个数码管。
每位数码管显示一个段码后都延时1ms(否则数码管太亮,刺眼)采用定时器0定时方式1,依然采用查表法改变段码值。
通过循环:DJNZ R5,BACKMOVR5,#250 DJNZ R4,BACK MOVR4,#8来控制每种模式的切换时间,我采用2s切换一次(8*250*1ms=2s)。
切换模式,可以采用改变查表法的偏移量来实现,没切换一次模式,偏移量加04H,三次后回到初始偏移量,来实现三种模式的循环显示。
三、资源分配基础部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制段选提高部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制位选R1:控制段选R3:用于改变偏移量来切换模式R4、R5:控制循环次数,控制模式切换时间四、流程图基础部分:提高部分篇二:实验八数码管LED实验报告苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:数码管LED实验一.实验目的理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管LG5641AH与MCU 的接线图。
数字时钟实验报告一、实验目的本次数字时钟实验的主要目的是设计并实现一个能够准确显示时、分、秒的数字时钟系统,通过该实验,深入理解数字电路的原理和应用,掌握计数器、译码器、显示器等数字电路元件的工作原理和使用方法,提高电路设计和调试的能力。
二、实验原理1、时钟脉冲产生电路时钟脉冲是数字时钟的核心,用于驱动计数器的计数操作。
本实验中,采用石英晶体振荡器产生稳定的高频脉冲信号,经过分频器分频后得到所需的秒脉冲信号。
2、计数器电路计数器用于对时钟脉冲进行计数,分别实现秒、分、时的计数功能。
秒计数器为 60 进制,分计数器和时计数器为 24 进制。
计数器可以由集成计数器芯片(如 74LS160、74LS192 等)构成。
3、译码器电路译码器将计数器的输出编码转换为能够驱动显示器的信号。
常用的译码器芯片有 74LS47(用于驱动共阳数码管)和 74LS48(用于驱动共阴数码管)。
显示器用于显示数字时钟的时、分、秒信息。
可以使用数码管(LED 或 LCD)作为显示元件。
三、实验器材1、集成电路芯片74LS160 十进制计数器芯片若干74LS47 BCD 七段译码器芯片若干74LS00 与非门芯片若干74LS10 三输入与非门芯片若干2、数码管共阳数码管若干3、电阻、电容、晶振等无源元件若干4、面包板、导线、电源等四、实验步骤1、设计电路原理图根据实验原理,使用电路设计软件(如 Protel、Multisim 等)设计数字时钟的电路原理图。
在设计过程中,要合理布局芯片和元件,确保电路连接正确、简洁。
按照设计好的电路原理图,在面包板上搭建实验电路。
在搭建电路时,要注意芯片的引脚排列和连接方式,避免短路和断路。
3、调试电路接通电源,观察数码管是否有显示。
如果数码管没有显示,检查电源连接是否正确,芯片是否插好。
调整时钟脉冲的频率,观察秒计数器的计数是否准确。
如果秒计数器的计数不准确,检查分频器的连接是否正确,晶振的频率是否稳定。
《单片机技术》课程设计任务1、本课题任务如下:设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
2、本课题要求如下:(1)在AT89S51的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口(P0.0~P0.7对应于LED的a~dp),P2.5~P2.0作LED的位控输出线(P2.5~P2.0对应于LED5~LED0),P1口外接四个按键A、B、C、D(对应于P1.0~P1.3)。
(2)、利用六个LED显示当前时间。
(3)、四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1。
方案四: 独立式按键,LED动态显示。
该方案方框图如图1.2.4所示,独立式按键直接与单片机I/O口相连构成键盘,每个按键不会相互影响,因本系统用到的按键比较少,采用独立式键盘不会浪费I/O口线,所以本系统采用独立式键盘。
动态显示的亮度虽然不如静态显示,但其硬件电路较简单,可节省硬件成本,虽然动态扫描需占用CPU较多的时间,但本系统中的单片机没有很多实时测控任务,因此,本系统采用此种方案。
本设计中的电子钟的核心是AT89S51单片机,其内部带有4KB在线可编程Flash存储器的单片机,无须外扩程序存储器,硬件电路主要由四部分构成:时钟电路,复位电路,键盘以及显示电路。
时钟电路是电子表硬件电路的核心,没有时钟电路,电子表将无法正常工作计时。
本系统时钟电路采用的晶振的频率为12MHz,定时器采用的是定时器0工作在方式1定时,用于实现时、分、秒的计时,定时时间为62.5ms。
单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。
功能要求:a)计时并显示(LED)。
由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。
b)时间调整功能。
利用4个独立按钮,实现时钟调整功能。
这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。
c)定闹功能。
利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。
d)秒表功能。
最小时间单位0.01秒。
二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。
a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。
b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。
注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。
S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。
电路采用两个滤波电容,给板子一个更加稳定的工作电源。
LED为电源的指示灯,通电后LED灯亮。
2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。
有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。
如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。
低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。
电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。
数码管的阴级由P0口经过电阻限流连接。
例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。
电子设计自动化(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)显示时、分、秒。
设 计 题 目: 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)一、设计任务书《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,会使我们学会系统地综合运用所学的理论知识,提高我们在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。
培养我们实事求是和严肃认真的工作态度。
通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。
集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
LED点阵显示电子钟课设部门: xxx时间: xxx制作人:xxx整理范文,仅供参考,可下载自行修改嵌入式系统设计课程设计题目基于AT89S52LED点阵显示电子钟设计班级11级工业电气学号姓名指导教师白龙牡丹江师范学院2018年11月15日嵌入式课程设计指导书课程名称:嵌入式课程设计学时数:2周学分数:开课院、系<部)、教研室:物理与电子工程学院电子信息教研室执笔人:白龙编写时间:2018.11.15一、设计目的<1)完成点阵显示电子钟设计电路的设计,包括电源电路、单片机控制电路、驱动电路、显示电路;<2)掌握LED点阵显示原理,并完成主程序的编写。
二、设计任务设计一个基于AT89S52LED点阵显示电子钟三、基本内容与要求1、课题内容:设计一种基于AT89S52单片机的LED点阵显示时钟。
2、要求如下:<1)、时钟的显示由LED点阵构成。
<2)、时间能够由按键调整,误差小于1S。
<3)、能正确显示时间,上电显示为12点。
四、设计资料及有关规定1.H型全桥式电路和L298构成电机驱动2.主控制器可以采用AT89S52或STC89C52五、设计成果要求设计论文六、物资准备1.到图书馆、物理系资料室查阅相关资料2.到实验室准备芯片作好实验准备七、主要图式、表式各功能模块电路图要求用电路绘图软件画出八、时间安排2018.11.1 设计动员,发放设计任务书2018.11.2-2018.11.3 查阅资料、拟定设计程序和进度计划20183.11.4-2018.11.10 确定设计方案、实验、画图、编写设计说明书2018.11.11-2018.11.13 完成设计,交指导教师审阅2018.11.14 成绩评定九、考核内容与方式考核的内容包括:学习态度;技术水平与实际能力;论文(计算书、图纸>撰写质量;创新性;采取审定与答辩相结合的方式,成绩评定按百分制记分。
b5E2RGbCAP十、参考书目1.单片机原理及接口技术陈毅刚2.新概念51单片机C语言教程郭天祥3.单片机原理与应用及C51程序设计牡丹江师范学院本科学生课程设计任务书课程名称:嵌入式课程设计目录1 绪论21.1LED点阵显示电子钟的背景及意义22.系统总体方案选择与说明22.1硬件结构22.2控制思想33.各单元硬件设计说明及计算方法33.1 74HC138说明33.274HC573说明43.3 8*8点阵显示屏说明54.软件设计与说明64.1设计流程图如下:64.2设计程序85. 调试结果与必要的调试说明186. 使用说明18致谢20参考文献21基于AT89S52LED点阵显示电子钟设计1 绪论1.1LED点阵显示电子钟的背景及意义在日常生活中,大家见到的都是数码管制作的电子钟,LED点阵时钟则不多见。
LED数码显示时钟实验LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY TIMER ISPORT( CLK5:IN STD_LOGIC;CLK3:IN STD_LOGIC;RST1:IN STD_LOGIC;SEG_SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);SEG_DA :OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END TIMER;ARCHITECTURE ADO OF TIMER ISCOMPONENT CNT10PORT(CLK:IN STD_LOGIC;RST:IN STD_LOGIC;CIN:IN STD_LOGIC;CNT_V AL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT :OUT STD_LOGIC );END COMPONENT;COMPONENT CNT6PORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;CIN :IN STD_LOGIC;CNT_V AL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC );END COMPONENT;COMPONENT CNT2PORT(CLK: IN STD_LOGIC;RST: IN STD_LOGIC;CIN: IN STD_LOGIC;CNT_V AL:INOUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT :OUT STD_LOGIC );END COMPONENT;COMPONENT CNT4PORT (CLK:IN STD_LOGIC;RST:IN STD_LOGIC;CIN:IN STD_LOGIC;CNT_V AL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END COMPONENT;SIGNAL S_BUF1,S_BUF2,S_BUF3,S_BUF4:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL S_BUF5,S_BUF6,S_BUF7,S_BUF8:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL S_CNT :STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL S_TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL COUT:STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL CLK:STD_LOGIC;BEGINPROCESS (CLK3)BEGINIF CLK3'EVENT AND CLK3='1' THENCLK<=NOT CLK ;END IF;END PROCESS;PROCESS (CLK, RST1)BEGINIF CLK'EVENT AND CLK='1' THENIF RST1='1' THENS_CNT<="000";ELSES_CNT<=S_CNT+1;END IF;END IF;END PROCESS;S_SEL<=S_CNT;S_BUF3<="1111";S_BUF6<="1111";PROCESS(S_CNT,S_BUF1,S_BUF2,S_BUF3,S_BUF4,S_BUF5,S_BUF6,S_BUF7,S_BUF8) BEGINCASE S_CNT ISWHEN "000" => S_TEMP<=S_BUF1;WHEN "001" => S_TEMP<=S_BUF2;WHEN "010" => S_TEMP<=S_BUF3;WHEN "011" => S_TEMP<=S_BUF4;WHEN "100" => S_TEMP<=S_BUF5;WHEN "101" => S_TEMP<=S_BUF6;WHEN "110" => S_TEMP<=S_BUF7;WHEN "111" => S_TEMP<=S_BUF8;WHEN OTHERS => NULL;END CASE;END PROCESS;PROCESS (SEG_TEMP)BEGINCASE SEG_TEMP ISWHEN "0000" => SEG_DA<=x"3F";WHEN "0001" => SEG_DA<=x"06";WHEN "0010" => SEG_DA<=x"5B";WHEN "0011" => SEG_DA<=x"4F";WHEN "0100" => SEG_DA<=x"66";WHEN "0101" => SEG_DA<=x"6D";WHEN "0110" => SEG_DA<=x"7D";WHEN "0111" => SEG_DA<=x"07";WHEN "1000" => SEG_DA<=x"7F";WHEN "1001" => SEG_DA<=x"6F";WHEN "1010" => SEG_DA<=x"77";WHEN "1011" => SEG_DA<=x"7B";WHEN "1100" => SEG_DA<=x"39";WHEN "1101" => SEG_DA<=x"3E";WHEN "1110" => SEG_DA<=x"79";WHEN "1111" => SEG_DA<=x"00";END CASE;END PROCESS;U1 : CNT10 PORT MAP (CLK=>CLK5,RST=>RST1,CNT_V AL=>S_BUF1, COUT=>COUT(0),CIN=>'1');U2 : CNT6 PORT MAP (CLK=>CLK5,RST=>RST1,CNT_V AL=>S_BUF2, COUT=>COUT(1),CIN=>COUT(0));U3 : CNT10 PORT MAP (CLK=>CLK5,RST=>RST1,CNT_V AL=>S_BUF4, COUT=>COUT(2),CIN=>COUT(1));U4 : CNT6 PORT MAP (CLK=>CLK5,RST=>RST1,CNT_V AL=>S_BUF5, COUT=>COUT(3),CIN=>COUT(2));U5 : CNT4 PORT MAP (CLK=>CLK5,RST=>RST1,CNT_V AL=>S_BUF7, COUT=>COUT(4),CIN=>COUT(3));U6 : CNT2 PORT MAP (CLK=>CLK5,RST=>RST1,CNT_V AL=>S_BUF8, COUT=>COUT(5),CIN=>COUT(4));END ADO;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT10 ISPORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;CIN :IN STD_LOGIC;CNT_V AL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHA VE OF CNT10 ISSIGNAL CNT_T:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF RST='1' THENCNT_T<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF CIN='1' THENIF CNT_T/= 9 THENCNT_T<=CNT_T+1;ELSECNT_T<="0000";END IF;END IF;ELSECNT_T<=CNT_T;END IF;END PROCESS;COUT<='1' WHEN CNT_T=9 AND CIN='1' ELSE '0' ;CNT_V AL<=CNT_T;END BEHA VE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt6 ISPORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;CIN :IN STD_LOGIC;CNT_V AL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT6;ARCHITECTURE ADO2 OF CNT6 ISSIGNAL CNT_T :STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL COUTD :STD_LOGIC;BEGINPROCESS (CLK,RST)BEGINIF RST='1' THENCNT_T<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF CIN='1' THENIF CNT_T< 5 THENCNT_T<=CNT_T+1;ELSECNT_T<=x"0";END IF;END IF;ELSECNT_T<=CNT_T;END IF;END PROCESS;COUT<='1' WHEN CNT_T=5 AND CIN='1' ELSE '0';CNT_V AL<=CNT_T;END ADO2;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT2 ISPORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;CIN:IN STD_LOGIC;CNT_V AL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT2;ARCHITECTURE ADO3 OF CNT2 ISSIGNAL CNT_T:STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINPROCESS(CLK,RST)BEGINIF RST='1' THENCNT_T<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF CIN='1' THENIF CNT_T<1 THENCNT_T<=CNT_T+1;ELSECNT_T<="0000";END IF;END IF;ELSECNT_T<=CNT_T;END IF;END PROCESS;COUT<='1' WHEN CNT_T=1 AND CIN='1' ELSE '0';CNT_V AL<=CNT_T;END ADO3;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT4 ISPORT(CLK :IN STD_LOGIC;RST:IN STD_LOGIC;CIN:IN STD_LOGIC;CNT_V AL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT4;ARCHITECTURE BEHA VE OF CNT4 ISSIGNAL CNT_T:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,RST)BEGINIF RST='1' THENCNT_T<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF CIN='1' THENIF CNT_T<3 THENCNT_T<=CNT_T+1;ELSECNT_T<="0000";END IF;END IF;ELSECNT_T<=CNT_T;END IF;END PROCESS;CNT_V AL<=CNT_T;COUT<='1' WHEN CNT_T=3 AND CIN='1' ELSE '0';END BEHAVE;。