完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个这样的程序在PROTUSE中仿真是成功的 可是在实际电路中却无法实现 我的实际电路用的单片机是STC90C52的 我想可能会是单片机型号的问题 可是不知道怎么解决···有知道的朋友给解答下啊? 拜谢了!!! . #include #include #define uchar unsigned char #define uint unsigned int #define delay4us() {_nop_();_nop_();_nop_();_nop_();} ***it CS=P1^0; ***it CLK=P1^1; ***it DIO=P1^2; ***it RS=P2^0; ***it RW=P2^1; ***it E=P2^2; uchar Display_Buffer[]="0.00V"; uchar code Line1[]="weswesw 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)(P0&0x80);E=0; return result; } void LCD_write_com(uchar cmd) { while(LCD_Busy_Check()); RS=0;RW=0;E=0;_nop_();_nop_();P0=cmd;delay4us(); E=1;delay4us();E=0; } void Set_Disp_Pos(uchar pos) { LCD_write_com(pos|0x80); } void LCD_Write_Data(uchar dat) { while(LCD_Busy_Check()); RS=1;RW=0;E=0; P0=dat;delay4us(); E=1;delay4us();E=0; } void LCD_Initialise() { LCD_write_com(0x38); /*ÏÔʾģʽÉèÖÃ*/ delay_ms(5); LCD_write_com(0x38); delay_ms(5); LCD_write_com(0x38); delay_ms(5); LCD_write_com(0x38); LCD_write_com(0x08); /*ÏÔʾ¹Ø±Õ*/ LCD_write_com(0x01); /*ÏÔʾÇåÆÁ*/ LCD_write_com(0x06); /*ÏÔʾ¹â±êÒƶ¯ÉèÖÃ*/ delay_ms(5); LCD_write_com(0x0C); } 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]!=' |