欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:436259 發(fā)表于 2018-11-30 22:20 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
結合51單片機和8*8的LED燈,實現(xiàn)字符的顯示,按鍵可以切換為靜態(tài)顯示和滾動顯示。使用STC89C52芯片和3cm共陽極8*8LED燈,編譯一個程序能使顯示的字符靜態(tài)顯示和滾動。這個要達成目標的程序,(C語言不精,比較小白)求助下各位大佬。元件都焊好了,就差個按鍵驅動這個LED燈。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2018-12-1 09:17 | 只看該作者
8*8LED矩陣滾動顯示數(shù)字和字符
http://m.raoushi.com/bbs/dpj-105247-1.html
單片機8*8LED點陣縱向滾動顯示我愛你的仿真與源碼
http://m.raoushi.com/bbs/dpj-116188-1.html


  1. //-------------------------------------------
  2. //8*8矩陣循環(huán)顯示字符和數(shù)字
  3. //顯示字符串在數(shù)組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";         //顯示內容自己可以任意定義,注意只能是大些字母和數(shù)字
  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位的數(shù)據(jù),
  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;                 //每一次上升沿,輸出一位數(shù)據(jù)
  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 中斷函數(shù)
  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; //連續(xù)取兩個賦給緩沖器,便于滾動顯示
  123.                 else disnum1=disstr[Num_Index+1]-'0';
  124.                 for(m=0;m<8;m++)buffer[m]=Table_of_Digits[disnum][m];           //給顯示緩沖區(qū)賦值
  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; //每屏一個數(shù)字由8 個字節(jié)構成
  133.         if(++t>=60) //每個數(shù)字刷新顯示一段時間
  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;  //顯示下一個數(shù)字
  141.                 }
  142.         }
  143. }

復制代碼
回復

使用道具 舉報

板凳
ID:436259 發(fā)表于 2018-12-1 17:56 | 只看該作者
如果不外加其他芯片,只能使用STC89C52和按鍵,該怎樣做小改動?
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表