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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于51單片機驅動7段數碼管顯示源程序與Proteus仿真圖

[復制鏈接]
跳轉到指定樓層
樓主
設計目標:1.使用一個七段數碼管,在數碼管上順序顯示0~F,顯示間隔1s。
    2.使用8個七段數碼管,穩定顯示自己學號后8位。(已實現循環顯示完整學號)

本案例用到單片機定時器,數碼管等知識。

需要軟件:keil c51 (本機環境 Keil uVision5)
                 proteus  (本機環境 proteus 8.11)
仿真電路圖如下:


需要原件: AT89C51
     74LS245 (P0口驅動不了,加245驅動數碼管)
     74LS138   (3 8 譯碼器 驅動多段位置信息)
     7SEG-MPX8-CC-BLUE
     7SEG-MPX1-CC

共陰數碼管段碼和共陽數碼管段碼加起來為FF,如顯示不正常另行計算。因本人區分不來就不誤導人了,程序中led和led8為數碼管斷碼。

驅動程序如下:

  1. #include <reg51.h>
  2. #include<stdio.h>

  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. uchar leddata[] = "124F09124847-2020.7";//學號自行修改
  6. //0x00  滅燈  0x80  點  0x40  橫杠
  7. uchar led[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,   0x77,0x7c,0x39, 0x5e,0x79,0x71,0x80,0x40};
  8. /*0-9  A-F*/
  9. uchar led8[] = {0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,   0x88,0x83,0xC6,0xA1,0x86,0x8E};
  10. /*位信息*/
  11. //uchar wei[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  12. /*138譯碼器位信息*/
  13. uchar wei[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};

  14. uint Rank = 0 , charNUm = 0, tem = 0;

  15. void delay(int t){
  16.         while(t!=0)
  17.         {
  18.                 uchar i;
  19.                 for(i=124;i>0;i--);  //??124*8+10=1002us
  20.                 t--;
  21.         }
  22. }
  23. //-----------------字符查表----------------------
  24. void charToNum(uchar strs){
  25.   switch (strs)
  26.   {
  27.     case '0':
  28.       P0 = led[0];
  29.       break;
  30.     case '1':
  31.       P0 = led[1];
  32.       break;
  33.     case '2':
  34.       P0 = led[2];
  35.       break;
  36.     case '3':
  37.       P0 = led[3];
  38.       break;
  39.     case '4':
  40.       P0 = led[4];
  41.       break;
  42.     case '5':
  43.       P0 = led[5];
  44.       break;
  45.     case '6':
  46.       P0 = led[6];
  47.       break;
  48.     case '7':
  49.       P0 = led[7];
  50.       break;
  51.     case '8':
  52.       P0 = led[8];
  53.       break;
  54.     case '9':
  55.       P0 = led[9];
  56.       break;
  57.     case 'A':
  58.       P0 = led[10];
  59.       break;
  60.     case 'B':
  61.       P0 = led[11];
  62.       break;
  63.     case 'C':
  64.       P0 = led[12];
  65.       break;
  66.     case 'D':
  67.       P0 = led[13];
  68.       break;
  69.     case 'E':
  70.       P0 = led[14];
  71.       break;
  72.     case 'F':
  73.       P0 = led[15];
  74.       break;
  75.                 case '.':
  76.       P0 = led[16];
  77.       break;
  78.                 case '-':
  79.       P0 = led[17];
  80.       break;
  81.     default:
  82.       P0 = 0xff;
  83.       break;
  84.   }   
  85. }
  86. //-----------------初始化----------------------
  87. void init(){
  88.   TMOD = 0x01;
  89.   TH0  = (65536-1000)/256;
  90.   TL0  = (65536-1000)%256;
  91.   TR0  = 1;
  92.   ET0  = 1;
  93.   EA   = 1;
  94.         P0   = 0x00;
  95.         P3   = 0x00;
  96. }
  97. //-----------------單個數碼管顯示----------------------0-F
  98. void OneledRun(){
  99.         uint s = 0;
  100.   for(;s<16;s++){
  101.     P3 = led[s];
  102.     delay(3000);
  103.   }
  104. }

  105. //-----------------TT0----------------------1MS
  106. void TT0(void) interrupt 1
  107. {
  108.         P0 = 0x00;   //消影
  109.         TH0  = (65536-1000)/256;
  110.   TL0  = (65536-1000)%256;
  111.         P2 = wei[Rank];
  112.         //P0 = led[Rank];               
  113.   charToNum(leddata[Rank+charNUm]);  
  114.   Rank++;
  115.         tem++;        
  116.   if(Rank == 8) { Rank = 0; }
  117.         if(tem == 1000)
  118.         {
  119.                 charNUm++;
  120.                 if(charNUm == (sizeof(leddata) - 8)) {
  121.                         charNUm = 0;
  122.                 }
  123.                 tem = 0;
  124.         }  
  125. }

  126. //-----------------主函數----------------------
  127. void main(){
  128.           init();
  129.     delay(1000);
  130.     while (1)
  131.     {                  
  132.                         OneledRun();                        
  133.     }

  134. }
復制代碼
全部資料51hei下載地址:
led8.zip (83.73 KB, 下載次數: 26)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品1区2区 | 欧美美女爱爱视频 | 日本视频一区二区三区 | 天堂一区在线 | 男人久久天堂 | 毛片网站在线观看 | 香蕉视频一区二区 | 亚洲免费视频在线观看 | 在线播放中文字幕 | 免费一区二区三区在线视频 | 国产精品久久777777 | 黄网站免费观看 | h在线播放 | 在线免费av观看 | 91精品国产乱码久久久久久久久 | 久热精品视频 | 亚洲第一区国产精品 | 一呦二呦三呦国产精品 | 精品久久一区二区三区 | 91精品国产91久久久久久最新 | 日本精品视频一区二区 | 成人在线精品视频 | 亚洲视频www | 天天草视频 | 亚洲一区视频在线 | 日本在线黄色 | 无码国模国产在线观看 | 91色视频在线观看 | 免费在线观看成人av | 日韩视频一区 | 国产区精品视频 | 国产精品色综合 | 欧美精品成人一区二区三区四区 | 在线国产视频观看 | 日本一本视频 | 免费视频一区二区 | 国内成人免费视频 | 国产精品日韩高清伦字幕搜索 | 三级在线免费 | 欧美一区二区三区在线观看 | 日韩免费一区 |