STM8单片机对温湿度传感器DHT11的驱动设计-二 贴上关键代码以及分析
//复位DHT11
voidDHT11_RST()
{
TIM4_CR1=0x00;//关闭定时器
TIM4_CNTR=0;//保证下次的第一个数据位的准确
DATA_SET;//ODR设置为1
DATA_OUT();//推挽输出模式,此时输出高电平
DATA_CLR;//此时处于主机输出模式,总线拉低
TIM2_Delayus(20000);//拉低20毫秒
DATA_SET;//释放总线
TIM2_Delayus(40);//释放总线以后等待40微秒DHT会发出响应信号
STM32单片机FSMC模块的应用-1.与非总线复用的16位SRAM接口
FSMC配置
SRAM存储器和NOR闪存存储器共用相同的FSMC存储块,所用的协议依不同的存储器类型而有所不同。
控制SRAM存储器,FSMC应该具有下述功能:
使用或禁止地址/数据总线的复用功能。
选择所用的存储器类型:NOR闪存、SRAM或PSRAM。
定义外部存储器的数据总线宽度:8或16位。
使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。
MCS-51单片机并行扩展总线的方法-P2口输出高8位地址A8~A15,P0口为复用口,先输出低8位地址A0~A7,用ALE信号的负跳变将A0~A7送入地址锁存器锁存,P2口和地址锁存器输出作为地址总线,输出地址A0~A15。在ALE将A0~A7送入地址锁存器锁存以后,接着P0口作为数据总线使用来传送数据。
单片机I2C总线的应用原理-I2C总线是开漏引脚并联的结构,因此我们外部要添加上拉电阻。对于开漏电路外部加上拉电阻,就组成了线“与”的关系。总线上线“与”的关系就是说,所有接入的器件保持高电平,这条线才是高电平,而任何一个器件输出一个低电平,那这条线就会保持低电平,因此可以做到任何一个器件都可以拉低电平,也就是任何一个器件都可以作为主机,如图14-1所示,我们添加了 R63 和 R64 两个上拉电阻。
51单片机对智能防火防盗报警系统的设计-本系统通过一个监控室和两个宿舍来模拟,通过RS 485总线来实现通信。考虑到现实中监控室要能监控整栋宿舍楼,因此采用功能强大的ARM7芯片LPC2103作为主机控制芯片,从机采用价格低廉的51系列单片机作为控制芯片。宿舍中采用热释电传感器对人体进行检测,烟雾传感器实现烟火检测,红外传感器实现对宿舍进出人员数量的检测,主机通过RS 485总线对从机实时监控,当有异常出现时,宿舍和监控室的报警装置会同时响起,只有本宿舍成员在本宿舍通过输入从机的密码才可解除报警状态。
C8051F020单片机对触摸屏的驱动控制-在用C8051F020实现对TFT6448BS-5.7的控制过程中,采用总线方式进行控制。因为TFT6448BS-5.7液晶控制器自带有锁存功能,所以在使用总线方式进行控制时并不需要外加锁存芯片,只须使用单片机C8051F020的P0、P2、P3口就可以实现。在系统加电之前,由于C8051F020的典型工作电压为3.3V,TFT6448BS-5.7的工作电压是5V,对P0、P2、P3口相应连接管脚进行驱动能力扩展;根据控制需求,通过P0、P2、P3端口寄存器,将相应端口的引脚配置成漏极输出方式。
如何采用51单片机设计出总线编址电路-带总线扩展接口的单片机系统,包括外部32kRAM扩展、LCDl602接口、输入输出口。带编址扩展的单片机最小系统电路如下图所示。使用74HC573锁存低8位地址;74138实现8个地址扩展,74138的A、B、C接A8~A9,E1接Al5,E2、E3接地常有效,得到OF8FFH到OFFFFH8个地址或者8000H到8700H(无关位用0表示)。
STM32单片机SPI总线与FPGA的通信设计-SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //主模式
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; //16bit宽度
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; //2–18MHz; 4–9MHz; 8–4.5MHz
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //高位在前
SPI_InitStructure.SPI_CRCPolynomial = 7;