找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stm32的汉字显示实验+温度+图形+倒计时按键

[复制链接]
ID:238402 发表于 2017-12-8 18:22 | 显示全部楼层 |阅读模式
大家可以参考采纳

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "key.h"
  7. #include "usmart.h"
  8. #include "malloc.h"  
  9. #include "MMC_SD.h"
  10. #include "ff.h"  
  11. #include "exfuns.h"
  12. #include "fontupd.h"
  13. #include "text.h"
  14. #include "ds18b20.h"   
  15. #include "timer.h"
  16. //ALIENTEK Mini STM32开发板范例代码30

  17. int main(void)
  18. {
  19. //        delay_init();                     //延时函数初始化
  20. //        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
  21. //        LED_Init();                          //初始化与LED连接的硬件接口
  22. //        TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms  
  23.          
  24.          
  25.   u8 a=60;
  26.         short temperature;           
  27.         u32 fontcnt;                  
  28.         u8 i,j;
  29.         u8 fontx[2];//gbk码
  30.         u8 key,t;                        
  31.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
  32.         delay_init();                     //延时函数初始化         
  33.         uart_init(9600);                 //串口初始化为9600                        
  34.         LCD_Init();                        //初始化液晶
  35.         LED_Init();         //LED初始化                                                                                                                     
  36.         KEY_Init();                                //按键初始化                                                                                                                     
  37.         usmart_dev.init(72);        //usmart初始化        
  38.          mem_init();                                //初始化内存池            
  39.          exfuns_init();                        //为fatfs相关变量申请内存  
  40.   f_mount(fs[0],"0:",1);         //挂载SD卡
  41.          f_mount(fs[1],"1:",1);         //挂载FLASH.
  42.         DS18B20_Init();
  43.          
  44.         while(font_init())         //检查字库
  45.         {
  46. UPD:   
  47.                 LCD_Clear(WHITE);                           //清屏
  48.                  POINT_COLOR=RED;                        //设置字体为红色                                
  49.                 LCD_ShowString(60,50,200,16,16,"mini STM32");
  50.                  key=update_font(20,110,16);//更新字库
  51.                 while(key)//更新失败               
  52.                 {                                          
  53.                         LCD_ShowString(60,110,200,16,16,"Font Update Failed!");
  54.                         delay_ms(200);
  55.                         LCD_Fill(20,110,200+20,110+16,WHITE);
  56.                         delay_ms(200);                       
  57.                 }                  
  58.                 LCD_ShowString(60,110,200,16,16,"Font Update Success!");
  59.                 delay_ms(1500);        
  60.                 LCD_Clear(WHITE);//清屏               
  61.         }  
  62.         POINT_COLOR=BLUE;      
  63.         Show_Str(60,50,200,16,"2017年5月4日",16,0);                                             

  64.          while(DS18B20_Init())        //DS18B20初始化        
  65.         {
  66.                 LCD_ShowString(60,70,200,16,16,"DS18B20 Error");
  67.                 delay_ms(200);
  68.                 LCD_Fill(60,130,239,130+16,WHITE);
  69.                  delay_ms(200);
  70.         }                                                                  

  71.         POINT_COLOR=BLUE;//设置字体为蓝色
  72.         
  73.          LCD_ShowString(60,90,200,16,16,"Temp:   . C");         
  74.         LCD_Fill(201,279,219,300,BLUE);
  75.   LCD_Draw_Circle(120,200,80);//画圆
  76.         LCD_Draw_Circle(210,290,15);//显示按键圆圈
  77.   LCD_DrawLine(120,200,120,130);//显示分针
  78.         LCD_DrawLine(120,200,130,150);//显示时针
  79.         LCD_DrawLine(120,266,115,274);
  80.         LCD_DrawLine(115,274,125,274);
  81.         LCD_DrawLine(120,266,125,274);//显示6的三角形
  82.         LCD_DrawLine(47,197,42,204);
  83.         LCD_DrawLine(42,204,52,204);
  84.         LCD_DrawLine(47,197,52,204);//显示9的三角形
  85.         LCD_DrawLine(120,126,115,135);
  86.         LCD_DrawLine(115,135,125,135);
  87.         LCD_DrawLine(125,135,120,126);//显示12的三角形
  88.         LCD_DrawLine(193,197,188,204);
  89.         LCD_DrawLine(188,204,198,204);
  90.   LCD_DrawLine(198,204,193,197); //显示3的三角形
  91.         LCD_ShowString(100,230,200,16,16,"00:  ");
  92.         POINT_COLOR=RED;
  93.         LCD_DrawLine(120,200,100,123);//显示秒针
  94.         LCD_DrawRectangle(80,220,160,260);//画矩形
  95.         while(1)
  96.         {

  97.                                  if(t%10==0)//每100ms读取一次
  98.                 {                                                                          
  99.                         temperature=DS18B20_Get_Temp();        
  100.                         if(temperature<0)
  101.                         {
  102.                                 LCD_ShowChar(60+40,150,'-',16,0);                        //显示负号
  103.                                 temperature=-temperature;                                        //转为正数
  104.                         }
  105.                         else
  106.                         POINT_COLOR=BLUE;
  107.                         LCD_ShowChar(60+40,90,' ',16,0);                        //去掉负号
  108.                         LCD_ShowNum(60+40+8,90,temperature/10,2,16);        //显示正数部分            
  109.                    LCD_ShowNum(60+40+32,90,temperature%10,1,16);        //显示小数部分                    
  110.                 }                                   
  111.                  delay_ms(10);
  112.                 t++;
  113.                 if(t==20)
  114.                 {
  115.                         t=0;
  116.                         LED0=!LED0;
  117.                 }
  118. ……………………

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

所有资料51hei提供下载:
汉字显示实验+温度+图形+倒计时按键.rar (993.61 KB, 下载次数: 91)
回复

使用道具 举报

ID:265406 发表于 2017-12-24 11:47 | 显示全部楼层
亲,你这个程序运行之后只显示了刚开始的两排,有解决办法嘛?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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