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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10262|回復: 0
收起左側

利用8*8點陣實現0-9的顯示的單片機仿真與源程序

[復制鏈接]
ID:389518 發表于 2018-8-28 08:11 | 顯示全部樓層 |閱讀模式
附上實驗結果的截圖,完整電路圖和程序在壓縮包內

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
捕獲.JPG

單片機源程序如下:
  1. /*8x8LED顯示從0到9數據 */
  2. #include <reg51.h>
  3. #define        uint        unsigned int
  4. #define        uchar        unsigned char

  5. //74HC595 行選
  6. sbit     LOCK  = P2^3;  //禁止輸出
  7. sbit     SCLK  = P2^4;  //時鐘引腳
  8. sbit     DATA  = P2^5;  //數據

  9. //74HC138  列選
  10. sbit    hc138_A   = P2^0;
  11. sbit    hc138_B   = P2^1;
  12. sbit    hc138_C   = P2^2;

  13. //數字字模,10個數字0~9,每個數字8個字節(縱向,正序)
  14. uchar code shuzi[10][8]=
  15.                                                   {
  16.                                                         {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},          //0
  17.                                                     {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00},         //1
  18.                                                         {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},         //2
  19.                                                         {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},         //3
  20.                                                         {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},         //4
  21.                                                         {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00},         //5
  22.                                                         {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00},         //6
  23.                                                         {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},         //7
  24.                                                         {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},         //8
  25.                                                         {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00},         //9
  26.                                                   };


  27. //數字字模指針                                                                                                                                                                
  28. uchar col=0;

  29. //第幾個字符           
  30. uchar count=0;

  31. //定時器定時次數               
  32. uchar time = 0;                                                                

  33. //595串行輸入的行數據
  34. uchar d=0;

  35. //8位數據從74HC595的串行輸入,并行輸出
  36. void   dat74595(unsigned char d)
  37. {
  38.    unsigned char i;
  39.    for (i=0;i<8;i++)        //8位數據串行輸入
  40.    {
  41.     SCLK = 0;
  42.     DATA = (bit)(d&0x80);
  43.     SCLK = 1;                 
  44.     d=d<<1;
  45.    }
  46.    DATA = 1;
  47.    LOCK=0;LOCK=1;                //8位數據并行輸出
  48. }

  49. void main(void)
  50. {         
  51.         TMOD=0x01;                                                     //定時器0方式1
  52.         TH0=(65536-5000)/256;                                     //設置定時計數初值,5ms
  53.         TL0=(65536-5000)%256;
  54.           TR0=1;
  55.           ET0=1;                                                  //打開定時器0中斷
  56.           EA=1;

  57.           while(1);
  58. }


  59. /*定時器0中斷服務程序,5ms中斷一次,掃描一列*/
  60. void Timer0Int(void) interrupt 1
  61. {       
  62.         TH0=(65536-5000)/256;      
  63.           TL0=(65536-5000)%256;
  64.   
  65.           switch(col)  //列選通
  66.    {
  67.       case 0:  hc138_C =0;  hc138_B=0;  hc138_A=0;  // 選擇第0列顯示
  68.                break;                              
  69.       case 1:  hc138_C =0;  hc138_B=0;  hc138_A=1;  // 選擇第1列顯示
  70.                       break;
  71.       case 2:  hc138_C =0;  hc138_B=1;  hc138_A=0;   // 選擇第2列顯示
  72.                    break;
  73.       case 3:  hc138_C =0;  hc138_B=1;  hc138_A=1;   // 選擇第3列顯示
  74.                          break;
  75.       case 4:  hc138_C =1;  hc138_B=0;  hc138_A=0;   // 選擇第4列顯示
  76.                          break;
  77.       case 5:  hc138_C =1;  hc138_B=0;  hc138_A=1;   // 選擇第5列顯示
  78.                          break;
  79.       case 6:  hc138_C =1;  hc138_B=1;  hc138_A=0;   // 選擇第6列顯示
  80.                          break;
  81.       case 7:  hc138_C =1;  hc138_B=1;  hc138_A=1;   // 選擇第7列顯示

  82.       default:   break;
  83.         }

  84.         d=shuzi[count][col];           //行,送數字字模
  85.     dat74595(d);                       //把數一位一位的傳給74HC595
  86.           col++;
  87.           if(col==8)
  88.         {
  89.                 col=0;
  90.         }
  91.          
  92.         time++;
  93.         if (time >= 200)                                        //定時200次,1s,每個數字顯示1s
  94.         {
  95.                 time = 0;

  96.                 count++;                                                //準備顯示下一個數字
  97.                 if (count >= 10)
  98.                 {
  99.                         count = 0;
  100.                 }
  101.         }
  102. }
復制代碼
0.png

所有資料51hei提供下載:
點陣.zip (61.44 KB, 下載次數: 108)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品91 | www.日韩| 99久久免费精品 | 91一区二区 | 日韩精品一区二区三区 | 精品国产伦一区二区三区观看体验 | 美女视频一区二区三区 | 日韩中文字幕一区二区三区 | 一区二区成人 | 一区二区三区国产视频 | 欧美一区二区三区在线 | 在线一级片| 欧美不卡视频 | 久久精品中文字幕 | 国产91视频一区二区 | 久久精品综合 | 亚洲一区二区在线 | 在线播放国产一区二区三区 | 成人在线播放网站 | 国产精品免费av | 精品国产欧美一区二区三区成人 | 日韩视频精品在线 | 免费在线观看一区二区 | 精品视频在线一区 | 在线观看中文字幕视频 | 国产精品美女久久久久久久久久久 | 国产清纯白嫩初高生视频在线观看 | 精品视频在线免费观看 | 人人干人人超 | 天天爱天天操 | 国产一区二区精品在线观看 | 日韩一二三区 | 亚洲欧美精品 | 天天天操操操 | 中文字幕第三页 | 国产乱码精品1区2区3区 | 国产精品福利在线 | 理论片免费在线观看 | 国产成人精品a视频 | 日本精a在线观看 | 91免费在线 |