|
對C51進行了擴展,包括一個373,兩個244,一個ADC0808(0809protues里面沒有拿0808代替是一樣的),一個6264。
這個實驗是儀電學院嵌入式的實驗三,完美符合實驗要求。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (92.56 KB, 下載次數: 37)
下載附件
2022-8-4 02:26 上傳
e135bff0de2bf67a2dc90f7c3172523.jpg (265.17 KB, 下載次數: 58)
下載附件
51單片機擴展,還有8個ADC采集電壓通道
2022-8-1 13:21 上傳
f3deae0111e14801fe8ff49e0d01451.jpg (295.87 KB, 下載次數: 47)
下載附件
暫停protues可以看到6264芯片內部的采集數值
2022-8-1 13:24 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<stdio.h>
- unsigned char xdata ADC0809[0x8] _at_ 0x7FF8;
- unsigned char xdata RAM[0x8] _at_ 0xC000;
- unsigned char xdata *io;
- unsigned char led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- unsigned char flag=0;
- unsigned char key,i,num,rec;
- unsigned int dat,z1,z2,z3,z4;
- sbit clk=P3^2;
- sbit com1=P3^0;
- sbit com2=P3^1;
- sbit com3=P3^4;
- sbit com4=P3^5;
- void delay(int m)
- {
- while(m--);
- }
- void main()
- {
- TMOD=0x02;
- TH0=216;
- TL0=216;
- TR0=1;
- IT1=1;
- EA=1;
- ET0=1;
- EX1=1;
- io=0xBFFF;
- while(1)
- {
- key=*io;
- if(key!=0xFF)
- {
- for(i=0;i<=7;i++)
- {
- if((key%2)==0)
- {
- num=i;
- }
- key=key>>1;
- }
- ADC0809[num]=0x00;
- while(!flag);
- rec=ADC0809[num];
- RAM[num]=rec;
-
- dat=rec;
- dat=dat*196;
- z1=dat/10000;
- z2=(dat/1000)%10;
- z3=(dat/100)%10;
- z4=(dat/10)%10;
- flag=0;
- com1=0;com2=0;com3=0;com4=0;
- com1=1;com2=0;com3=0;com4=0;
- P1=led[z1]&0x7F;
- delay(100);
- com1=0;com2=0;com3=0;com4=0;
- com1=0;com2=1;com3=0;com4=0;
- P1=led[z2]|0x80;
- delay(100);
- com1=0;com2=0;com3=0;com4=0;
- com1=0;com2=0;com3=1;com4=0;
- P1=led[z3]|0x80;
- delay(100);
- com1=0;com2=0;com3=0;com4=0;
- com1=0;com2=0;com3=0;com4=1;
- P1=led[z4]|0x80;
- delay(100);
- }
- else
- {
- com1=0;com2=0;com3=0;com4=0;
- }
- }
- }
- void int1() interrupt 2 using 0
- {
- flag=1;
- }
- void time0() interrupt 1 using 2
- {
- clk=~clk;
- }
復制代碼
b81b4bbe6f36372b08b4880da5f8a6b.jpg (36.21 KB, 下載次數: 43)
下載附件
附件包含內容
2022-8-1 13:27 上傳
Keil代碼與Proteus8.8仿真下載:
three.zip
(435.03 KB, 下載次數: 52)
2022-8-1 13:23 上傳
點擊文件名下載附件
keil4打開 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|