free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問答首頁 最新問題 熱門問題 等待回答標簽廣場
我要提問

LCD

怎么用LCD1602顯示特殊字符

顯示特殊字符時候(天線形式)其他區(qū)域也回出現(xiàn)亂點,不知道怎么解決???

源程序如下(主函數(shù)):

#include

#include "derivative.h"

#include "LLD_LCD.h"

#include "LLD_KEY.h"

void PerphInit()

{

  SOPT1 = 0x00;       //關(guān)閉看門狗

  MCGC1 = 0xB8;

  MCGC1_IRCLKEN = 1;  //開啟參考時鐘,TRIM微調(diào)量沒有設(shè)置                                   

  MCGC2 = 0x36;

  MCGC3 = 0x00;       //PLLS=0  

  while(!(MCGSC&0x02));

}

   void tianxian(void)//顯示天線形

  {              

        LcdCommand(0x36);   

       LcdCommand(0x80);//垂直地址范圍

     LcdCommand(0x80);//水平地址范圍

     LcdDataWrite(0x80);  

                       

        LcdCommand(0x81);//垂直地址范圍

     LcdCommand(0x80);//水平地址范圍

     LcdDataWrite(0x2a);

                        

        LcdCommand(0x82);//垂直地址范圍

        LcdCommand(0x80);//水平地址范圍

        LcdDataWrite(0x1c);

                        

        LcdCommand(0x83);//垂直地址范圍

        LcdCommand(0x80);//水平地址范圍

        LcdDataWrite(0x08);   

                        

        LcdCommand(0x84);//垂直地址范圍

        LcdCommand(0x80);//水平地址范圍

        LcdDataWrite(0x08);  

                        

        LcdCommand(0x85);//垂直地址范圍

        LcdCommand(0x80);//水平地址范圍

        LcdDataWrite(0x08);  

                        

        LcdCommand(0x86);//垂直地址范圍

        LcdCommand(0x80);//水平地址范圍

        LcdDataWrite(0x08);  

                        

        LcdCommand(0x87);//垂直地址范圍

        LcdCommand(0x80);//水平地址范圍

        LcdDataWrite(0x08);

                        

        LcdCommand(0x88);//垂直地址范圍

        LcdCommand(0x80);//水平地址范圍

        LcdDataWrite(0x08);

                    

        LcdCommand(0x88);//垂直地址范圍

        LcdCommand(0x70);//水平地址范圍

        LcdDataWrite(0x07);*/

        }

//======主函數(shù)=====

void main(void)

{   

        PerphInit();   //外圍初始化        

       LCD_Init();     //液晶...        

     EnableInterrupts;

       CLR_Screen();

      while(1)

      {    uchar key = 0x00;  //按鍵標志符賦初值

        do {

                        key = Get_Key();    //讀取按鍵

            }while(!key);

              switch(key)

             {

               case UP:

                 CLR_Screen();

                 DisplayChar(0,0,"發(fā)送中...");

                 break;

               case DOWN:

                 CLR_Screen();

                 DisplayChar(0,0,"接收中...");

                    break;

               case BACK:        

                 tianxian();     //天線字形

             Delay(1000);

                  break;

                default:

                         break;

              } //end switch

       }//end while      

}

提問者:想再看鉆石冰塵 地點:- 瀏覽次數(shù):10340 提問時間:04-08 05:57
我有更好的答案
提 交
1條回答
andrewxuda 10-12 09:46

要讓LCD1602顯示自定義字符,就得用到CGRAM指令,CGROM字碼表中最左邊16字節(jié)是自定義CGRAM,實際只有8個字節(jié)可用.它的字符碼是00H---07H這8個地址,從指令表看可以看到RS=0;RW=0;DB7與DB6分別為01,只有DB0--DB6 六位為地址為,DB6 DB5 DB4都為0代表這8個自定義字符,后3位是8個字模數(shù)據(jù)的地址;     
             CGRAM地址:  01000000 0x40   首地址,代表字模數(shù)據(jù)從第一行開放入
                           01000001 0x41 從第二行開始,上一行空出來                
                           01000010 0x42                 
                           01000011    0x43                   
                           01000100 0x44                 
                              01000101   0x45                
                           01000110 0x46               
                           01000111 0x47   


舉例說明:我們向這8個字節(jié)寫入字模數(shù)據(jù),顯示個"日"字;如果CGRAM地址設(shè)置為0x40:則"日"字的第一行就是從8行最上面開始寫,即0x1f就是放到了最上面
如果開始設(shè)置CGRAM地址寫入0x41:這樣的話"日"字的第一行就放在了8行的第二行

//LCD1602顯示自定義字符測試程序
//STC89C52RC 12MHz
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P3^5;//1602數(shù)據(jù)命令選擇線
//sbit rw=P3^6;rw=0;rw直接接GND 一直寫不讀
sbit en=P3^4;//1602使能控制線/*P0口接1602的D0-D7********************/
uchar code table[]={
    0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00,            //℃,代碼 0x00
    0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,             //一,代碼 0x01
    0x00,0x00,0x00,0x0e,0x00,0xff,0x00,0x00,            //二,代碼 0x02
    0x00,0x00,0xff,0x00,0x0e,0x00,0xff,0x00,             //三,代碼 0x03
    0x00,0x00,0xff,0xf5,0xfb,0xf1,0xff,0x00,               //四,代碼 0x04
    0x00,0xfe,0x08,0xfe,0x0a,0x0a,0xff,0x00,            //五,代碼 0x05
    0x00,0x04,0x00,0xff,0x00,0x0a,0x11,0x00,        //六,代碼 0x06
    0x00,0x1f,0x11,0x1f,0x11,0x11,0x1f,0x00,        //日,代碼 0x07
};
void delay(uint t) //延時函數(shù) 用延時函數(shù)代替忙檢測
{
uint x,y;
for(x=t;x>0;x--)
  for(y=110;y>0;y--);
}/*********************************************/
void lcd_wcom(uchar com) //1602寫命令函數(shù)
{
rs=0;
  //rw=0;
P0=com;
delay(5);
en=1;
en=0;
}
void lcd_wdat(uchar dat)//1602寫數(shù)據(jù)函數(shù)
{
rs=1;
//rw=0;
P0=dat;
delay(5);
en=1;
en=0;
}void lcd_init()
{
lcd_wcom(0x38);//8位數(shù)據(jù),5*8字形
lcd_wcom(0x0c);//開啟顯示屏,關(guān)光標,光標不閃爍
lcd_wcom(0x06);//顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位
lcd_wcom(0x01);//清屏
}
void main()
{
uchar i;
lcd_init();
lcd_wcom(0x40);//設(shè)置CGRAM地址,設(shè)置為00處,從8行中第一行開始  ①第一步設(shè)置CGRAM地址
for(i=0;i<64;i++)//寫入數(shù)組中數(shù)據(jù)                                                     ②裝入數(shù)組里要顯示的數(shù)據(jù)
{
  lcd_wdat(table);
}  
lcd_wcom(0x80);    //設(shè)置字符顯示位置 第一行第一個位置                ③設(shè)置顯示地址,然后發(fā)送數(shù)據(jù) lcd_wdat(0x00);     //給1602發(fā)送字符數(shù)據(jù)  顯示℃
delay(5);
lcd_wcom(0x81);   
lcd_wdat(0x01);     // 顯示"一"
delay(5);
lcd_wcom(0x82);    lcd_wdat(0x02);     //顯示"二"
delay(5);
lcd_wcom(0x83);
lcd_wdat(0x03);    //顯示"三"
delay(5);
lcd_wcom(0x84);
lcd_wdat(0x04);    //顯示"四"
delay(5);
lcd_wcom(0x85);
lcd_wdat(0x05);   //顯示"五"
delay(5);
lcd_wcom(0x86);
lcd_wdat(0x06);   //顯示"六"
delay(5);  
lcd_wcom(0x87);
lcd_wdat(0x07);   //顯示"日"
delay(5);
while(1);
}

撰寫答案
提 交
1 / 3
1 / 3
相關(guān)LCD
力信LCD開關(guān)電源電路
LCD背光閃爍
請教LCD背光引腳
LCD12864程序無法顯示
關(guān)于LCD信號傳輸接口的資料