CD4511及数码管结合显示电路.docx
- 文档编号:22785156
- 上传时间:2023-04-27
- 格式:DOCX
- 页数:22
- 大小:200.74KB
CD4511及数码管结合显示电路.docx
《CD4511及数码管结合显示电路.docx》由会员分享,可在线阅读,更多相关《CD4511及数码管结合显示电路.docx(22页珍藏版)》请在冰豆网上搜索。
CD4511及数码管结合显示电路
现代电子技术
综合实训
实训报告
专业:
年级/班级:
姓名:
实训时刻:
实训地址:
指导教师:
一、前言:
近些年,人们对数字钟的要求愈来愈高,传统的时钟已不能知足人们的需求。
多功能数字钟不管在性能仍是在样式上都发生了质的转变,如电子闹钟、数字闹钟等。
单片机在多功能数字钟中的应用已是超级普遍,人们对数字钟的功能及工作顺序都超级熟悉,可是却很少明白它的内部结构及工作原理。
由单片机作为数字钟的核心操纵器,能够通过它的时钟信号进行计时,实现数字钟的各类功能,将其时刻数据经单片机输出,利用显示器显示出来。
通过键盘能够进行按时、校时。
输出设备显示器能够为液晶显示器或数码管。
本次设计以AT89S52芯片为核心,辅以必要的外围电路,设计了一个简易的电子时钟,它由5V直流电源供电。
在硬件方面,除CPU外,利用CD4511驱动六个7段LED数码管来进行显示,LED采纳的是动态扫描显示,利用三极管9015进行驱动。
通过LED能够比较准确地显示时刻。
四个简单的按键实现对时刻的调整。
软件方面采纳C语言编程。
整个电子时钟系统计时比较准确而且方便有效。
二、需求分析
单片机自20世纪70年代问世以来,以其极高的性能价钱比,受到人们的重视和关注应用很广、进展专门快、单片机体积小、重量轻、抗干扰能力强、环境要求不高、价钱低廉、靠得住性高、灵活性好、开发较为容易。
由于具有上述优势,在我国,单片机已普遍的应用在工业自动化操纵、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等方方面面,而51单片机是各单片机中最为典型的和最有代表性的一种。
这次设计通过对它的学习、应用,以AT89S52芯片为核心,加以辅助电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示时刻。
设计要求:
1.以AT89S52单片机为核心设计一个时钟操纵器。
2.时钟操纵器由+5V直流电源供电。
3.通过六只7段数码管准确地显示时刻。
4.通过CD4511驱动数码管显示。
5.通过按键能够方便的调剂时刻。
方案比较
按时
方案一:
硬件方式,按时采纳专用的时钟芯片如DS12887,按时较准,但增加了设计本钱。
方案二:
软件方式,利用单片机自身的按时计数功能,设计简单,容易实现而且比较稳固。
本设计采纳方案二。
显示
方案一:
采纳7段LED数码管。
LED数码管利用LED模组作为背光源,具有耗电低、配置灵活、线路简单、安装方便、耐转动、价钱低廉且寿命长等优势。
方案二:
采纳LCD数码管。
LCD数码管利用“CCFL(冷阴极荧光管)”作为背光源,CCFL灯管的发烧量大,耗电高,老化较快,LCD发光不稳固均匀、功耗大,含有害化学物质等但价钱相对廉价。
LED在亮度、功耗、可视角度和刷新速度等方面,都更具优势。
LED与LCD的功耗比大约为1:
10,而且更高的刷新速度使得LED在视频方面有更好的性能表现,可提供宽达160°的视角,故采纳方案一。
数码管驱动
方案一:
选用CD4511译码驱动芯片。
CD4511能够提供较大的上拉电流,可直接驱动数码管。
方案二:
利用单片机本身的上拉电阻,尽管外围电路简单,但灌电流和数码管驱动电流不可兼得,即流过数码管电流知足要求,那么灌电流会超出单片机的经受极限;灌电流在单片机许诺范围内,那么流过数码管电流过小。
故该方案驱动能力较弱。
为使数码管足够亮,选方案一。
三、器件工作原理
AT89S52要紧的性能参数
●8K字节可擦写1000次的在线可编程ISP闪存
●到的工作电源范围
●全静态工作:
0Hz~24MHz
●3级程序存储器加密
●256字节内部RAM
●32条可编程I/O线
●3个16位按时器/计数器
●8个中断源
●UART串行通道
●低功耗空闲方式和掉电方式
●通过中断终止掉电方式
●看门狗按时器
●双数据指针
●灵活的在线编程(字节和页模式)
AT89S52引脚说明
51系列单片机89s52采纳40Pin封装的双列直接DIP结构。
上图是它的引脚配置:
40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
引脚的功能:
电源引脚:
Vcc 40脚 正电源脚,工作电压为5V。
GND 20脚 接地端。
外接晶体引脚:
XTAL218脚,XTAL119脚。
复位:
RST 9脚。
输入输出(I/O)引脚:
39脚-32脚为输入输出脚,称为P0口,是一个8位漏极开路型双向I/O口。
内部不带上拉电阻,当外接上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。
通常在利历时外接上拉电阻,用来驱动多个数码管。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,不需要外接上拉电阻。
1脚-8脚为输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向I/0口。
P1口能驱动4个LSTTL负载。
通常在利历时外不需要外接上拉电阻,就能够够直接驱动发光二极管。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
21脚-28脚为输入输出脚,称为P2口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收高8位地址和操纵信息。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。
而在访问8位地址的外部数据存储器时其引脚上的内容在此期间可不能改变。
10脚-17脚为输入输出脚,称为P3口,是一个带内部上拉电阻的8位双向I/O口,P3口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接操纵信息。
P1-3端口在做输入利历时,因内部有上接电阻,被外部拉低的引脚会输出必然的电流。
除此之外P3端口还用于一些专门功能,具体请看下表。
P3引脚
兼用功能
串行通讯输入(RXD)
串行通讯输出(TXD)
外部中断0(INT0)
外部中断1(INT1)
定时器0输入(T0)
定时器1输入(T1)
外部数据存储器写选通WR
外部数据存储器写选通RD
其它的操纵或复用引脚:
ALE/PROG:
30脚访问外部存储器时,ALE(地址锁存许诺)的输出用于锁存地址的低位字节。
即便不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6)。
在访问外部数据存储器时,显现一个ALE脉冲。
对Flash存储器编程时,那个引脚用于输入编程脉冲PROG
PSEN:
29脚该引是外部程序存储器的选通信号输出端。
当AT89C51由外部程序存储器取指令或常数时,每一个机械周期输出2个脉冲即两次有效。
但访问外部数据存储器时,将可不能有脉冲输出。
EA/Vpp:
31脚外部访问许诺端。
当该引脚访问外部程序存储器时,应输入低电平。
要使AT89S51只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必需维持低电平。
对Flash存储器编程时,用于施加Vpp编程电压。
四、硬件设计
时钟操纵电路由四部份:
复位电路、显示电路、晶振电路和操纵电路组成如以下图所示。
总电路图:
正5V电源直接接到AT89S52的40脚(VCC),20脚(GND)接地。
电路图如下所示。
复位电路
该电路采纳上电自动复位与手动复位结合接到89S52的9脚(RST)。
由一个30uF的电容、一个按键、一个10K的电阻和一个220欧电阻组成。
手动按K5,不管电路处于何种状态,电路都会恢复到初始状态的显示。
显示电路
显示电路部份通过CD4511驱动七段数码管。
CD4511译码驱动芯片能够提供较高的上拉电流,能够直接驱动七段数码管。
三极管能够较为方便的操纵七段数码管。
电路图如以下图所示。
CD4511(引脚图如下所示)
BI:
4脚是消隐输入操纵端,当BI=0时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。
LT:
3脚是测试输入端,当BI=1,LT=0时,译码输出全为1,不管输入DCBA状态如何,七段均发亮,显示“8”。
它要紧用来检测数码管是不是损坏。
LE:
锁定控制端,当LE=0时,允许译码输出。
LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
D、C、B、A为8421BCD码输入端。
a、b、c、d、e、f、g:
为译码输出端,输出为高电平1有效。
8421BCD码对应的显示见以下图:
数码管
1).数码管引脚图
2).数码管利用方式
LED数码管分共阳型和共阴型两种,那个地址咱们选择七段共阴型数码管。
数码管的a、b、c、d、e、f引脚别离接到CD4511译码驱动芯片对应的引脚。
公共端com别离与连接在P2口的NPN的集电极相连接。
NPN的发射极并联接地。
CD4511对应的引脚ABCD别离连在AT89S52的、、、引脚。
当数码管选通时,通过操纵P0口来实现七段数码管动态显示数据。
三极管
1).三极管引脚图
2).三极管利用方式
单片机灌电流不易过大。
关于数码管每一个位选的灌电流约为10mA左右,六个位选为60mA,达到了单片机端口极限。
可采纳三极管,作为开关管,基极接单片机P2口,集电极接数码管,发射极并联接地,三极管高电平常导通。
导通后集电极电压为。
知足数码管共阴极接地的要求。
晶振电路
18脚(XTAL1)和19脚(XTAL2)外接12MHZ的晶振和两个30PF的电容,震荡频率确实是晶体的固有频率。
操纵电路
本电子钟设计有四个轻触式按键,别离命名为:
K1(设置按钮),K2(分钟加1),K3(小时加1),K4(确信按钮)。
按键电路
五、软件设计
1.软件设计总框图
1)总框图(如图)
2)程序代码详见附录1。
主程序流程图
2.数码管操纵:
1)流程图(如图)。
2)程序代码详见附录1。
数码管操纵流程图
3.按时器中断的利用:
1)流程图(如图)。
2)程序代码详见附录1。
按时器中断流程图
六、实习心得(设计实物照片)
通过几周的尽力,感触颇深。
从开始的搜索整理资料到程序在电路板上边良好的运行,期间并非是一帆风顺的。
但咱们克服了重重障碍。
终于完成了时钟操纵器的制作,看着数码管上的时刻一分一秒的跳动,那一刻兴奋地心情无法用语言来表达,只是感觉身上的每一个细胞都充满了活力。
关于电子信息工程专业即将毕业的咱们,本次实训是咱们走入职场之前比较成心义的一次实训。
实训开始时候漫无目的,不明白从何着手,可是随着资料的整理,之间不断地学习,渐渐地完成了电路板的焊接。
本来以为将写好的程序烧到芯片里边,时钟就能够够正常的运行了,可是当我在写程序的时候,才发觉这部份关于电路的调试却是整个设计环节的重中之重。
那个地址边不但涉及到硬件的调试,还有软件的调试。
下面有我的调试记录:
由于按键一端接地,另一端接AT89S52。
按键电路接上拉电阻,接+5V。
可是用万用表检查后发觉按键的引脚接错了。
当更改了按键的引脚连接后,问题解决。
因为六只数码管中只有一只时钟选通,因此疑心是位选环节的错误,通过查验,是三极管的问题。
改换了一个三极管,问题取得解决。
3.放在按时器T1中的按键程序没有运行。
放在按时器T1中的中断程序没有运行,通过检查,发觉没有对按时器T1从头赋初值。
对按时器T1赋初值2ms以后,按键程序得以运行。
随着这次实训的终止,咱们真正明白得了理论联系实践的重要性。
若是空有理论而没有实践,就像一件物品,明白了它的功能,可是不明白如何运用,如此便失去了它有效的价值。
若是空有实践没有理论的支持,就像一辆汽车一直在行驶,却没有前进的方向,继续如此前进,那么前方将会是万丈深渊。
21世纪,是一个飞速进展的年代,需要的是复合型人材。
这就要求咱们既要把握丰硕的理论基础,还要知道如何将它们灵活的运用。
实训尽管终止了,可是要想在本专业有更高更远的进展,那么关于咱们的考验才方才开始。
咱们会不断扩展自己的知识面,尽力的进取,踏踏实实的走好尔后的每一步。
参考文献:
[1]刘建清.51单片机C语言超级入门与视频演练.北京:
电子工业出版社,2020(5).
[2]李朝青.单片机原理及接口技术.北京:
北京航空航天大学出版社,2020(5).
[3]张瑾,张伟,张立宝.Protel99SE入门与提高.北京:
人民邮电出版社,2020
(2).
[4]孙江宏,李良玉.Protel99电路设计与应用.北京:
机械工业出版社,2001
(2).
附件:
附件1:
程序代码
/*****************************************************************************
/Filename:
基于单片机控制的时钟电路
/maindepartment:
数码管显示模块,按键模块,按时器中断模块
/Descriptions:
定时器T0每10ms刷新一次用于产生系统的时基信号
外部中断0,外部中断1和定时器1用于控制按键K1,K2,K3,K4。
K1键按下,时钟走停。
那时钟走停时,按K2键一次分加1,按K3键一次秒加1,按K4键时钟恢复走时
复位按键对时钟进行初始化
/CreatedBy:
/Createddate:
2011-10-30
*****************************************************************************/
#include""
#include""
#defineucharunsignedchar//uchar为无符号字符型数据
ucharhour=0,minute=0,second=0;//时钟初始化
ucharsecond_h=0,second_l=0;//秒的十位、个位
ucharminute_h=0,minute_l=0;//分的十位、个位
ucharhour_h=0,hour_l=0;//时的十位、个位
ucharcodeled7[]={0x00,0x08,0x01,0x09,0x02,0x0a,0x03,0x0b,0x04,0x0c};
//1~9的字形码
ucharth=0;//对定时器0计数
ucharkey=0;
sbitK1=P3^2;//定义K1按键
sbitK2=P3^3;//定义K2按键
sbitK3=P3^4;//定义K3按键
sbitK4=P3^5;//定义K4按键
bitflag=0;//当时间为1秒时flag置1
bitK_flag=1;//按键标志位
voiddelay();//声明延时函数
/*****************************
>>外部中断0
>>若是K1键按下时钟走停
*****************************/
voidint_w0()interrupt0
{EX0=0;
if(K_flag==1){TR0=0;K_flag=0;}
else{TR0=1;K_flag=1;}
EX0=1;
}
/********************************
>>外部中断1
>>那时钟走停时有K2键按下分钟加1
********************************/
voidint_w1()interrupt2//外部中断1
{
EX1=0;
if(K_flag==0&&K2==0)
{delay();
delay();
if(K_flag==0&&K2==0)
{while(!
K2);
minute++;
if(minute==60)
{
minute=0;
}
}
}
EX1=1;
}
/***************************************
>>按时器1按时2ms
>>那时钟走停时有K3键按下小时加1
>>那时钟走停时有K4键按下时钟恢复走时
****************************************/
voidint1()interrupt3
{TR1=0;//关闭定时器1
TH1=0xf8;//对定时器1重新赋值定时2ms
TL1=0x30;
if(K_flag==0&&K3==0)//当时钟走停时若K3按下
{delay();
delay();//去除按键抖动
if(K_flag==0&&K3==0)//确定K3已经按下
{while(!
K3);//等待K3键释放
if(hour<23)
hour++;
elsehour=0;
}
}
elseif(K_flag==0&&K4==0)//当时钟走停时若K4键按下
{delay();//去除按键抖动
if(K_flag==0&&K4==0)//确定K4已经按下
{
K_flag=0;TR0=1;//时钟恢复走时
}
}
TR1=1;//时钟恢复走时
}
/********主函数********/
voidmain()
{
TMOD=0x11;//定时器初始化
TH0=0xd8;//定时器0赋初值10ms
TL0=0xf0;
TH1=0xf8;//定时器1赋初值2ms
TL1=0x30;
EA=1;//打开总中断
ET0=1;//定时器0开中断
TR0=1;//启动定时器0
EX0=1;//允许外部中断0开中断
IT0=1;//脉冲触发方式
EX1=1;//允许外部中断1开中断
IT1=1;//脉冲触发方式
ET1=1;//定时器1开中断
TR1=1;//启动定时器1
/****************************
>>以下是显示部份
****************************/
while
(1)
{
while(flag==1)//当时间为1秒时
{
if(second<59)//判断时间是否为1秒
second=second+1;//如果到了1秒则秒加1
elseif(minute<59)//判断时间是否为1分
{
second=0;//如果到了1分则秒归0
minute=minute+1;//分钟加1
}
elseif(hour<23)//判断时间是否为1小时
{
second=0;//如果到了则秒归0
minute=0;//分归0
hour=hour+1;//小时加1
}
else
{
second=0;//小时到24后重新计时
minute=0;
hour=0;
}
flag=0;
}
P2=0x00;
hour_h=hour/10;
hour_l=hour%10;
P0=led7[hour_h];//把数据送P0口显示
P2=0x01;//送P2控制被选取的数码管点亮
delay();
P2=0x00;
P0=led7[hour_l];
P2=0x02;
delay();
P2=0x00;
minute_h=minute/10;
minute_l=minute%10;
P0=led7[minute_h];
P2=0x04;
delay();
P2=0x00;
P0=led7[minute_l];
P2=0x08;
delay();
P2=0x00;
second_h=second/10;
second_l=second%10;
P0=led7[second_h];
P2=0x10;
delay();
P2=0x00;
P0=led7[second_l];
P2=0x20;
delay();
P2=0x00;
}
}
/******************************************
>>按时器0用于产生整个时钟系统的时基信号
>>按时10ms计数100次即为1s
******************************************/
voidint0()interrupt1
{
TR0=0;//关闭定时器0
TH0=0xd8;//定时10ms
TL0=0xf0;
if(th<99)//计数100次
th=th+1;
else
{
th=0;
flag=1;//当时间为1s时flag置1
}
TR0=1;//定时器0重启
}
/*************************************
>>以下是延时函数
**************************************/
voiddelay()
{
inti;
for(i=10;i>0;i--)
{
_nop_();
}
}
附2:
产品利用说明
1.接通电源后,时钟操纵器开始工作。
2.本电子钟设有四个轻触式按键,别离为K1,K2,K3,K4。
K1为设置键,按下后能够停止时钟计时,从而进行时刻设置。
时钟只有按下K1键后才能够调剂时刻,不然按其他键不起作用。
K2键按下一次,分钟加1,K3键按下一次,小时加1。
调剂时刻完成后,按K4键,时钟恢复。
3.若是时钟显现故障,按下复位键,本产品恢复到出厂设置。
附3:
元器件清单
元件名称
型号
数量/个
单片机
AT89S52
1
晶振
12MHZ
1
电容
30pF
2
电解电容
10μF/10V
1
电阻
10kΩ
1
电阻
220Ω
1
电阻
5KΩ
8
电阻
Ω
6
CD4511
1
三极管
9015
6
按键
5
7段数码管
6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CD4511 数码管 结合 显示 电路