用数码管(8位)显示的数字时钟程序

合集下载

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

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

八位七段数码管动态显示电路的设计一七段显示器介绍七段显示器,在许多产品或场合上经常可见。

其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。

目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。

七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角)。

图4.1、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。

因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极( 高电位动作)七段显示器,如下图4.2所示。

( 共阳极) ( 共阴极)图4.2、共阳极(低电位动作)与共阴极(高电位动作)要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。

此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC电源。

而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。

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

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

图4.5、七段显示器模块接线图七段显示器之常见应用如下➢可作为与数值显示相关之设计。

⏹电子时钟应用显示⏹倒数定时器⏹秒表⏹计数器、定时器⏹算数运算之数值显示器二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。

(完整word版)八位七段数码管动态显示电路设计

(完整word版)八位七段数码管动态显示电路设计

八位七段数码管动态显示电路的设计一七段显示器介绍七段显示器,在许多产品或场合上经常可见。

其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。

目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。

七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角)。

图4.1、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。

因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极( 高电位动作)七段显示器,如下图4.2所示。

( 共阳极) ( 共阴极)图4.2、共阳极(低电位动作)与共阴极(高电位动作)要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。

此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC电源。

而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。

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

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

图4.5、七段显示器模块接线图七段显示器之常见应用如下可作为与数值显示相关之设计。

⏹电子时钟应用显示⏹倒数定时器⏹秒表⏹计数器、定时器⏹算数运算之数值显示器二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。

基于C51单片机的数字时钟课程设计(C语言,带闹钟).

基于C51单片机的数字时钟课程设计(C语言,带闹钟).

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录一、数字电子钟设计任务、功能要求说明及方案介绍 (4)1.1 设计课题设计任务 (4)1.2 设计课题的功能要求说明 (4)1.3 设计课的设计总体方案介绍及工作原理说明 (4)二、设计课题的硬件系统的设计 (5)2.1硬件系统各模块功能简要介绍 (5)2.1.1 AT89C52简介 (5)2.1.2 按键电路 (6)三、设计课题的软件系统的设计 (6)3.1 使用单片机资源的情况 (6)3.2 软件系统个模块功能简要介绍 (7)3.3 软件系统程序流程框图 (7)3.4 软件系统程序清单 (7)四、设计课题的设计结论、仿真结果、误差分析 (9)4.1 设计结论及使用说明 (9)4.2 仿真结果 (10)结束语 (12)参考文献 (12)附录 (13)附录A:程序清单 (13)一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
七段码管位选输入信号 七段码管位选输RTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。 3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。其 程序如下所示:
(1)一位数码管显示0-9:
电子科技大学成都学院学院
标准实验报告
(实验)课程名称 数字电路 EDA 设计与应用
姓名 乱弹的枇杷 学号 专业 指导教师
一、 实验名称 数码管显示(一位数码管显示 0-9,八位数码管显示学号
后八位)
二、 实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、掌握 VHDL 的 CASE 语句及多层次设计方法。
信号名称 7SEG-A 7SEG-B 7SEG-C 7SEG-D 7SEG-E 7SEG-F 7SEG-G 7SEG-DP 7SEG-SEL0 7SEG-SEL1 7SEG-SEL2
对应 FPGA 管脚名
F13 F14 F15 E15 F16 F17 E18 F18 G18 G17 G16
说明 七段码管 A 段输入信号 七段码管 B 段输入信号 七段码管 C 段输入信号 七段码管 D 段输入信号 七段码管 E 段输入信号 七段码管 F 段输入信号 七段码管 G 段输入信号 七段码管 dp 段输入信号
7、分配完成后,再进行一次全编译,以使管脚分配生效。 8、新建波形文件,对程序进行仿真,其仿真波形如下所示:
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位:
9、用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。观察实验 结果是否与自己的编程思想一致。
六、实验现象及结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字

数字时钟程序(完整版)

数字时钟程序(完整版)

数字时钟程序/**************************************************程序名称:数字时钟程序全局变量:tt,shi,fen,miao等参数说明:无返回说明:无版本:1.0功能说明:通过数码实现时钟的显示,通过键盘实现时间的调整其中k1是开始调整,k2是增加,k3是减小,k5是实现定时屏幕的切换,k4是定时设置的开始。

带闹铃功能。

作者邮箱:****************(欢迎交流)**************************************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit beep=P2^3;sbit dula=P2^6;sbit wela=P2^7;sbit k1=P3^0;sbit k2=P3^1;sbit k3=P3^2;sbit k4=P3^3;sbit k5=P3^4;sbit rd=P3^7;uchartt,shi_s,shi_g,shi1_s,shi1_g,fen1_s,fen1_g,miao1_s,miao1_g,fen_s,fen_g,miao_s,miao_g,k1num,k 4num,flag;char shi,fen,miao=20,shi1,fen1,miao1;/*********************************函数名称:延时程序设计全局变量:无参数说明:z传递给内部,是实现75*z条空指令延迟返回说明:无版本:1.0功能说明:约Z*75us延时程序设计作者邮箱:****************(欢迎交流)*********************************/void delay(uint z){uchar x;uint y;for(x=z;x>0;x--)for(y=75;y>0;y--);}/********八段数码管编码**********/uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*********************************函数名称:初始化函数全局变量:无参数说明:无返回说明:无版本:1.0功能说明:定时器装初值,开总中断,定时中断,并写定时中断函数作者邮箱:****************(欢迎交流)*********************************/void init(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==20){tt=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}}}}}/*********************************函数名称:6个数码管显示函数全局变量:shi fen miao 的个十位分离参数说明:将个十位的分离分别传递到各个数码管中并显示返回说明:无版本:1.0功能说明:实现时钟的数码管显示,动态扫描。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

八位数显示时钟的设计方案与制作

八位数显示时钟的设计方案与制作

毕业设计<论文)题目:八位数显示时钟的设计与制作2018年8月28日毕业设计任务书1.毕业设计题目:八位数显时钟题目类型实验研究题目来源教师科研题毕业设计内容要求:<一)设计任务:1、用单片机设计8位数显电子时钟;2、走时,误差精度控制在1s/天;3、调时,小时、分钟加减调整及闪烁显示;4、闹铃,可以设置三组闹铃,默认闹铃时间为1分钟,可按任意键推出闹铃。

<二)涉及要求:1、总体方案设计及框图;2、设计原理电路图及分析;3、独立编写程序;4、完成protues仿真设计;5、使用protel设计pcb并制作、调试电路。

2.主要参考资料[1]电子工业出版社[51单片机典型系统开发实例精讲]白延敏;[2]复旦大学出版社[单片微型机原理、应用和实验] 张友德;[3]海纳电子资讯网[IC中文资料];摘要时间是现代社会中不可缺少的一项参数,无论是平时生活还是社会生产都需要对时间进行控制,有的场合对其精确性还有很高的要求.采用单片机进行计时,对于社会生产有着十分重要的作用。

本文首先介绍了电子时钟的特点和功能,然后对单片机和LCD 显示做了详细的介绍,提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,再用Protues软件进行了仿真和调试,结果证明了该设计系统的可行性。

由于AT89S52系列单片机的控制器运算能力强,处理速度快,可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的适用性。

关键字:单片机;LCD1602液晶显示器;C程序设计目录第一章系统设计要求及功能51.1设计本电子定时闹钟的目的和意义51.2本LCD电子闹钟的特点和功能介绍51.2.1本电子钟设计特点51.2.2本电子钟的主要功能5第二章方案设计与比较62.1数字时钟方案62.2显示方案7第三章系统硬件的设计83.1单片机的选择及管脚介绍83.1.1单片机的选择及主要性能83.1.2单片机管脚介绍93.2LCD1602的管脚及功能介绍113.2.1引脚说明113.2.2控制器接口说明123.3总体设计133.3.1系统说明133.3.2整体系统框图133.4各部分功能实现143.5元件清单143.6电子钟电路原理图153.7时钟仿真各功能分析及图解16第四章软件总体设计方案204.1主程序流程图:204.2、闹钟的实现22第五章课程设计结果分析23致谢24参考文献25附录26<1)控制电路的C语言源程序26<2)8位数显时钟成品展示图35第一章系统设计要求及功能1.1 设计本电子定时闹钟的目的和意义1、复习和巩固所学过的知识,利用此毕业设计正好可以对所学过的知识进行系统的回顾和总结。

【CPLD EPM570】Verilog实现数码管电子时钟

【CPLD EPM570】Verilog实现数码管电子时钟

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;/*************************************************************** 内部分频时钟,便于计数。

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

用数码管(8位)显示的数字时钟程序
用数码管(8位)显示的数字时钟,由于是在开发板上写的程序,所以51单片机的一些I/O口设定并不完全一样,以下程序仅供参考
#include<reg52.h>
sbit dula=P2^6; //段选锁存器
sbit wela=P2^7; //位选锁存器
sbit key1=P3^2; //INT0 选择键
sbit key2=P3^4; //T0 时间增加
sbit key3=P3^6; //S4 时间减少
char a=0,hour=0,minute=0,seconed=0;
char h1,h2,m1,m2,s1,s2;
char num=0;
char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(char z)
{
char x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display_hour(char h) //显示小时
{
h1=h/10;
h2=h%10;
wela=1;
P0=0xfe; //1111 1110
wela=0;
P0=0xff;
dula=1;
P0=table[h1];
dula=0;
delay(5);
wela=1;
P0=0xfd; //1111 1101
wela=0;
P0=0xff;
dula=1;
P0=table[h2];
delay(5);
}
void display_minute(char m) //显示分钟{
m1=m/10;
m2=m%10;
wela=1;
P0=0xf7; //1111 0111
wela=0;
P0=0xff;
dula=1;
P0=table[m1];
dula=0;
delay(5);
wela=1;
P0=0xef; //1110 1111
wela=0;
P0=0xff;
dula=1;
P0=table[m2];
dula=0;
delay(5);
}
void display_seconed(char s) //显示秒{
s1=s/10;
s2=s%10;
wela=1;
P0=0xbf; //1011 1111
wela=0;
P0=0xff;
dula=1;
P0=table[s1];
dula=0;
delay(5);
wela=1;
P0=0x7f; //0111 1111
P0=0xff;
dula=1;
P0=table[s2];
dula=0;
delay(5);
}
void init() //初始化函数
{
TMOD=0x01; //定时器0工作方式1
TH0=(65536-45872)/256; //装初值晶振11.0592 50ms为45872 TL0=(65536-45872)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //开启定时器0
}
void key() //按键函数,功能为对时间进行调整
{
if(key1==0) //key1键按下进入选择并停止定时器
{
delay(10);
while(!key1); //松手检测
TR0=0;
num++; //没按一次key1 num自加1
}
if(num==1) //key1按一次进行“小时”调整
{
if(key2==0) //key2按下时间增加
{
delay(10);
while(!key2);
hour++;
if(hour==24)
hour=0;
}
if(key3==0) //key3按下时间减少
{
delay(10);
hour--;
if(hour<0)
hour=23;
}
}
if(num==2) //按下key1两次进行“分钟调整”{
if(key2==0)
{
delay(10);
while(!key2);
minute++;
if(minute==60)
minute=0;
}
if(key3==0)
{
delay(10);
while(!key3);
minute--;
if(minute<0)
minute=59;
}
}
if(num==3) //key1按下三次对“秒”进行调节{
if(key2==0)
{
delay(10);
while(!key2);
seconed++;
if(seconed==60)
seconed=0;
}
if(key3==0)
{
delay(10);
seconed--;
if(seconed<0)
seconed=59;
}
}
if(num==4) //key1按下四次认为调节完毕开启定时器并将num清0 {
num=0;
TR0=1;
}
}
void main()
{
init();
while(1)
{
display_seconed(seconed); //显示“秒,分,时”
display_minute(minute);
display_hour(hour);
if(a==20) //判断定时器是否到1s
{
a=0;
seconed++;
if(seconed>59)
{
seconed=0;
minute++;
if(minute>59)
{
minute=0;
hour++;
if(hour>23)
{
hour=0;
}
}
}
}
key();
}
}
void time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
a++;
}
.。

相关文档
最新文档