|
程序是对的,但是因为我复制过来之后它的中文形式就变了
仿真图的元器件不能改,最近的课程设计要交了,之前我仿真用的ADC008芯片仿真是对的,但是实验室没有器材,所以我改为ADC0809,目前仿真数码管用的是4位共阳极的数码。仿真图的器材一定不要换。谢谢各位大佬了。
#include"reg51.h"
#include"intrins.h"
#define uint unsigned int;
#define uchar unsigned char;
sbit OE= P2^1;//¶¨òåADC0809êä3öÔêDíêä3öλ
sbit ST= P2^2;//¶¨òåADC0809×a»»ÔêDí¿ØÖÆλ
sbit EOC=P2^0;//¶¨òåμçÑ1êÇ·ñ×a»»íê3éμıê־λ
sbit CLOCK=P2^4;//ê±ÖóDÅoÅêäèëI/O¿ú
sbit C1=P2^6;
sbit C2=P2^7;//P2.6,P2.7¿úÎaá½Î»êyÂë1üμÄƬѡDÅoÅ¿ØÖÆλ
sbit Dp=P2^5;//P2.5ÎaD¡êyμã¿ØÖÆλ
table[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//12Ñô¼«êyÂë1üÏÔ꾸÷¸öêy×ÖËù¶Ôó|μÄÖμ
unsigned int data dis[3]={0x00,0x00, 0x00};//×a»»oóμÄμçÑ1Öμ′¢′æêy×é
unsigned char getData;//¶¨òåÖD¼ä±äá¿
void delay(int t)
{
int i,j;
for(i=0;i<t;i++);
for(j=0;j<50;j++);
}
//Ñóê±oˉêy
void main()//Ö÷oˉêy
{
while(1)//½øèëÎTÏTÑ-»·
{
TMOD=0x02;//¶¨ê±0Îa·½ê½2
TH0=255;
TL0=255;//¶¨ê±Æ÷0éèÖÃ3õÖμ
EA=1;//¿a1ØÖD¶Ï
ET0=1;//ÔêDí¶¨ê±Æ÷0ÖD¶Ï
TR0=1;//′ò¿a¶¨ê±Æ÷T0
OE=0;//1رÕADCO809êä3öÔêDíλ
ST=0;//
ST=1;
_nop_();
ST=0;
delay(10);//ADC0809×a»»Æô¶ˉ£¬2¢Ñóê±μè′yADC0809×a»»íê3é
if(EOC==1)//ÅD¶ÏêÇ·ñ×a»»íê3飬èçÎa1£¬Ôò×a»»íê3é
{
OE=1;//′ò¿aêä3öÔêDíλ
getData=P0;//°ÑADC0809μÄ8λêy×Öá¿êä3ö¸3Öμ¸ø±äá¿getData
OE=0;//1رÕêä3öÔêDíλ
dis[1]= getData/51;
dis[2]= getData%51;
dis[2]=dis[2]*10;
dis[0]=dis[2]/51;//½«μçÑ1×a»»ÎaÕûêyÖ죬2¢′æèëêy×édis[].
C1=0;//1رÕμú¶tλêyÂë1ü
C2=1;//′ò¿aμúò»Î»êyÂë1ü
Dp=0;//′ò¿aD¡êyμã
P1=table[dis[1]];//ÏÔê¾Õûêy2¿·Ö
delay(10);//Ñóê±
C2=0;//1رÕμúò»Î»êyÂë1ü
C1=1;//′ò¿aμú¶tλêyÂë1ü
Dp=1;//1رÕD¡êyμã
P1=table[dis[0]];//ÏÔê¾D¡êy2¿·Ö
}
}
}
void to(void)interrupt 1 using 0//¶¨ê±Æ÷0ÖD¶Ïoˉêy£¬¸øADC0809ìá1©500KHZμÄê±ÖóDÅoÅ
{
CLOCK=~CLOCK;//ê±Öó¶Ëè¡·′
}
|
|