完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个这样的程序 在PROTUSE中仿真是可以用的 可是在硬件电路中就不能用 为什么呢? #include #include #define uchar unsigned char #define uint unsigned int #define delay4us() {_nop_();_nop_();_nop_();_nop_();} ***it CS=P3^0; ***it CLK=P3^1; ***it DIO=P3^2; ***it RS=P2^5; ***it RW=P2^6; ***it E=P2^7; uchar Display_Buffer[]="0.00V"; uchar Line1[]="Current Voltage:"; void delay_ms(unsigned char i) { unsigned char a, b; for (a = 1; a < i; a++) { for (b = 1; b; b++) { ; } } } bit LCD_Busy_Check() { bit result; RS=0;RW=1;E=1;delay4us();result=(bit)(P1&0x80);E=0; return result; } void LCD_Write_Command(uchar cmd) { while(LCD_Busy_Check()); RS=0;RW=0;E=0;_nop_();_nop_();P1=cmd;delay4us(); E=1;delay4us();E=0; } void Set_Disp_Pos(uchar pos) { LCD_Write_Command(pos|0x80); } void LCD_Write_Data(uchar dat) { while(LCD_Busy_Check()); RS=1;RW=0;E=0; P1=dat;delay4us(); E=1;delay4us();E=0; } void LCD_Initialise() { LCD_Write_Command(0x38);delay_ms(5); LCD_Write_Command(0x0C);delay_ms(5); LCD_Write_Command(0x06);delay_ms(5); LCD_Write_Command(0x01);delay_ms(5); } uchar Get_AD_Result() { uchar i,dat1=0,dat2=0; CS=0; CLK=0; DIO=1; _nop_();_nop_(); CLK=1; _nop_();_nop_(); CLK=0;DIO=1;_nop_();_nop_(); CLK=1; _nop_();_nop_(); CLK=0;DIO=0;_nop_();_nop_(); CLK=1;DIO=1;_nop_();_nop_(); CLK=0;DIO=1;_nop_();_nop_(); for(i=0;i<8;i++) { CLK=1; _nop_();_nop_(); CLK=0; _nop_();_nop_(); dat1=dat1<<1|DIO; } for(i=0;i<8;i++) { dat2=dat2|((uchar)(DIO)< CLK=1; _nop_();_nop_(); CLK=0; _nop_();_nop_(); } CS=1; return(dat1==dat2)? dat1:0; } void main() { uchar i; uint d; LCD_Initialise(); delay_ms(100); while(1) { d=Get_AD_Result()*500.0/255 ; Display_Buffer[0]=d/100+'0'; Display_Buffer[2]=d/10%10+'0'; Display_Buffer[3]=d%10+'0'; Set_Disp_Pos(0x01); i=0; while(Line1[i]!=' |