这个程序哪里错了啊,为什么下hex文件下载到单片机机里后按k3蜂鸣器不响

单片机、电路板
连接器、接插件
其他元器件
单片机驱动蜂鸣器的设计方案
单片机驱动蜂鸣器的设计方案
蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。   蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。   电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。  压电式
蜂鸣器是一种一体化结构的讯响器,本文介绍如何用驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。   蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。   电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。  压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。  下面是电磁式蜂鸣器的外形图片及结构图  电磁式蜂鸣器实物图: 电磁式蜂鸣器结构示意图:  电磁式蜂鸣器内部构成:   1. 防水贴纸   2. 线轴   3. 线圈   4. 磁铁  5. 底座   6. 引脚   7. 外壳   8. 铁芯  9. 封胶   10. 小铁片   11. 振动膜   12. 电路板  一、电磁式蜂鸣器驱动原理  蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个C8550来放大驱动蜂鸣器,原理图见下面图3: S51增强型单片机实验板蜂鸣器驱动原理图:  蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。  程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。 二、蜂鸣器列子  下面我们举几个简单的单片机驱动蜂鸣器的编程和电路设计的列子。  1、简单的蜂鸣器实验程序:本程序通过在P3.7输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中DELAY延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20KHZ以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。大家可以在实验中更改#228为其他值,听听蜂鸣器音调的改变。  ORG 0000H   AJMP MAIN ;跳转到主程序  ORG 0030H   MAIN: CPL P3.7 ;蜂鸣器驱动电平取反   LCALL DELAY ;延时   AJMP MAIN ;反复循环  DELAY:MOV R7,#228 ;延时子程序,更改该延时常数可以改变蜂鸣器发出的音调   DE1: DJNZ R7,DE1   RET   END  2、倒车警示音实验程序:我们知道各种卡车、货柜车在倒车时候,会发出倒车的蜂鸣警示提示音,同时警示黄灯也同步闪烁,提醒后面的人或车辆注意。本实验例程就实现倒车警示功能,通过实验板上的蜂鸣器发出警示音,同时通过实验板上P1.2和P1.5上的两个黄色发光来发出黄色警示灯。  ORG 0000H   AJMP START ;跳转到初始化程序  ORG 0033H   START:   MOV SP,#60H ;SP初始化   MOV P3,#0FFH ;端口初始化  MAIN: ACALL SOUND ;蜂鸣器发声   ACALL YS500M ;延时   AJMP MAIN  SOUND:   MOV P1,#B ;点亮2个警示黄色发光二极管   MOV R2,#200 ;响200个周期   SND1: CLR P3.7 ;输出低电平T1导通,蜂鸣器响   ACALL YS1延时   SETB P3.7 ;输出高电平T1截止,蜂鸣器不响   ACALL YS1延时   DJNZ R2,SND1   MOV P1,#0FFH ;熄灭黄色警示灯   RET  YS1ms: ;1ms延时子程序   MOV R0,#2   YL1: MOV R1,#250 ;改变R0的数值可改变声音频率   DJNZ R1,$   DJNZ R0,YL1   RET  YS500M: ;500ms延时子程序   MOV R0,#6   YL2: MOV R1,#200   YL3: MOV R2,#250   DJNZ R2,$   DJNZ R1,YL3   DJNZ R0,YL2   RET  END  3、&叮咚&电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出&叮咚&声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出&叮咚&音乐声,是一个比较实用的程序。  &叮咚&电子门铃实验ASM源程序: &叮咚&电子门铃C语言源程序:   ORG 0000H   LJMP START ;跳转到初始化程序  ORG 000BH   LJMP PGT0 ;跳转到T0中断服务程序   START:   OBUF1 EQU 30H ;初始化程序   OBUF2 EQU 31H   OBUF3 EQU 32H   OBUF4 EQU 33H   FLAGB BIT 00H   STOPB BIT 01H   K1 BIT P3.2 ;定义按钮K1,作为门铃按钮  MOV TMOD,#02H ;定时器初始化   MOV TH0,#06H   MOV TL0,#06H   SETB ET0 ;启动定时器T0   SETB EA ;启动总中断  MAIN: ;主程序   JB K1,MAIN ;检测K1按钮   LCALL YS10M ;延时去抖动   JB K1,MAIN   SETB TR0 ;按钮有效   MOV P1,#00H ;点亮按钮指示灯   MOV OBUF1,#00H   MOV OBUF2,#00H   MOV OBUF3,#00H   MOV OBUF4,#00H   CLR FLAGB   CLR STOPB   JNB STOPB,$   MOV P1,#0FFH   LJMP MAIN ;发出&叮咚&完毕,返回重新检测按钮  YS10M: ;10ms延时子程序   MOV R6,#20   D1: MOV R7,#248   DJNZ R7,$   DJNZ R6,D1   RET  PGT0: ;定时器T0中断服务程序   INC OBUF3 ;中断服务程序中发出一声&叮咚&响声   MOV A,OBUF3   CJNE A,#100,NEXT   MOV OBUF3,#00H   INC OBUF4   MOV A,OBUF4   CJNE A,#20,NEXT   MOV OBUF4,#00H   JB FLAGB,PGSTP   CPL FLAGB   AJMP NEXT   PGSTP:   SETB STOPB   CLR TR0   LJMP INT0RET   NEXT: JB FLAGB,SOU2   INC OBUF2   MOV A,OBUF2   CJNE A,#03H,INT0RET   MOV OBUF2,#00H   CPL P3.7   LJMP INT0RET   SOU2: INC OBUF1   MOV A,OBUF1   CJNE A,#04H,INT0RET   MOV OBUF1,#00H   CPL P3.7   LJMP INT0RET   INT0RET:   RETI  END   #include   unsigned char obuf1;   unsigned char obuf2;   unsigned int obuf3;       void main(void)   {   unsigned char i,j;  TMOD=0x02; //定时器T0初始化   TH0=0x06;   TL0=0x06;   ET0=1;   EA=1; //允许总中断  while(1)   {   if(P3_2==0) //检测K1按键   {   P1=0x00;   for(i=10;i&0;i--)   for(j=248;j&0;j--);   if(P3_2==0)   {   obuf1=0;   obuf2=0;   obuf3=0;   flagb=0;   stopb=0;   TR0=1; //启动定时器T0,发出&叮咚&声   while(stopb==0);   P1=0   }   }   }   }  void t0(void) interrupt 1 using 0   {   obuf3++;   if(obuf3==2000)   {   obuf3=0;   if(flagb==0)   {   flagb=~   }   else   {   stopb=1;   TR0=0;   }   }   if(flagb==0)   {   obuf2++;   if(obuf2==3)   {   obuf2=0;   P3_7=~P3_7;   }   }   else   {   obuf1++;   if(obuf1==4)   {   obuf1=0;   P3_7=~P3_7;   }   }   }
蜂鸣器是一种一体化结构的讯响器,本文介绍如何用驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。   蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。   电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。  压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。  下面是电磁式蜂鸣器的外形图片及结构图  电磁式蜂鸣器实物图: 电磁式蜂鸣器结构示意图:  电磁式蜂鸣器内部构成:   1. 防水贴纸   2. 线轴   3. 线圈   4. 磁铁  5. 底座   6. 引脚   7. 外壳   8. 铁芯  9. 封胶   10. 小铁片   11. 振动膜   12. 电路板  一、电磁式蜂鸣器驱动原理  蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个C8550来放大驱动蜂鸣器,原理图见下面图3: S51增强型单片机实验板蜂鸣器驱动原理图:  蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。  程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。 二、蜂鸣器列子  下面我们举几个简单的单片机驱动蜂鸣器的编程和电路设计的列子。  1、简单的蜂鸣器实验程序:本程序通过在P3.7输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中DELAY延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20KHZ以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。大家可以在实验中更改#228为其他值,听听蜂鸣器音调的改变。  ORG 0000H   AJMP MAIN ;跳转到主程序  ORG 0030H   MAIN: CPL P3.7 ;蜂鸣器驱动电平取反   LCALL DELAY ;延时   AJMP MAIN ;反复循环  DELAY:MOV R7,#228 ;延时子程序,更改该延时常数可以改变蜂鸣器发出的音调   DE1: DJNZ R7,DE1   RET   END  2、倒车警示音实验程序:我们知道各种卡车、货柜车在倒车时候,会发出倒车的蜂鸣警示提示音,同时警示黄灯也同步闪烁,提醒后面的人或车辆注意。本实验例程就实现倒车警示功能,通过实验板上的蜂鸣器发出警示音,同时通过实验板上P1.2和P1.5上的两个黄色发光来发出黄色警示灯。  ORG 0000H   AJMP START ;跳转到初始化程序  ORG 0033H   START:   MOV SP,#60H ;SP初始化   MOV P3,#0FFH ;端口初始化  MAIN: ACALL SOUND ;蜂鸣器发声   ACALL YS500M ;延时   AJMP MAIN  SOUND:   MOV P1,#B ;点亮2个警示黄色发光二极管   MOV R2,#200 ;响200个周期   SND1: CLR P3.7 ;输出低电平T1导通,蜂鸣器响   ACALL YS1延时   SETB P3.7 ;输出高电平T1截止,蜂鸣器不响   ACALL YS1延时   DJNZ R2,SND1   MOV P1,#0FFH ;熄灭黄色警示灯   RET  YS1ms: ;1ms延时子程序   MOV R0,#2   YL1: MOV R1,#250 ;改变R0的数值可改变声音频率   DJNZ R1,$   DJNZ R0,YL1   RET  YS500M: ;500ms延时子程序   MOV R0,#6   YL2: MOV R1,#200   YL3: MOV R2,#250   DJNZ R2,$   DJNZ R1,YL3   DJNZ R0,YL2   RET  END  3、&叮咚&电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出&叮咚&声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出&叮咚&音乐声,是一个比较实用的程序。  &叮咚&电子门铃实验ASM源程序: &叮咚&电子门铃C语言源程序:   ORG 0000H   LJMP START ;跳转到初始化程序  ORG 000BH   LJMP PGT0 ;跳转到T0中断服务程序   START:   OBUF1 EQU 30H ;初始化程序   OBUF2 EQU 31H   OBUF3 EQU 32H   OBUF4 EQU 33H   FLAGB BIT 00H   STOPB BIT 01H   K1 BIT P3.2 ;定义按钮K1,作为门铃按钮  MOV TMOD,#02H ;定时器初始化   MOV TH0,#06H   MOV TL0,#06H   SETB ET0 ;启动定时器T0   SETB EA ;启动总中断  MAIN: ;主程序   JB K1,MAIN ;检测K1按钮   LCALL YS10M ;延时去抖动   JB K1,MAIN   SETB TR0 ;按钮有效   MOV P1,#00H ;点亮按钮指示灯   MOV OBUF1,#00H   MOV OBUF2,#00H   MOV OBUF3,#00H   MOV OBUF4,#00H   CLR FLAGB   CLR STOPB   JNB STOPB,$   MOV P1,#0FFH   LJMP MAIN ;发出&叮咚&完毕,返回重新检测按钮  YS10M: ;10ms延时子程序   MOV R6,#20   D1: MOV R7,#248   DJNZ R7,$   DJNZ R6,D1   RET  PGT0: ;定时器T0中断服务程序   INC OBUF3 ;中断服务程序中发出一声&叮咚&响声   MOV A,OBUF3   CJNE A,#100,NEXT   MOV OBUF3,#00H   INC OBUF4   MOV A,OBUF4   CJNE A,#20,NEXT   MOV OBUF4,#00H   JB FLAGB,PGSTP   CPL FLAGB   AJMP NEXT   PGSTP:   SETB STOPB   CLR TR0   LJMP INT0RET   NEXT: JB FLAGB,SOU2   INC OBUF2   MOV A,OBUF2   CJNE A,#03H,INT0RET   MOV OBUF2,#00H   CPL P3.7   LJMP INT0RET   SOU2: INC OBUF1   MOV A,OBUF1   CJNE A,#04H,INT0RET   MOV OBUF1,#00H   CPL P3.7   LJMP INT0RET   INT0RET:   RETI  END   #include   unsigned char obuf1;   unsigned char obuf2;   unsigned int obuf3;       void main(void)   {   unsigned char i,j;  TMOD=0x02; //定时器T0初始化   TH0=0x06;   TL0=0x06;   ET0=1;   EA=1; //允许总中断  while(1)   {   if(P3_2==0) //检测K1按键   {   P1=0x00;   for(i=10;i&0;i--)   for(j=248;j&0;j--);   if(P3_2==0)   {   obuf1=0;   obuf2=0;   obuf3=0;   flagb=0;   stopb=0;   TR0=1; //启动定时器T0,发出&叮咚&声   while(stopb==0);   P1=0   }   }   }   }  void t0(void) interrupt 1 using 0   {   obuf3++;   if(obuf3==2000)   {   obuf3=0;   if(flagb==0)   {   flagb=~   }   else   {   stopb=1;   TR0=0;   }   }   if(flagb==0)   {   obuf2++;   if(obuf2==3)   {   obuf2=0;   P3_7=~P3_7;   }   }   else   {   obuf1++;   if(obuf1==4)   {   obuf1=0;   P3_7=~P3_7;   }   }   }
上一篇:已经是第一篇
型号/产品名
深圳市优创鑫电子有限公司
深圳市楷成俊模块商行
深圳市楷成俊模块商行后使用快捷导航没有帐号?
手机&智能终端
元器件/物料库
当前位置:
查看: 2765|回复: 10
基于STM32的无线温度检测报警系统
本帖最后由 while 于
11:40 编辑
基于STM32的无线温度检测报警系统
目 录1.引言................................................... 12.系统设计方案........................................... 12.1设计功能要求.......................................... 12.2方案的分析及选择...................................... 13系统硬件设计............................................ 33.1最小系统........................................ 33.2温度采集模块.......................................... 33.3无线模块.............................................. 43.4液晶显示模块.......................................... 53.5按键控制模块.......................................... 63.6报警模块.............................................. 64.系统软件设计........................................... 74.1系统的主流程图........................................ 75.系统实物与调试.......................................... 86.结论..................................................10
& && && && && && && && &&&1引言温度是一个非常重要的物理量,人民的生活环境与温度息息相关。在工业控制现场,人们常常需要采集大量的物理数据,如电压、电流、温度、湿度等,温度可以直接影响燃烧、化学反应、结晶以及空气流动等物理和化学过程。如果温度控制失误就可能会引起生产安全、产品质量等一系列问题,因此温度的测量对生产生活意义重大。生活中大气层温度高低,空调房中温度的高低,这些直接影响着人们的健康生活;在大规的模集成电路生产上,环境温度的适当直接会严重影响产品的质量。在许多测控的现场,传统数据传输都是通过有线电缆实现的。无线数据传输与有限数据传输相比,有许多优点:一是成本低,无需大量布线;二是建网速度快,只需在终端连接无线数据传输模块;三是适应性好,可应用于某些特殊环境;四是扩展性好,只需将设备与无线数据传输模块相连接。因此,无线传输是一种有效数据传输方式。在工业现场,由于生产环境十分恶劣,工作人员不能长时间停留在现场检查设备是否运行正常,所以就需要采集数据并传输数据到一个环境相对好的操控室内。利用无线传输的方式进行数据的采集,不但能保证生产的自动化、智能化能够顺利、安全进行,从而更能提高企业的生产效率。本文主要研究以单片机最小系统为核心,由温度采集模块、无线模块、液晶显示模块、报警模块以及按键控制模块组成的无线温度检测报警系统,用以实现通过按键控制系统报警温度,同时液晶屏显示对应的实时温度和报警温度。2系统设计方案2.1设计功能要求& & 无线温度检测温度报警系统的设计要求为工业生产远距离实时监测温度,具有无线测温,控制温度报警上下限等功能。系统电路总体上分为单片机最小系统、温度采集模块、无线模块、液晶显示模块、报警模块以及按键控制模块。此次设计以单片机最小系统作为核心控制电路,另外选取适当的蜂鸣器模块,完成超出温度限制报警的功能,并且选取合适的显示屏,将实时温度显示出来。要求系统稳定,报警及显示准确。2.2方案的分析及选择& & 单片机最小系统是整个电路的核心模块,它控制整个系统的运行,利用其各个口分别控制其他模块,使其他模块能够成为一个整体,要实现这些基本功能,STM32较其他的单片机更加有优势,STM32系列基于的嵌入式应用专门设计的 Cortex-M3内核,高性能、低成本、低功耗、处理速度更快。因而,我选择用STM32系列完成设计。对于温度采集模块的选择,符合设计要求的方案普遍使用热敏电阻,但可靠性差,对于检测误差在1摄氏度范围内的信号是不适用的,采用数字温度传感器DS18B20测量温度,输出信号全数字化,可以单片机直接连接,便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该传感器的物理化学性都很稳定,能用作于工业测温传感器。此传感器线行较好,DS18B20传感器的最大特点之一就是单总线的数据传输,提高了信号的精度以及稳定性。而且,数字温度传感器DS18B20的使用,能有效的避免外界的干扰,提高测量电路的精确度。所以数字集成芯片的使用将成为电路发展的一种趋势。本方案采用数字温度传感器DS18B20,也是顺应这一趋势。综上所述,传感器选用数字温度传感器DS18B20测量温度更符合系统要求。无线模块我们对比了NRF24L01和NRF905。NRF905因工作频率与NRF2401A、NRF24L01和NRF24L01+的工作频率的不同,所以它无法与其它任何一种无线芯片之间进行通讯。.NRF24L01工作于2.4 GHz~2.5 GHz ISM频段,是一款新型单片收发器件。内置调制器、晶振、功率放大器、频率合成器等模块,并融合了增强型ShockBurst技术,其输出功率可通过程序进行配置[1]。NRF24L01功耗低,在以-6 dBm的功率发射时,工作电流仅9mA而接收时,工作电流仅12.3mA,多种低功率工作模式使节能设计更加方便。& & 液晶显示模块是整个系统的辅助模块,用来显示实时温度,目前液晶显示多采用LCD12864及LCD1602芯片,虽然LCD12864可以直接调用,使用比较方便,但是本设计主要显示英文和字符,为节约成本,所以设计方案采用LCD1602液晶显示屏。对于按键模块,采用K1至K3三个独立按键,K1为报警温度设置键,按下时,弹出报警温度的上限和下限,首次按下报警温度上限数字闪烁,再次按下报警温度下限数字闪烁,再次按下返回实时温度显示。K2和K3分别为增加和减小键,通过K2和K3来调节报警温度上限和下限的大小。综上所述,按照系统功能的具体要求,在保证实现其功能的基础上,尽可能降低系统成本,初步确定系统的方案如图1所示。
QQ图片26.png (16.35 KB, 下载次数: 0 )
23:05 上传
图1 系统初步方案3系统硬件设计3.1单片机最小系统STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。内核最高工作频率72MHz,1.25MIPS/MHz。单周期乘法和硬件除法。STM32单片机最小系统一般由微控制器芯片、供电电路、时钟电路、复位电路、启动配置电路和程序下载电路。电源的工作电压为3.3V,由于常用电源为5V,必须采用转换电路将5V电压转换为3.3V电压。时钟是内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路,用于CPU时钟。带用于RTC的32kHz的晶振。复位采用按键和保护电阻电容构成复位电路,按下按键将触发系统复位。启动模式由BOOT0和BOOT1选择,为便于设置,BOOT0接电平,且和BOOT1通过2x2插针相连接,通过跳线可配置三种启动模式[2]。下载程序是JTAG接口,JTAG是国际标准测试协议,主要用于芯片内部测试,采用4线的下载方式,有效节省I/O口。图2单片机最小系统。
QQ图片09.png (24.98 KB, 下载次数: 0 )
23:05 上传
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlp1/01/clip_image004.gif
图2 单片机最小系统
3.2温度采集模块DS18B20是Dallas公司继DS1820后推出的一种改进型数字温度传感器,与传统的测温热敏电阻相比,仅需一根线就可直接读出被测温度,而且可以根据实际需要来编程实现9~12为数字值的读数方式[3]。DS18B20的外形如一只三极管,第1脚GND接地端,第2脚DQ位数据输入和输出脚,与TTL电平兼容。第三脚VDD可接电源,也可接地。因为DS18B20可以设置成两种供电方式,数据总线供电方式和外部供电方式[4]。采用数据总线供电方式时VDD接地端,可以节省一根传输线,但完成测量的时间较长;采用外部供电方式则VDD接电源,需要多用一根导线,但测量速度相对较快。DS18B20 温度传感器高耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温以及控制领域[5]。温度传感器的分辨率最大可达0.0625 ℃,测温范围是-55℃~125℃,可以直接读出被测温度值。此外,采用3 线制与单片机相连,简化了外部硬件电路,易使用,成本低。工作原理是DS18B20先初始化,然后采集环境温度,接着将处理过后的数据传输给单片机PB1口。其实际电路如图3所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
QQ图片57.png (5.79 KB, 下载次数: 0 )
23:06 上传
图3 温度采集模块3.3无线模块NRF24L01是一款无线收发器芯片,工作在2.4~2.5GHz世界通用频段。无线收发器包括:频率发生器、SchockBurst模式控制器、功率放大器、晶振、调制器、解调器[6]。输出功率、频道选择和协议的设置可通过接口进行设置。此款芯片最大的特点之一就是极低的电流消耗,当芯片工作在发射模式下发射功率为-6dB时电流消耗仅为9mA,接收模式时仅为12.3mA。掉电模式和待机模式下电流消耗更低。其中,NRF24L01的第3脚CE接单片机PA4脚,CE为使能发送或接受。IRQ为中断信号,NRF24L01主要是通过IRQ与单片机进行通信。MISO和MOSI均为芯片控制数据线。图4为NRF24L01。NRF24L01的工作原理是发射数据时,首先将NRF24L01配置为发射模式:接着把接收节点地址和有效数据按照时序由SPI口写入NRF24L01缓存区,然后将CE置为高电平并保持至少10μs,延迟130μs后发射数据,若自动应答开启,那么NRF24L01在发射数据后进入接收模式,接收应答信号[7]。如果收到应答,则认为此次通信成功,若未收到应答,则自动重新发射该数据,若重发次数达到上限,达到最多次中断位置高,便于再次重发。数据发送完成中断位置高时,使IRQ(中断信号)变低电平,产生中断,通知单片机STM32。最后发射成功时,若CE为低则NRF24L01进入待机模式1,若发送堆栈中有数据且CE为高,则进入下一次发射,若发送堆栈中无数据且CE为高,则进入待机模式2。接收数据时,先将NRF24L01配置为接收模式,接着延迟130μs后进入接收状态等待数据的到来。当接收方检测到有效的地址时,将数据包存储在寄存器中,同时接受数据中断标志位置高,IRQ变低电平,产生中断,通知单片机取数据。若此时自动应答开启,则接收方同时进入发射状态,回传应答信号[8]。最后接收成功时,若CE变低,则NRF24L01进入待机模式1。
QQ图片37.png (11.26 KB, 下载次数: 0 )
23:06 上传
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
& && && && & 图4 无线收发模块
3.4液晶显示模块1602液晶是一种点阵型液晶模块,专门用来显示字母、数字、符号[9]。它由若干个点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,因此它不能很好地显示图形。1602LCD是指显示的内容为16×2,即可以显示两行,每行16个字符的液晶模块。如图5所示,1602采用标准的16脚接口,其中,第4脚RS接单片机PB5,RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚RW接单片机PB6,RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。第6脚EN接单片机PB7,EN端为使能端,高电平1时读取信息,跳变成低电平时执行指令。
QQ图片24.png (13.06 KB, 下载次数: 0 )
1引言 温度是一个非常重要的物理量,人民的生活环境与温度息息相关。在工业控制现场,人们常常需要采集大量 ...
23:06 上传
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif 图5 液晶显示模块3.5按键控制模块& & 独立式键盘是最简单的键盘电路,各个按键相互独立,每个按键独立的与一根数据输入线连接,其特点是每个按键单独占用一根I/O口线,各个按键的工作不会影响到其他I/O口线的状态[10]。本设计采用三个独立按键,一端接地,另一端分别连接单片机。任何一个键按下时,通过门电路都会向CPU申请中断,在终端服务程序中,读入按键的对应值,从而判断是哪一个按键被按下,再执行相应的动作。查询时,平时所有的数据输入线都通过上拉电阻被连接成高电平;当任何一个键被压下时,与之连接的数据输入线将被拉成低电平,要判断是否有键被压下,只要用位处理指令即可[11]。本系统分别设置了设置键、增加键、减少键三个按键,操作简单而且不容易出错。3.6报警模块蜂鸣器主要分为两种类型,一种是压电式蜂鸣器,一种是电磁式蜂鸣器,本系统采用的是电磁式蜂鸣器。电磁式蜂鸣器主要是由振荡器、电磁线圈、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场[12]。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。如图6所示,我们可以通过程序控制PB0脚的电平来使蜂鸣器发出声音和关闭,蜂鸣器的正极接到VCC电源上面,蜂鸣器的负极接到三极管的发射极,三极管的基级经过限流电阻R7后由单片机的PB0引脚控制,当PB0输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当PB0输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
QQ图片10.png (4.58 KB, 下载次数: 0 )
23:07 上传
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif 图6 报警模块4系统软件设计4.1系统的主流程图在对所要设计的课题有了整体的了解之后,需要先建立程序框架的流程图,对整个设计划分模块,逐个模块实现其功能,最终把各个子模块合理的连接起来,构成总的程序[13]。系统主要分为无线发送模块和无线接收模块。
QQ图片56.png (15.73 KB, 下载次数: 0 )
23:07 上传
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif 图7 无线发送模块流程图 & & 如图7无线发送模块流程图。主程序首先要对整个系统进行初始化,然后将指令传给芯片DS18B20温度传感器,温度传感器采集温度信息,将温度信息以数字信号直接发送给单片机STM32,单片机将数据传输给无线发送芯片NRF24L01,然后由NRF24L01发送信号给接受模块。& &
QQ图片42.png (37.16 KB, 下载次数: 0 )
23:08 上传
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.gif 图8 无线接收模块流程图 & && &&&& & 图8为无线接收模块流程图,首先系统初始化,然后判断是否接受到了NRF24L01发送模块发送来的信息,没有接收到则循环判断,接收到发送程序则调用NRF24L01接收程序,NRF24L01将温度数据传输给STM32单片机,LCD液晶屏显示温度,此时判断温度是否超出报警限制,超出则蜂鸣器持续报警,直至温度低于限制,通过按键来控制报警温度。本设计的软件设计选择单片机C语言进行编程,先分模块进行撰写,单独验证成功之后,再撰写总程序的maiN函数,调用所有子程序来实现整体设计功能。其主程序流程图如图7所示。整个系统程序采用模块化结构设计程序相对比较优化易修改和调试[14]。5系统实物与调试本设计是在Keil C环境下开发的,Keil C软件支持C语言的编程及调试,运用方便,按照事先画好的电路图,将元件以及模块在万能版上焊接完成,完成后测试电路有无短路断路的情况,检查无误后,开始调试系统的运行情况。给系统通电,参照单片机书上的并口显示程序撰写软件,将程序烧入单片机,先让显示模块显示初始化信息,看看显示内容是否准确无误且清晰,然后调试按键模块,按下K1设置温度,按下K2、K3,检查数字显示是否增加减小。然后调试无线模块、温度采集模块和报警模块,首先设置温度上限为28度,手指捏住DS18B20温度传感器,温度显示增加,超过28度蜂鸣器报警。最后实物图如图8所示。
E22CAAJD80[0N70{$K_5@`I.png (1.11 MB, 下载次数: 0 )
23:08 上传
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg图8 实物图
6结论本设计经过硬件的焊接及软件编程,最终基本上实现了预期的各项要求。在单片机及独立按键的控制下,温度采集模块也能够准确的采集实时温度,同时,系统能够通过液晶显示屏清晰准确地显示实时温度,具有性能良好、电路简单、成本低的特点。但因为时间有限,此设计中还有一些可以拓展的功能没有完成,有待于去改善。比如设置定时采集温度等等,便于某些工厂不需要实时采集温度。
23:09 上传
点击文件名下载附件.
1.94 MB, 下载次数: 11
售价: 1 rd币 &[]
东西压缩包里面都有,希望大家可以帮我多顶一顶,还有就是我不知道为什么我直接word复制不能粘贴上图片:'(
东西压缩包里面都有,希望大家可以帮我多顶一顶,还有就是我不知道为什么我直接word复制不能粘贴上图片: ...
图片要上传才可以
哦哦,我还是不是很明白。
这必须顶。。。辛苦楼主了
这必须顶。。。辛苦楼主了
东西压缩包里面都有,希望大家可以帮我多顶一顶,还有就是我不知道为什么我直接word复制不能粘贴上图片: ...
图片先存到桌面再上传
QQ图片17.png (9.35 KB, 下载次数: 0 )
11:17 上传
图片先存到桌面再上传
现在解决了,谢谢了啦。。:handshake
顶一个& && && && &&&
项目累计金额
对接项目数量
最新项目:
展开版块导航
获取手机验证码}

我要回帖

更多关于 单片机 com 错误 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信