单片机

AVR单片机教程——EasyElectronics Library v1.1手册

蹲街弑〆低调 提交于 2019-11-29 17:40:44
索引: bit.h delay.h pin.h wave.h pwm.h led.h rgbw.h button.h switch.h 主要更新: 用枚举类型替换了大部分宏定义; 添加了wave.h、pwm.h、switch.h的文档。 头文件与静态库文件下载: release 。 1. bit.h <bit.h> 定义了用于位操作的宏函数,适用于8或16位整数。 set_bit( r , b ) :将 r 的第 b 位置为1。 reset_bit( r , b ) :将 r 的第 b 位置为0。 read_bit( r , b ) :读取 r 的第 b 位,若为1则返回 (1 << b ) ,否则返回0。 cond_bit( c , r , b ) :若 c 为真,则将 r 的第 b 位置为1,否则置为0。 clock( r , b ) :将 r 的第 b 位翻转2次。 flip( r , b ) :将 r 的第 b 位取反。 BIT_MASK( n , b ) :宏函数,内部使用。 2. delay.h <delay.h> 定义了延时函数。 void delay(uint16_t _time ) : 延时 _time 毫秒。 3. pin.h <pin.h> 定义了引脚操作的函数。 pin_t :枚举类型,表示引脚。 PIN_NULL :表示空引脚。所有接受 pin_t

STM32 AD5304驱动程序

◇◆丶佛笑我妖孽 提交于 2019-11-29 16:05:06
一个项目需要用到四路DAC,STM32内置2路DAC,当然,也可以使用PWMDAC的方法得到。考虑使用环境比较恶劣,尽量都使用的集成芯片,以及快速开发。这里我选用了ADI的AD5304,因为对精度要求不高,所以八位DAC也足够使用要求。如果需要更高精度的,它和AD5314(十位)以及AD5324(十二位)可以Pin To Pin替换。 接下来就是苦逼的煎熬模式了,其他的功能都还算顺利的调试完成。只有AD5304有问题,数据一直出不来。有时出来了却不是我设置的值。我反复对照Datasheet中的时序图,就是下面这货。 很明显,每次传输的数据是16Byte,在发送数据之前,CS(SYNC)先要给个下降沿信号(先拉高再拉低),注意,是保持拉低状态,然后DIN数据在每个SCLK的时钟信号的下降沿时将数据发送给AD5304,在16位数据发送结束后,将片选CS(SYNC)置高(置低亦可).到这里都很正常,毕竟ADI是个大公司,而且这样符合SPI的时序。很简单嘛,感觉分分钟就可以写好。 OK,具体每个位的数据是什么意思呢?这个在Datasheet中也有介绍。如下: 可以看到,AD53X4系列的控制方式也很类似,只是有效的数据位不同。这个图可以看的很明白,最高位(bit15)是要设置的通道的高位,bit14是通道的地位,接下来是两个位的说明是这样的。。。 PD是是否使能的管脚

【C51】点亮LED灯

大兔子大兔子 提交于 2019-11-29 15:13:17
一:硬件   硬件上,需要准备一个单片机系统,可以是开发板,也可以是自己焊接的最小系统。   开发板一般集成了烧录模块,可以使用烧录软件直接烧录使用,自己焊接的最小系统,可以把单片机在开发板上完成烧录后,再安装到单板上上电运行。 二:软件   软件上,需要一个烧录软件(比如:STC-ISP V6.85,可以在www.stcmcu.com下载),一个开发软件(比如Keil C51,可以在https://www.keil.com/download/product/选择C51下载)。 三:开发程序   使用Keil C51编写C程序,编译为hex文件,再通过烧录软件烧录hex程序到单片机上,上电执行,即可完成第一个点亮LED灯的程序: #include<reg52.h> sbit led1 = P1^0; void main() { while(1) { led1 = 0; } } 来源: https://www.cnblogs.com/happylich/p/11520928.html

新塘 N76E003 单片机在 Keil 中下载程序以及下载引脚复用

℡╲_俬逩灬. 提交于 2019-11-29 14:46:17
1.安装好下载器相关的其他驱动,就是用下载工具可以下载。 2.打开 Keil ,插上下载器,这时会提示升级固件,一路同意就好,最后还需要拔下再插上,然后在 Keil中选择: 3.点击“Settings”,如下图设置: 4.设置好之后就可以直接在 Keil 中下载程序了。 最后是关于两个下载引脚复用的问题: 在下载设置中这样选择,下载完成后,断电重新上电就可以当作正常IO使用了,程序中不用书写代码设置。 来源: 51CTO 作者: YPB39155 链接: https://blog.51cto.com/ypb39155/2327355

STM32入门学习路线

余生长醉 提交于 2019-11-29 08:11:44
  可以说就目前的市场需求来看,stm32在单片机领域已经拥有了绝对的地位,51什么的已经过时了也只能拿来打基础了,最后依然会转到stm32来,也正是因为这样stm32的学习者越来越多,其中不难发现绝大部分的stm32的学习者是在入门阶段的,所以今天我们就来聊聊stm32的入门学习路线。   先来看个图,相信会有所了解。      首先学习stm32 不管是C语言还是汇编肯定跑不了的所以C语言一样要打好基础,尤其是C语言中的指针,结构体,循环 等等一些最基础的知识你要能够熟练应用,要不然对于从事stm32开发的难度是非常大的。   针对C语言我给大家推荐一个视频资料虽然是某某机构录的资料不过讲的倒是很详细值得一看   C语言入门视频教程_9天精通Linux C语言   书籍的话其实不用买纸质的现在晚上电子版的pdf很多可以搜一下,我推荐两本《C和指针》《C语言核心技术》看着都还可以,网上就有我就不上传了。   然后就是要学会读stm32手册,不要小看这个现在市面上stm32的本子很多,原子,野火等等每一个公司的板子多少有些不同,没必要都去学会如果是那样我们的学习成本会成倍增长,毕竟每学习一个板子就要买一块板子,所以学会一个板子之后其他板子也是有很多相同的不同的那一部分我们学会读手册和文档就OK了。   至于其中的一些细节只是像什么中断,时钟,外设,ADC,DMA就不给大家一

单片机综合练习 - 多功能时钟

大兔子大兔子 提交于 2019-11-29 06:33:27
结合前几天来写过的文章, 今天总算写了一个功能较多的应用 - 多功能时钟, 集时钟, 秒表, 温度计一体. 基础文章: 1. 单片机练习 - DS18B20温度转换与显示 2. 用C51编写单片机延时函数 3. 单片机练习 - 定时器 4. 单片机练习 - 计时器 实验板: TX-1B实验板 6位数码管与单片机的连接电路图 按键S2, S3与单片机的连接电路图: 其中S2与P3.4连, S3与P3.5连接... DS18B20与单片机连接电路图: 具体按键功能分配请看源代码注释部分: 多功能时钟 1 // 多功能时钟, 精确到小数0.01秒, 即10ms 2 // 功能: 时钟, 秒表, 温度计 3 4 /**/ /* 5 S5键为功能选择键, 上电默认使用时钟功能 6 功能顺序为: 时钟, 温度计, 秒表 7 8 mode = 1. 时钟(每次掉电后都要重新设置时间) 9 1)当选中时钟功能时, 具体按键功能如下: 10 11 2)可设置时分秒, 时利用发光二极管显示, 分秒用数码管显示 12 13 3)时钟: 采用定时器0计时, 工作方式1 14 15 mode = 2. 时钟设置模式 16 当选中时钟设置模式 17 S2为位选, S3为增加选中位的值 18 S4确定更改, S5放弃更改, 进入秒表模式 19 20 mode = 3. 秒表 21 1)当选中秒表功能时,

NE76003单片机调试DS18B20 步骤

允我心安 提交于 2019-11-29 06:31:06
一.硬件部分 GND脚接地; DQ脚接P03,外加4K7上拉电阻; VCC脚接3.3v供电; 二.软件部分 1.配置P03为准准双向 IO类型: void Init_power_gpio(void) {   P03_Quasi_Mode; //DS18B20   P03=1; } 2.配置定时器2(可任意选用定时器): void Timer2_init(void) { //系统上电默认16M高速时钟源使能,并作为系统时钟   clr_TR2;      //TR2停止时写入重新装载值    TIMER2_DIV_16;   //使用1/16分频 一秒震动为16000000/16   TIMER2_Auto_Reload_Delay_Mode; //配置为自动重装载模式   RCMP2L =(65536-1)/256;      RCMP2H =(65536-1)%256;   TL2 = 0;        //重装载值   TH2 = 0;        //  set_ET2;       //使能定时器3中断 //  set_EA;       //使能所有中断   set_TR2;       //使能定时器3 } 3.初始化: /*---------------------------------------------------------- 函数名称:void

MicroPython技术及应用前景

跟風遠走 提交于 2019-11-29 06:24:59
1 Micropython技术是什么? MicroPython极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行。 1.1 MicroPython发展 由剑桥大学的理论物理学家乔治.达明设计,遵循MIT许可协议,与Arduino类似,拥有自己的解析器、编译器、虚拟机和类库等,MicroPython更强大。目前它支持基于32-bit的ARM处理器,比如STM32F405、STM32f407等,也就是说ARM处理器STM32F405上直接可运行Python语言,用Python语言来控制单片机。在单片机上能运行Python,实际上Python已经完全脱离系统,也就是说,你可以通过Python脚本语言开发单片机程序。 1.2 MicroPython支持的芯片 支持的mcu系列有:stm32f405、stm32f407,也支持esp8266,接下来会增强stm32f103和esp32的稳定性,芯片将会扩展到FPGA和A7。 1.3 MicroPython固件 固件就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机或手机等都有内部固件。 主要由以下构成: py/--核心python实现

为什么单片机一开始是汇编

匆匆过客 提交于 2019-11-29 03:23:28
启动代码 为什么启动代码一定一要用汇编语言编写,启动代码的主要功能是什么?单片机不用启动代码,为什么arm要用启动代码? ------解决方案-------------------------------------------------------- 最开始的几行代码要完成初始化中断向量,堆栈什么的。这些只能用汇编做。 ------解决方案-------------------------------------------------------- CPU上电后会从IO空间的某地址取第一条指令。但此时:PLL没有启动,CPU工作频率为外部输入晶振频率,非常低;CPU工作模式、中断设置等不确定;存储空间的各个BANK(包括内存)都没有驱动,内存不能使用。在这种情况下必须在第一条指令处做一些初始化工作,这段初始化程序与操作系统独立分开,称之为bootloader。 一个嵌入式Bootloader最初始部分的代码几乎必须是用汇编语言写成的,因为开发板刚上电后没有准备好C程序运行环境,比如堆栈指针SP没有指到正确的位置。汇编代码应该完成最原始的硬件设备初始化,并准备好C运行环境,这样后面的功能就可以用C语言来写了。 ------解决方案-------------------------------------------------------- 1. C language 沒有

【编程漫谈】程序的运行环境

天大地大妈咪最大 提交于 2019-11-28 23:08:26
很多人即使“Hello,world!”这样的程序也未必能运行起来。比如你会C++了,但如果让你用DirectX,在屏幕显示一个转动的3D“Hello,World!”你还觉得那么轻松吗? 或者给你一块32*16的二色LED屏,然后在上边滚动显示“Hello,World!”,那你是不是又要懵圈了?如果答案是“是”,那就对了。当年谭浩强的C语言教程也是看得我一脸的懵逼,当时只觉得自己蠢到家了,连个入门的C语言都玩不来,以后还怎么在IT界混啊?但后来经过多年摸索发现,不是自己蠢,而是完全被这本书给误导了。 一本语言类教程居然可以脱离运行环境,单纯地只讲语言,这让许多误认为用记事本写段代码保存为文本文件.c结尾的文本就可以了,然后就没有然后了。就如同我之前写的一些C语言的示例,可能很多初学者根本就不知道gcc为何物,也不知道gcc在哪里,即使知道也不知道怎么用。所以,在每学一门语言的,你得知道这门语言写出来的程序是如何运行的。 以C举例,大家可能知道C的用途很广,但实际并不知道C是如何运用的,作者本来以前也仅仅知道有个叫turbo C的东东,一个文本界面的C编辑器,编辑完了可以编译运行,仅此而已,对于C程序如何在单片机上运行就毫无概念了,其实这就是对运行环境的不理解。在PC上,用C写的程序,经过编译及组装变成可执行程序,在Windows上表现为.exe程序