标题:
stm32 ds18b20数字温度传感器代码
[打印本页]
作者:
1339493121
时间:
2019-2-18 16:10
标题:
stm32 ds18b20数字温度传感器代码
基于stm32mini开发板 12864教学工程 亲测有效
图形液晶显示
HJ12864M-1
基于st7290
显示一个中文菜单,通过菜单控制D2,D4,D8的显示
单片机源程序如下:
/*************************************************
函数名:main.c
功 能 :12864液晶模块演示范例——基于查询忙状态实现
时 间 :2016/03/08
作 者 :沈红卫,绍兴文理学院 机械与电气工程学院
*************************************************/
#include <stm32f10x.h>
#include "delay.h" //延时函数的头文件
#include "st12864.h" //液晶模块接口函数的头文件
/*-----------------待显示的字符串------------------------*/
//由于KEIL对中文支持的BUG,导致扩展ASCII码不能正确被识别,所以直接使用内码
//使用内码查询软件可以查询每个汉字的内码
//例如:你好的内码为0xC4,0xE3,0xBA,0xC3
//以下为“你好串口实”的内码
u8 Table0[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
//u8 Table0[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5};
u8 Table1[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x11,0x20,0x20,0x20,0x20,0x20};
u8 Table2[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
u8 Table3[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
u8 Table4[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
u8 Table5[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
u8 Table6[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
u8 Table7[]={0xC4,0xE3,0xBA,0xC3,0xB4,0xAE,0xBF,0xDA,0xCA,0xB5,0x20,0x20,0x20,0x20,0x20,0x20};
u8 value []={0,1,2,3,4,5,6,8,9};
//范例演示用BMP图片数据
u8 BMP1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x78,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF3,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x78,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0xCF,0x98,
0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xC6,0x18,
0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xF0,0x00,0x00,0x00,0x00,0xFF,0xF8,
0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,0xFF,0xF8,
0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xC0,0x00,0x00,0x00,0x80,0x08,
0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x78,0x00,
0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x3F,0xFF,0x00,0x00,0x00,0xE0,0x00,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xC0,0x00,0x00,0xC0,0x18,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x07,0xFF,0xF8,0x00,0x00,0xFF,0xF8,
0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFE,0x00,0x00,0xFF,0xF8,
0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0x80,0x00,0xC0,0x18,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x7F,0xFF,0xE0,0x00,0xF8,0x00,
0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xF8,0x00,0x00,0x00,
0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xF8,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0x00,0xFF,0xF8,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x87,0xE0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x7E,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0xF8,0x18,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0xFF,0xF8,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x80,0x08,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x10,0xE0,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0x00,0xF0,0x38,
0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFE,0x00,0xCF,0x98,
0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xF8,0x00,0xC6,0x18,
0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x7F,0xFF,0xE0,0x00,0xC6,0x18,
0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x7F,0xFF,0x80,0x00,0xFF,0xF8,
0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFE,0x00,0x00,0xC0,0x18,
0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xC0,0x00,0x00,0xC0,0x18,
0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x3F,0xFE,0x00,0x00,0x00,0xFF,0xF8,
0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0xFF,0xF8,
0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xC0,0x00,0x00,0x00,0xC0,0x18,
0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0xF0,
0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x38,
0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x18,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xD8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF1,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x88,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
//系统时钟初始化函数
//采用固件库函数方式编程
//pll:选择的倍频数,从2开始,最大值为16(这里最大为9)
/*******************************************************************************
* Function Name : Rcc_Init
* Description : RCC配置(使用外部8MHz晶振)
* Input : uint32_t,PLL的倍频系数,例如9就是9*8=72M
* Output : 无
* Return : 无
*******************************************************************************/
void Stm32_Clock_Init(u8 pll)
{
ErrorStatus HSEStartUpStatus;
/*将外设RCC寄存器重设为缺省值*/
RCC_DeInit();
/*设置外部高速晶振(HSE)*/
RCC_HSEConfig(RCC_HSE_ON); //RCC_HSE_ON——HSE晶振打开(ON)
/*等待HSE起振*/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS) //SUCCESS:HSE晶振稳定且就绪
{
/*设置AHB时钟(HCLK)*/
RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1——AHB时钟= 系统时钟
/* 设置高速AHB时钟(PCLK2)*/
RCC_PCLK2Config(RCC_HCLK_Div1); //RCC_HCLK_Div1——APB2时钟= HCLK
/*设置低速AHB时钟(PCLK1)*/
RCC_PCLK1Config(RCC_HCLK_Div2); //RCC_HCLK_Div2——APB1时钟= HCLK / 2
/*设置FLASH存储器延时时钟周期数*/
FLASH_SetLatency(FLASH_ACR_LATENCY_2);//FLASH_Latency_2 2延时周期
/*选择FLASH预取指缓存的模式*/
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// 预取指缓存使能
/*设置PLL时钟源及倍频系数*/
//RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
// PLL的输入时钟= HSE时钟频率;RCC_PLLMul_9——PLL输入时钟x 9
switch(pll)
{
case 2: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_2);
break;
case 3: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_3);
break;
case 4: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);
break;
case 5: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_5);
break;
case 6: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);
break;
case 7: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_7);
break;
case 8: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_8);
break;
case 9: RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
break;
default:
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_2);
break;
}
/*使能PLL */
RCC_PLLCmd(ENABLE);
/*检查指定的RCC标志位(PLL准备好标志)设置与否*/
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
/*设置系统时钟(SYSCLK)*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//RCC_SYSCLKSource_PLLCLK——选择PLL作为系统时钟
/* PLL返回用作系统时钟的时钟源*/
while(RCC_GetSYSCLKSource() != 0x08) //0x08:PLL作为系统时钟
{
}
}
/*使能或者失能APB2外设时钟*/
/*
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC , ENABLE);
*/
//RCC_APB2Periph_GPIOA GPIOA时钟
//RCC_APB2Periph_GPIOB GPIOB时钟
//RCC_APB2Periph_GPIOC GPIOC时钟
//RCC_APB2Periph_GPIOD GPIOD时钟
}
u8 MenuItem_0[]={" Select: "};
u8 MenuItem_1[]={" light led1 "};
u8 MenuItem_2[]={" light led2 "};
u8 MenuItem_3[]={" light two led "};
void DisplayMenu(u8 cur)
{
Display_LCD_String(0,MenuItem_0,1);
switch(cur)
{
case 1:
MenuItem_1[1]=26; //字符->的ASCII码
MenuItem_2[1]=0x20; //空格
MenuItem_3[1]=0x20;
Display_LCD_String(1,MenuItem_1,1);
Display_LCD_String(2,MenuItem_2,1);
Display_LCD_String(3,MenuItem_3,1);
break;
case 2:
MenuItem_1[1]=0x20; //字符->的ASCII码
MenuItem_2[1]=26; //空格
MenuItem_3[1]=0x20;
Display_LCD_String(1,MenuItem_1,1);
Display_LCD_String(2,MenuItem_2,1);
Display_LCD_String(3,MenuItem_3,1);
break;
case 3:
MenuItem_1[1]=0x20; //字符->的ASCII码
MenuItem_2[1]=0x20; //空格
MenuItem_3[1]=26;
Display_LCD_String(1,MenuItem_1,1);
Display_LCD_String(2,MenuItem_2,1);
Display_LCD_String(3,MenuItem_3,1);
break;
}
}
int main(void)
{
u8 time=50;
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
// uart_init(72,9600); //串口初始化
delay_ms(1000);
LCD12864_Init(); //12864初始化
/*---------------------显示字符串-------------------*/
// Display_LCD_String(0 , Table0,time);
Disp_HZ(0,Table0,5); //指定个数汉字显示
delay_ms(100);
// Display_LCD_String(1 , Table1,time);
Disp_HZ(1,Table1,5);
delay_ms(100);
// Display_LCD_String(2 , Table2,time);
Disp_HZ(2,Table2,5);
delay_ms(100);
Display_LCD_String(3 , Table3,time); //8个汉字或16字节字符显示
delay_ms(1500);
Write_LCD_Command(0x01); //清屏
LCD_Clear_TXT();
delay_ms(50);
/*
PutBMP(BMP1); //外星人
delay_ms(1500);
LCD_Clear_BMP(); //清除图片
PutBMP(BMP1); //NBA标志
delay_ms(1500);
LCD_Clear_BMP(); //清除图片
PutBMP(BMP1); //暴漫男主
delay_ms(1500);
LCD_Clear_BMP(); //清除图片
Write_LCD_Command(0x30); //必须再次打开基本指令,因为绘图开了扩充指令
Display_LCD_String(1 , Table4,time);
delay_ms(100);
Display_LCD_String(2 , Table5,time);
delay_ms(100);
Display_LCD_String(3, Table6,time);
delay_ms(100);
//---------------------显示自定义字符------------------
Write_LCD_Command(0x34); //要用到画图功能,必须打开扩充指令
Write_LCD_Command(0x36);
Draw_Char4x5Line(30,5,value,10) ; //显示自定义字符0~9
Draw_Update(); //更新显示
Write_LCD_Command(0x30); //再次打开基本指令,后面用到
delay_ms(1500);
LCD_Clear_TXT();
delay_ms(50);
Display_LCD_String(3, Table7,time);
// LCD_Clear_BMP();
Draw_Clear();
*/
DisplayMenu(1);
delay_ms(2000);
DisplayMenu(2);
while(1);
}
复制代码
所有资料51hei提供下载:
12864显示工程.7z
(207.99 KB, 下载次数: 9)
2019-2-19 03:47 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-2-19 03:48
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1