完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如下程序,烧进去之后液晶屏只显示一行的小方块,本人是从51开始入门的,最近才接触C8051F,所以各位帮我看看是程序的初始化有问题还是时序有问题,先谢谢大家了 #include #define uchar unsigned char #define uint unsigned int ***it RS=P3^3; ***it RW=P3^2; ***it E=P3^1; void delayxs(uint x); void PORT_Init (void); void w_dat(uchar dar); void SYSCLK_Init (void); void w_dat(uchar dar); void w_cmd(uchar cmd); void lcd_init(void); void w_string(uchar addr_start,uchar*p); uchar code L1[]={"SCTbc"}; //第一行16个字符 uchar code L2[]={"ling xu"}; //第二行16个字符 void delayxs(uint x ) { while(x--); } void PORT_Init (void)//端口初始化 { XBR2 = 0x40; // 使能数据交叉开关和弱上拉 P3MDOUT = 0xff; P74OUT = 0xC0; } void SYSCLK_Init (void)//系统时钟 { OSCICN = 0x96; // 内部振荡器频率按照 IFCN位指定的速度运行。选择内部振荡器作为系统时钟。内部振荡器使能。内部振荡器典型频率为 P123 OSCXCN = 0x00; } void w_dat(uchar dar) { P7 = dar; RS = 1; RW = 0; E = 0; delayxs(200); E = 1; } void w_cmd(uchar cmd) { P7 = cmd; RS=0; RW=0; E=0; delayxs(200); E=1; } void lcd_init(void) { w_cmd(0x01); w_cmd(0x38); w_cmd(0x0f); w_cmd(0x06); } void w_string(uchar addr_start,uchar*p) { w_cmd(addr_start); while(*p !=' |