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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機Proteus仿真4位數碼管顯示

[復制鏈接]
跳轉到指定樓層
樓主

proteus仿真圖

代碼:
  1. #include<reg51.h>
  2. #include<intrins.h>

  3. typedef unsigned char uchar;
  4. typedef unsigned int uint;

  5. #define Hidden  11
  6. #define CmdDat         0

  7. sbit Clock=P3^3;
  8. sbit Data=P3^2;

  9. const uint TimeOver=800;

  10. uchar code DispCode[]={
  11.         //0x28,0xee,0x32,0xa2,0xe4,
  12.                                                                         //                        0xa1,0x21,0xea,0x20,0xa0,
  13.                                                                         //                        0xff
  14.         0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
  15.         0xF8,0x80,0x90,0xff
  16.         };
  17. uchar code DispBit[]={0x7f,0xfe,0xef,0xdf};
  18. uint DispData=0;
  19. uchar DispBuf[4]={0,0,0,0};
  20. uchar RecDatCount;
  21. uchar bdata RecDat;
  22. sbit         RecDat0=RecDat^0;

  23. bit renovate;

  24. bit ReciveMark=1;
  25. uchar DotCnt=1;
  26. uchar        MaskSing=0;
  27. bit   StartOverCount;
  28. bit                RecEnd;
  29. uint  OverCount;


  30. /**********************************************
  31. uS延時函數
  32. **********************************************/
  33. void DelayUs2x(unsigned char t)
  34. {   
  35. while(--t);
  36. }
  37. /**********************************************
  38. mS延時函數
  39. ***********************************************/
  40. void DelayMs(unsigned char t)
  41. {
  42.      
  43.     while(t--)
  44.     {
  45.      //大致延時1mS
  46.         DelayUs2x(245);
  47.         DelayUs2x(245);
  48.     }
  49. }

  50. void ReciveDate() interrupt 2
  51. {
  52.         ReciveMark=0;
  53.         if(!StartOverCount)
  54.                 StartOverCount=1;
  55.         RecDatCount++;
  56.         RecDat=RecDat<<1;
  57.         if(Data)
  58.                 RecDat0=1;
  59.         else
  60.                 RecDat0=0;
  61.         if(RecDatCount==8)
  62.         {
  63.                 MaskSing=RecDat;
  64.         }
  65.         else if(RecDatCount==16)
  66.         {
  67.                 if(MaskSing==CmdDat)
  68.                         DispData=RecDat*256;
  69.                
  70.         }
  71.         else if(RecDatCount==24)
  72.         {
  73.                 if(MaskSing==CmdDat)
  74.                         DispData+=RecDat;
  75.                
  76.         }
  77.         else if(RecDatCount==32)
  78.         {
  79.                 if(MaskSing==CmdDat)
  80.                         DispData=RecDat;
  81.                 renovate=1;
  82.                 RecDatCount=0;
  83.                 StartOverCount=0;
  84.                 OverCount=0;
  85.                 RecEnd=1;
  86.                 RecDat=0;
  87.                
  88.         }
  89. }

  90. void Timer0() interrupt 1
  91. {
  92.         uchar temp;
  93.         static uchar Count;
  94.         if(StartOverCount)
  95.                 OverCount++;
  96.         Count++;
  97.         if(Count==4)
  98.                 Count=0;
  99.         P3|=0XB1;
  100.         temp=DispBit[Count];
  101.         P3&=temp;
  102.         temp=DispBuf[Count];
  103.         P1=DispCode[temp];
  104.         if(DotCnt==(4-Count))
  105.                 P1&=0XDF;
  106.         TH0=-(600/256);
  107.         TL0=-(600%256);
  108. }

  109. void main()
  110. {
  111.         uchar temp0,temp1,temp2,temp3;
  112.         uint temp;
  113.         TH0=-(600/256);
  114.         TL0=-(600%256);
  115.         TR0=1;
  116.         IT1=1;
  117.         EA=1;
  118.         ET0=1;
  119.         EX1=1;
  120.         PT0=0;
  121.         PX1=1;
  122.         renovate=1;
  123.         P1=0;
  124.         Clock=1;
  125.         Data=1;
  126.         
  127.         //////////////////////
  128.         DispData=9999;
  129.         //DispData=8888;
  130.         //DispData=654;
  131.         for(;;)
  132.         {
  133.                 if(renovate)
  134.                 {
  135.                         temp=DispData;
  136.                         temp%=10000;
  137.                         temp3=temp%10;
  138.                         temp/=10;
  139.                         temp2=temp%10;
  140.                         temp/=10;
  141.                         temp1=temp%10;
  142.                         temp/=10;
  143.                         temp0=temp%10;
  144.                         
  145.                         if((temp0==0)&&(DotCnt<3))
  146.                                 DispBuf[0]=Hidden;
  147.                         else
  148.                                 DispBuf[0]=temp0;
  149.                         
  150.                         if((temp0==0)&&(temp1==0)&&(DotCnt<2))
  151.                                 DispBuf[1]=Hidden;
  152.                         else
  153.                                 DispBuf[1]=temp1;
  154.                         
  155.                         if(((temp0==0)&&(temp1==0)&&(temp2==0)
  156.                                         &&(DotCnt<1))||((temp3==0)&&(temp2==0)
  157.                                         &&(DotCnt>2)))
  158.                                 DispBuf[2]=Hidden;
  159.                         else
  160.                                 DispBuf[2]=temp2;
  161.                         if((temp3==0)&&(DotCnt>1))
  162.                                 DispBuf[3]=Hidden;
  163.                         else
  164.                                 DispBuf[3]=temp3;
  165.                         renovate=0;
  166.                 }
  167.                 if(OverCount>=TimeOver)
  168.                 {
  169.                         RecDatCount=0;
  170.                         StartOverCount=0;
  171.                         OverCount=0;
  172.                         RecEnd=1;
  173.                 }
  174.                
  175.         }
  176. }
復制代碼

proteus仿真文件及C工程
通用顯示器.rar (199.44 KB, 下載次數: 7)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1134911 發表于 2024-12-14 23:55 | 只看該作者
如果是實際直接接引腳的話電流會不會不夠?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕亚洲一区二区三区 | 成人伊人| 一级大片免费 | 亚洲av毛片成人精品 | 欧美在线视频观看 | 激情免费视频 | 天天久久 | 日韩中文字幕一区二区 | 国产一区在线视频 | 91网站在线看 | 亚洲视频在线一区 | 国产欧美在线观看 | 欧美日韩一区二区在线 | 精品欧美一区二区三区久久久小说 | 黄色毛片免费 | 97视频在线观看网站 | 91精品国产色综合久久不卡蜜臀 | 99re视频这里只有精品 | 天天干狠狠操 | 精产嫩模国品一二三区 | a视频在线 | 欧美成人免费在线视频 | 亚洲精品粉嫩美女一区 | 日日干夜夜操天天操 | 精品国产乱码久久久久久a丨 | 欧美成人一区二免费视频软件 | 黄视频在线网站 | 亚洲成人av在线播放 | 国产精品成人一区二区三区吃奶 | 特级黄一级播放 | 成人免费视频网站在线看 | 亚洲欧洲小视频 | 久久99精品久久久久久青青日本 | 国产精品久久久久久一区二区三区 | 亚洲视频www| 狠狠入ady亚洲精品经典电影 | 中文字幕第九页 | 国产一级片免费看 | 91国产在线视频在线 | wwww.8888久久爱站网 | 天天操天天玩 |