找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3196|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

數(shù)字電壓表設(shè)計proteus仿真及單片機源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:192130 發(fā)表于 2017-4-21 19:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
數(shù)字電壓表設(shè)計proteus仿真原理圖:


單片機源程序:
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. sbit        EOC=P2^6;
  4. sbit        START=P2^5;
  5. sbit        OE=P2^7;
  6. sbit        CLK=P2^4;
  7. long int    a;
  8. int b,c,d,e,f,g;                                        //定義長度為7的字符串
  9. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};
  10. void delay_display(unsigned int z)                      //延時子程序
  11. {
  12.         unsigned int x,y;
  13.         for(x=z;x>0;x--)
  14.                 for(y=110;y>0;y--);
  15. }
  16. void ADC0808()
  17. {
  18.         if(!EOC) //如果EOC為低電屏,則產(chǎn)生一個脈沖,這個脈沖的下降沿用于啟動AD轉(zhuǎn)換
  19.         {
  20.                 START=0;
  21.                 START=1;
  22.                 START=0;
  23.         }
  24.         while(!EOC);      //等待AD轉(zhuǎn)換結(jié)束
  25. START=1;         //轉(zhuǎn)換結(jié)束后,再產(chǎn)生一個脈沖,這個脈沖的下降沿用于將EOC置為低電屏,為下一次轉(zhuǎn)換作準備
  26.             START=0;
  27.         while(EOC);
  28. }
  29. void bianma()
  30. {       
  31.     START=0;
  32.         ADC0808();
  33.         a=P1*100;
  34.         a=a/51;
  35. }
  36. void yima()
  37. {
  38.                                         //定義整形局域變量
  39.     b=a/1000;                        //取出千位
  40.     c=a-b*1000;                      //取出百位、十位、個位
  41.     d=c/100;                         //取出百位
  42.     e=c-d*100;                       //取出十位、個位
  43.     f=e/10;                           //取出十位
  44.     g=e-f*10;                         //取出個位

  45. }
  46. void display()                       //顯示子程序
  47. {
  48.     P2 = 0xfe;
  49.         P0 = table[b];
  50.         delay_display(1);
  51.        
  52.         P2 = 0xfd;
  53.         P0 = table[d];
  54.         delay_display(1);
  55.        
  56.         P2 = 0xfd;
  57.         P0 = table[10];
  58.         delay_display(1);

  59.         P2 = 0xfb;
  60.         P0 = table[f];
  61.         delay_display(1);
  62.        
  63.         P2 = 0xf7;
  64.         P0 = table[g];
  65.         delay_display(1);
  66. }
  67. void main()
  68. {
  69.     EA=1;
  70.         TMOD=0X02;
  71.         TH0=216;
  72.         TL0=216;
  73.         TR0=1;
  74.         ET0=1;
  75.         while(1)
  76.         {
  77.                 bianma();
  78.                 yima();
  79.         display();
  80.         }
  81. }
  82. void t0() interrupt 1 using 0
  83. {
  84.     CLK=~CLK;
  85. }
復(fù)制代碼


仿真工程文件和源碼下載:
第1章 數(shù)字電壓表設(shè)計.rar (46.59 KB, 下載次數(shù): 54)

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

使用道具 舉報

沙發(fā)
ID:187777 發(fā)表于 2017-5-13 10:21 | 只看該作者
看樣子很不錯
回復(fù)

使用道具 舉報

板凳
ID:47652 發(fā)表于 2017-5-18 18:32 | 只看該作者
增加人氣,頂!
回復(fù)

使用道具 舉報

地板
ID:207166 發(fā)表于 2017-6-2 18:21 | 只看該作者
感謝樓主分享!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表