|
發布時間: 2024-2-15 15:09
正文摘要:stc8h8k64u 代碼是論壇上的,只顯示方格,不顯示內容,背光調節了也沒有,請大佬看看是什么原因 #include<STC8h.h> #include <stdio.h> #define uchar unsigned char #de ... |
| 修改了延時,已經可以了 |
wulin 發表于 2024-2-15 22:03 修改了延時,可以了,謝謝 #include<STC8h.h> #include <stdio.h> #include "intrins.h" #define uchar unsigned char #define uint unsigned int sbit E=P2^5; //1602使能引腳 sbit RW=P2^6; //1602讀寫引腳 sbit RS=P2^7; void Delay5ms() //@11.0592MHz { uchar data i, j; _nop_(); _nop_(); i = 72; j = 205; do { while (--j); } while (--i); } void Delay2ms() //@11.0592MHz { unsigned char data i, j; i = 29; j = 183; do { while (--j); } while (--i); } void Delay15ms() //@11.0592MHz { unsigned char data i, j; _nop_(); _nop_(); i = 216; j = 109; do { while (--j); } while (--i); } void writecmd(uchar com) { E=0; //為什么要寫這一條呢,看看時序圖就清楚了 RS=0; RW=0; P0 = com; Delay2ms(); //延時一下會穩定很多,后面一條也是一樣的 E=1; Delay2ms(); E=0; } void writedata(uchar dat) { E=0; //為什么要寫這一條呢,看看時序圖就清楚了 RS=1; RW=0; P0 = dat; Delay2ms(); //延時一下會穩定很多,后面一條也是一樣的 E=1; Delay2ms(); E=0; } void init(void) { Delay15ms(); writecmd(0x38); Delay5ms(); writecmd(0x38); Delay5ms(); writecmd(0x38); writecmd(0x38); writecmd(0x08); writecmd(0x01); writecmd(0x06); writecmd(0x0c); } uchar tab1[]=" m.raoushi.com "; //要顯示什么就在這兒改 void main() { uchar j; P_SW2 |= 0x80; //擴展寄存器XFR訪問使能 P0M1 = 0x00; P0M0 = 0x00; //設置為準雙向口 P1M1 = 0x00; P1M0 = 0x00; //設置為準雙向口 P2M1 = 0x00; P2M0 = 0x00; //設置為準雙向口 P3M1 = 0x00; P3M0 = 0x00; //設置為準雙向口 P4M1 = 0x00; P4M0 = 0x00; //設置為準雙向口 P5M1 = 0x00; P5M0 = 0x00; //設置為準雙向口 P6M1 = 0x00; P6M0 = 0x00; //設置為準雙向口 P7M1 = 0x00; P7M0 = 0x00; //設置為準雙向口 init(); writecmd(0x80); //告訴液晶在哪個地方顯示 (設置地址指針)//80H+00 for(j=0;j<16;j++) //有16個字符,要循環16次 { writedata(tab1[j]); Delay5ms(); } while(1); } |
| 對比度調整不當 |
| 先調下第三腳V0的電壓, 量下是多少, 調小,很可能就有驚喜: 字出來了. 如果沒有驚喜, 要就要再調下初始化代碼, 數據線連接是否正確,無虛焊. |
對比度調整不當或接線錯(包括代碼的線序、延時等錯)![]() |
| 調一下V0接的電位器 |
你說代碼是論壇上的,難道照抄都不會?可見粗心至極!
|