久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3038|回復: 2
打印 上一主題 下一主題
收起左側

stm32f10 16x16點陣燈實現源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:284916 發表于 2018-7-24 11:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32f10 16x16點陣燈實現

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include"system_stm32f10x.h"
  3. #include  "sys.h"
  4. #include"usart.h"
  5. #include"stm32f10x_rcc.h"
  6. #include  "delay.h"
  7. #include"led.h"
  8. #include"exti.h"
  9. #define R_port         PAout(8)
  10. #define D_port         PAout(7)
  11. #define C_port         PAout(6)
  12. #define B_port         PAout(5)
  13. #define A_port         PAout(4)
  14. #define G_port         PAout(3)
  15. #define DI_port        PAout(2)
  16. #define CLK_port       PAout(1)
  17. #define Latch_port     PAout(0)
  18. //#define   uint    unsigned int
  19. #define  _Nop()    _nop_()
  20. u8 r,p,q=0,x,y,flag,z=0;
  21. u8 i=0;
  22. u8 j=0; /*讀取對應的高八位的第幾位數據*/
  23. u8 k=0; /*讀取對應的第八位的第幾位數據*/
  24. u8  a[16]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  25. u8  b[16]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

  26. unsigned char tab[8];
  27. unsigned char DIS[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//行數據

  28. /*-----------------------------------------------
  29.              16x16漢字取模數據
  30. ------------------------------------------------*/
  31. unsigned char hztest[][32]=    //二維數組,目的是減少運算,可以用最基本的一維數組,每個漢字有32個字節數據
  32. {
  33. /*--  調入了一幅圖像:C:\Users\shifang\Desktop\電池空.bmp  --*/
  34. /*--  寬度x高度=16x16  --*/
  35. 0x00,0x00,0xC0,0x03,0xF0,0x0F,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,
  36. 0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0xF0,0x0F,0x00,0x00,0x00,0x00,


  37. /*--  調入了一幅圖像:C:\Users\shifang\Desktop\電池10%.bmp  --*/
  38. /*--  寬度x高度=16x16  --*/
  39. 0x00,0x00,0xC0,0x03,0xF0,0x0F,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,
  40. 0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0xF0,0x0F,0xF0,0x0F,0x00,0x00,0x00,0x00,

  41. /*--  調入了一幅圖像:C:\Users\shifang\Desktop\電池20%.bmp  --*/
  42. /*--  寬度x高度=16x16  --*/
  43. 0x00,0x00,0xC0,0x03,0xF0,0x0F,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,
  44. 0x10,0x08,0x10,0x08,0x10,0x08,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0x00,0x00,0x00,0x00,

  45. /*--  調入了一幅圖像:C:\Users\shifang\Desktop\電池40%.bmp  --*/
  46. /*--  寬度x高度=16x16  --*/
  47. 0x00,0x00,0xC0,0x03,0xF0,0x0F,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,
  48. 0x10,0x08,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0x00,0x00,0x00,0x00,

  49. /*--  調入了一幅圖像:C:\Users\shifang\Desktop\電池60%.bmp  --*/
  50. /*--  寬度x高度=16x16  --*/
  51. 0x00,0x00,0xC0,0x03,0xF0,0x0F,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0xF0,0x0F,
  52. 0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0x00,0x00,0x00,0x00,

  53. /*--  調入了一幅圖像:C:\Users\shifang\Desktop\電池80%.bmp  --*/
  54. /*--  寬度x高度=16x16  --*/
  55. 0x00,0x00,0xC0,0x03,0xF0,0x0F,0x10,0x08,0x10,0x08,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,
  56. 0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0x00,0x00,0x00,0x00,

  57. /*--  調入了一幅圖像:C:\Users\shifang\Desktop\電池100%.bmp  --*/
  58. /*--  寬度x高度=16x16  --*/
  59. 0x00,0x00,0xC0,0x03,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,
  60. 0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0xF0,0x0F,0x00,0x00,0x00,0x00,
  61. };


  62. /*-----------------------------------------------
  63.              向595寫入一個字節 單紅色
  64. ------------------------------------------------*/
  65. void InputByteR( unsigned  char DataR1) //寫一個字節
  66. {
  67. unsigned  char i;
  68. for(i=8; i>0; i--)
  69. {
  70. R_port = !(DataR1&0x01);                  
  71. CLK_port = 0;
  72. CLK_port = 1;
  73. DataR1 = DataR1 >> 1;
  74. }
  75. }
  76. /*-----------------------------------------------
  77.              向595寫入一個字節 單綠色
  78. ------------------------------------------------*/
  79. void InputByteG( unsigned  char DataG1) //寫一個字節
  80. {
  81. unsigned  char i;
  82. for(i=8; i>0; i--)
  83. {
  84. G_port = !(DataG1&0x01);                  
  85. CLK_port = 0;
  86. CLK_port = 1;
  87. DataG1 = DataG1 >> 1;
  88. }
  89. }
  90. /*-----------------------------------------------
  91.              向595寫入兩個字節 雙色
  92. ------------------------------------------------*/
  93. void Input2Byte( unsigned  char DataR1,unsigned  char DataG1) //寫一個字節
  94. {
  95. unsigned  char i;
  96. for(i=8; i>0; i--)
  97. {
  98. R_port = !(DataR1&0x01);   
  99. G_port = !(DataG1&0x01);               
  100. CLK_port = 0;
  101. CLK_port = 1;
  102. DataR1 = DataR1 >> 1;
  103. DataG1 = DataG1 >> 1;
  104. }
  105. }

  106. int main(void)
  107. {       
  108.            int cnt = 0 ;
  109.                 int a = 0 , b = 0 ;
  110.          
  111.         static unsigned char count,j;
  112.         unsigned char i;
  113.         static int num;
  114.         static unsigned char S_Flag=0;
  115.          
  116.         GPIO_InitTypeDef  GPIO_InitStructure;                                                                                                  

  117.         NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  118.         uart_init(9600);         //串口初始化為9600
  119.         delay_init();                     //延時函數初始化
  120.         LED_Init();       
  121.         EXTIX_Init();



  122.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOF, ENABLE);         //使能PA端口時鐘
  123.        
  124.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;                                 
  125.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  126.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度為50MHz
  127.   GPIO_Init(GPIOA, &GPIO_InitStructure);                                         //根據設定參數初始化

  128.   printf("\r\n %d \r\n",SystemCoreClock)        ;

  129.   while(1){
  130.        
  131.                
  132.                 if ( cnt % ( 1000*50 ) == 0 )
  133.                         a = 6-b % 7 ;
  134.                 cnt++ ;
  135.                 b++ ;
  136.                
  137.                
  138.                
  139.                 Latch_port=0;       //鎖存釋放
  140.    
  141.                
  142.                
  143.         for(j=0;j<1;j++) //取每個漢字的前2個字節,數據傳輸完成后鎖存輸出即可 j表示漢字個數,如果是3個漢字屏就可以修改成3
  144.         {
  145.                 if(S_Flag==0){
  146.                         Input2Byte(hztest[j+a][i],0);
  147.                         Input2Byte(hztest[j+a][i+1],0);
  148.                 }
  149.                 else if(S_Flag==1)
  150.                 {
  151.                         Input2Byte(0,hztest[j][i]);
  152.                         Input2Byte(0,hztest[j][i+1]);
  153.                 }
  154.                 else if(S_Flag==2)
  155.                 {
  156.                         Input2Byte(0,hztest[j+1][i]);
  157.                         Input2Byte(0,hztest[j+1][i+1]);
  158.                 }
  159.                 else if(S_Flag==3)
  160.                 {
  161.                         Input2Byte(hztest[j+1][i],0);
  162.                         Input2Byte(hztest[j+1][i+1],0);
  163.                 }
  164.         }
  165.         G_port = 1; /*關屏顯示,原理為使HC138輸出全為1,從而三極管截止,點陣不顯示*/
  166.         R_port = 1;
  167.         switch (count){
  168.                 case 0:
  169.                         A_port = 0;        B_port = 0;        C_port = 0;        D_port = 0;
  170.                         break;
  171.                 case 1:
  172.                         A_port = 1;        B_port = 0;        C_port = 0;        D_port = 0;
  173.                         break;
  174.                 case 2:
  175.                         A_port = 0;        B_port = 1;        C_port = 0;        D_port = 0;
  176.                         break;
  177.                 case 3:
  178.                         A_port = 1;        B_port = 1;        C_port = 0;        D_port = 0;
  179.                         break;
  180.                 case 4:
  181.                         A_port = 0;        B_port = 0;        C_port = 1;        D_port = 0;
  182.                         break;
  183.                 case 5:
  184.                         A_port = 1;        B_port = 0;        C_port = 1;        D_port = 0;
  185.                         break;
  186.                 case 6:
  187.                         A_port = 0;        B_port = 1;        C_port = 1;        D_port = 0;
  188.                         break;
  189.                 case 7:
  190.                         A_port = 1;        B_port = 1;        C_port = 1;        D_port = 0;
  191.                         break;
  192.                 case 8:
  193.                         A_port = 0;        B_port = 0;        C_port = 0;        D_port = 1;
  194.                         break;
  195.                 case 9:
  196.                         A_port = 1;        B_port = 0;        C_port = 0;        D_port = 1;
  197.                         break;
  198.                 case 10:
  199.                         A_port = 0;        B_port = 1;        C_port = 0;        D_port = 1;
  200.                         break;
  201.                 case 11:
  202.                         A_port = 1;        B_port = 1;        C_port = 0;        D_port = 1;
  203.                         break;
  204.                 case 12:
  205.                         A_port = 0;        B_port = 0;        C_port = 1;        D_port = 1;
  206.                         break;
  207.                 case 13:
  208.                         A_port = 1;        B_port = 0;        C_port = 1;        D_port = 1;
  209.                         break;
  210.                 case 14:
  211.                         A_port = 0;        B_port = 1;        C_port = 1;        D_port = 1;
  212.                         break;
  213.                 case 15:
  214.                         A_port = 1;        B_port = 1;        C_port = 1;        D_port = 1;
  215.                         break;
  216.                 }
  217.         Latch_port = 1; /*允許HC595數據輸出到Q1-Q8端口*/
  218.         G_port = 0; /*HC138輸出有效,打開顯示*/
  219.         R_port = 0;
  220.         Latch_port = 0;        /*鎖定HC595數據輸出*/
  221.        
  222.        
  223.         count++;
  224.         i+=2;              //累加調用下一行數據
  225.         if(count==16)
  226.                 count=0;
  227.         if(i==32)
  228.                 i=0;
  229.   }
  230.   
  231. }

復制代碼

所有資料51hei提供下載:
stm32f10 16x16點陣燈.rar (283.1 KB, 下載次數: 65)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-7-25 01:30 | 只看該作者
此貼需要補全原理圖后才可獲得積分
回復

使用道具 舉報

板凳
ID:405123 發表于 2019-11-22 21:14 | 只看該作者
可不可以改成流動字體 或者改顏色要怎么改啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频在线免费观看 | 国产一区二区在线播放视频 | 国产精品久久久久aaaa九色 | 久久精品视频播放 | 中文字幕亚洲一区二区三区 | 鲁一鲁资源影视 | 亚洲成人精品一区 | 久久久精| 国产一区二区影院 | 欧美日韩国产一区二区 | 黄色大片免费网站 | 欧美日韩国产精品一区 | 欧美性吧| 真人一级毛片 | 在线成人av | 欧美激情综合 | 一级在线观看 | 久久精品视频亚洲 | 国产 欧美 日韩 一区 | 欧美黑人体内she精在线观看 | 国产成人福利视频在线观看 | 国产成人免费在线 | 亚洲高清在线 | 成人精品一区二区 | 日韩一区二区在线观看 | 精品国产免费一区二区三区演员表 | 一区二区免费 | 欧美性大战久久久久久久蜜臀 | 国产在线视频一区 | 亚州国产 | 特一级毛片 | 欧美国产一区二区三区 | 99福利视频| 少妇精品久久久久久久久久 | 日韩一区二区三区在线 | 你懂的在线视频播放 | 久久久久网站 | 中文字幕av网址 | 日韩视频精品 | 午夜视频在线免费观看 | 午夜久久久久久久久久一区二区 |