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

標題: 單片機AD0832電壓表用32X16點陣顯示 proteus仿真及源程序 [打印本頁]

作者: 51黑ff    時間: 2016-10-7 23:15
標題: 單片機AD0832電壓表用32X16點陣顯示 proteus仿真及源程序

做了一個用51單片機驅動的AD0832電壓表而起是用32X16點陣來顯示數據,仿真原理圖如下:


仿真工程文件及所有完整程序等資料下載地址:http://www.zg4o1577.cn/bbs/dpj-56304-1.html

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

  4. #define ulong unsigned long
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. uchar k,i,j;
  8. float l;
  9. sbit sw=P3^0;      //159選通開關
  10. sbit ADCS =P3^1;  //ADC0832 chip seclect
  11. sbit ADDI =P3^3;  //ADC0832 k in
  12. sbit ADDO =P3^3;  //ADC0832 k out
  13. sbit ADCLK =P3^2;  //ADC0832 clock signal

  14. uchar dsw[20];  //存放sprintf轉換字符
  15. uchar idata value[149]; //點陣字符儲存
  16. uchar code table[]={    //字符查表
  17. 0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",0*/

  18. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  19. 0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00,/*"0",1*/

  20. 0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"1",2*/

  21. 0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00,/*"2",3*/

  22. 0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00,/*"3",4*/

  23. 0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00,/*"4",5*/

  24. 0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/*"5",6*/

  25. 0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00,/*"6",7*/

  26. 0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00,/*"7",8*/

  27. 0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00,/*"8",9*/

  28. 0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00,/*"9",10*/

  29. 0x08,0x00,0x78,0x00,0x88,0x07,0x00,0x38,0x00,0x0E,0xC8,0x01,0x38,0x00,0x08,0x00,/*"V",11*/
  30. };


  31. void delay(int c)     //延時,C不能小于5
  32.     {
  33.     int i,j;
  34.     for(i=0;i<c;i++)
  35.         for(j=0;j<10;j++)
  36.             ;
  37.      }
  38. /************
  39. 讀ADC0832函數
  40. ************/

  41. //采集并返回
  42. unsigned int Adc0832(unsigned char channel)     //AD轉換,返回結果
  43. {
  44.     uchar i=0;
  45.     uchar j;
  46.     uint dat=0;
  47.     uchar ndat=0;

  48.     if(channel==0)channel=2;
  49.     if(channel==1)channel=3;
  50.     ADDI=1;
  51.     _nop_();
  52.     _nop_();
  53.     ADCS=0;//拉低CS端
  54.     _nop_();
  55.     _nop_();
  56.     ADCLK=1;//拉高CLK端
  57.     _nop_();
  58.     _nop_();
  59.     ADCLK=0;//拉低CLK端,形成下降沿1
  60.     _nop_();
  61.     _nop_();
  62.     ADCLK=1;//拉高CLK端
  63.     ADDI=channel&0x1;
  64.     _nop_();
  65.     _nop_();
  66.     ADCLK=0;//拉低CLK端,形成下降沿2
  67.     _nop_();
  68.     _nop_();
  69.     ADCLK=1;//拉高CLK端
  70.     ADDI=(channel>>1)&0x1;
  71.     _nop_();
  72.     _nop_();
  73.     ADCLK=0;//拉低CLK端,形成下降沿3
  74.     ADDI=1;//控制命令結束
  75.     _nop_();
  76.     _nop_();
  77.     dat=0;
  78.     for(i=0;i<8;i++)
  79.     {
  80.         dat|=ADDO;//收數據
  81.         ADCLK=1;
  82.         _nop_();
  83.         _nop_();
  84.         ADCLK=0;//形成一次時鐘脈沖
  85.         _nop_();
  86.         _nop_();
  87.         dat<<=1;
  88.         if(i==7)dat|=ADDO;
  89.     }  
  90.     for(i=0;i<8;i++)
  91.     {
  92.         j=0;
  93.         j=j|ADDO;//收數據
  94.         ADCLK=1;
  95.         _nop_();
  96.         _nop_();
  97.         ADCLK=0;//形成一次時鐘脈沖
  98.         _nop_();
  99.         _nop_();
  100.         j=j<<7;
  101.         ndat=ndat|j;
  102.         if(i<7)ndat>>=1;
  103.     }
  104.     ADCS=1;//拉低CS端
  105.     ADCLK=0;//拉低CLK端
  106.     ADDO=1;//拉高數據端,回到初始狀態
  107.     dat<<=8;
  108.     dat|=ndat;
  109.     return(dat);            //return ad k
  110. }
  111. /*************************************************
  112.             點陣字符采集函數
  113. **************************************************/

  114. void tra(uchar *p)    //數組dsp[]里面的字符查詢后,再儲儲存到另一個顯示數組value[]
  115. { for(i=0;i<5;i++)
  116.   {
  117.       if(i<4)        //i=2時查的是句號,其他3個是電壓值
  118.       {
  119.         for(j=0;j<16;j++)
  120.         {
  121.           value[(i+1)*16+j]=table[(*p-0x2e)*16+j];
  122.         }
  123.        }
  124.       else
  125.       {  for(j=0;j<16;j++)      //電壓符號V
  126.           value[(i+1)*16+j]=table[12*16+j];
  127.       }
  128.       
  129.       p++;
  130.   }
  131.   for(i=0;i<16;i++)           //前16個和后21個消隱作用,不顯示
  132.   value[i]=0;
  133.   for(i=128;i<149;i++)
  134.   value[i]=0;
  135. }


  136. void main()
  137.     {

  138.     unsigned int b=0,i,j;
  139.     unsigned char a;



  140.     while(1)
  141.     {
  142.     k=Adc0832(0);   //AD轉換結果
  143.     l=k/255.0*5.0;
  144.     sprintf(dsw,"%2.3f",l);  //電壓值轉換成字符方式儲存,不明白的人上百度查一下sprintf函數的運用就清楚的,俺也是查的
  145.     tra(dsw);
  146.     j=0;
  147.     if(a>2) //移動間隔時間;越大移動越慢
  148.         {
  149.         a=0;
  150.         b+=2;
  151.         if(b>=85)  //顯示到最后一個字,回頭顯示
  152.             {
  153.             b=0;
  154.             }   
  155.         }
  156.      sw=1;   //顯示字符,順序是從左掃到右,有16列,數據電平是從左1到左16,由低到高
  157.      for(i=0;i<16;i++)  //sw是154選通開關。
  158.         {
  159.         P1=i;
  160.         P0=value[j+b];
  161.         P2=value[j+b+1];
  162.         delay(5);
  163.         P0=0x00;
  164.         P2=0x00;
  165.         j+=2;
  166.         }
  167.      sw=0;
  168.      for(i=0;i<16;i++)
  169.         {
  170.         P1=i;
  171.         P0=value[j+b];
  172.         P2=value[j+b+1];
  173.         delay(5);
  174.         P0=0x00;
  175.         P2=0x00;
  176.         j+=2;
  177.         }
  178.         a++;
  179.      
  180.     }
  181. }
復制代碼

作者: 51jia    時間: 2016-10-8 23:17
51單片機綜合運用,不錯,對于初學者完全可以當示例。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲成人精品免费 | 蜜桃精品噜噜噜成人av | av中文在线 | 国产一区二区 | 免费看黄色小视频 | 国产高清免费视频 | 亚洲第一中文字幕 | 久久久久久国产 | 午夜激情小视频 | 国产精品毛片一区二区在线看 | 久久综合久久久 | 亚洲国产精品成人 | 黄色在线免费网站 | 99热热| 免费视频成人国产精品网站 | 午夜精品久久久久久久久久久久久 | www.788.com色淫免费 | 欧美性区 | 日本黄色短片 | 婷婷久久综合 | 久久精品小视频 | av黄在线观看 | 中文字幕免费中文 | 99热这里只有精品8 激情毛片 | 精品久久久久久久久久久久久久久久久 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 国产欧美一区二区久久性色99 | 日韩在线一区二区三区 | 成人做爰9片免费看网站 | 伊人免费在线观看 | 婷婷国产一区二区三区 | 免费国产一区 | 国产乱码精品一品二品 | 亚洲欧美激情视频 | 亚洲欧美日韩电影 | h片在线免费观看 | 六月成人网 | 中文字幕亚洲一区 | 国产91精品久久久久久久网曝门 | 不卡av电影在线播放 | 91在线精品视频 |