Berita
Berita
Ringkasan sains popular terkuat MCU [koleksi yang disyorkan] (3)
2022-03-17 230
12,Overview of Chinese characters:
Untuk mengeluarkan aksara Cina pada monitor atau pencetak, aksara Cina direka bentuk menjadi matriks titik mengikut simbol grafik, dan kod matriks titik (kod glif) yang sepadan diperoleh.  
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.  
  Kod dalam kamera  
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.  
Jika kita menggantikan "." pada grafik "口" ini dengan "0", kita boleh mendapatkan kod glif "口" dengan sangat jelas: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 3FFAH 2004H 0000H 0000H. Apabila komputer ingin mengeluarkan "口", ia mula-mula mencari alamat pertama pustaka fon paparan, mengira berdasarkan kod dalaman "口", dan kemudian mencari kod glif "口", dan kemudian mengimbas skrin secara berurutan mengikut kod glif (dalam binari) melalui kawalan penjana aksara. Jika kod binari ialah "0", tempat di mana ia ialah "0" diimbas, dan tempat di mana ia ialah "1" diimbas untuk diserlahkan, supaya corak aksara "口" boleh diperolehi.  
Fon aksara Cina disusun mengikut susunan kod piawai kebangsaan dan disimpan dalam memori dalam bentuk fail binari, membentuk pustaka fon aksara Cina, juga dikenali sebagai pustaka glif aksara Cina, atau pustaka aksara Cina.
Dua kaedah pengekodan, lihat fail pengepala
    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] codeGB_16[k] menunjukkan bahawa terdapat tatasusunan struktur typFNT_GB16 yang dipanggil codeGB_16 codeGB_16[k] ialah ahli k+1 bagi tatasusunan indeks ialah ahli struktur typFNT_GB16, jadi ia boleh dirujuk dengan codeGB_16[k].Index. Pada masa yang sama, indeks ialah tatasusunan, jadi ia boleh diindeks[0] Jika((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])) && ialah operator logik AND, yang bermaksud bahawa nilai pada kedua-dua belah simbol && adalah benar. Hanya nilai && adalah benar, iaitu, benar && benar = benar. Ayat ini bermaksud: codeGB_16[k].Index[0]==c[0] dan codeGB_16[k].Index[1]==c[1] diwujudkan pada masa yang sama. Jika pernyataan berikut dilaksanakan, codeGB_16[] ialah tatasusunan struktur, codeGB_16[k].Index[0] bermaksud nilai elemen ke-0 bagi ahli indeks bagi struktur ke-K bagi tatasusunan struktur.    

    13,12864 LCD:

    Setiap titik paparan sepadan dengan nombor binari, 1 bermaksud hidup, 0 bermaksud mati. RAM yang menyimpan maklumat matriks titik ini dipanggil memori data paparan. Untuk memaparkan aksara grafik atau Cina tertentu bermaksud menulis maklumat matriks titik yang sepadan ke dalam unit storan yang sepadan.


    Pembilang alamat (AC) RAM grafik hanya akan menambah alamat mendatar (paksi X) secara automatik sebanyak satu. Apabila alamat mendatar = 0FH, ia akan ditetapkan semula kepada 00H. Walau bagaimanapun, ia tidak akan menambah alamat menegak secara automatik dengan carry. Oleh itu, apabila berbilang data ditulis secara berterusan, program perlu menentukan sama ada alamat menegak perlu ditetapkan semula.


      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

      1. Bagaimanakah peruntukan memori pembolehubah dijalankan dalam bahasa C mikropengawal? Mungkinkah pengkompil menambah peruntukan dan mengitar semula kod secara bijak semasa proses kompilasi? Perkara utama ialah program yang saya buat, bagaimana saya boleh memastikan ia tidak mempunyai ralat limpahan memori? Jika saya melakukan operasi rekursif, maka keperluan memori sukar untuk dikira sendiri.  
      2. Adakah bahasa mikropengawal C akan dihadkan dalam definisi pembolehubah? Contohnya, operasi pendaraban dan pembahagian data titik apungan ditulis melalui pemasangan, dan kodnya agak rumit. Jika ditulis terus dalam bahasa C, bukankah ia terlalu mudah?  
      3. Dalam fail hex yang dijana oleh bahasa C mikropengawal, adakah pengagihan alamat ROM arahan dan data diberikan secara automatik oleh pengkompil? Bolehkah pengguna memberikannya?  
      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.  
      Jika terdapat terlalu banyak pembolehubah, pengkompil akan meminta segmen data terlalu besar. Untuk memastikan tiada ralat limpahan memori, pertimbangan utama adalah sama ada tindanan limpahan, dan ia bergantung pada pengalaman.
      Bahasa C bagi mikropengawal secara amnya melarang rekursi, dan operasi rekursi secara amnya dielakkan. Lagipun, mikropengawal bukanlah PC, yang akan menjejaskan kelajuan. Jika anda ingin melakukan rekursi, adalah lebih sesuai untuk menggunakan cip DSP. Pendek kata, anda mesti dapat memilih cip yang sesuai.
      Jawapan 2: Saiz pembolehubah (bilangan digit) secara amnya sama dengan bilangan digit dalam akumulator cip. Contohnya, 51 biasanya menggunakan 8 bit kerana ia merupakan mikropengawal 8-bit.

      Mikropengawal boleh mentakrifkan pembolehubah bit, tetapi ia tidak boleh mentakrifkan tatasusunan bit. Penulisan dalam bahasa C nampaknya mudah, tetapi sebenarnya menghasilkan jumlah kod yang terbesar. Mikropengawal yang digunakan untuk kawalan jarang menggunakan operasi titik apungan, yang bukan sahaja perlahan tetapi menyusahkan dan mengambil ruang. Jika ia cip DSP, ia akan menjadi lebih baik jika ia mempunyai struktur perkakasan yang sesuai.  
       

      Jawapan 3: Secara amnya, ia diperuntukkan secara automatik. Ia boleh diprogramkan dalam campuran bahasa C dan bahasa pemasangan, atau ia boleh dipasang dalam talian menggunakan Keil C. Pertukaran data antara cip dan bahagian luar dilakukan melalui port.


      Penafian: Artikel ini diterbitkan semula daripada "Maklumat Perniagaan Elektronik Antarabangsa". Artikel ini hanya mewakili pandangan peribadi penulis dan tidak mewakili pandangan Sacco Micro dan industri. Ia hanya untuk cetakan semula dan perkongsian serta menyokong perlindungan hak harta intelek. Sila nyatakan sumber asal dan penulis untuk cetakan semula. Jika terdapat sebarang pelanggaran, sila hubungi kami untuk memadamkannya.

      Nombor telefon syarikat: +86-0755-83044319
      Faks/FAKS: +86-0755-83975897
      E-mel: 1615456225@qq.com
      SQ: 3518641314 Pengurus Li

      QQ: 332496225 Pengurus Qiu

      Alamat: Bilik 809, Bangunan C, Bangunan Teknologi Zhantao, No. 1079 Minzhi Avenue, Daerah Baharu Longhua, Shenzhen

      whatsapp

      WhatsApp

      Whatsapp:+8618073002950