文档库 最新最全的文档下载
当前位置:文档库 › 数码管显示万年历时钟

数码管显示万年历时钟

数码管显示万年历时钟
数码管显示万年历时钟

数码管显示万年历时钟功能介绍

一、功能说明:

1.整体功能达到了市售电子日历效果,显示内容包括年、月、日、星期、时、分、秒、室温;

2.实时时钟芯片采用了两种:DS12C887+和DS1302。可供学习和使用过程中进行选择;

3.数码管控制采用了MAX7219专用扫描驱动芯片,可通过PS/2键盘对数码管的显示亮度进行15级调节;

4.电路板上留有PS/2键盘接口,用于调节当前时间、数码管显示亮度、闹铃时间。这一点和变通电子日历用明显区别,以达到一个有点专业的电子钟的要求;

5.电路板上安装有继电器,可作为简单的时间控制(定时控制)或温度控制装置;

二、待改进之处:

1.可在板上合适的位置增加几个独立按键,日常使用调节更方便些;

2.显示内容可增加农历和湿度;

3.可以用光敏电阻配合串行A/D转换芯片实现显示亮度的自动调节,以适应环境光线的变化,这样子就更加具有专业性了。

三、PS/2键盘调整说明:

1.使用PS2键盘F1进入运行时间设定、F2进入数码管显示亮度设定、F3进入闹铃时间设定、F4启动闹铃、F5关闭闹铃2.按下F1然后依次设定年、月、日、星期、时、分、秒时间信息,中途可以按小键盘区的ENTER键,退出设定状态

3.按下F2然后选择小键盘区0-9和字符A-F可设定16级显示亮度,按下选择参数自动恢复走时状态

4.按下F3然后依次设定时、分、秒三个闹铃时间参数,设定好任一参数可按小键盘区的ENTER键退出设定状态

5.按下F4开启闹铃,继电器吸合其下方工作指示LED点亮,按下F5关闭闹铃,继电器释放同时LED熄灭,如蜂鸣器已经开始闹铃,可按F6或复位键

6.按下F1或F2或F3但不想设定任何参数,都可按ESC退出相应的设定状态

基于DS1302的数码管显示数字钟

单片机原理课程设计 课题名称:基于DS1302的数码管显示数字钟 专业班级:电子信息工程 学生学号: 学生姓名: 指导教师: 设计时间:2010年6月21日--2010年6月25日

目录 摘要........................................................................................................................................................................ 1 设计任务和要求............................................................................................................................................ 2 方案论证........................................................................................................................................................ 3 系统硬件设计................................................................................................................................................ 3.1 系统总原理图 ................................................................................................................................ 3.2 元器件清单...................................................................................................................................... 3.3 PCB板图....................................................................................................................................... 3.4 Proteus仿真图 ............................................................................................................................... 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结束语............................................................................................................................................................

用数码管显示实时日历时钟的应用设计

(用数码管显示实时日历时钟的应用设计)

摘要 本课题通过MCS-51单片机来设计电子时钟,采用汇编语言进行编程,可以实现以下一些功能:小时,分,秒和年,月,日的显示。本次设计的电子时钟系统由时钟电路,LED显示电路三部分组成。51单片机通过软件编程,在LED数码管上实现小时,分,秒和年,月,日的显示;利用时钟芯片DS1302来实现计时。本文详细介绍了DS1302 芯片的基本工作原理及其软件设计过程,运用PROTEUS软件进行电路连接和仿真,同时还介绍了74LS164,通过它来实现I|O口的扩展。 关键词:时钟芯片,仿真软件,74LS164 目录 前言 0.1设计思路 (8) 0.2研究意义 (8)

一、时钟芯片 1.1 了解时钟芯片……………………………………………….8-9 1.2 掌握时钟芯片的工作原理………………………………….10-11二、74LS164 2.1 了解74LS164........................................................11-12 2.2 掌握的74LS164工作原理. (12) 三、数码管 3.1 熟悉常用的LED数码管...........................................12-13 3.2 了解动态显示与静态显示. (13) 四、程序设计 4.0 程序流程图 (14) 4.1 DS1392的驱动.......................................................15-16 4.2 PROTUES实现电路连接. (17) 4.3 数码管的显示:小时;分;秒 (18) 4.4 数码管显示:年;月;日 (19) 五、总结…………………………………………………………………..20-21 六、附页程序………………………………………………………………22-31前言

数码管时钟显示C程

/* 数码管时钟显示led移动C 程序 使用共阳极数码管 */ #include<> #include<> #define uint unsigned int #define uchar unsigned char sbit wela1 = P2^0; 果要显示1~8数值,最好多加前后两位数0跟9, 因为后面++移位时就能按我们常规顺序亮下去,至于如何显示对应数值请先看数码显示电路图*/ uchar code tablew[]={ 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}; 如果要显示,也会因为++而在第二轮中显示出*/ duan=1; //开启段显端 P0=tabled[numd];//附段显P0值对应段显值对码表 duan=0; //锁存 wei=1; //开启位显端 P0=tablew[numw];//附位显P0值对应位显值对码表 wei=0; //锁存 numw++; //相当于位显移位 if(numw==8) //如果位显值到对应位显对码表第八位则转下执行 numw=0; //重新附值位显值对应对码表第0位起 /* 下面是简单的单个数码管显示例证第一骤, 修改后在第三步骤内 #include"" #include""

sbit duan=P2^6; //段显端口 sbit wei=P2^7; //位显端口 void main() { //P0=0xff; 数码管不显示任何信号,默认情况下通电本身就不显示,可以不写 duan=1; //开启段显端口 P0=0x06; //附值段显数值为1,可以查阅数码管电路图相对应显示的对码表 duan=0; //锁存,保持上一步段显状态,硬件说明请查阅74HC573功能 wei=1; //开启位显端口 P0=0xfe; //附值位显位置,01111111,左边第一位,为0的显示 wei=0; //锁存,保持上一步位显状态,硬件说明请查阅74HC573功能 } */ } } } void timer0() interrupt 1 /*第四步骤,中断时间函数这个相当于移位数显的速度,速度够快,人眼就会有余辉效应, 感觉8位数显一直在亮着,相当于正在播放的电影胶卷*/ { TH0=(65536-50000)/256; TL0=(65536-50000)%256; a++; } /* 以上有什么地方还需要改进的还请老师明示 */

数码管时钟显示(含有原理图)

简单的共阴极数码管时钟显示程序(简单、易于理解,如果想定时只要再次基础上稍作修改即可) #include #define uint unsigned int #define uchar unsigned char uchar aa,shi1,shi0,fen1,fen0,miao1,miao0; uint temp; ucharshi,fen,miao; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z) { uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar shi1,shi0,fen1,fen0,miao1,miao0) { P2=0xfe; P0=table[shi1]; delay(1); P2=0xfd; P0=table[shi0]; delay(1); P2=0xfb; P0=0x40;//"-" delay(1); P2=0xf7; P0=table[fen1]; delay(1); P2=0xef; P0=table[fen0]; delay(1); P2=0xdf;

P0=0x40;//"-" delay(1); P2=0xbf; P0=table[miao1]; delay(1); P2=0x7f; P0=table[miao0]; delay(1); } voidinit() { temp=41760; TMOD=0x01; TH0=(65536-46080)/256; TL0=(65536-46080)%256; EA=1; ET0=1; TCON=0x10; //TR0=1; } void main() { init();//初始化子程序 while(1) { if(aa==20) { aa=0; temp++; if(temp==86400) { temp=0; } shi1=temp/3600/10; shi0=temp/3600-(shi1*10); fen1=temp%3600/60/10; fen0=temp%3600/60-(fen1*10);

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 时间:2012-09-10 13:52:26 来源:作者: /* 8位数码管显示时间格式05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,second; //定义并初始化为12:30:00 void delay(unsigned intt) { while(--cnt); } /******************************************************************/ /* 显示处理函数 */ /******************************************************************/ void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //显示"-" StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示"-" StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main()

数码管时钟显示C程序.doc

数码管时钟显示C程序 /*数码管时钟显示led移动C程序使用共阳极数码管*/#include#include#defineuintunsignedint#defineucharunsignedchar sbitwela1=P2 ;//数码管wela管脚定义sbitwela2=P2 ;sbitwela3=P2 ;sbitwela4=P2 ;uchartime,d1,d2,d3, d4,temp,tem,aa;unsignedcharcodetable[]={0xC0,0xF9,0xA4,0xB0,0 x99,0x92,0x82,0xF8,0x80,0x90};voiddispl(chara,charb,charc,chard) ;voiddelay(uintz)//延时程序{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//主函数voidmain(){time=0;TMOD=0x01;//中断定时初始化TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1; TR0=1;aa=0;temp=0xfe;tem=0xff;d1=0;d2=0;d3=0;d4=0;while(1){i f(time==12月1号********//#include“at89x52.h“#defineucharunsignedchar#defineuin tunsignedintucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0xbf,0xff};ucharn;ucharhh,mm,ss;ucharnhh,nmm,ns s;uintyear;ucharday,mon,week;ucharhhs,hhg,mms,mmg,sss,ssg;ucha rdays,dayg,mons,mong;ucharnhhs,nhhg,nmms,nmmg,nsss,nssg;ucha rset1=1,set2=1;sbitfm=P3 ;sbitk1=P3 ;sbitk2=P3 ;sbitk3=P3 ;s bitk4=P3 ;uchartable1[]={31,31,29,31,30,31,30,31,31,30,31,30,31} ;//闰年uchartable2[]={31,31,28,31,30,31,30,31,31,30,31,30,31};//非闰年

LED数码管显示电子钟

#include #include unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char data dis_buf[8]; unsigned char data dis_index; unsigned char hour,min,sec; unsigned char sec100; sbit K1 = P1^4; sbit K2 = P1^5; bit scan_key(); void proc_key(); void inc_sec(); void inc_min(); void inc_hour(); void display(); void delayms(unsigned char ms); void main(void) { P0 = 0xff; P2 = 0xff; TMOD = 0x11; // 定时器0, 1工作模式1, 16位定时方式 TH1 = 0xdc; TL1 = 0; TH0 = 0xFC; TL0 = 0x17; hour = 12; min = 00; sec = 00; sec100 = 0; dis_buf[0] = dis_code[hour / 10]; // 时十位

51单片机数码管显示时钟(C语言)

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////以下是主文件main.c 的内容 /****************************************************************************** * * 实验名: 万年历实验 * 使用的IO : * 实验效果:1602显示时钟 * 注意: ******************************************************************************* / #include #include"ds1302.h" //数码管IO #define DIG P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Num=0; unsigned int disp[8]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f}; void LcdDisplay(); void Timer0Configuration(); /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() {

基于单片机的电子时钟6位LED数码管显示

数码管显示电子时钟设计 一.功能要求 1.数字电子时钟最主要是LED数码管显示功能,以24小时为一个周期,显示时 间时、分、秒。 2.具有校时功能,可以对时、进行单独校对,使其校正到标准时间。 二.方案论证 1.数字时钟方案 数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。 方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。 方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。 基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。 2.数码管显示方案 方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,

单片机数码管显示时钟程序

单片机数码管显示时钟 程序 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

#include //#include#include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit beep=P2^3; unsigned code table[]={ 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c, 0x39 , 0x5e , 0x79 , 0x71 }; uchar num1,num2,s,s1,m,m1,f,f1,num,numf,nums,dingshi; uchar ns,ns1,nf,nf1,numns,numnf; void delay(uint z); void keyscan (); void keyscan1 (); void alram();

void display(uchar m,uchar m1,uchar f,ucharf1,uchars,uchars1); void display0(uchar nf,uchar nf1,uchar ns,uchar ns1); void main() { TMOD=0x01;//设定定时器0工作方式1 TH0=(65536-46080)/256 ; TL0=(65536-46080)%256 ; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0中断 numns=12; numnf=0; while(1) { if(dingshi==0) { keyscan (); display(m,m1,f,f1,s,s1); alram(); } else {

数码管动态显示的51单片机时钟设计

一看就会,适合初学者参考 T0,T1同时开中断,和别人的有点不一样 源程序如下 //数码管设计的可调电子钟 //K1,K2分别调整小时和分钟 #include<> #include<> #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99, //共阳段码 0x92,0x82,0xF8,0x80,0x90,0xFF}; uchar DSY_BUFFER[]={0,0,0xBF,0,0,0xBF,0,0}; //显示缓存uchar Scan_BIT; //扫描位,选择要显示的数码管 uchar DSY_IDX; //显示缓存索引 uchar Key_State; //P1端口按键状态 uchar h,m,s,s100; //十分秒,1/100s void DelayMS(uchar x) //延时 { uchar i; while(x--) for(i=0;i<120;i++); } void Increase_Hour() //小时处理函数 { if(++h>23)h=0; DSY_BUFFER[0]=DSY_CODE[h/10]; DSY_BUFFER[1]=DSY_CODE[h%10]; } void Increase_Minute()//分钟处理函数 { if(++m>59) { m=0;Increase_Hour(); } DSY_BUFFER[3]=DSY_CODE[m/10]; DSY_BUFFER[4]=DSY_CODE[m%10]; }

实验二数码管时钟显示

单片机实验报告 题目:实验二时钟显示实验 班级:0310405 姓名:左立刚 学号: 031040522 指导老师:高林 时间: 2013年5月26日

实验二时钟显示实验 一、实验目的 (1)熟练掌握单片机定时器的编程技巧; (2)掌握八段数码LED显示器的工作原理和编程方法。 二、实验内容 (1)在实验箱上完成: 编写程序,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示(左边2个数码管显示“时”,中间2个显示“分”,右边2个显示“秒”)。 (2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。 所用元器件:单片机AT89C51、8位锁存器74LS273或74LS373、3-8译码器74LS138、排阻或电阻RESPACK-8(RES)、或非门74LS02、非门NOT、共阳极六合一数码7SEG-MPX6-CA 三、程序框图 四、实验预备知识 1.数码显示电路:

①电路组成:6个共阳极数码管、2个74LS273锁存器 ②端口地址: 字型口(段码锁存器)——FFDCH;字位口(位码锁存器)——FFDDH 2.动态显示: 每次只有一个数码管显示其相应字符,并且从左往右反复快速扫描,利用人眼的“视觉滞留”效益实现“同时”显示不同字符的工作方式。 3.字型码表:(共阳极) 0~9:0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 五、仿真电路图(用proteus软件画出): P00 P01 P02 P03 P04 P05 P06 P07 P00 P01 P02 P03 P04 P05 P06 P07 WR CLK CLK1 CLK2 CLK1 CLK2 A B C D E F G H A B C D E F G H 1 2 3 4 5 6 1 2 3 4 5 6 CS1 WR CS2 WR CS1 CS2 P00 P01 P02 P03 P04 P05 P06 P07 P00 P01 P02 P03 P04 P05 P06 P07 CLK P21 P22 P23 P24 P25 P26 P27 P20 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 5 6 4 U2:B 74LS02 8 9 10 U2:C 74LS02 D0 3 D1 4 D2 7 D3 8 D4 13 D5 14 D6 17 D7 18 CLK 11 MR 1 Q0 2 Q1 5 Q2 6 Q3 9 Q4 12 Q5 15 Q6 16 Q7 19 U3 74LS273 D0 3 D1 4 D2 7 D3 8 D4 13 D5 14 D6 17 D7 18 CLK 11 MR 1 Q0 2 Q1 5 Q2 6 Q3 9 Q4 12 Q5 15 Q6 16 Q7 19 U4 74LS273 D0 3 D1 4 D2 7 D3 8 D4 13 D5 14 D6 17 D7 18 CLK 11 MR 1 Q0 2 Q1 5 Q2 6 Q3 9 Q4 12 Q5 15 Q6 16 Q7 19 U5 74LS273 2 3 4 5 6 7 8 9 1 RP1 RESPACK-8 A 1 B 2 C 3 E1 6 E2 4 E3 5 Y0 15 Y1 14 Y2 13 Y3 12 Y4 11 Y5 10 Y6 9 Y7 7 U6 74LS138 U7 NOT

单片机数码管显示时钟程序

#include //#include#include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit beep=P2^3; unsigned code table[]={ 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c, 0x39 , 0x5e , 0x79 , 0x71 }; uchar num1,num2,s,s1,m,m1,f,f1,num,numf,nums,dingshi; uchar ns,ns1,nf,nf1,numns,numnf; void delay(uint z); void keyscan (); void keyscan1 (); void alram();

void display(uchar m,uchar m1,uchar f,ucharf1,uchars,uchars1); void display0(uchar nf,uchar nf1,uchar ns,uchar ns1); void main() { TMOD=0x01;//设定定时器0工作方式1 TH0=(65536-46080)/256 ; TL0=(65536-46080)%256 ; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0中断 numns=12; numnf=0; while(1) { if(dingshi==0) { keyscan (); display(m,m1,f,f1,s,s1); alram(); } else {

单片机实验数码管显示时钟设计

《单片机原理与应用》课程设计 总结报告 题目:数码管显示时钟设计 数码管显示时钟设计 一﹑实验目的: 1、进一步掌握定时器的使用和编程方法。 2、进一步掌握中断处理程序的编程方法。 3、进一步掌握数码管显示功能。 5、进一步掌握软件数据处理的方法。 二﹑主要内容要求: 1、利用CPU的定时器和数码管显示电路,设计一个电子时钟。格式如下:XX XX XX 由左向右分别为:时、分、秒。 三、设计框图及整机概述 1、系统整体框图 +5V 单片机目标机 静态 显示 6位 LED 发光管 8个 电源指示控制 按键

2、整机概述: 1 正常情况显示时间 四﹑系统说明: 1.目标机为一个以89CS51单片机为核心的单片机最小系统,负责控制各个模块,完成实验及相关操作。各模块接口与引脚分配如下: (1)P2口:8个发光二极管接; (2)P0.0~P0.3:4个独立按键; (3)P0.4~P0.7:外扩展液晶模块数据线; (4)P1.0:J5短路冒,为外扩展DS18B20数据线和DS1302复位线共用; (5)P1.1:J4短路冒,为24C01数据线和DS1302时钟线共用; (6)P1.2:J6短路冒,为24C01时钟线和DS1302数据线共用; (7)P1.3:J9短路冒,为继电器控制端和液晶使能端共用; (8)P1.4:液晶模块读写控制端; (9)P1.5:J7短路冒,为液晶复位端和下载线共用; (10)P1.6~P1.7:下载线; (11)P3.0:J1短路冒,为下载线和串行通信线共用; (12)P3.1:J2短路冒,为下载线和串行通信线共用; (13)P3.2:一体化红外接收头; (14)P3.3:蜂鸣器驱动端; (15)P3.4~P3.5:定时器/计数器预留接口; (16)P3.6:164串行显示数据线; (17)P3.7:164串行显示时钟线。 2.静态显示模块 静态显示部分由6片串并转换芯片74164和6个共阴极8段数码管构成,可以实现6位数码显示,该部分特点是占用口线少,显示亮度高,由于74164在低电平输出时,允许通过的电流达8mA,故不必再添加驱动电路,与动态扫描显示比较,无需CPU不停的扫描,频繁的为显示服务,可以节省CPU的时间 五﹑程序流程图:

汇编数字钟 8位数码管显示

汇编数字钟(8位数码管显示) 这款数字钟是笔者亲自试验过的作品,电路图和程序都经过优化,供爱好者制作参考。 显示格式依然是23-59-59(同样是小时十位如果为0则不显示),调整时间增加了一只按钮,通过调整选择键SET_KEY选择调整位,选中位开始闪烁,此时再按增加键ADD_KEY或减少键DEC_KEY调整选中位,如果长按ADD_KEY或DEC_KEY,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。同时还增加了调秒功能:如果选中位是秒,则按增加键或减少键都是将秒清零。 汇编程序设计: /************************************************************** 程序名称:51单片机8位数码管数字钟汇编程序 简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒 显示格式:23-59-59(小时十位如果为0则不显示) 通过3只按键来调整时间 调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁 增加键ADD_KEY:P1.1;按一次使选中位加1

减少键DEC_KEY;P1.2;按一次使选中位减1 如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁如果选中位是秒,则按增加键或减少键都是将秒清零 P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12M 编写:https://www.wendangku.net/doc/e53819796.html, 最后更新:08/12/31晚 **************************************************************/ ORG 0000H ;程序入口地址 LJMP START ORG 000BH ;定时器0中断入口地址 LJMP TIMER_0 ORG 0300H /*****程序开始,初始化*****/ START: SETB 48H ;使用一个bit位用于调时闪烁标志 SETB 47H ;使用一个bit位用于产生脉冲用于调时快进时基 MOV R1,#0 ;调整选择键功能标志:0正常走时、1调时、2调分、3调秒 MOV 20H,#00H ;用于控制秒基准时钟源的产生 MOV 21H,#00H ;清零秒寄存器 MOV 22H,#00H ;清零分寄存器 MOV 23H,#00H ;清零时寄存器 MOV 24H,#00H ;用于控制调时闪烁的基准时钟的产生 MOV IP,#02H ;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H ;设定定时器0工作方式1 MOV TH0,#3CH MOV TL0,#0B0H ;赋定时初值,定时50ms SETB TR0 ;启动定时器0 MOV SP,#40H ;重设堆栈指针 /*****主程序*****/ MAIN: LCALL DISPLAY ;调用显示子程序 LCALL KEY_SCAN ;调用按键检测子程序 JZ MAIN ;无键按下则返回重新循环 LCALL SET_KEY ;调用选择键处理子程序

数码管时钟显示制作 冉钧芸

陕西科技大学毕业设计说明书 作者:冉钧芸学号: 学院:兵团技师培训学院 系(专业):工业电气自动化 题目:数码管时钟显示制作 指导者:马世强 评阅者: 2012年 4 月 26日

基于单片机设计LED显示电子钟 摘要: 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用7407驱动电路,实现在6个LED数码管上显示日期、时间、定时、闹铃,通过6个按键实现设置日期、进行调时、设定闹铃、倒计时等功能,在实现各功能时数码管进行相应显示,闹铃或定时时间到时蜂鸣器响,按下闹铃键或定时键时,声音停止。软件部分用汇编实现,分为显示、延迟、调时、闹铃、定时、调整日期等部分。通过软硬件结合达到最终目的。 关键词:电子钟单片机动态扫描C语言

Title Design of LED Show Electric Clock Based on Microprocessor Abstract This design uses a 12 MHZ crystal to connect with the machine AT89C51, takes AT89C51 chips as core. It adopts the dynamic state of the scanning method to show. Using this MCU and 7407 drive electric circuit, we are able to show date, time, fix the time, make bell on 6 LED figures tubes. We can use 6 key to constitute date, adjust time, enact the bell and set the countdown timer. When the electric carrying out each function, the figures tube show the tight function .When the alarm clock and the countdown timer were reached, the voice begins. While 3 or 4 is pressed, the voice stops. The software part is realized by assembler language. It was divided into to show, delay, adjust, make bell, in fixed time, adjust date etc. part. We get the end purpose combining the software and the hardware. Keywords:Electric clock MCU Dynamic state scaning assembler language

相关文档
相关文档 最新文档