亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4119|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+lcd1602液晶屏打字機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:137190 發(fā)表于 2016-9-27 19:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

完整程序下載:
1602液晶屏打字機(jī).zip (21.45 KB, 下載次數(shù): 13)

  1. /********************************************************************************************
  2. 程序名:    1602液晶屏?xí)r鐘程序
  3. 編寫人:    杜洋 
  4. 編寫時(shí)間:  2009年7月6日
  5. 硬件支持:  LCD1602液晶屏  STC12C2052 外部12MHZ晶振
  6. 說(shuō)明備注:    使用2402液晶屏程序,與1602液晶屏程序完全兼容
  7. /********************************************************************************************/
  8. #include <STC12C2052AD.h>                                                // 包含頭文件 //
  9. /********************************************************************************************/
  10. typedef unsigned char      uint8;          // 無(wú)符號(hào)8位整型變量 //

  11. /********************************************************************************************
  12. // 引腳定義 // (使用者根據(jù)實(shí)際更改)
  13. /********************************************************************************************/
  14. #define                LCM2402_DB0_DB7                P1                        // 定義LCM2402的數(shù)據(jù)總線
  15. sbit LCM2402_RS   = P3 ^ 2;                                        // 定義LCM2402的RS控制線
  16. sbit LCM2402_RW   = P3 ^ 3;                                        // 定義LCM2402的RW控制線
  17. sbit LCM2402_E    = P3 ^ 4;                                        // 定義LCM2402的E控制線
  18. sbit LCM2402_Busy = P1 ^ 7;                                        // 定義LCM2402的測(cè)忙線(與LCM2402_DB0_DB7關(guān)聯(lián))
  19. /********************************************************************************************
  20. // 定義LCM2402指令集 // (詳細(xì)請(qǐng)見(jiàn)技術(shù)手冊(cè))
  21. /********************************************************************************************/
  22. #define                        CMD_clear                0x01             // 清除屏幕
  23. #define                        CMD_back                0x02             // DDRAM回零位
  24. #define                        CMD_dec1                0x04             // 讀入后AC(指針)減1,向左寫
  25. #define                        CMD_add1                0x06             // 讀入后AC(指針)加1,向右寫
  26. #define                        CMD_dis_gb1                0x0f             // 開顯示_開光標(biāo)_開光標(biāo)閃爍
  27. #define                        CMD_dis_gb2                0x0e             // 開顯示_開光標(biāo)_關(guān)光標(biāo)閃爍
  28. #define                        CMD_dis_gb3                0x0c             // 開顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍
  29. #define                        CMD_OFF_dis                0x08             // 關(guān)顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍
  30. #define                        CMD_set82                0x38             // 8位總線_2行顯示
  31. #define                        CMD_set81                0x30             // 8位總線_1行顯示(上邊行)
  32. #define                        CMD_set42                0x28             // 4位總線_2行顯示
  33. #define                        CMD_set41                0x20             // 4位總線_1行顯示(上邊行)
  34. #define                        lin_1                        0x80             // 4位總線_1行顯示(上邊行)
  35. #define                        lin_2                        0xc0             // 4位總線_1行顯示(上邊行)

  36. /********************************************************************************************
  37. // 讀LCM忙程序 [底層協(xié)議] // (所有底層協(xié)議都無(wú)需關(guān)注)
  38. // LCM2402測(cè)忙,若LCM2402處于忙狀態(tài),本函數(shù)將等待至非忙狀態(tài) //
  39. /********************************************************************************************/
  40. void LCM2402_TestBusy(void){
  41.            LCM2402_DB0_DB7 = 0xff;                //設(shè)備讀狀態(tài)
  42.            LCM2402_RS = 0;
  43.            LCM2402_RW = 1;
  44.            LCM2402_E = 1;
  45.            while(LCM2402_Busy);                //等待LCM不忙
  46.            LCM2402_E = 0;                                //
  47. }
  48. /********************************************************************************************
  49. // 寫指令程序 //
  50. // 向LCM2402寫命令 本函數(shù)需要1個(gè)指令集的入口參數(shù) //
  51. /********************************************************************************************/
  52. void LCM2402_WriteCMD(uint8 LCM2402_command) {
  53.           LCM2402_TestBusy();
  54.           LCM2402_DB0_DB7 = LCM2402_command;
  55.           LCM2402_RS = 0;
  56.           LCM2402_RW = 0;
  57.           LCM2402_E = 1;
  58.           LCM2402_E = 0;
  59. }
  60. /********************************************************************************************
  61. // 寫數(shù)據(jù)程序 //
  62. // 向LCM2402寫數(shù)據(jù) //
  63. /********************************************************************************************/
  64. void LCM2402_WriteData(uint8 LCM2402_data){
  65.     LCM2402_TestBusy();
  66.         LCM2402_DB0_DB7 = LCM2402_data;
  67.           LCM2402_RS = 1;
  68.           LCM2402_RW = 0;
  69.           LCM2402_E = 1;
  70.           LCM2402_E = 0;
  71. }
  72. /********************************************************************************************
  73. // 打印字符串程序 // (本函數(shù)調(diào)用指針函數(shù))
  74. // 向LCM發(fā)送一個(gè)字符串,長(zhǎng)度48字符之內(nèi)
  75. // 第一行位置 0x00~0x17  第二行位置 0x40~0x57
  76. // 應(yīng)用舉例:print(0x80,"doyoung.net"); //在第一行第一位處從左向右打印doyoung.net字符串
  77. /********************************************************************************************/
  78. void print(uint8 a,uint8 *str){
  79.         LCM2402_WriteCMD(a | 0x80);
  80.         while(*str != '\0'){
  81.                 LCM2402_WriteData(*str++);
  82.         }
  83.         *str = 0;
  84. }
  85. /********************************************************************************************
  86. // 打印單字符程序 //
  87. // 第一行位置 0x00~0x17  第二行位置 0x40~0x57
  88. // 向LCM發(fā)送一個(gè)字符,以十六進(jìn)制(0x00)表示
  89. // 應(yīng)用舉例:print(0xc0,0x30); //在第二行第一位處打印字符“0”
  90. /********************************************************************************************/
  91. void print2(uint8 a,uint8 t){
  92.                 LCM2402_WriteCMD(a | 0x80);
  93.                 LCM2402_WriteData(t);
  94. }
  95. /********************************************************************************************
  96. // LCM2402初始化 //(使用者可自定義,加 * 號(hào)程序行必須保留但可修改)
  97. /********************************************************************************************/
  98. void LCM2402_Init(void){
  99.           LCM2402_WriteCMD(CMD_set82);        //* 顯示模式設(shè)置:顯示2行,每個(gè)字符為5*7個(gè)像素
  100.           LCM2402_WriteCMD(CMD_clear);        //  顯示清屏
  101.           LCM2402_WriteCMD(CMD_back);                //* 數(shù)據(jù)指針指向第1行第1個(gè)字符位置
  102.           LCM2402_WriteCMD(CMD_add1);                //  顯示光標(biāo)移動(dòng)設(shè)置:文字不動(dòng),光標(biāo)右移
  103.           LCM2402_WriteCMD(CMD_dis_gb3);         //  顯示開及光標(biāo)設(shè)置:顯示開,光標(biāo)開,閃爍開
  104. }
  105. /********************************************************************************************/
  106. //                        以上是LCM2402驅(qū)動(dòng)程序                        //
  107. /*********************************************************************************************/

  108. /********************************************************************************************
  109. 串口初始化程序:波特率4800,(終端設(shè)置:4800,8,無(wú),1,無(wú))
  110. /********************************************************************************************/
  111. void Init_COM(void){
  112.         TMOD = 0x20;        //定時(shí)器工作方式設(shè)置,定時(shí)器1方式2
  113.         SCON = 0x50;        //串口工作方式1,允許串口接收   
  114.         TH1 = 0xF3;                //定時(shí)器初值高8位設(shè)置
  115.         TL1 = 0xF3;                //定時(shí)器初值低8位設(shè)置
  116.         PCON = 0x80;        //波特率倍頻
  117.         TR1 = 1;                //定時(shí)器啟動(dòng)   
  118. }

  119. /********************************************************************************************
  120. 主程序:實(shí)現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)發(fā)送出去
  121. /********************************************************************************************/
  122. void main(){
  123.    unsigned char dat,li=0x80;
  124.    Init_COM();                //串口初始化
  125.    LCM2402_Init();        //LCM2402初始化
  126.    print(0x80," DoYoung Studio "); //在第一行打印LOGO字符
  127.    print(0x40,"Input your words"); //在第二行打印LOGO字符
  128.    while(1){
  129.        if (RI == 1){                //接收中斷標(biāo)志位為1時(shí)
  130.                         dat = SBUF;                //接收數(shù)據(jù) SBUF 為單片機(jī)的接收發(fā)送緩沖寄存器
  131.             RI = 0;                        //令接收中斷標(biāo)志位為0(軟件清零)
  132.                     SBUF = dat;                //將接收的數(shù)據(jù)發(fā)送回PC
  133.                         while(TI == 0);
  134.                         TI = 0;
  135.                         print2(li,dat); //在第一行顯示串口字符串
  136.                         li++;
  137.                         if(li > 0x8f){
  138.                                 li = 0x40;
  139.                         }
  140.                         if(li > 0x4f && li < 0x80){
  141.                                 li = 0x80;
  142.                         }
  143.                 }
  144.    }
  145. }
  146. /********************************************************************************************/

  147. /*************************************************************
  148. * 杜洋工作室 DoYoung Studio
  149. * 分享創(chuàng)意電子 Share ideas of electronic
  150. /*************************************************************/
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:7485 發(fā)表于 2016-9-27 19:47 | 只看該作者
電腦打字,串口發(fā)送,單片機(jī)接收,送1602顯示?
回復(fù)

使用道具 舉報(bào)

板凳
ID:137190 發(fā)表于 2016-9-28 00:36 | 只看該作者
ahshmj 發(fā)表于 2016-9-27 19:47
電腦打字,串口發(fā)送,單片機(jī)接收,送1602顯示?

是的就是這個(gè)流程,電腦上要打開串口調(diào)試助手。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表