大家可以参考采纳
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "lcd.h"
- #include "key.h"
- #include "usmart.h"
- #include "malloc.h"
- #include "MMC_SD.h"
- #include "ff.h"
- #include "exfuns.h"
- #include "fontupd.h"
- #include "text.h"
- #include "ds18b20.h"
- #include "timer.h"
- //ALIENTEK Mini STM32开发板范例代码30
-
- int main(void)
- {
- // delay_init(); //延时函数初始化
- // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
- // LED_Init(); //初始化与LED连接的硬件接口
- // TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms
-
-
- u8 a=60;
- short temperature;
- u32 fontcnt;
- u8 i,j;
- u8 fontx[2];//gbk码
- u8 key,t;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
- delay_init(); //延时函数初始化
- uart_init(9600); //串口初始化为9600
- LCD_Init(); //初始化液晶
- LED_Init(); //LED初始化
- KEY_Init(); //按键初始化
- usmart_dev.init(72); //usmart初始化
- mem_init(); //初始化内存池
- exfuns_init(); //为fatfs相关变量申请内存
- f_mount(fs[0],"0:",1); //挂载SD卡
- f_mount(fs[1],"1:",1); //挂载FLASH.
- DS18B20_Init();
-
- while(font_init()) //检查字库
- {
- UPD:
- LCD_Clear(WHITE); //清屏
- POINT_COLOR=RED; //设置字体为红色
- LCD_ShowString(60,50,200,16,16,"mini STM32");
- key=update_font(20,110,16);//更新字库
- while(key)//更新失败
- {
- LCD_ShowString(60,110,200,16,16,"Font Update Failed!");
- delay_ms(200);
- LCD_Fill(20,110,200+20,110+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(60,110,200,16,16,"Font Update Success!");
- delay_ms(1500);
- LCD_Clear(WHITE);//清屏
- }
- POINT_COLOR=BLUE;
- Show_Str(60,50,200,16,"2017年5月4日",16,0);
- while(DS18B20_Init()) //DS18B20初始化
- {
- LCD_ShowString(60,70,200,16,16,"DS18B20 Error");
- delay_ms(200);
- LCD_Fill(60,130,239,130+16,WHITE);
- delay_ms(200);
- }
- POINT_COLOR=BLUE;//设置字体为蓝色
-
- LCD_ShowString(60,90,200,16,16,"Temp: . C");
- LCD_Fill(201,279,219,300,BLUE);
- LCD_Draw_Circle(120,200,80);//画圆
- LCD_Draw_Circle(210,290,15);//显示按键圆圈
- LCD_DrawLine(120,200,120,130);//显示分针
- LCD_DrawLine(120,200,130,150);//显示时针
- LCD_DrawLine(120,266,115,274);
- LCD_DrawLine(115,274,125,274);
- LCD_DrawLine(120,266,125,274);//显示6的三角形
- LCD_DrawLine(47,197,42,204);
- LCD_DrawLine(42,204,52,204);
- LCD_DrawLine(47,197,52,204);//显示9的三角形
- LCD_DrawLine(120,126,115,135);
- LCD_DrawLine(115,135,125,135);
- LCD_DrawLine(125,135,120,126);//显示12的三角形
- LCD_DrawLine(193,197,188,204);
- LCD_DrawLine(188,204,198,204);
- LCD_DrawLine(198,204,193,197); //显示3的三角形
- LCD_ShowString(100,230,200,16,16,"00: ");
- POINT_COLOR=RED;
- LCD_DrawLine(120,200,100,123);//显示秒针
- LCD_DrawRectangle(80,220,160,260);//画矩形
- while(1)
- {
- if(t%10==0)//每100ms读取一次
- {
- temperature=DS18B20_Get_Temp();
- if(temperature<0)
- {
- LCD_ShowChar(60+40,150,'-',16,0); //显示负号
- temperature=-temperature; //转为正数
- }
- else
- POINT_COLOR=BLUE;
- LCD_ShowChar(60+40,90,' ',16,0); //去掉负号
- LCD_ShowNum(60+40+8,90,temperature/10,2,16); //显示正数部分
- LCD_ShowNum(60+40+32,90,temperature%10,1,16); //显示小数部分
- }
- delay_ms(10);
- t++;
- if(t==20)
- {
- t=0;
- LED0=!LED0;
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
汉字显示实验+温度+图形+倒计时按键.rar
(993.61 KB, 下载次数: 91)
|