|
我用的是proteus8.1 這個(gè)軟件有的時(shí)候很惡心 例如ADC0809仿真的時(shí)候會(huì)顯示沒(méi)有模型不能仿真 換成ADC0808還顯示沒(méi)有模型 迷醉
0808的元件點(diǎn)擊TEXT打開(kāi)編輯一下就行 我把圖放在下面(因?yàn)?809我沒(méi)找到,如果哪位老兄知道請(qǐng)指點(diǎn)我一下謝啦)
實(shí)驗(yàn):用單片機(jī)控制ADC0809進(jìn)行數(shù)模轉(zhuǎn)換,調(diào)節(jié)電位器,使數(shù)碼管以十進(jìn)制的方式動(dòng)態(tài)顯示經(jīng)過(guò)A/D轉(zhuǎn)換后的數(shù)字量。
程序:
- #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};//數(shù)碼管 共陽(yáng)(選CA)
- uchar date,qian,bai,shi,ge,AD0809;
- uint i,j;
- void delayms(uint x)//延時(shí)
- {
- 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;//時(shí)鐘
- P1=0xff;
- P2=0xff;
- P0=0xff;
- }
- void main()
- {
- init();
- while(1)
- {
- st=0;
- st=1;//開(kāi)啟AD轉(zhuǎn)換器
- st=0;//停
- while(!eoc);//等數(shù)據(jù)轉(zhuǎn)完
- oe=1;//允許數(shù)據(jù)輸出
- AD0809=P1;//AD轉(zhuǎn)換器=P1;(讀數(shù))
- oe=0;
- date=AD0809;//date=AD轉(zhuǎn)換后的值在數(shù)碼管上顯示
- display(qian,bai,shi,ge);
- }
- }
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|