Haberler
Haberler
MCU'nun en güçlü popüler bilim özeti [önerilen koleksiyon] (3)
2022-03-17 230
12,Overview of Chinese characters:
Çince karakterleri bir monitörde veya yazıcıda görüntülemek için, Çince karakterler grafik sembollere göre nokta matrisine tasarlanır ve karşılık gelen nokta matris kodu (glif kodu) elde edilir.  
The unified encoding method used to represent Chinese characters in computers is called internal code (such as national standard code), and the internal code is unique (equivalent to the ID number of the character). The Chinese character encoding formed to facilitate the input of Chinese characters is an input code, which is an external code of Chinese characters. The input code is different due to different encoding methods and is diverse. The Chinese character code formed for displaying and printing out Chinese characters is a glyph code. The computer finds the glyph code of the Chinese character in the font model library through the Chinese character internal code and realizes its conversion.  
  Kamera içi kod  
According to the provisions of the national standard code, each Chinese character has a certain binary code, but this code will conflict with the ASCII code when processed internally by the computer. To solve this problem, add 1 to the first byte of each byte of the national standard code. Since the ASCII code only uses 7 bits, the "1" in the first place can be used as a mark to identify Chinese character codes. When the computer processes the code with "1" in the first place, it understands it as Chinese character information, and when it processes the code with "0" in the first place, it understands it as an ASCII code. The national standard code (internal code) processed in this way is the internal code.  
Bu "口" grafiğindeki "." işaretini "0" ile değiştirirsek, "口" karakterinin glif kodunu çok net bir şekilde elde edebiliriz: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H2004H 3FFAH 2004H 0000H 0000H. Bilgisayar "口" karakterini yazdırmak istediğinde, önce görüntüleme yazı tipi kütüphanesinin ilk adresini bulur, "口" karakterinin iç koduna göre hesaplama yapar, ardından "口" karakterinin glif kodunu bulur ve daha sonra karakter üretecinin kontrolüyle glif koduna (ikili olarak) göre ekranı sırayla tarar. İkili kodda "0" olan yerlerde, "0" olan yerler taranır ve "1" olan yerler vurgulanarak "口" karakter deseni elde edilir.  
Çince karakter yazı tipleri, ulusal standart kod sırasına göre düzenlenir ve ikili dosyalar şeklinde bellekte saklanır; bu da Çince karakter yazı tipi kütüphanesi, Çince karakter glif kütüphanesi veya Çince karakter kütüphanesi olarak adlandırılır.
İki kodlama yöntemi, başlık dosyasına bakın.
    GB1616.h//------------------ Data structure definition of Chinese character font ------------------------//struct typFNT_GB16 //Chinese character font data structure { unsignedchar Index[3]; //Chinese character internal code index unsignedchar Msk[32]; //Dot matrix code data }; ///////////////////////////////////////////////////////////////////////////// Chinese character font table //// Chinese character library: Song style 16.dot, horizontal modulo left high bit, data arrangement: left to right, top to bottom ///////////////////////////////////////////////////////////////////////////// conststruct typFNT_GB16 codeGB_16[]= //Data table {/*------------------------------------------------------------------------------------------------ Source file/text: Xu; Width×Height (pixels):16×16---------------------------------------------------------------------------------*/ "Xu",0x10,0x80,0x10,0x80,0x21,0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x8 0,0xAF,0xF8,0x20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00,
     

    This structure is very simple:One is the internal code, a dot matrix sequence. The previous dot matrix library was placed in the order of the internal code, and no internal code index was needed. If only some Chinese characters were placed, the internal code index was needed. (The Chinese character "Xu" in the front is to find the dot matrix sequence of the word when outputting "Xu". This dot matrix sequence is written by myself. When displayed with 1602, because the chip has an English dot matrix sequence in the memory, there is no need to write it.) Generally, two bytes are enough for the internal code. If you use one more byte, you just add a trailing 0. In this way, the Chinese character string can be directly placed in the Chinese character internal code;


    codeGB_16[k].Index[0] ifadesi, codeGB_16 adlı typFNT_GB16 yapısının bir dizisi olduğunu gösterir. codeGB_16[k], dizinin k+1. üyesidir. index, typFNT_GB16 yapısının bir üyesidir, bu nedenle codeGB_16[k].Index ile referans verilebilir. Aynı zamanda, index bir dizi olduğundan, index[0] ile de referans verilebilir. Eğer ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])) ise, && mantıksal VE operatörüdür; bu, && sembolünün her iki tarafındaki değerlerin doğru olduğu anlamına gelir. Sadece &&'nin değeri doğrudur, yani true && true = true. Bu cümle şu anlama gelir: codeGB_16[k].Index[0]==c[0] ve codeGB_16[k].Index[1]==c[1] aynı anda kurulmuştur. Eğer aşağıdaki ifade yürütülürse, codeGB_16[] bir yapı dizisidir ve codeGB_16[k].Index[0], yapı dizisinin K. yapısının indeks üyesinin 0. eleman değerini ifade eder.    

    13,12864 LCD:

    Her bir ekran noktası ikili bir sayıya karşılık gelir; 1 açık, 0 kapalı anlamına gelir. Bu nokta matris bilgilerini depolayan RAM'e ekran veri belleği denir. Belirli bir grafiği veya Çince karakteri görüntülemek, ilgili nokta matris bilgilerini ilgili depolama birimine yazmak anlamına gelir.


    Grafik RAM'inin adres sayacı (AC), yalnızca yatay adresi (X ekseni) otomatik olarak bir artırır. Yatay adres 0FH olduğunda, 00H'ye sıfırlanır. Ancak, dikey adresi otomatik olarak bir elde ile artırmaz. Bu nedenle, birden fazla veri sürekli olarak yazıldığında, programın dikey adresin sıfırlanması gerekip gerekmediğini belirlemesi gerekir.


      14,Graphics RAM (GDRAM)

    The drawing display RAM provides 128×8 bytes of memory space. When changing the drawing RAM, first write the horizontal and vertical coordinate values ​​continuously, and then write two bytes of data to the drawing RAM. The address counter (AC) will automatically increase the horizontal address (X address) by one. When the horizontal address is 0XFH, it will be reset to 00H; the vertical address will not be automatically incremented by 1. The drawing display must be turned off during writing to drawing RAM.

     
      [cpp] view plain copy//Display Chinese characters voiddispString (uchar X, Y,uchar *msg) //Which row is X and which column is Y. msg is Chinese characters { if(X==0) X = 0x80; // First line, Chinese characters display coordinates else if(X==1) write_data(*msg++); //Display Chinese characters } } ////////////////////////////////// //////////////// //////////////// // Display image voiddisppicture(uchar code *adder) { uint i,j; //*******Display the upper half screen content setting for(i=0;i<32;i++) // 32 column addresses in the upper half of the screen { write_com(0x80 + i); //SET vertical address VERTICALADD write_com(0x80); //SET horizontal address HORIZONTAL ADD for(j=0;j<16;j++) { write_data(*adder); adder++; } } //************Display the content settings of the lower half of the screen for(i=0;i<32;i++) // { write_com(0x80 + i); //SET vertical address VERTICALADD write_com(0x88); //SET horizontal address HORIZONTAL ADD for(j=0;j<16;j++) { write_data(*adder); adder++; } } }
       
         

      For the C language, space is automatically allocated for a defined variable, and its address is the name of the variable. Through this name, the data can be retrieved in the memory and new data can be obtained through calculation. However, in assembly, the programmer needs to define the storage space and send the data to the accumulator for calculation. Every step requires the programmer's operation. In C language, these processes are completed by the compiler.


        15,Some useful FAQs

      ①. Mikrodenetleyici C dilinde değişkenlerin bellek tahsisi nasıl gerçekleştirilir? Derleyici, derleme işlemi sırasında akıllıca tahsis ve geri dönüşüm kodları ekliyor olabilir mi? Önemli nokta şu ki, yazdığım programda bellek taşması hatalarının olmamasını nasıl sağlayabilirim? Eğer özyinelemeli bir işlem yapıyorsam, bellek gereksinimlerini kendim hesaplamak zor olur.  
      ②. Mikrodenetleyici C dilinin değişken tanımlamasında kısıtlamalar olacak mı? Örneğin, kayan noktalı verilerin çarpma ve bölme işlemleri assembly diliyle yazılıyor ve kod oldukça karmaşık. Doğrudan C dilinde yazılırsa çok basit olmaz mı?  
      ③. Mikrodenetleyicinin C diliyle oluşturduğu hex dosyasında, komut ve veri ROM'unun adres dağılımı derleyici tarafından otomatik olarak atanır mı? Kullanıcılar bunu atayabilir mi?  
      Answer 1: The microcontroller program written in C language is first compiled by a program (it seems to be c51.exe). After the compilation is completed, the storage space size of the variables has been arranged, but the specific address has not yet been allocated (the address is floating). Next, another program (it seems to be a51.exe) is connected. After the connection, the specific address is determined.  
      Çok fazla değişken varsa, derleyici veri bölümünün çok büyük olduğunu belirten bir uyarı verecektir. Bellek taşması hatası olmaması için en önemli husus, yığın taşmasının olup olmadığıdır ve bu da deneyime bağlıdır.
      Mikrokontrolcülerin C dili genellikle özyinelemeyi yasaklar ve özyinelemeli işlemlerden genellikle kaçınılır. Sonuçta, mikrokontrolcüler PC değildir ve bu durum hızı etkileyecektir. Özyinelemeli işlem yapmak istiyorsanız, DSP çipi kullanmak daha uygun olur. Kısacası, uygun çipi seçebilmeniz gerekir.
      Cevap 2: Değişkenin boyutu (basamak sayısı) genellikle çip akümülatöründeki basamak sayısıyla aynıdır. Örneğin, 51 genellikle 8 bit kullanır çünkü 8 bitlik bir mikrodenetleyicidir.

      Mikrokontrolcü bit değişkenleri tanımlayabilir, ancak bit dizileri tanımlayamaz. C dilinde yazmak basit görünse de aslında en büyük kod miktarını üretir. Kontrol için kullanılan mikrokontrolcü neredeyse hiç kayan nokta işlemi kullanmaz; bu da sadece yavaş değil, aynı zamanda zahmetli ve yer kaplayıcıdır. Eğer bir DSP çipi ise, uygun bir donanım yapısına sahip olması çok daha iyi olur.  
       

      3. Cevap: Genellikle otomatik olarak tahsis edilir. C dili ve assembly dilinin bir karışımıyla programlanabilir veya Keil C kullanılarak çevrimiçi olarak derlenebilir. Çip ile dış ortam arasındaki veri alışverişi port üzerinden yapılır.


      Yasal Uyarı: Bu makale "Uluslararası Elektronik İşletme Bilgileri"nden alınmıştır. Bu makale yalnızca yazarın kişisel görüşlerini temsil eder ve Sacco Micro'nun ve sektörün görüşlerini yansıtmaz. Yalnızca yeniden basım ve paylaşım amaçlıdır ve fikri mülkiyet haklarının korunmasını destekler. Yeniden basım için lütfen orijinal kaynağı ve yazarı belirtin. Herhangi bir ihlal durumunda, lütfen silinmesi için bizimle iletişime geçin.

      Şirket telefon numarası: +86-0755-83044319
      Faks: +86-0755-83975897
      E-posta: 1615456225@qq.com
      QQ: 3518641314 Yönetici Li

      QQ: 332496225 Yönetici Qiu

      Adres: Shenzhen, Longhua Yeni Bölgesi, Minzhi Caddesi No. 1079, Zhantao Teknoloji Binası, C Binası, Oda 809

      whatsapp

      WhatsApp

      Whatsapp:+8618073002950