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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4070|回復: 2
收起左側

求助一個8*8LED燈的字符滾動顯示的單片機程序

[復制鏈接]
ID:436259 發表于 2018-11-30 22:20 | 顯示全部樓層 |閱讀模式
結合51單片機和8*8的LED燈,實現字符的顯示,按鍵可以切換為靜態顯示和滾動顯示。使用STC89C52芯片和3cm共陽極8*8LED燈,編譯一個程序能使顯示的字符靜態顯示和滾動。這個要達成目標的程序,(C語言不精,比較小白)求助下各位大佬。元件都焊好了,就差個按鍵驅動這個LED燈。

單片機最小系統和LED燈

單片機最小系統和LED燈

回復

使用道具 舉報

ID:155507 發表于 2018-12-1 09:17 | 顯示全部樓層
8*8LED矩陣滾動顯示數字和字符
http://www.zg4o1577.cn/bbs/dpj-105247-1.html
單片機8*8LED點陣縱向滾動顯示我愛你的仿真與源碼
http://www.zg4o1577.cn/bbs/dpj-116188-1.html


  1. //-------------------------------------------
  2. //8*8矩陣循環顯示字符和數字
  3. //顯示字符串在數組disstr[]中申明
  4. //-------------------------------------------
  5. #include<reg51.h>
  6. #include<intrins.h>
  7. #include<string.h>
  8. #include<absacc.h>        
  9. #define uchar unsigned char
  10. #define uint unsigned int
  11. //--------------------------------------------
  12. //X向字模
  13. //--------------------------------------------
  14. uchar code Table_of_Digits[40][8]=
  15. {
  16.         {0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},//0
  17.         {0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00},//1
  18.         {0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00},//2        
  19.         {0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00},//3
  20.         {0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00},//4
  21.         {0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00},//5
  22.         {0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00},//6
  23.         {0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00},//7
  24.         {0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00},//8
  25.         {0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00},//9
  26.         {0x00,0x3E,0x48,0x48,0x48,0x3E,0x00,0x00},//A
  27.         {0x00,0x00,0x7E,0x52,0x5A,0x6E,0x00,0x00},//B
  28.         {0x00,0x00,0x3C,0x42,0x42,0x24,0x00,0x00},//C
  29.         {0x00,0x00,0x7E,0x42,0x42,0x3C,0x00,0x00},//D
  30.         {0x00,0x00,0x7E,0x52,0x52,0x52,0x00,0x00},//E
  31.         {0x00,0x00,0x7E,0x50,0x50,0x40,0x00,0x00},//F
  32.         {0x00,0x3C,0x42,0x42,0x4A,0x2E,0x00,0x00},//G
  33.         {0x00,0x00,0x7E,0x10,0x10,0x7E,0x00,0x00},//H
  34.         {0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00},//I
  35.         {0x00,0x00,0x0C,0x02,0x02,0x7C,0x00,0x00},//J
  36.         {0x00,0x00,0x7F,0x08,0x14,0x22,0x00,0x00},//K
  37.         {0x00,0x00,0x7E,0x02,0x02,0x02,0x00,0x00},//L
  38.         {0x00,0x7E,0x20,0x10,0x20,0x7E,0x00,0x00},//M
  39.         {0x00,0x00,0x7E,0x30,0x08,0x06,0x7E,0x00},//N
  40.         {0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x00},//O
  41.         {0x00,0x00,0x7E,0x48,0x48,0x70,0x00,0x00},//P
  42.         {0x00,0x3C,0x42,0x46,0x43,0x3C,0x00,0x00},//Q
  43.         {0x00,0x00,0x7E,0x58,0x5C,0x72,0x00,0x00},//R
  44.         {0x00,0x00,0x64,0x92,0x92,0x4C,0x00,0x00},//S
  45.         {0x00,0x40,0x40,0x7E,0x40,0x40,0x00,0x00},//T
  46.         {0x00,0x00,0x7C,0x02,0x02,0x7C,0x00,0x00},//U
  47.         {0x00,0x00,0x60,0x18,0x06,0x18,0x60,0x00},//V
  48.         {0x00,0x7E,0x0C,0x18,0x0C,0x7E,0x00,0x00},//W
  49.         {0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00},//X
  50.         {0x00,0x40,0x20,0x1E,0x20,0x40,0x00,0x00},//Y
  51.         {0x00,0X00,0x46,0x5A,0x72,0x42,0x00,0x00},//Z
  52. };
  53. //---------------------------------------
  54. uchar code xdat[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  55. uchar code ydat[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  56. //---------------------------------------
  57. uchar i=0;
  58. uchar j=0;
  59. uchar t=0;
  60. uchar Num_Index,disnum,disnum1;
  61. uchar key;
  62. uchar xi;
  63. uchar yi;
  64. uint  len;        //顯示的字符串長度
  65. uchar buffer[16];
  66. //---------------------------------------
  67. uchar code disstr[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";         //顯示內容自己可以任意定義,注意只能是大些字母和數字
  68. //---------------------------------------
  69. #define wei XBYTE[0xa000]
  70. sbit dat=P1^1;
  71. sbit clk=P1^0;
  72. sbit ls0=P2^4;
  73. sbit ls1=P2^5;
  74. sbit ls2=P2^6;
  75. sbit ls3=P2^7;
  76. //---------------------------------------
  77. //用74LS164來輸出一個8位的數據,
  78. //點亮相應的LED
  79. //---------------------------------------
  80. void sendbyte(uchar byte)
  81. {            
  82.         uchar num,c;         
  83.         num=byte;
  84.         for(c=0;c<8;c++)         
  85.         {     
  86.                 clk=0;   
  87.                 dat=num&0x01;   //每一位的輸出
  88.                 clk=1;                 //每一次上升沿,輸出一位數據
  89.                 num>>=1;            //右移位賦值 ,以供下一位的輸出                     
  90.         }
  91. }

  92. //---------------------------------------
  93. //主程序
  94. //---------------------------------------
  95. void main()
  96. {
  97.         Num_Index=0; //從0 開始顯示
  98.         TMOD=0x01; //T0 方式0
  99.         TH0=(65536-2000)/256; //2ms 定時
  100.         TL0=(65536-2000)%256;
  101.         IE=0x82;
  102.         key=0;
  103.         xi=0;
  104.         yi=0;
  105.         TR0=1; //啟動T0
  106.         len=strlen(disstr);
  107.         while(1);
  108. }
  109. //---------------------------------------
  110. //定時器0 中斷函數
  111. //顯示控制
  112. //---------------------------------------
  113. void LED_Screen_Display() interrupt 1
  114. {
  115.         uchar m,n;
  116.         TH0=(65536-2000)/256; //2ms 定時
  117.         TL0=(65536-2000)%256;
  118.         if(i==0)
  119.         {
  120.                 if(disstr[Num_Index]>='A')disnum=disstr[Num_Index]-'A'+10;           //求顯示字符在字庫中的位置
  121.                 else disnum=disstr[Num_Index]-'0';
  122.                 if(disstr[Num_Index+1]>='A')disnum1=disstr[Num_Index+1]-'A'+10; //連續取兩個賦給緩沖器,便于滾動顯示
  123.                 else disnum1=disstr[Num_Index+1]-'0';
  124.                 for(m=0;m<8;m++)buffer[m]=Table_of_Digits[disnum][m];           //給顯示緩沖區賦值
  125.                 for(m=0;m<8;m++)buffer[m+8]=Table_of_Digits[disnum1][m];
  126.         }
  127.         P0=0xff;
  128.         P2=0xa0;
  129.         P0=~buffer[i+n];
  130.         P2=0x00;
  131.         sendbyte(xdat[n]);
  132.         if(++n==8) n=0; //每屏一個數字由8 個字節構成
  133.         if(++t>=60) //每個數字刷新顯示一段時間
  134.         {
  135.                 i++;i%=8;
  136.                 t=0;
  137.                 if(i==0)
  138.                 {
  139.                         Num_Index++;
  140.                         if(Num_Index>=(len-1))Num_Index=0;  //顯示下一個數字
  141.                 }
  142.         }
  143. }

復制代碼
回復

使用道具 舉報

ID:436259 發表于 2018-12-1 17:56 | 顯示全部樓層
如果不外加其他芯片,只能使用STC89C52和按鍵,該怎樣做小改動?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲狠狠 | 国产乱一区二区三区视频 | 欧美老妇交乱视频 | a国产一区二区免费入口 | 亚洲天堂av在线 | 日韩中文字幕在线播放 | 国产二区在线播放 | 最近中文字幕免费 | 日韩在线不卡视频 | 九九福利| 久久久久久国产精品免费免费 | 久久草在线视频 | 手机日韩 | 韩国久久精品 | 欧美一级毛片久久99精品蜜桃 | 日本久久精品视频 | 日韩不卡一区二区三区 | 日韩电影中文字幕 | 91麻豆精品国产91久久久更新资源速度超快 | 99精品视频在线 | www.色综合| 97超在线视频 | 一级黄色毛片免费 | 久久久久久亚洲精品 | 黄色国产视频 | 亚洲第一中文字幕 | 成人精品福利 | 啪啪毛片 | 宅男伊人 | 亚洲在线一区二区 | 一级片av| 亚洲一区二区免费视频 | 久久成人免费观看 | 欧美激情 一区 | 亚洲成人一级片 | 久久免费视频1 | 一区欧美 | 久久久久久久一区 | 国产在线精品一区二区 | 在线观看国产视频 | 亚洲成人网在线播放 |