P89LPC935驱动数码管显示时钟的设计
在单片机应用系统中,通常采用价格低廉、配置灵活的LED数码管显示时钟。显示时钟一般需4~8位LED,每位占用单片机8个I/O端口,这样需大量的单片机I/O端口资源。本文介绍一种利用P89LPC935的P0口驱动4位LED显示时钟的方法,只占用单片机6个并行I/O口。
一、硬件电路
4位数码管公共端是各自独立的,只受单片机I/O口控制。采用动态扫描方式,轮流控制各位数码管公共端[COM],使各位数码管轮流点亮。硬件电路如下图所示,图中的4位数码管采用共阳极, 4#和3#数码管显示时钟、2#和1#数码管显示分钟、5#LED是1#和2#的dp组成,用于显示秒钟。74LS164为8位串入/并出转换电路,用于节约P89LPC935的I/O口。
P89LPC935的Vcc引脚接三个IN4007二极管,用于将5V电压降到3·6V以下(因P89LPC935常用电压2·4~3·6V);P1·2、P2·2、P2·3接发光二极管,用于LED工作指示; P1·7、P2·1、P2·0用于调整时间; P0·4、P0·5与74LS164的SDA和CLK相连进行串行数据传输; P0·0~P0·3通过三极管[8050]与数码管公共端COM4~COM1相连,对数码管位选择进行控制; 74LS164的Q0~Q7顺序连到数码管段码a~dp,控制数码管的段码显示。
数码管显示时,其显示数据由P89LPC935的P0·4、P0·5串行发送到74LS164,再通过74LS164的Q0~Q7端并行送入数码管段a~dp,使数码管显示时间。同时P89LPC935的P0·0~P0·3对数码管进行位选择控制,使数码管按设定的时间轮流显示。
二、单片机驱动程序代码
(1)4位数码管显示控制函数(位控制函数)
void Ctrl1(unsigned int i)
{
switch( i)
{case 4: {P00=0; P01=0; P02=1; P03=1; break; } //0选
择5#LED
case 3: {P00=1; P01=0; P02=0; P03=0; break; } //选择
4#LED
case 2: {P00=0; P01=1; P02=0; P03=0; break; } //选择
3#LED
case 1: {P00=0; P01=0; P02=1; P03=0; break; } //选择
2#LED
case0: {P00=0; P01=0; P02=0; P03=1; break; }} //选择
1#LED
}
(2)数码管开关函数
void Ctrl2_on() //打开四数码管电源
{
P00=1; P01=1; P02=1; P03=1;
}
void Ctrl2_off() //关闭四数码管电源
{
P00=0; P01=0; P02=0; P03=0;
}
(3)数码管显示函数
本程序是将要显示的5位数据存放在display_buff[5]数组中, [3]、[2]两位为时钟数, [1]、[0]两位为分钟数, [4]为秒钟数(此为本程序的约定)
void display(unsigned intdisplay_buff[5])
{ unsigned char k;
unsigned int ;i
for( i=0; i<5; i++)
{ k=led[display_buff[ i]]; //到字库中查找显示字码如
相关文章
- 2023-05-11基于遗传算法的模糊PID复合控制在电阻炉上的应用
- 2024-01-19风机-液力偶合器模糊-PID调速控制系统研究
- 2023-05-14旋进旋涡流量计进气道堵塞和磨损对计量误差的影响
- 2023-04-27基于物联网技术的防作弊电子秤和信息系统
- 2023-04-28浅谈《工程力学》中平衡条件与平衡方程教学的点滴体会
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。