久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5156|回復: 0
收起左側(cè)

威達SP系列微型打印機51單片機驅(qū)動程序

[復制鏈接]
ID:75926 發(fā)表于 2015-4-10 18:44 | 顯示全部樓層 |閱讀模式
  1. //===============================================================

  2. //威達SP系列微型打印機驅(qū)動程序
  3. //硬件連接:51的串口發(fā)送接收端接打印機的對應口
  4. //print_driver.c
  5. //writer:谷雨 2017年3月28于EDA實驗室
  6. //================================================================

  7. #include<reg52.h>

  8. #define uint unsigned int
  9. #define uchar unsigned char

  10. //點陣設置
  11. #define         Dot_Matrix16_16                0x00   
  12. #define         Dot_Matrix8_16                 0x01
  13. #define         Dot_Matrix16_8                 0x02
  14. #define         Dot_Matrix8_8                  0x03

  15. void UART_init(uchar n);
  16. void UART_SendString(uchar len,uchar *str);
  17. void Printer_English(uchar leng,uchar *string);
  18. void Printer_Char(uchar length,uchar *cha);   
  19. void Printer_init();
  20. void ALL_in_one(uchar num);


  21. uchar Init_Printer[2]={0x1B,0x40};// 初始化打印機 ''2''
  22. uchar Set_Char[2]={0x1c,0x26}; //設置為漢字打印 2
  23. uchar Select_Char_Set1[2]={0x1b,0x36}; //設置字符集 1 打印 2
  24. uchar Select_Char_Set2[2]={0x1b,0x37}; //設置字符集 2 打印 2
  25. uchar Set_Dot_Matrix[3]={0x1c,0x69,Dot_Matrix8_8}; //選擇8X8點陣打印 3 第三個數(shù)設為n=0 16×16點陣
  26.                         //n=1 8*16點陣 n=2 16*8點陣 n=3 8*8點陣
  27. uchar Anti_White[3]={0x1B,0x69,0x00};              //禁止反白 3
  28. uchar Ch_Rotation_Zero[3]={0x1c,0x49,2}; //設置為漢字0度旋轉(zhuǎn)打印 3    P56
  29. uchar Set_N_LineSpace[3]={0x1b,0x31,0x01}; //設置n點行間距 3 P28
  30. uchar Set_Three_Go[3]={0x1b,0x4a,3};    //設置三點走行 3
  31. uchar Exit_Ch[2]={0x1c,0x2e}; // 退出漢字打印 2
  32. uchar CR_line[1]={0x0d}; // 換行

  33. //--------------------------------------------------------
  34. // 函數(shù)名稱 :void UART_init(uchar n)
  35. // 函數(shù)功能 :串口初始化
  36. // 入口參數(shù) :n 為波特率選擇位
  37. // 出口參數(shù) :無
  38. //--------------------------------------------------------
  39. void UART_init(uchar n)   
  40. {
  41.    TMOD=0x20;    //定時器T1使用工作方式2
  42.     switch(n)
  43. {
  44.      case 1:
  45.      TH1=0xe8;
  46.      TH0=0xe8; //設置波特率2400
  47.         break;
  48.      case 2:
  49.      TH1=0xf4;
  50.      TH0=0xf4; //設置波特率4800
  51.      break;
  52.      case 3:
  53.      TH1=0xfa;
  54.      TH0=0xfa; //設置波特率9600
  55.      break;
  56.         case 4:
  57.      TH1=0xfd;
  58.      TH0=0xfd;//設置波特率19200
  59.      break;
  60.      default:
  61.       break;
  62. }
  63.     TR1=1;      //開始計時
  64.     PCON=0x80;     //SMOD=1;
  65.     SCON=0x50;     //工作方式1,波特率9600bit/s,允許接收
  66. EA=0;
  67.     TI=1;
  68. RI=1;
  69. }

  70. //--------------------------------------------------------
  71. // 函數(shù)名稱 :void UART_SendString(uchar len,uchar *str)
  72. // 函數(shù)功能 :串口輸出字符串
  73. // 入口參數(shù) :length為漢字碼組長度 str為機內(nèi)碼首地址
  74. // 出口參數(shù) :無
  75. //--------------------------------------------------------
  76. void UART_SendString(uchar len,uchar *str)
  77. {
  78. uchar i=0;
  79. while(i   {
  80.    while(!TI);
  81.    SBUF=*str++;
  82.    TI=0;
  83.    i++;
  84.    }

  85. }

  86. //--------------------------------------------------------
  87. // 函數(shù)名稱 :void Printer_init()
  88. // 函數(shù)功能 :打印機初始化  
  89. // 入口參數(shù) :無
  90. // 出口參數(shù) :無
  91. //--------------------------------------------------------
  92. void Printer_init()
  93. {
  94. UART_SendString(2,Init_Printer);//初始化打印機
  95. UART_SendString(3,Set_Dot_Matrix);//選擇8*8點陣
  96. UART_SendString(3,Anti_White);//禁止反白
  97. }

  98. //--------------------------------------------------------
  99. // 函數(shù)名稱 :void Printer_English(uchar leng,uchar *string)
  100. // 函數(shù)功能 :打印機普通方式初始化  
  101. // 入口參數(shù) :leng 打印的字符長度
  102. //     string 打印的字符串
  103. // 出口參數(shù) :無
  104. //--------------------------------------------------------
  105. void Printer_English(uchar leng,uchar *string)
  106. {
  107. UART_SendString(2,Select_Char_Set1);//選擇字符集1
  108. UART_SendString(3,Set_Dot_Matrix);//選擇8*8點陣
  109. UART_SendString(leng,string);
  110. }

  111. //--------------------------------------------------------
  112. // 函數(shù)名稱 :void Printer_Char(uchar length,uchar *cha)
  113. // 函數(shù)功能 :打印機漢字打印方式初始化  
  114. // 入口參數(shù) :length為漢字碼組長度 cha為機內(nèi)碼首地址
  115. // 出口參數(shù) :無
  116. //--------------------------------------------------------
  117. void Printer_Char(uchar length,uchar *cha)
  118. {
  119. UART_SendString(2,Set_Char);//選擇漢字打印方式
  120. UART_SendString(3,Set_Dot_Matrix);//選擇8*8點陣
  121. UART_SendString(length, cha);
  122. UART_SendString(2,Exit_Ch);
  123. }

  124. //--------------------------------------------------------
  125. // 函數(shù)名稱 :void ALL_in_one(unsigned int num)
  126. // 函數(shù)功能 :功能集合函數(shù)
  127. // 入口參數(shù) :num為功能選擇
  128. // 出口參數(shù) :無
  129. //--------------------------------------------------------
  130. void ALL_in_one(uchar num)
  131. {
  132.     uchar big[3]={0x1b,0x57,3}; //放大倍數(shù)打印(橫縱均放大)若想橫放大則第二項為0x55,若為縱放大則為0x56
  133.                                        // 此處放大三倍
  134.     uchar under_line[3]={0x1b,0x2d,1};      //下劃線打開,此命令后所有字符均有下劃線除非中止
  135.                                                    // 最后項值設置下劃線,此處為打開,若關為0
  136.     uchar blank[4]={0x1b,0x66,0,3};       //打印空格或空行  
  137.                                                  //第三項值設置m,若為0打印空格符,若為1打印空行
  138.                                                  // 第四項設置n,為空格或行的個數(shù)                                   
  139. switch (num)                                 

  140. {
  141.    case 0:            //換行
  142.      UART_SendString(1,CR_line);
  143.      break;
  144.    case 1:            //放大倍數(shù)打印(橫縱均放大)
  145.      UART_SendString(3,big);
  146.      break;
  147.     case 2:       //下劃線打開,此命令后所有字符均有下劃線除非中止
  148.      UART_SendString(3,under_line);
  149.      break;
  150.    case 3:   //打印空格或空行
  151.      UART_SendString(4,blank);
  152.      break;
  153.     default :
  154.      break;
  155. }
  156. }

  157. void main()
  158. {
  159.    uchar English_Table[10] = "I LOVE YOU";
  160.    uchar Data1[]={0xD1,0xCC,0xCC,0xA8,0xB4,0xF3,0xD1,0xA7,0xC4,0xe3,     
  161.                         0xba,0xc3,0x0a,0xce,0xd2,0xb0,0xae,0xc4,0xe3,0x0a,};  
  162.    uchar XX[]={48,49,50,51};
  163.    UART_init(3);//串口初始化
  164.    Printer_init();// 打印機初始化
  165.    ALL_in_one(2);//開下劃線
  166.    Printer_Char(20,Data1);//打印煙臺大學你好,我愛你
  167.    Printer_English(10,English_Table);//打印I LOVE YOU
  168.    ALL_in_one(0);//換行
  169.    Printer_English(4,XX);  
  170.    while(1);
  171. }
復制代碼


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产欧美一区二区 | 免费能直接在线观看黄的视频 | 天堂av中文在线 | 欧美黄 片免费观看 | 亚洲视频一区二区三区 | 麻豆av在线免费观看 | av免费网址 | 亚洲欧美激情精品一区二区 | 国产精品免费观看 | 一级a性色生活片久久毛片 午夜精品在线观看 | 国产免费又黄又爽又刺激蜜月al | 国产欧美精品一区二区 | 日本高清视频在线播放 | 成人午夜免费视频 | 日韩在线看片 | 午夜精品久久久久久久星辰影院 | 国产欧美久久精品 | 国产精品美女久久久久久久网站 | 成人超碰在线 | 中文字幕亚洲一区二区三区 | 女女百合av大片一区二区三区九县 | 性一交一乱一透一a级 | 天天拍天天操 | 久久久精品影院 | 最新91在线| 色资源站 | 福利一区二区在线 | 久久久久久久一区二区三区 | 91视频网| 免费成人午夜 | 国产激情在线 | 九九热精品在线 | 久久久九九九九 | av在线免费播放 | 国产高清精品在线 | 99精品欧美一区二区蜜桃免费 | 免费成年网站 | 嫩草视频在线免费观看 | 亚洲精品一区在线 | 国产高清免费视频 | 久久久精品视频一区二区三区 |