74hc595+4根IO口線驅動1602,帶PWM調光 作者: 時間:2016-11-29 來源:網絡 加入技術交流群 掃碼加入和技術大咖面對面交流海量資料庫查詢 收藏 void lcd_putchar(unsigned char addr,unsigned char ch){//寫一個字lcd_wcmd(0x80+addr);lcd_wdat(ch);}void lcd_display(unsigned char *l1,unsigned char *l2){//寫一屏幕unsigned char i=0;lcd_wcmd(0x80); //顯示地址設為80H(即00H,)上排第一位for(i=0;i<16;i++){lcd_wdat(l1[i]);}lcd_wcmd(0x80+0x40); //重新設定顯示地址為0xc0,即下排第1位for(i=0;i<16;i++) {lcd_wdat(l2[i]);}}void lcd_cls(){lcd_wcmd(0x01); //清屏延時函數可以省略}//米有讀函數,但是功能可以由上面的函數擴展哦~void lcd_init(){OutBuf=0xff;Send595();//復位VIO,這段代碼必須加。否則MCU忽然RESET會導致液晶亂碼lcd_wcmd(0x30);//復位1602,這段代碼必須加,同上lcd_en();//喚醒lcd_wcmd(0x20);lcd_en();//喚醒lcd_wcmd(0x28); //四位,5x7lcd_wcmd(0x0c); //開啟顯示屏,關光標,光標不閃爍lcd_wcmd(0x06); //顯示地址遞增,即寫一個數據后,顯示位置右移一位lcd_wcmd(0x01); //清屏 //調試的時候被設計失誤的對比度電位器坑死了:就是兩排小方塊死都不顯示//查了半天都不知道//最后捅了下電位器就正常了……}void lcd_print(unsigned char *str){unsigned char addr=0x80,len=0;lcd_wcmd(addr); //顯示地址設為80H(即00H,)上排第一位while(*str!=