我用的是proteus8.1 這個軟件有的時候很惡心 例如ADC0809仿真的時候會顯示沒有模型不能仿真 換成ADC0808還顯示沒有模型 迷醉
0808的元件點擊TEXT打開編輯一下就行 我把圖放在下面(因為0809我沒找到,如果哪位老兄知道請指點我一下謝啦)
實驗:用單片機控制ADC0809進行數模轉換,調節電位器,使數碼管以十進制的方式動態顯示經過A/D轉換后的數字量。
AD轉換器實驗仿真圖.png (23.01 KB, 下載次數: 78)
下載附件
2018-6-29 16:14 上傳
ADC0808模型添加.png (37.66 KB, 下載次數: 88)
下載附件
2018-6-29 16:20 上傳
程序:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit st=P3^0;
- sbit eoc=P3^2;
- sbit oe=P3^1;
- sbit clk=P3^3;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管 共陽(選CA)
- uchar date,qian,bai,shi,ge,AD0809;
- uint i,j;
- void delayms(uint x)//延時
- {
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
- void display(uchar qian,uchar bai,uchar shi,uchar ge)//顯示程序
- {
- qian=date/1000;
- bai=date%1000/100;
- shi=date%100/10;
- ge=date%10;
- P2=0xff;
- P0=table[qian];
- P2=0xef;
- delayms(50);
- P2=0xff;
- P0=table[bai];
- P2=0xdf;
- delayms(50);
- P2=0xff;
- P0=table[shi];
- P2=0xbf;
- delayms(50);
- P2=0xff;
- P0=table[ge];
- P2=0x7f;
- delayms(50);
- P2=0xff;
- }
- void timer0() interrupt 1//中斷 0
- {
- TH0=(65536-2)/256;
- TL0=(65536-2)%256;
- clk=!clk;
- }
- void init()//初始化
- {
- TMOD=0X01;
- TH0=(65536-2)/256;
- TL0=(65536-2)%256;
- EA=1;
- ET0=1;
- TR0=1;//中斷初始化
- clk=0;//時鐘
- P1=0xff;
- P2=0xff;
- P0=0xff;
- }
- void main()
- {
- init();
- while(1)
- {
- st=0;
- st=1;//開啟AD轉換器
- st=0;//停
- while(!eoc);//等數據轉完
- oe=1;//允許數據輸出
- AD0809=P1;//AD轉換器=P1;(讀數)
- oe=0;
- date=AD0809;//date=AD轉換后的值在數碼管上顯示
- display(qian,bai,shi,ge);
- }
- }
復制代碼
|