工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->基础电路图->数字电路图->基于单片机设计的八位数码管显示程序

基于单片机设计的八位数码管显示程序

作者:dolphin时间:2012-10-31

下面是本实例中模块化程序设计的.h文件

/*****************************
74hc595.h
***********************************/
/*74hc595与单片机的引脚连接
/MR(10脚) VCC 低点平时将移位寄存器的数据清零。通常将它接Vcc
/OE(13脚) PG4 高电平时禁止输出(高阻态)。
如果单片机的引脚不紧张,用一个引脚控制它,
可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。
ST_CP(12脚) PG1 上升沿时移位寄存器的数据进入数据存储寄存器,
下降沿时存储寄存器数据不变。通常将RCK置为低电平,
当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。
通常都选微秒级),更新显示数据。
SH_CP(11脚) PG0 上升沿时数据寄存器的数据移位。QA--QB--QC--...--QH;
下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。
通常都选微秒级)
DS(14) PG2 串行数据输入端。
*/
#ifndef __HC595_H__
#define __HC595_H__
#include avr/io.h //io端口寄存器配置文件,必须包含
#include util/delay.h //GCC中的延时函数头文件

#define HC595_latch (1 PG1) //上升沿数据打入8位锁存器,下降沿锁存器数据不变
#define HC595_sclk (1 PG0) //上升沿数据移位,下降沿数据不变
#define HC595_oe (1 PG4) //低电平,8位数据锁存器输出,高电平输出高组态
#define HC595_data (1 PG2) //串行数据输入端

#define SET_HC595_latch (PORTG |= (1 PG1))
#define CLR_HC595_latch (PORTG = ~(1 PG1))
#define SET_HC595_sclk (PORTG |= (1 PG0))
#define CLR_HC595_sclk (PORTG = ~(1 PG0))
#define SET_HC595_data (PORTG |= (1 PG2))
#define CLR_HC595_data (PORTG = ~(1 PG2))
#define SET_HC595_oe (PORTG |= (1 PG4))
#define CLR_HC595_oe (PORTG = ~(1 PG4))

void HC595_port_init(void); //595端口初始化
void HC595_Send_Data(unsigned char byte); //发送一个字节
void HC595_Output_Data(unsigned char data); //发送字符串
#endif

同时我们将与74HC595相关的函数定义部分放在74HC595.c文件中,如下

/********************************
74hc595.c
**************************************/
#include hc595.h
//595端口初始化
void HC595_port_init(void)
{
PORTG = 0x00;
DDRG |= (1 PG0) | (1 PG1) | (1 PG2) | (1 PG4);
}
//发送一个字节
void HC595_Send_Data(unsigned char byte)
{
unsigned char i;
//CLR_HC595_latch;
for(i = 0;i 8;i++)
{

if(byte 0x80)
{
SET_HC595_data;
}
else
{
CLR_HC595_data;
}
byte =1;

SET_HC595_sclk; //上升沿数据移位
CLR_HC595_sclk;

}

SET_HC595_latch;
CLR_HC595_latch;

}
//发送字符串
void HC595_Output_Data(unsigned char data)
{
CLR_HC595_latch; //下降沿锁存器数据不变
HC595_Send_Data(data);
SET_HC595_latch; //上升沿数据打入8位锁存器
}

在主程序中我们使用预定义语句将.h文件包含到了主程序文件中,那么我们怎样实现将.c文件编译到整个项目程序中呢?在这里我们只要在makefile文件中将这个.c文件加进去就可以了,如下图所示,在SRC = $(TARGET).C的后面空一格,然后输入我们所定义的.c文件的名称,然后保存makefile文件的更改。最后进行编译就可以了,编译的时候如果我们仔细观察编译器的输出信息,会发现不但编译了main.c文件,同时也编译了74hc595.c文件。



评论

技术专区