c语言.h文件怎么写,关于C语言中.h文件怎么书写?

其实,头文件的功能就是申明资源,特别是多个C文件的时候,简单地说,就像是库文件。

例如:reg51.h头文件,就是单纯的申明资源,系统的其它头文件,还有申明函数的。

如果自己编写头文件,就可以包含这两个方面的内容了,例如:

发下是1602器件的头文件

#ifndef __LCD_H_

#define __LCD_H_

/**********************************

当使用的是4位数据传输的时候定义,

使用8位取消这个定义

**********************************/

#define LCD1602_4PINS

/**********************************

包含头文件

**********************************/

#include

//---重定义关键词---//

#ifndef uchar

#define uchar unsigned char

#endif

#ifndef uint

#define uint unsigned int

#endif

/**********************************

PIN口定义

**********************************/

#define LCD1602_DATAPINS P0

sbit LCD1602_E=P2^7;

sbit LCD1602_RW=P2^5;

sbit LCD1602_RS=P2^6;

/**********************************

函数声明

**********************************/

/*在51单片机12MHZ时钟下的延时函数*/

void Lcd1602_Delay1ms(uint c);   //误差 0us

/*LCD1602写入8位命令子函数*/

void LcdWriteCom(uchar com);

/*LCD1602写入8位数据子函数*/

void LcdWriteData(uchar dat)        ;

/*LCD1602初始化子程序*/

void LcdInit();

#endif

它必须配合1602的C文件同时使用

#include"lcd.h"

/*******************************************************************************

* 函 数 名         : Lcd1602_Delay1ms

* 函数功能                   : 延时函数,延时1ms

* 输    入         : c

* 输    出         : 无

* 说    名         : 该函数是在12MHZ晶振下,12分频单片机的延时。

*******************************************************************************/

void Lcd1602_Delay1ms(uint c)   //误差 0us

{

uchar a,b;

for (; c>0; c--)

{

for (b=199;b>0;b--)

{

for(a=1;a>0;a--);

}

}

}

/*******************************************************************************

* 函 数 名         : LcdWriteCom

* 函数功能                   : 向LCD写入一个字节的命令

* 输    入         : com

* 输    出         : 无

*******************************************************************************/

#ifndef         LCD1602_4PINS         //当没有定义这个LCD1602_4PINS时

void LcdWriteCom(uchar com)          //写入命令

{

LCD1602_E = 0;     //使能

LCD1602_RS = 0;           //选择发送命令

LCD1602_RW = 0;           //选择写入

LCD1602_DATAPINS = com;     //放入命令

Lcd1602_Delay1ms(1);                //等待数据稳定

LCD1602_E = 1;                  //写入时序

Lcd1602_Delay1ms(5);          //保持时间

LCD1602_E = 0;

}

#else

void LcdWriteCom(uchar com)          //写入命令

{

LCD1602_E = 0;         //使能清零

LCD1602_RS = 0;         //选择写入命令

LCD1602_RW = 0;         //选择写入

LCD1602_DATAPINS = com;        //由于4位的接线是接到P0口的高四位,所以传送高四位不用改

Lcd1602_Delay1ms(1);

LCD1602_E = 1;         //写入时序

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

//        Lcd1602_Delay1ms(1);

LCD1602_DATAPINS = com << 4; //发送低四位

Lcd1602_Delay1ms(1);

LCD1602_E = 1;         //写入时序

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

}

#endif

/*******************************************************************************

* 函 数 名         : LcdWriteData

* 函数功能                   : 向LCD写入一个字节的数据

* 输    入         : dat

* 输    出         : 无

*******************************************************************************/

#ifndef         LCD1602_4PINS

void LcdWriteData(uchar dat)                        //写入数据

{

LCD1602_E = 0;        //使能清零

LCD1602_RS = 1;        //选择输入数据

LCD1602_RW = 0;        //选择写入

LCD1602_DATAPINS = dat; //写入数据

Lcd1602_Delay1ms(1);

LCD1602_E = 1;   //写入时序

Lcd1602_Delay1ms(5);   //保持时间

LCD1602_E = 0;

}

#else

void LcdWriteData(uchar dat)                        //写入数据

{

LCD1602_E = 0;          //使能清零

LCD1602_RS = 1;          //选择写入数据

LCD1602_RW = 0;          //选择写入

LCD1602_DATAPINS = dat;        //由于4位的接线是接到P0口的高四位,所以传送高四位不用改

Lcd1602_Delay1ms(1);

LCD1602_E = 1;          //写入时序

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

LCD1602_DATAPINS = dat << 4; //写入低四位

Lcd1602_Delay1ms(1);

LCD1602_E = 1;          //写入时序

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

}

#endif

/*******************************************************************************

* 函 数 名       : LcdInit()

* 函数功能                 : 初始化LCD屏

* 输    入       : 无

* 输    出       : 无

*******************************************************************************/

#ifndef                LCD1602_4PINS

void LcdInit()                                                  //LCD初始化子程序

{

LcdWriteCom(0x38);  //开显示

LcdWriteCom(0x0c);  //开显示不显示光标

LcdWriteCom(0x06);  //写一个指针加1

LcdWriteCom(0x01);  //清屏

LcdWriteCom(0x80);  //设置数据指针起点

}

#else

void LcdInit()                                                  //LCD初始化子程序

{

LcdWriteCom(0x32);         //将8位总线转为4位总线

LcdWriteCom(0x28);         //在四位线下的初始化

LcdWriteCom(0x0c);  //开显示不显示光标

LcdWriteCom(0x06);  //写一个指针加1

LcdWriteCom(0x01);  //清屏

LcdWriteCom(0x80);  //设置数据指针起点

}

#endif

观察注意到:C文件中的资源、函数,都是通过头文件申明的,这样才能在主C文件中,调用到1602的C文件中的函数

你看主程序是这样的:

#include

#include"lcd.h"

unsigned char PuZh[]=" Pechin Science ";

/*******************************************************************************

* 函 数 名         : main

* 函数功能                   : 主函数

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/

void main(void)

{

unsigned char i;

LcdInit();

for(i=0;i<16;i++)

{

LcdWriteData(PuZh[i]);

}

while(1)

{

}

}

知道了自编头文件的作用,就可以按照上述格式,编写自己的其它器件的C文件和头文件了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯视频怎样关闭推送迷你页面

腾讯视频是一款难得的好软件&#xff0c;本文给大家分享“腾讯视频怎样关闭推送迷你页面”&#xff0c;相信大家看完后在使用方面更加得心应手。腾讯视频客户端为您推荐更多精选热门视频&#xff0c;通过多条件筛选快速定位匹配结果&#xff0c;提供多种画质、多种语言切换播放…

python c语言 数据类型转换,Python类型转换,数据类型转换函数大全

虽然 Python 是弱类型编程语言&#xff0c;不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型&#xff0c;但在一些特定场景中&#xff0c;仍然需要用到类型转换。比如说&#xff0c;我们想通过使用 print() 函数输出信息“您的身高&#xff1a;”以及浮点类型 heigh…

帮助蚂蚁的小猪

帮助蚂蚁的小猪&#xff1b;小猪有个特别的爱好&#xff0c;那就是收集各种漂亮的树叶。 小猪最喜欢的就是秋天&#xff0c;因为在秋天&#xff0c;小猪可以收集到各种不同美丽的树叶。这一片像星星&#xff0c;这一片弯弯的像月亮&#xff0c;这一片有五个手指&#xff0c;这…

新闻发布系统C语言,资讯 | 助力期末之c语言专场圆满结束!

原标题&#xff1a;资讯 | "助力期末"之c语言专场圆满结束&#xff01;大一生活如白驹过隙&#xff0c;一转眼便来到了期末&#xff0c;相信很多同学都对c语言期末考很在意&#xff0c;但是又不知道考点在哪里&#xff0c;感觉很多知识点都还不太清楚。确实&#xff…

c语言结构-的优先级,c语言运算符号优先级

/**************************************************************************/01 左结合_()、[]、->、.() 圆括号[] 下标运算符-> 指向结构体成员运算符. 结构体成员运算符/**************************************************************************/02 右结合 ( …

android自动化测试之robotium初探(三),Android自动化测试之Robotium--基础操作.pdf

Android自动化测试第五课Android 自劢化测试乊Robotium——基础操作Karen微信公众号&#xff1a;gloryroadtrainThreadingTest技术支持Q群:一群&#xff1a;339834199二群&#xff1a;311186106Android自动化测试全系列课程 Android系统级白盒测试以及不自劢化测试集成--核心…

PP视频如何播放本地视频文件

今天小编给广大用户分享PP视频如何播放本地视频文件。PP视频手机版是一款装机必备的手机视频播放软件&#xff0c;用户可在线观看PP视频全部免费高清正版视频&#xff0c;海量内容&#xff0c;高清画质&#xff0c;自由点播&#xff0c;配合先进的P2P下载技术&#xff0c;一键高…

android svn丢失文件恢复,SVN搭建(以此为准,成功)文后含备份与恢复

一&#xff0c;安装必须的软件包.yum install subversion (SVN服务器)mysql-server (用于codestriker)httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器)sendmail (用于配置用户提交代码后发邮件提醒)wget gcc-c make unzip perl* (必备软件包)ntsysv vim-enhanced (…

搜狐视频怎么设置自动连播

本文播放器家园网小编给大家分享搜狐视频怎么设置自动连播&#xff0c;如果大家在使用搜狐视频过程当中遇到类似问题&#xff0c;欢迎阅读本文!搜狐视频拥有独立的播放界面&#xff0c;软件采用独立的播放界面进行播放&#xff0c;用户点击喜欢的影视播放之后不会干扰您对影视资…

PP视频怎么设置可以运行多个客户端

今天继续给大家分享PP视频方面的内容。PP视频怎么设置可以运行多个客户端。PP视频客户端是国内领先的视频播放器&#xff0c;以 “快者为王”为产品理念&#xff0c;注重用户体验&#xff0c;为用户提供视频播放,视频发布,视频搜索,视频分享功能&#xff0c;充分满足用户日益增…

android 怎么刷机,android系统怎么刷机

安卓系统手机如何刷机&#xff1f;大致可以说明如下&#xff1a;android手机的刷机&#xff0c;就相当于给它重装一下系统&#xff0c;这和我们常见的电脑重装系统类似。刷机前先对自己手机中的一些重要内容进行备份吧&#xff0c;像名片&#xff0c;短信&#xff0c;日历等重要…

android创建空文件,ADT 更新 eclipse srclayout 文件夹创建时候为空

今天是14-3-9&#xff0c;发现SDK Manager有更新&#xff0c;手贱点了一下。。。然后新建项目src和layout文件夹就成空的了。。。虽然可以手动建立内容&#xff0c;但是感觉很不爽&#xff0c;到处找解决方法&#xff0c;最后在贴吧找到了&#xff0c;内容链接到了eoe&#xff…

迅雷加载项会导致IE9浏览器崩溃

核心提示&#xff1a;相信很多网友今天启动电脑后的第一件时间就是下载IE9beta&#xff0c;看到IE浏览器的新界面以后感觉确实比之前的版本要简洁很多&#xff0c;色彩的搭配也更加舒服了。安装完毕以后立即打开浏览器体验&#xff0c;随便输入了一个网页打开即报错崩溃了。严重…

Win10系统浏览器字体乱码如何解决

核心提示&#xff1a;[Win10系统浏览器字体乱码如何解决?一起看看吧!](http://www.f8pc.cn/rjjc/66390.html) 目前&#xff0c;部分电脑用户在升级了Win10系统之后&#xff0c;都遇到了一些使用上的问题&#xff0c;其中&#xff0c;遇到浏览器出现乱码这个问题的电脑用户还真…

html语言循环语句,Scala @功能/语言的HTML文档 - for循环,如果语句等

我正在一个控制器的视图(HTML页面)中&#xff0c;我试图匹配复选框中的“选中”值的列表中。Scala 功能/语言的HTML文档 - for循环&#xff0c;如果语句等我从模型中抓取选定的复选框值(列表A)&#xff0c;将它们在控制器中抓取并发送到视图。我还从模型中获取复选框选择/选项/…

Win7系统浏览器的兼容模式如何设置

核心提示&#xff1a;Win7系统浏览器的兼容模式如何设置?一起看看吧! Win7系统浏览器的兼容模式怎么设置?下面2345软件大全小编给大家介绍。 一、兼容性视图设置。 1、打开IE 浏览器。 2、选择“工具”—“兼容性视图设置”。 3、在“在兼容性视图中显示所有网站”前面勾…

百度自动推送html5,百度暂停 JS 代码自动推送功能,代码是否需要删除?

本月上旬末的时候百度站长平台就推送了一则关于&#xff1a;搜索资源平台自动推送暂停使用通知。说到由于升级维护&#xff0c;搜索资源平台链接提交-自动提交-自动推送(JS 代码推送)功能暂时停止使用。并且会在恢复使用时再次通知。由于这条通知是百度通过搜索资源平台发送的站…

ie浏览器如何截图

核心提示&#xff1a;经常有朋友问小编&#xff0c;IE浏览器怎么截图&#xff0c;小编就来回答一下。 ie浏览器如何截图&#xff1f;经常有朋友问小编&#xff0c;IE浏览器怎么截图&#xff0c;小编就来回答一下。现在很多人都依然在使用Windows7系统&#xff0c;而且大多数人…

html中表格布局还是div布局,Table布局 VS Div+CSS布局,选哪个?

Table布局 和 DivCSS布局的争论&#xff0c;过了7-8年了&#xff0c;今天看到一篇文章《为什么我们不建议用Table布局》&#xff0c;又想发表下自己的见解&#xff0c;供初学《为什么我们不建议用Table布局》节选&#xff1a;Table要比其它html标记占更多的字节。(延迟下载时间…