![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单片机 C语言
胡电子
本人专业电子技术现在主用8位MCU开发小家电产品慢慢向ARM进发
展开
-
关于浮点数计算的一注意点
½尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。说明:浮点运算除法要占用较多CPU资源。示例:如下表达式运算可能要占较多CPU资源。#define PAI 3.1415926radius =circle_length / (2 * PAI); 应如下把浮点除法改为浮点乘法。#define PAI_RECIPROCAL (1 / 3.1416原创 2014-01-21 18:59:46 · 1569 阅读 · 0 评论 -
求一个数的余数 用取模函数%和移位操作思路的分析
简介:C程序中经常用到取模函数%,显然这个相对移位来说,效率较低,因为既有函数调用,还有很多汇编代码和寄存器参与运算;当然,由于编译器的不同,可能效率的差距不大。下面分析下移位操作的思路。原创 2014-02-07 12:51:37 · 3859 阅读 · 0 评论 -
数码管 通用驱动显示 LCD可借鉴此方法
/*一般来说,如果连接数码管的引脚是按顺序来驱动,那么,对于程序员来说,是减少一些工作。而对于不规则(当然按顺序的连接电路也可以用)的连接方式,本人总结一个比价快速的方法,如果电路连接正常,不用借助图纸和万用表即可快速写好程序。第一步:取段显示对应的值,0~F;共阴极和共阳极都可以用, const uint8 TabNum[17]={ //ABCDEFG 0X3F,0X原创 2013-07-27 15:47:47 · 1762 阅读 · 0 评论 -
市电过零扫描电路及程序
常用市电过零扫描电路及其对应扫描程序,使用普通io口,扫描时间一般为几百微妙内原创 2014-05-06 14:18:37 · 2985 阅读 · 0 评论 -
采集温度,如何处理小数点算法思路
温度 29度【对应AD值,M等于251】;温度 30度的温度的AD值,【K等于 260】;通过公式(N-M)*10/(K-M);计算得当前温度的小数点为:(N-M)*10/(M-K)=(256-251)*10/(260-251)=5最后得到当前温度是:29.5度原创 2013-12-18 17:31:01 · 2402 阅读 · 0 评论 -
华摄氏度和摄氏度的转换 华摄氏度转化摄氏度 使用带运算的宏定义
定义:摄氏度:CELSIUS EQUALS 华氏度:FAHENHEIT EQUALS彼此间的转换很容易,如下: 将摄氏度转成华氏度:将摄度以氏直接乘以9,除5,再加上32 华氏度转成摄氏度:将华氏度减去32,乘以5再除以9写成公式:CelEquVal --摄氏度FahEquVal原创 2014-06-07 19:29:16 · 9982 阅读 · 0 评论 -
华摄氏度和摄氏度的转换小数点处理 单片机
上一篇博客写到 华摄氏度和摄氏度的相互转换,有个细节要注意下,嘻嘻,细节决定成败。由于是无符号整型的运算,这里涉及到的小数点的处理,即四舍五入的处理,不然,小数部分就被直接去掉了,如果结果是65.8,当然,你要的结果是66,而不是65,对吧?具体为如果CelEquVal * 9 / 5 + 32 运算后的小数大于等于0.5 ,预算后的结果应该再加1,才更接近运算值。我是这么处理的,现将被除数原创 2014-06-07 21:11:22 · 3878 阅读 · 1 评论 -
关于逻辑或的一个小小应用注意点
这两天在完成一个新的项目,由于是新的,所以,很多都是重新写的,其中发现自己犯了一个比较低级的错误,弄了大半天,原来是写的格式错误,具体如下,希望其他博友不要和我一样,导致浪费时间在修改BUG,更重要的是影响心情。主要目的:如果 A 等于 6 或者 A 等于 8 ,B等于 9 否则 B 等于 10;当然,以上是我简化后的表达。错误写法:if(A == (6 ||原创 2014-06-07 18:38:41 · 1018 阅读 · 1 评论 -
多功能检测按键-3 按键扫描 单按 长按 多个按键 响应方式
/***************************************// 函数功能:按键扫描//这是我第三次对按键扫描的优化,为什么我要这么做呢,很简单,//我只想将简单的事情不断完善好//第一次发表:http://blog.csdn.net/chuangwu2009/article/details/9466715//第一次发表:http://blog.csdn.net/ch原创 2014-05-23 10:34:10 · 4391 阅读 · 2 评论 -
可控硅过零导通程序--可控硅驱动程序
if(F_moto_en){ if(T_moto_delay==0) {//过零延时导通时间 既功率控制--过零重新赋值T_moto_delay=M_Power-1; if(T_250us_hot<=2)//可控硅导通时间 { T_250us_hot++; WORK_H_ON; } else { WORK_H_OFF; } } else {//原创 2014-05-05 19:04:05 · 7741 阅读 · 0 评论 -
TM1620 LED 驱动控制 程序
TM1620是一款数码管驱动集成IC,8段6位,以下是个人编程完成的驱动,供大家参考原创 2014-03-11 09:48:22 · 14794 阅读 · 5 评论 -
字和字节的常识
在计算机中,数据只用0和1两种表现形式,(这里只表示一个数据点,不是数字),一个0或者1占一个“位”,而系统中规定8个“位”为一个“字节”,用来表示常用的256个字母、符号、控制标记。在64位计算机中,“一个字长”所占的字节数为8。字长的字节数 = 计算机位数/8。CPU在单位时间内一次处理的二进制数的位数叫字长,32位操作系统的cpu一次处理32位,也就是4字节。64位的操作系统,cpu转载 2014-01-08 10:07:42 · 963 阅读 · 0 评论 -
常用位操作,写8位 12864串口模式 I2C 1302 18B20
几种常用器件写数据的位操作,供大家一起看看;本人用过没有问题,但用在其他场合,如有错误,麻烦留言;同时我希望有心人一起顶起来,把另一些常用也贴出来供大家一起学习,让我们一起分享,一起进步,谢谢。原创 2013-08-16 17:04:07 · 1720 阅读 · 0 评论 -
常用位操作,读8位 I2C 1302 18B20
几种常用器件读数据的位操作,供大家一起看看;本人用过没有问题,但用在其他场合,如有错误,麻烦留言;同时我希望有心人一起顶起来,把另一些常用也贴出来供大家一起学习,让我们一起分享,一起进步谢谢。原创 2013-08-16 16:54:28 · 1273 阅读 · 0 评论 -
多功能检测按键 单按 长按 多个按键 响应方式
按键有效检测方式:1:单按键响应 2:多按键响应 3:长按单个按键响应 4:长按多个按键响应 5:以上响应的方式都可以选择释放后响应和按下马上响应原创 2014-01-09 08:03:48 · 5402 阅读 · 2 评论 -
常用PWM控制函数
#define TIME_PWM_CYSCLE 36 if(++pwm_high>pwm_set) {//关闭 MOTO_OFF; } else {//导通 MOTO_ON; } if(++time_cyscle>=TIME_PWM_CYSCLE) { time_原创 2014-01-07 10:37:03 · 4252 阅读 · 0 评论 -
液晶\串行\1602串口 (4bit)通讯
液晶\串行\1602串口 (4bit)通讯 ,4个IO口通讯,可以节约4个IO原创 2013-12-14 21:15:12 · 2246 阅读 · 0 评论 -
模拟红外协议C程序——接收模块
目的:方便程序的调试,提供效率,减少工作累,可以不在线调试编程时显示实时数据,特别产品不带显示的或者MCU是OPT的,有很大的帮助。过程:将要看的数据发送出来,另一个板(一个带有显示的就OK了,显示就看个人的了,我之前用12864显示,后面坏了,就用4位数码管了)接收显示出来。资源:通讯口只要2个IO(接收一个,发送一个),定时器2个(接收一个,发送一个)。(记得共地哦)本人QQ:448704229此模块我已经使用3年之多!!!!!原创 2013-08-16 16:27:59 · 1451 阅读 · 0 评论 -
冒泡程序包括 指针操作和数组操作--数据排序
*************************** // 函数名称:mp_sort_xd// 函数功能:使用冒泡方法对数据进行排序--使用指针的操作 // 入口参数:排序数据的首地址 数据长度// 出口参数:无 // 返 回 值:无 //*************************************** void mp_sort_xd(int *point,int num){int原创 2013-07-25 14:13:45 · 814 阅读 · 0 评论 -
简单易懂 经典按键检测程序(包含长按功能)
//************************************* // 函数名称:Key_scan// 函数功能:检测按键功能// 入口参数:无 // 出口参数:无 // 返 回 值: 无//*************************************** void Key_scan(void) // 2毫秒执行一次{原创 2013-07-25 12:43:11 · 18311 阅读 · 4 评论 -
关于变量命名的长度
变量命名的长度,在刚开始学习C语言的时候已经学过了,但在从事工作后,一直没有印象,昨天偶看C语言程序设计,看到这个说明。 C语言中变量命名的长度,普通编译器最多识别是8位,也有识别32位的,但为了不让编译器识别出错,程序混淆,更为了方便移植,我们命名时最好还是不超过8位字符。原创 2014-02-11 08:19:46 · 6458 阅读 · 0 评论 -
程序模块化的阶段性总结
好程序员不一定能写出好博文,但能写出好博文的一定是好程序员。因为我觉得我一直没有能把文字表达清楚,我在我的博文里也提到过,当然了,我并不是一个很好的程序员,但我一直努力着改变自己,只求每天会更好一点。 好了,不多说多余的了。我想了想,选择的主题是程序模块会的见解——主要是对近期发表的程序模块会的见解总结下,原创 2014-06-09 22:15:11 · 2785 阅读 · 1 评论