1)h文件作用
1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;
2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。
2)h文件里应该有什么
常量,结构,类型定义,函数,变量申明。
3)h文件不应该有什么
变量定义, 函数定义。
4)extern问题
对于变量需要extern;
对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。
5)include包含问题
虽然申明和类型定义可以重复,不过推荐使用条件编译。
#ifndef _FILENAME_H,
#define _FILENAME_H
……
#endif
6)应该在那儿包含h文件
在需要的地方.比如某个提供接口的h文件仅仅被1.c文件需要,那么就在1.c文件里包含。
编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过#include "delay.c"这类的程序,同时也不提倡使用这个形式。
在delay.h文件中: //对调用的函数声明
#ifndef __DELAY_H__
#define __DELAY_H__
extern void Delayms(unsigned int n);
#endif
在delay.c文件中: //函数实现部分
#include
//for crystal 11.0592M
void Delayms(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
在主程序main.c中
#include//在主程序包含.h文件,不能包含.c文件
……
上述方法仍然要求每建立一个工程就需要把对应的头文件复制到工程的文件夹里,这样看来仍然是比较麻烦的,这时还有另外一中方法就是将做好的头文件放在一个文件夹中,然后将这个文件夹整体拷贝到..KEILC51INC下面,以后若需要使用某个头文件,就如使用KEIL自带的头文件一样方便了,在主函数mani()之前有一句#include 就可以在main()中使用其中的函数了。
关键字:51单片机 c文件 h文件
引用地址:
51单片机C中.c文件和.h文件
推荐阅读最新更新时间:2024-11-09 16:10
通过51单片机实现直流电机调速
一、项目背景及目的 随着各种工业生产设备和机械设备的广泛使用,直流电机调速技术的研究和应用越来越受到人们的重视,具有广泛的应用前景。本项目通过51单片机实现直流电机调速功能,为实际工程应用提供一个可靠和有效的调速方案。 二、设计思路 (1)系统原理 本系统采用PWM(脉冲宽度调制)技术对直流电机进行调速控制。通过改变输出信号的占空比,实现对直流电机的转速控制。系统中包括51单片机、直流电机、电路板以及控制程序。 (2)硬件设计 电机:使用24V直流电机实现实际转速控制。 驱动电路:使用四个寄生二极管三相全桥驱动电路控制电机,使电机可以正反转,并控制电机的速度。 51单片机:使用STC89C52单片机,作为控制核心。单片机
[单片机]
采用MXT8051单片机实现基站温控仪的设计
引言 移动基站分布在全国各地,覆盖面广,各地气候差异大。解决好散热问题,是基站正常运作的关键因素之一。本文介绍的温控仪,利用温度传感器采集信号,然后通过单片机进行A/D转换、处理、运算得到室内外温度,并且根据当前室内外温差,计算出风机风速。然后利用PWM方式控制可控硅对交流220V斩波,实现风机风速调制。从而实现了利用自然冷源达到降低基站内部温度的目的。 系统设计 本温控仪是以MXT8051单片机为核心,整个硬件系统(如图1)分为温度信号采集、显示、键盘、控制输出、通信接口和存储模块。该仪表工作流程是:单片机通过集成的A/D采样室内室外温度,根据温差调制风机风速。键盘部分实现对温控仪参数的设置,如风机启动温度、停止温度等参数。
[单片机]
51单片机LCD12864显示屏图片中文英文显示
显示结果: 图片及字体取模 单片机源程序如下: #include reg51.h #include intrins.h #include stdlib.h #define uchar unsigned char #define uint unsigned int //定义端口 sbit A0=P2^0; //定义端口是传输命令还是数据, sbit RW=P2^1;//定义端口是读取还是写入, sbit LCDEN=P2^2;//芯片使能启动 sbit RST=P2^3;//复位键 uchar code dis1 ={/*-- 文字: 我 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x
[单片机]
51单片机入门——Proteus 8 Professional的使用
1.什么是Proteus 8 Professional ? Proteus是Lab Center Electronics公司推出的一个EDA工具软件。 Proteus具有原理布图、PCB自动或人工布线、SPICE电路仿真、互动电路仿真、仿真处理器及其外围电路等特点功能。 Proteus 8.9 安装包,内附安装教程 链接:https://pan.baidu.com/s/19YPyUeNt5bTVd7ch_15tig 提取码:qcyx 2.Proteus 8 Professional的使用 双击图标后进入主页面:如图: 首先我们要建立一个工程文件,点击左上角的图标或在开始设计中点击新建工程,如图: 选择合适的保
[单片机]
51单片机两点间温度控制设计
1.电路原理图 图4.29.1 2.系统板上硬件连线 a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。 d)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。 e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。 f)把“单片机系统”区域中的P3.3与“模数转换模
[单片机]
【51单片机】考试基础知识总结(引脚)
考试范围: 选填看书本课后习题 大题: 纯程序:实验前四个,乘法不考 中断,定时器T1:方波书本例题5-1,也可以用C语言实现 显示、键盘:8位/16位(独立/矩阵键盘,Scanner) 0832/0809 例题10-1(1)(2)(3)10-6、10-6上面的程序(方波、矩形波) 第八章,拓展图,“第14讲内容会做就可” 串口: PO口: 外部扩展存储器时,当做数据总线,DB 不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。 P1口: 只做I/O口使用:其内部有上拉电阻。 P2口有两个功能: 扩展外部存储器时,当作地址总线使用,AB 做一般I/
[单片机]
51单片机系列学习——逐行扫描的方式实现矩阵按键的仿真
小编今天原本想用proteus7.8做个计算器显示的仿真,结果被矩阵按键这块整好长时间。秃头秃头!!! 某站上普中科技的教学视频里的“矩阵按键”采用的是行列式的扫描方式实现确定按键位置的。但我用那个程序仿真没整出来。分析修改程序等等,弄了好久没整出来。于是我换了一种方式,用视频里介绍的**“逐行扫描”**的方式弄了一下,整出来了!!,先把我的实验过程分享给大家,在来谈谈我的理解。 仿真图如下: 计算器在proteus7.8中搜“KEYPAD”即可 代码如下: #include reg52.h #include intrins.h #define uchar unsigned char #define uint
[单片机]
51单片机串口通信--SCON方式1
计算机的通信分为:串行通信和并行通信 串行通信分为:异步通信和同步通信 异步通信:发送设备与接受设备有各自的时钟,通信时双方的时钟尽量保持一致, 以字符为单位进行传输, 字符与字符间的时间间隔是任意的, 每个字符中的各位是以固定时间传送的, 异步通信的数据格式:起始位,7位数据,校验位,停止位(这10位数据就是所说的字符,叫1帧数据) 同步通信: 建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。 传输数据的位之间的距离均为“位间隔的整数倍”, 传输的字符间不留间隙,保持位同步和字符同步, 两种方式实现同步:外同步,自同步 外同步:计算机甲控制计算机乙的时钟, 自同步:??? 串行通信的传输方向: 单工:仅
[单片机]