C语言的应用编程在单片机的领域占了很大一部分,使用的比较多的51单片机和STM32单片机都可以使用MDK软件编写固件。
单片机烧写了固件后可以点亮LED灯,可以驱动ADC检测电压,也可以驱动蜂鸣器发声,这就是简单地控制硬件。稍微复杂一点的,可以驱动NRF2401进行无线的连接,也可以使用ESP8266这类wifi芯片连接网络。
接下来,简单地讲讲如何使用C语言控制硬件。
1、电路连接
简单的模块可以直接使用高低电平来控制,比如红外线发射模块,当你在驱动引脚上的电压达到3.3v,就能发出红外线;然后将电平设置为0v,红外线发射就停止了。
一般而言,单片机的引脚输出电压能够达到3.3v,也是可以点亮红外线LED,但是可能会导致电流不稳定的问题,所以一般会使用一个三极管接在引脚和LED之间放大电流的驱动能力。
从原理来说,通过加在LED上的电平不停的变化,并且严格按照一定的时间设置为高电平,然后变更为低电平,如此的反复循环,那就能够发出一段红外线控制码。只要手速够快,时间够精准完全能够控制家里的电视机、空调。
2、单片机控制硬件
上面说到纯手工控制模块遥控电视机、空调,但是实际上谁有这样的手速呢,即便有这样的手速那开关也受不了这样的操作频率。
到了这会我们的单片机该闪亮登场了。以常用的51单片机而言,频率可以达到12MHZ。翻译成大白话就是,一秒钟可以按下开关12x10的6次方次。这简直是魔鬼手速,不仅快而且精准。关键是价钱也不太贵。比如,diy一个遥控器,电路板上IC的价格不过3块钱。
单片机在这里就替代了手的作用,那么C语言就相当于控制手的大脑。
其实这里只是举例了硬件控制中最常用的IO控制,实际的应用情况中除了IO控制,还有常用的ADC控制,这个就相当于单片机替你把使用万用表测量电压的活给干了。
3、C语言控制单片机
如果要从原理上来说,C语言并不能直接控制单片机。C语言是高级语言,是给我们人类来看的,单片机作为机器自然不懂这个。它只懂机器语言,说白了就是高低电平。但是为了减少歧义,就将这高低电平规格化了,变成了数字的0和1。
编译器的工作其实就是将我们编写的C原因翻译成了数字0和1存到单片机里面。然后,单片机就按照这个固定的模式去比对,然后去执行。有点像上学时,老师在台上点名的意思。
总的来说,C语言控制单片机,单片机控制硬件
关键字:C语言 STM32
引用地址:
怎么使用C语言控制硬件
推荐阅读最新更新时间:2024-11-17 14:52
基于语音识别的汽车空调控制系统
引言 现在汽车上使用的电器越来越多,驾驶员需要手动操作的电器开关也越来越多,不但增加了驾驶员的负担,还影响了行车安全。本文以STM32F103VET6(以下简称STM32)芯片为控制核心,采用高性能LD3320语音识别芯片,设计基于语音识别的汽车空调控制系统。该系统可以用语音有效控制汽车空调,减轻了驾驶员的操作负担,保证行车过程中的安全。 1 系统硬件设计 运用语音识别技术,结合各种传感器对车身内外的环境(如气温、阳光强度等)以及制冷压缩机的状态等多种参数进行实时检测,与设定参数相比较,微控制器经过运算处理做出判断,输出相应的调节和控制信号。执行机构经过实时调整和修正,实现对车厢内空气环境全方位、多功能的调节和控制。系统
[单片机]
【STM32电机方波】记录1——GPIO基础配置
GPIO库函数: GPIO初始化: typedef struct { u16 GPIO_Pin; //选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚 GPIOSpeed_TypeDef GPIO_Speed; //10MHz 、2MHz、 50MHz GPIOMode_TypeDef GPIO_Mode; //输入输出的8种方式 } GPIO_InitTypeDef; GPIO的缺省初始化值: GPIO_Pin = GPIO_Pin_All ; GPIO_Speed = GPIO_Speed_2MHz; GPIO_Mode = GPIO_Mode_IN_FLOATING GPIO的输入输出模
[单片机]
STM32之BKP后备域库函数介绍
1.BKP_DeInit函数的功能是将外设BKP的全部寄存器重设为默认值。 2.BKP_TamperPinLevelConfig函数的功能是设置侵入检测引脚的有效电平。 .BKP_TamperPinLevel可取的值有.BKP_TamperPinLevel_High/_Low.分别是检测高低电平。 3.BKP_TamperPinCmd函数的功能是使能或失能引脚的侵入检测功能。 BKP_TamperPinCmd(enable); 4.BKP_WriteBackupRegister函数的功能是想指定的后备寄存器中写入用户程序数据。他分别可以选用1~10不同的数据寄存器。 BKP_WriteBackupRegister(BKP_DR1,
[单片机]
STM32初学笔记1之RCC(上)
我参考了STM32的标准外设库中的RCC例程,然后对其在原有的基础上做了一定的修改,单独添加到了RCC_ClkConfig.C和RCC_ClkConfig.H两个文件当中,把这个作为以后系统时钟配置的通用函数,在这里共享出来,示例代码如下: ////////////////////////////////////////////////////////////////////////////////////////////////////// RCC_ClkConfig.C /////////////////////////////////////////////////////////
[单片机]
STM32定时TIM2触发ADC采样,使用DMA保存结果
1.adc.h文件 //ADC-------------------------------------------------------------------------// #ifndef __EVAL_ADC_H #define __EVAL_ADC_H // Includes ------------------------------------------------------------------// #include stm32f10x.h #include eval.h // Exported types ------------------------------
[单片机]
学习STM32总结的单片机(msp430,c8051等)一般学习方法
1,一块板子有必须的供电线,和必要的仿真下载调试线(如STM32的J-link) 2,安装开发环境:keil4(c51或者ARM系列注册),好像还有msp430系列首先清楚板子是什么系列,IAR EWARM是(IAR System公司开发的ARM系列环境) 3,安装驱动:软件里的各种驱动 4,在开发环境里配置选择DEVICE设备(注册不同的系列有很多不同的设备),选择下载调试驱动 (1)创建新工程,保存文件夹a (2)创建新文件(参照一下文件规范化),保存在a里,或者拷贝已有的配套文件 (3)把文件添加到工程 5,单片机有配套的中文资料,文件,和实例程序 6,对照中文资料,看懂配套文
[单片机]
基于STM32实现串口的两个分案解析
首先总结一下串口232,422,485 串口232:可双向传输,全双工,最大速率20Kbps,负逻辑电平,-15V~-3V逻辑“1”,+3V~+15V逻辑“0”。 串口422:可双向传输,4线全双工,2线单工。 串口485:可双向传输,4线全双工,2线单工,最大速率10Mb/s,差分信号,发送端:+2V~+6V逻辑“1”,-2V~-6V逻辑“0”,接收端:+200mV逻辑“1”,-200mV逻辑“0”。 对于串口的实现有以两个方案: 方案一,和原子的《例说STM32》一样,首先接收,然后处理,没有消息验证处理,这样就会出现消息覆盖,消息出错后死机,无法明确区分命令,无法及时应答握手信号。方案二,借鉴uC/OSII的消息队列,进
[单片机]
单片机C语言教程-基础语句
C语言入门之基础语句 从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构。这三种基本结构可以组成所有的各种复杂程序。c语言提供了多种语句来实现这些程序结构。本文将介绍这些基本语句及其应用,使读者对c程序有一个初步的认识,为以后的学习打下基矗 c程序的语句 c程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。 c语句可分为以下五类: 1.表达式语句 2.函数调用语句 3.控制语句 4.复合语句 5.空语句 1.表达式语句 表达式语句由表达式加上分号“;”组成。其一般形式为:表达式;执行表达式语句就是计算表达式的值。例如: x=y+z;赋值语句y+
[单片机]