单片机编程心得

发布者:快乐奇迹最新更新时间:2015-07-09 来源: 51hei关键字:单片机  编程心得 手机看文章 扫描二维码
随时随地手机看文章
一、延时程序的处理:

  1、对于可以设置系统时钟的单片机,延时程序统一先把系统时钟设频率置为最低,然后按这个最低时钟频率写延时
     函数,这样的好处:第一,统一了不同系统时钟下的延时;第二,降低功耗
  2、对于单片机系统,不同的外部时钟,延时程序对应的时间不同,为了方便使用,加入预编译指令#ifdef/#else/
     #endif  这样如果预定义了一个系统时钟,则选择相应的延时参数进行编译,而延时程序主体不变,只是里面有
     一个延时参数,根据预定义选择相应参数。

二、for循环的处理:
   用for(i=XX,i>0,i--) 而不用for(i=0;i    对于两层或多层for循环,频繁的循环放在内层,减少循环间跳转花费的时间

三、对外设的操作:可以把外设作为一个文件来操作,比如液晶,就可以把液晶看作一个文件,往液晶打印字符串或
   者数据,就可以用fprintf()来做,(51的C标准库不支持,但是可以自己写一个文件操作的库)。只要是输入输出
   设备,都试着用文件操作的方法去操作。


四、标准库函数的使用:
  1、标准输入输出库(stdio.h):
   字符串夹杂变量数字(比如:发送完nihao字符串,然后发送变量i的值)往液晶显示或往串口发送的时候,往串口发
   送可以使用格式输出函数printf("nihao%d",i);但是往LCD显示就不好做了,通常是写一个数字转字符串的函数,然
   后先送原来的字符串,再送数字转换后的字符串,太麻烦,可以使用标准输入输出库里的sprintf()函数来完成,它
   的原型为:sprintf(char *buffer, const char *format, …),*buffer是要把字符串和变量写入的缓冲区,可以使
   用数组或者指针,后面的格式和printf()函数一样;    与之对应的还有sscanf()函数,从缓冲区读一个字符串把它
   转成相应的类型后赋给指定的变量。
   比如:
    #include <stdio.h>
    void PrintToLcd(unsigned char *str)
    {
        ...
    }
    void main()
    {
        unsigned char *p;
        unsigned char i = 50;
        sprintf(p,"nihao%d",i);
        PrintToLcd(p);
    }
  2、字符串库(string.h)
    字符串连接(相加)  char *strcat(char *dest,const char *stc)
   把src连接到dest字符串后面,返回指向dest的指针
    字符串比较  int strcmp(char *str1,char *str2)
   返回值:小于0: str1str2
    字符串拷贝1  char *strcpy(char *dest,const char *src)
   结果把src的内容拷进dest,两个字符串内容相同,返回指向dest的指针
    字符串拷贝2  char *strdup(const char *src)
   src:待拷贝的源字符串,返回值:指向拷贝后的字符串的指针
    字符串倒序  char *strrev(char *s);
   返回指向倒序后字符串的指针
  3、类型转换(math.h; stdlib.h)
   字符串转双精度(类似C++Builder里的StrToDouble)  double atof(char *str)
   字符串转整数(类似StrToInt)  int atoi(char *str)
   字符串转长整型  long atol(char *str)
   浮点数转字符串  char *ecvt(double value,int ndigit,int*dec,int *sign)
                   char *fcvt(double value,int ndigit,int*dec,int *sign)
    输入参数:value: 待转换浮点数,ndigit: 转换后的字符串长度
    输出参数:dec: 小数点位置,sign: 符号
    返回转换后的字符串指针
   整型转字符串  char *itoa(int value,char *string,int radix)
    输入参数:value: 要转换的数,radix: 转换的进制
    输出参数:string: 转换后的字符串
    返回指向string的指针
   长整型转字符串  char *ltoa(long value,char *string,int radix)

关键字:单片机  编程心得 引用地址:单片机编程心得

上一篇:单片机c语言程序(按键和消抖)
下一篇:STC12C5A60S2单片机双串口通信

推荐阅读最新更新时间:2024-03-16 14:24

单片机太阳能草坪灯LED照明设计
   1 引言   太阳能作为一种新兴的绿色能源,以其无可比拟的优势得到迅速的推广应用。一般人认为,节能灯可节能4/5是伟大的创举,但LED比节能灯还要节能1/4,这是固体光源伟大的革新。除此之外,LED还具有光线质量高,基本上无辐射,可靠耐用,维护费用极为低廉等优势,属于典型的绿色照明光源。超高亮LED的研制成功,大大地降低了太阳能灯具使用成本,使之达到或接近工频交流电照明系统初装的成本报价,并且具有保护环境、安装简便、操作安全、经济节能等优点。本文主要介绍它的一些知识,希望能给大家一些启发。   2 LED太阳能草坪灯的定义及结构组成   太阳能草坪灯主要利用太阳能电池的能源来进行工作,当白天太阳光照射在太阳能电
[单片机]
<font color='red'>单片机</font>太阳能草坪灯LED照明设计
基于AT89C51微控制器实现具有道路学习记忆的机器人设计
随着科学技术的不断发展,机器人技术在航天、海洋、军事、建筑、交通、工业及服务业等领域已经取得广泛的应用和发展。而在一些特殊场合(如航天、深海作业及核工业等领域),以无人探察车、无人排险车及无人运输车等为代表的机器人技术越来越受到关注。为此,笔者设计了一种具有道路记忆功能、使用灵活方便、应用范围较广的轮式移动机器人模型。 该机器人模型以微控制器MCU为核心,先由人对机器人模型按照所要行走的路线进行训练,即让机器人模型记忆该路线(将路线数据存储在存储器中)。以后机器人模型就可沿此路线重复行走。其记忆路线的方式灵活方便,可根据不同的要求和需要对其进行不同的路线训练以完成不同的任务。 该模型可以应用于一些人类不宜活动或较难控制的场
[单片机]
基于AT89C51<font color='red'>微控制器</font>实现具有道路学习记忆的机器人设计
基于51单片机的电话留言机设计
电话留言机的设计与开发主要经历了可行性分析、系统设计与系统调试三个阶段。 1.5.1 可行性分析 从当时国内电话机的发展状况来看,电话留言机在市场上品种很少,进口的电话留言机价格较昂贵,不能被一般电话用户接受,而国内对电话留言机已有较大的需求,因此,研制电话留言机势在必行。 从技术角度来看,技术人员已掌握电话留言机的关键技术,其核心器---单片机与语音芯片,市场上已有性能好、功能强、价格低的产品可供选择。因此,研制国产电话留言机是可行的。 1.5.2 系统设计 为了提出正确的设计方案,首先要对电话机内部电路作详细的分析与电话机的连接接口,为整个方案奠定良好的基础。 在选择单片机时,首选
[单片机]
TI推出面向高端实时控制应的C2834x MCU
        日前,德州仪器 (TI) 宣布推出性能提升两倍、工作频率高达 300 MHz 并高度集成了 516KB 单周期存取 RAM 存储器、高分辨率脉宽调制输出 (PWM)、32 位 QEP 模块以及其它控制导向型特性的 TMS320C2834x系列 Delfino 浮点控制器,从而可为高端控制应用提供高性能、高浮点精度以及优化的控制外设,以充分满足系统效率、精度以及可靠性等严格的性能要求。新型 Delfino 器件由两套精心设计的全新模块化 controlCARD 工具提供支持,可实现伺服驱动、可再生能源、电力线监控以及辅助驾驶等实时控制应用的跨越式开发。 C2834x Delfino控制器的主要特性与优势
[嵌入式]
I2C器件的从设备地址的设置
刚开始接触单片机,很多不懂,今天看到一条语句: #define WriteDeviceAddress 0xa0 //写器件地址 #define ReadDviceAddress 0xa1 //读器件地址 不明白这个0xa0与0xa1是怎么确定的,然后翻了一些资料以及上网搜索了相关问题。自己总结了关于从器件地址的确定的原理: 举个例子,如芯片AT24C02, 地址的规则为:1010(A0)(A1)(A2)(R/W) 最后一位(R/W)是写保护引脚 接高电平时只能对该器件进行读操作((R/W)=1),低电平时为写操作((R/W)=0). 前四位是确定的1010,接下来三位是根据该从器件的连接方式确定的
[单片机]
51单片机学习笔记———12.1模拟法用于串口通信
通信无非就是两种 加上两种方式: 发送 接收 单片机与电脑通讯原理图: 当我们的单片机向电脑发送数据时,并不是一下子全部发完,而是根据字节数一位一位的发送,每发送一位数据就需要一定的时间,发送两位数据相隔的时间就是通讯的波特率倒数,而一般波特率都非常高,所以发送的时间非常短,所以当单片机要发送数据时,肯定要用到P3.1引脚的TXD。 所以一开始TXD 为高电平 然后变为低电平 并且延时一小段时间 然后开始按位发送数据 每发送一次延时相应时间 然后开始发送下一位 直到八位全部发送完毕 直观图如下: 代码如下: void main() { while(1) { UART_Send_Char(&
[单片机]
51<font color='red'>单片机</font>学习笔记———12.1模拟法用于串口通信
PIC单片机与PC机的串行数据交换
一、前言   美国Microchip公司的PIC系列单片机是一种新型的CMOS工艺单片机,其中,有许多单片机内部带有异步通讯模块,如PIC16F877等系列芯片。单片机虽然在使用中可等同于一个CPU,但是在许多需要大量计算的运用中,还必须借助微机(PC)的强大数据处理能力,这样就必须通过通信电路实现 PIC单片机与微机间的可靠数据传输。不论PIC单片机内有没有提供串行口,在实现串行通信时都必须通过自己设计硬件电路和编写通信软件来实现,而PIC 单片机要完成较复杂的软件功能时,需利用其内部相关的特殊功能寄存器来实现。下面介绍PIC16F877与微机间进行异步串行通讯的实现方法,同时给出与微机间进行异步串行通讯的硬件接口电路、程序
[单片机]
PIC<font color='red'>单片机</font>与PC机的串行数据交换
一种新的单片机“看门狗”电路软件设计方法
    摘要: 单片机控制系统“看门狗”电路的有效性,除硬件电路的可靠性以外,主要取决于如何正确给“看门狗”电路进行复位(即“喂狗”),文章在介绍了一种采用MAX706和89C52构成的硬件电路的基础上,给出了一种新颖可靠的“看门狗”电路软件设计方法。     关键词: 抗干扰  单片机  看门狗  MAX706  89C52     随着MCS-51系列单片机的发展,其芯片价格在不断下降,但同时也带来了单片机芯片的抗干扰问题,该问题可能导致一些智能型仪器仪表单片机工业控制系统发生“死机”。笔者通过近几年的设计实践及不断试验,总结了一套可靠的“看门狗”硬件电路及软件设计方法。由于一些专业期刊曾经刊登过许多关于“看门
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved