|
/// flag=(bit)(P0&0x80); //狀態(tài)位第7位為1時(shí)禁止讀寫(xiě),為0時(shí)可讀寫(xiě)
問(wèn)題1. 就是P0&0x80怎么轉(zhuǎn)換位bit的???
//while(judge_lcd()); //檢測(cè)LCD是否為忙碌狀態(tài)
問(wèn)題2. 這里面要是上面的要是為flag=1的話那就是要執(zhí)行程序了,但是lcd就是為1的話就是為忙碌的狀態(tài)。怎么可以執(zhí)行呢???
這里面是不是程序錯(cuò)了,是否應(yīng)該改為if(flag==0);
單片機(jī)源程序如下:
- /***********************lcd1602忙碌判斷子程序*******************/
- bit judge_lcd()
- {
- bit flag;
- e = 0;//
- rs = 0;
- rw = 1;
- e = 1;//
- delay_ms(1);
- flag=(bit)(P0&0x80); //狀態(tài)位第7位為1時(shí)禁止讀寫(xiě),為0時(shí)可讀寫(xiě)
- e = 0;//
- return flag;
- }
- /**********************lcd1602寫(xiě)指令子程序*******************/
- void write_com(uchar addr)
- {
- while(judge_lcd()); //檢測(cè)LCD是否為忙碌狀態(tài)
- rw=0;
- rs=0;
- P0=addr;
- delay_us(5);
- e=0;
- delay_us(5);
- e=1;
- delay_us(5);
- e=0;
- }
- /***********************lcd寫(xiě)數(shù)據(jù)子程序*******************/
- void write_date(uchar date)
- {
- while(judge_lcd()); //檢測(cè)LCD是否為忙碌狀態(tài)
- rw=0;//寫(xiě)操作
- rs=1;//寫(xiě)數(shù)據(jù)模式
- P0=date;//將要寫(xiě)的命令字送到數(shù)據(jù)總線上
- delay_us(5);
- e=0;//將使能端置低電平
- delay_us(5);
- e=1;//將使能端置高電平
- delay_us(5);
- e=0;//將使能端置低電平
- }
- /***********lcd1602寫(xiě)指令及數(shù)據(jù)********************************/
- void write_com_date(uint addr,uint date)
- {
- write_com(addr);
- delay_ms(1);
- write_date(date);
- }
復(fù)制代碼
|
|