欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

      標題: ADC0832模數轉換與顯示電路仿真與代碼 [打印本頁]

      作者: jikunpeng    時間: 2017-6-19 11:48
      標題: ADC0832模數轉換與顯示電路仿真與代碼
      仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



      單片機源程序如下:
      1. #include <reg52.h>
      2. #include <intrins.h>
      3. #define uint unsigned int
      4. #define uchar unsigned char
      5. #define delay4us() {_nop_();_nop_();_nop_();_nop_();}

      6. sbit RS = P2^0;
      7. sbit RW = P2^1;
      8. sbit E  = P2^2;

      9. sbit CS  = P1^0;
      10. sbit CLK = P1^1;
      11. sbit DIO = P1^2;

      12. uchar Display_Buffer[] = "0.00V";
      13. uchar code Line1[] = "Current Voltage:";

      14. void DelayMS(uint ms)
      15. {
      16.         uchar i;
      17.         while(ms--)
      18.         {
      19.                  for(i=0;i<120;i++);
      20.         }
      21. }

      22. bit LCD_Busy_Check()
      23. {
      24.         bit result;
      25.         RS = 0;
      26.         RW = 1;
      27.         E  = 1;
      28.         delay4us();
      29.         result = (bit)(P0&0x80);
      30.         E  = 0;
      31.         return result;
      32. }

      33. void LCD_Write_Command(uchar cmd)
      34. {
      35.         while(LCD_Busy_Check());
      36.         RS = 0;
      37.         RW = 0;
      38.         E  = 0;
      39.         _nop_();
      40.         _nop_();
      41.         P0 = cmd;
      42.         delay4us();
      43.         E = 1;
      44.         delay4us();
      45.         E = 0;
      46. }

      47. void Set_Disp_Pos(uchar pos)
      48. {
      49.         LCD_Write_Command(pos | 0x80);
      50. }

      51. void LCD_Write_Data(uchar dat)
      52. {
      53.         while(LCD_Busy_Check());
      54.         RS = 1;
      55.         RW = 0;
      56.         E  = 0;
      57.         P0 = dat;
      58.         delay4us();
      59.         E = 1;
      60.         delay4us();
      61.         E = 0;
      62. }

      63. void LCD_Initialise()
      64. {
      65.         LCD_Write_Command(0x38); DelayMS(1);
      66.         LCD_Write_Command(0x0c); DelayMS(1);
      67.         LCD_Write_Command(0x06); DelayMS(1);
      68.         LCD_Write_Command(0x01); DelayMS(1);
      69. }

      70. uchar Get_AD_Result()
      71. {
      72.         uchar i,dat1=0,dat2=0;
      73.         /*CS  = 0;
      74.         CLK = 0;
      75.         DIO = 1; _nop_(); _nop_();
      76.         CLK = 1; _nop_(); _nop_();
      77.         CLK = 0;DIO = 1; _nop_(); _nop_();
      78.         CLK = 1; _nop_(); _nop_();
      79.         CLK = 0;DIO = 1; _nop_(); _nop_();
      80.         CLK = 1;DIO = 1; _nop_(); _nop_();
      81.         CLK = 0;DIO = 1; _nop_(); _nop_();*/

      82.         uchar j;
      83.         CS=0;
      84.         for(j=0;j<4;j++)
      85.         {
      86.                 CLK=0;
      87.                 DIO=1;
      88.                 _nop_();_nop_();
      89.                 CLK=1;
      90.                 _nop_();_nop_();       
      91.         }
      92.         for(i=0;i<8;i++)
      93.         {
      94.                  CLK = 1; _nop_(); _nop_();
      95.                 CLK = 0; _nop_(); _nop_();
      96.                 dat1 = dat1 << 1 | DIO;       
      97.         }
      98.         for(i=0;i<8;i++)
      99.         {
      100.                  dat2 = dat2 << ((uchar)(DIO)<<i);
      101.                 CLK = 1; _nop_(); _nop_();
      102.                 CLK = 0; _nop_(); _nop_();
      103.         }
      104.         CS = 1;
      105.         return (dat1 == dat2) ? dat1:0;
      106. }

      107. void main()
      108. {
      109.         uchar i;
      110.         uint d;
      111.         LCD_Initialise();
      112.         DelayMS(10);
      113.         while(1)
      114.         {
      115.                  d = Get_AD_Result()*500.0/255;
      116.                 Display_Buffer[0]=d/100+'0';
      117.                 Display_Buffer[2]=d/10%10+'0';
      118.                 Display_Buffer[3]=d%10+'0';
      119.                 Set_Disp_Pos(0x01);
      120.                 i = 0;
      121.                 while(Line1[i]!='\0')
      122. ……………………

      123. …………限于本文篇幅 余下代碼請從51黑下載附件…………
      復制代碼

      所有資料51hei提供下載:
      ADC0832模數轉換與顯示.rar (52.4 KB, 下載次數: 90)





      作者: zxcvbnm123789    時間: 2020-5-9 22:43
      真的黑,給的程序仿真失敗,只能用HEX文件仿真。




      歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1