找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6015|回復(fù): 1
收起左側(cè)

注釋詳細(xì)的ADC0808數(shù)模轉(zhuǎn)換(電壓檢測)單片機源程序+仿真

[復(fù)制鏈接]
ID:412543 發(fā)表于 2018-10-19 23:54 | 顯示全部樓層 |閱讀模式
ADC0808仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png

單片機源程序如下:
  1. #include <reg51.h>//包含頭文件reg51.h
  2. sbit CLOCK=P2^4;//定義ADC0809的CLOCK引腳
  3. sbit EOC=P2^5;  //定義ADC0809的EOC引腳
  4. sbit START=P2^6;  //定義ADC0809的START引腳
  5. sbit OE=P2^7;  //定義ADC0809的OE引腳
  6. sbit high_bit=P3^0;  //定義數(shù)碼管的高位位選通
  7. sbit low_bit=P3^1;  //定義數(shù)碼管的低位位選通
  8. unsigned char ADC_val;//定義AD轉(zhuǎn)換結(jié)果暫存
  9. unsigned char table[]=
  10. {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  11. };//0~9的段碼表
  12. unsigned char table1[]=
  13. {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
  14. };//0.~9.的段碼表
  15. void display(unsigned char);//顯示函數(shù)聲明
  16. void delayms(unsigned int);//延時函數(shù)聲明

  17. //主程序
  18. void main()
  19. {
  20.        
  21.         while(1)
  22.         {
  23.                 START=0;START=1;START=0;//啟動A/D轉(zhuǎn)換
  24.                 while(EOC); //等待EOC變低
  25.                 while(!EOC);//等待EOC變低,轉(zhuǎn)換結(jié)束
  26.                 OE=1;ADC_val=P0;OE=0;//讀轉(zhuǎn)換結(jié)果
  27.                 display(ADC_val);//顯示16進(jìn)制轉(zhuǎn)換結(jié)果               
  28.         }       
  29. }

  30. //顯示函數(shù)
  31. void display(unsigned char ADC_display)
  32. {
  33.         unsigned char display_high,display_low;
  34.         //把兩位十六進(jìn)制的模數(shù)轉(zhuǎn)換結(jié)果拆分出低位
  35.         display_low=((ADC_display+1)*50/255)%10;
  36.     //把低位數(shù)的段碼通過P1口送到低位數(shù)碼管
  37.         P1=table[display_low];
  38.         low_bit=1;//選通兩位數(shù)碼管的低位
  39.         delayms(10);//延時10ms
  40.         low_bit=0;
  41.         //把兩位十六進(jìn)制的模數(shù)轉(zhuǎn)換結(jié)果拆分出高位
  42.         display_high=((ADC_display+1)*50/255)/10;
  43.        
  44.         //把高位數(shù)的段碼通過P1口送到高位數(shù)碼管
  45.         P1=table1[display_high];
  46.     high_bit=1;//選通兩位數(shù)碼管的高位
  47.         delayms(10);//延時10ms
  48.         high_bit=0;
  49. }
  50. //延時函數(shù)
  51. void delayms(unsigned int xms)
  52. {
  53.         unsigned int i,j;
  54.         for(i=xms;i>0;i--)
  55.             for(j=114;j>0;j--);
  56. }
復(fù)制代碼

所有資料51hei提供下載:
ADC0808模數(shù)轉(zhuǎn)換.rar (64.85 KB, 下載次數(shù): 101)


回復(fù)

使用道具 舉報

ID:707932 發(fā)表于 2020-3-13 20:04 | 顯示全部樓層
今天寫這個半天寫不出來快自閉了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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