找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3386|回复: 1
收起左侧

基于STM32103和ds18b20的测温 5110屏幕显示

[复制链接]
ID:214021 发表于 2017-6-23 14:17 | 显示全部楼层 |阅读模式
显示为洛基亚5110
单片机源程序如下:
  1. #include "delay.h"
  2. #include "LCD5110.h"
  3. #include "ds18b20.h"
  4. #include "sys.h"
  5. #include "timer.h"
  6. #include "exti.h"

  7. //    vu8 i = 0;
  8.           u8 str[20];
  9.           s16 temperature ;  //温度

  10. int main(void)
  11. {

  12.           RCC_Configuration();           //系统时钟配置
  13.     GPIO_Configuration();  
  14.     delay_init()        ;
  15.           NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  16.        
  17.           TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms  
  18. /*       
  19. //        配置外部中断
  20.           KEY_Init();
  21.           EXTIX_Init();
  22. */       
  23.     SPI2_Config();
  24.           DMA_SPI_Config();
  25.        
  26.     LCD_CLK_H();               
  27.           LCD_VCC_H();
  28.           LCD_GND_L();
  29.           LCD_BGL_L();   //背光灯开启  
  30.        
  31.           delay_ms(10); //等待         
  32.           LCD_Init(); //初始化液晶
  33.           LCD_Clear();  //清屏
  34.        


  35.                 while(DS18B20_Init())        //DS18B20初始化       
  36.         {
  37.                 LCD_Write_EnStr(0,0,"DS18B20 Error");
  38.         }                       
  39.                 LCD_Write_EnStr(2,2,"DS18B20 OK");
  40.            delay_ms(1000);
  41.            delay_ms(1000);
  42.           LCD_Write_EnStr(0,0,"*************");
  43.     LCD_Write_EnStr(0,1," The current ");
  44.           LCD_Write_EnStr(0,2," temperature");
  45.           LCD_Write_EnStr(6,3,"is");
  46.           LCD_Write_EnStr(0,5,"*************");
  47.        
  48.   while(1)
  49.          {                                                                                                   
  50.                         if(temperature<0)
  51.                         {
  52.                                 LCD_Write_EnStr(2,4,"-");        //显示负号
  53.                                 temperature=-temperature;                                        //转为正数
  54.                         }else LCD_Write_EnStr(0,4," ");                        //去掉负号
  55.                LCD_Write_EnStr(4,4,str);                  
  56.                 }                                  

  57. }


  58. //定时器3中断服务程序
  59. //每500ms读取一次温度
  60. void TIM3_IRQHandler(void)   //TIM3中断
  61. {

  62.        
  63.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
  64.                 {

  65.                           temperature = DS18B20_Get_Temp();        //读取温度
  66.                           num_to_str( temperature,str);          //将温度转换为ASC值

  67.           TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx更新中断标志

  68.                 }
  69. }


  70. /*
  71. void EXTI3_IRQHandler(void)
  72. ……………………

  73. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
测温.rar (308.57 KB, 下载次数: 76)
回复

使用道具 举报

ID:256289 发表于 2018-2-14 10:54 | 显示全部楼层
感谢分享,模仿你的作品
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表