剛剛上手proteus這個軟件,在做ad轉換實驗時,遇到一個問題,數碼管顯示太快的話,軟件會亂碼,不知道什么原因,求助一下。- /* adc0804 實驗 display*/
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define MS 5 //數碼管顯示時間
- sbit dula=P2^6;
- sbit wela=P2^7;
- sbit cs=P3^5; //adc0804 端口
- sbit rd=P3^6;
- sbit wr=P3^7;
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
- 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
- };
- void delayms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void display(uchar bai,uchar shi,uchar ge)
- {
- dula=1;
- P0=table[bai];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0x37;
- wela=0;
- delayms(MS);
- dula=1;
- P0=table[shi];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0x2f;
- wela=0;
- delayms(MS);
- dula=1;
- P0=table[ge];
- dula=0;
- P0=0xff;
- wela=1;
- P0=0x1f;
- wela=0;
- delayms(MS);
- }
- void main()
- {
- uchar a,A1,A2,A3,adval;
- cs=0; //cs一直為0即可
- while(1)
- {
- wr=1; //wr 先拉高后置低 等待_nop_ ();
- _nop_();
- wr=0;
- _nop_();
- wr=1;
- for(a=10;a>0;a--)
- { //等待數據
- display(A1,A2,A3);
- }
- P1=0xff;
- rd=1;
- _nop_();
- rd=0;
- _nop_();
- adval=P1;
- rd=1;
- A1=adval/100;
- A2=adval/100%10;
- A3=adval%10;
- }
- }
復制代碼
|