stm32关于温度采集数码管显示-------程序设计前期思路

时间:2024-05-18 15:24:10

上接硬件设计,硬件设计中我们一共使用了20个引脚,
一,PC13做一个500ms闪烁的灯,不受任何限制,当pc13灯不断闪烁时,认为程序正常运行;当PC13灯常亮或者常闭时认为程序进入死程序,需要修改程序的时钟匹配,一般程序死掉,因为时间设置冲突,一般同一时间两件事共同需要CPU处理就死掉了。
stm32关于温度采集数码管显示-------程序设计前期思路
将PC13设置为推挽输出,
stm32关于温度采集数码管显示-------程序设计前期思路将电平反转程序,要做一个500ms时钟;
stm32关于温度采集数码管显示-------程序设计前期思路
stm32关于温度采集数码管显示-------程序设计前期思路
RCC将所需要的时钟树打开,TIM做时钟基准,此时a=50,b=200,因为参数设置为10000时是1S中断,所以当a=50,b=200时,时钟通道1为5ms中断一次,时钟通道2为20ms中断一次,stm32关于温度采集数码管显示-------程序设计前期思路
stm32关于温度采集数码管显示-------程序设计前期思路
这是设置中断响应等级的,我在通道2.中断里做了一个标志位,参数C,一般情况在中断里就设置一些标志位就好了,中断里不需要做事情,处理完标志位,跳出来,让标志位自己去做事情,因为我需要500ms让PC13电平转换一次,而且通道二是20MS将参数C加一,所以当C增加到25时,电平翻转一次(一开始将PC13设置高电平或者低电平,GPIO_SetBits(GPIOC,GPIO_Pin_13),或者GPIO_ResetBits(GPIOC,GPIO_Pin_13)),电平翻转一次后将参数C重置为0;
二,PB4(D3),PB5(D2),PB8(D1),PA15(D4)分别连接数码管位码
PB12(e),PB13(d),PB15(dg),PA11©,PA12(g),PB3(b),PB6(f),PB7(a),分别连接数码管段码,
所有的引脚都是推挽输出;
首先要明白,数码管显示组成,首先每一位数字都是由七个二极管,加一个小数点也是二极管,数码管分为共阳极和共阴极两种;我用的是共阳极,即当我想让第二位显示7,就将第二位位码引脚拉高,将段码组成七的二极管点亮,如果需要小数点,也将小数点点亮,,比如我想显示123.4,我应该先在第一位显示1,再将第二位显示2,再将第三位显示3和小数点,再将第四位显示4;由于段码是共用的所以需要一个一个来显示,但是由于人眼睛的延迟特性,人眼睛识别的是几十毫秒的时间,所以显示数码管应该每一位显示50毫秒,在显示下一位,以此反复循环,stm32关于温度采集数码管显示-------程序设计前期思路
有图得知:七个二极管组成8加小数点的,想显示一个数字,就显示对应二极管;
显示0数字,即点亮A,B,C,D,E,F;
显示1数字,即点亮B,C;
显示2数字,即点亮A,B,D,E,G;
显示3数字,即点亮A,B,C,D,G;
显示4数字,即点亮B,C,F,G;
显示5数字,即点亮A,C,D,F,G;
显示6数字,即点亮A,C,D,E,F,G;
显示7数字,即点亮A,B,C;
显示8数字,即点亮A,B,C,D,E,F,G;
显示9数字,即点亮A,B,C,D,F,G;
显示小数点,即点亮DP;
因为是使用共阳极的数码管,所以显示数字时拉低这些对应的引脚;
做一个显示的函数,以时钟通道一为基数5毫秒,标志位n不断增加,当n=32时设置n=1;
当n=1时,拉高PB8,PB15,拉低PB4,PB5,PA15,DUANMA(A1);
当n=11时,拉高PB5,PB15,拉低PB4,PB8,PA15,DUANMA(A2);
当n=21时,拉高PB4,拉低PB8,PB15,PB5,PA15,DUANMA(A3);
当n=31时,拉高PA15,PB15,拉低PB4,PB5,PB8,DUANMA(A4);
因为我是做温度显示,所以保留一位小数;用的时钟通道一的计数是5毫秒,所以想每一位显示50毫秒,就当n加10,在换一个显示;DUANMA(x)是我做的一个显示数字的函数,x是参数,比如DUANMA(2)就是显示数字2,
因为我使用的四位数码管,且保留一个小数点,所以数字显示应在000.0到999.9之间,我所测到的数据为一个浮点数,应该通过取余数把每一位数字解读出来,并赋值A1,A2,A3,A4;
三,PA3,PA4,PA5进行MAX6675测温;
测温程序我以前已经写下思路了;(下一篇我会把程序截图发出来)
四,PA8,PA9,PA10连接485芯片;
因为我是想做一个测温模块并且可以更换的,即做的是从机,
因为是485芯片所以一开始将485芯片作为接收器,接收由主机发送请求;
从机代码发送,先发送AA,(报文头),xx(后面数据长度),xx(自己的地址),xxxx(温度数据);
主机代码发送,先发送AA(报文头),xx(后面数据长度),xx(需要知道温度的从基地址);
通讯模式,首先将主机设置为发送器,从机设置为接收器,首先主机发送请求给从机(发送完成后将),在485总线上,从机都读取报文,读到自己相同的地址时,就接受所有数据打包,将从机变为发送器将接受数据发送给主机,主机接收到认为从机接收到请求,然后从机在发送自己温度报文,发送完成后从机转换为接收器,主机接收到报文后,主机转换为发送器。
五,PA1设为ADC检测电压,因为最后一个电阻不焊接,手动接地,然后将一个电阻,和12个电阻电压区别为12地址,以从机地址。