找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2230|回复: 0
收起左侧

用TFTLCD显示汉字,6路PWM矩阵键盘控制源码

[复制链接]
ID:374261 发表于 2018-7-18 17:05 | 显示全部楼层 |阅读模式
本人萌新,基于STM32的6路PWM控制,并且用矩阵键盘分别去控制六路占空比,并做了48*48的字库在LCD上显示。

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"
  7. #include "timer.h"

  8. extern void LCD_ShowHZ(u16 x,u16 y,u8 num);
  9. extern void LCD_ShowHZStr(u16 x,u16 y,u8* pstr);
  10. extern        float A;       
  11. extern        float B;
  12. extern        float C;
  13. extern        float D;       
  14. extern        float E;
  15. extern        float F;
  16. int main(void)
  17. {         
  18.     int key;
  19.     delay_init();                     //延时函数初始化          
  20.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  21.     uart_init(115200);                 //串口初始化为115200
  22.     LED_Init();                             //LED端口初始化
  23.     LCD_Init();
  24.                 Key_Config();
  25.                 TIM3_PWM_Init(899,15);
  26.                 TIM4_PWM_Init(899,15);
  27.                 TIM2_Int_Init(1,7199);        //定时器2中断初始化
  28.     POINT_COLOR=RED;
  29.     POINT_COLOR=BLUE;//字体为蓝色
  30.    
  31.                 LCD_ShowHZ(0,0,0);//显示速字
  32.     LCD_ShowHZ(48,0,1);//显示度字
  33.                 LCD_ShowHZ(96,0,3);
  34.           LCD_ShowHZ(144,0,2);
  35.                 POINT_COLOR=RED;//字体为红色
  36.     LCD_ShowHZ(0,48,0);//显示速字
  37.     LCD_ShowHZ(48,48,1);//显示度字
  38.           LCD_ShowHZ(96,48,4);//显示:
  39.                 LCD_ShowHZ(144,48,2);
  40.           POINT_COLOR=BROWN;//字体为黄色
  41.           LCD_ShowHZ(0,96,0);//显示速字
  42.     LCD_ShowHZ(48,96,1);//显示度字、
  43.           LCD_ShowHZ(96,96,5);
  44.                 LCD_ShowHZ(144,96,2);
  45.                 POINT_COLOR=BLACK;//字体为黑色
  46.           LCD_ShowHZ(0,144,0);//显示速字
  47.     LCD_ShowHZ(48,144,1);//显示度字
  48.                 LCD_ShowHZ(96,144,6);
  49.                 LCD_ShowHZ(144,144,2);
  50.                 POINT_COLOR=GREEN;//字体为绿色
  51.           LCD_ShowHZ(0,192,0);//显示速字
  52.     LCD_ShowHZ(48,192,1);//显示度字
  53.                 LCD_ShowHZ(96,192,7);
  54.                 LCD_ShowHZ(144,192,2);               
  55.                 POINT_COLOR=BRRED;
  56.           LCD_ShowHZ(0,240,0);//显示速字
  57.     LCD_ShowHZ(48,240,1);//显示度字
  58.                 LCD_ShowHZ(96,240,8);
  59.                 LCD_ShowHZ(144,240,2);       
  60.                 POINT_COLOR=MAGENTA;//字体为紫色               
  61.           while(1)
  62.         {                 
  63.                 key=KeyScan();
  64.                 //LCD_ShowxNum(140,288,5,3,48,0X80);
  65.                
  66.                 //LCD_ShowString(140,288+144,200,200,48,":;'/.");
  67.                 switch(key)
  68.                 {
  69.                         case 1:A=A+0.2;break;
  70.                         case 2:A=A-0.2;break;
  71.                         case 3:B=B+0.2;break;
  72.                         case 4:B=B-0.2;break;
  73.                         case 5:C=C+0.2;break;
  74.                         case 6:C=C-0.2;break;
  75.                         case 7:D=D+0.2;break;
  76.                         case 8:D=D-0.2;break;
  77.                         case 9:E=E+0.2;break;
  78.                         case 10:E=E-0.2;break;
  79.                         case 11:F=F+0.2;break;
  80.                         case 12:F=F-0.2;break;                       
  81.                 }
  82.                 LCD_ShowNum(180,0 ,10*(A-5),2,48);
  83.                 LCD_ShowNum(180,48 ,10*(B-5),2,48);
  84.                 LCD_ShowNum(180,96 ,10*(C-5),2,48);
  85.                 LCD_ShowNum(180,144 ,10*(D-5),2,48);
  86.                 LCD_ShowNum(180,192 ,10*(E-5),2,48);
  87.                 LCD_ShowNum(180,240 ,10*(F-5),2,48);
  88.                 //LCD_ShowNum(144,288+96 ,key,2,48);
  89.                 if(A<5)//控制占空比在规定范围内
  90.                 {A=14;}
  91.                 if(A>14)
  92.                 {A=5;}
  93.                 if(B<5)//控制占空比在规定范围内
  94.                 {B=14;}
  95.                 if(B>14)
  96.                 {B=5;}
  97.                 if(C<5)//控制占空比在规定范围内
  98.                 {C=14;}
  99.                 if(C>14)
  100.                 {C=5;}
  101.                 if(D<5)//控制占空比在规定范围内
  102.                 {D=14;}
  103.                 if(D>14)
  104.                 {D=5;}
  105.                 if(E<5)//控制占空比在规定范围内
  106.                 {E=14;}
  107.                 if(E>14)
  108.                 {E=5;}
  109.                 if(F<5)//控制占空比在规定范围内
  110.                 {F=14;}
  111.                 if(F>14)
  112.                 {F=5;}
  113.         }
  114. }
复制代码

所有资料51hei提供下载:
TFTLCD和4×4矩阵键盘程序.rar (360.12 KB, 下载次数: 40)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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