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

QQ登錄

只需一步,快速開始

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

基于UI017+51單片機(jī)制作的PPT翻頁(yè)筆程序源碼與資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:412951 發(fā)表于 2018-10-21 00:50 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
樓主整理的資源,大家可以來(lái)看看哈
模擬USB鍵盤的USB接口芯片開發(fā)使用說(shuō)明書
1. UI017簡(jiǎn)要介紹
UI017 通過(guò)模擬 USB 鍵盤,將 UART 接收來(lái)的數(shù)據(jù)轉(zhuǎn)換為鍵盤格式的數(shù)據(jù)發(fā)給PC/安卓手機(jī)平板,從而在 PC/安卓手機(jī)平板上顯示出來(lái)。
UI017 適用于需要將數(shù)據(jù)傳給 PC/安卓手機(jī)平板顯示的應(yīng)用,如條碼槍、電子秤、RFID讀卡器、身份證讀卡器等。UI017 還支持多個(gè)多媒體鍵。



UI017引腳圖:


UI017管腳功能定義:



UI017電路圖:


2. UI017功能、性能
您可以將希望在 PC 上顯示的字符(ASCII)發(fā)給 UI017,由 UI017 轉(zhuǎn)換為
USB 鍵盤的數(shù)據(jù)格式發(fā)給PC,在 PC的記事本、寫字板或 WORD 等軟件中就可
以顯示出您想要的字符。發(fā)給PC 的數(shù)據(jù)相當(dāng)于您在鍵盤上輸入的數(shù)據(jù)。
全速/低速USB HID接口,無(wú)需安裝驅(qū)動(dòng)、應(yīng)用軟件,即插即用
支持5V 或 3.3V、9600N81 UART接口
支持windows2000/Xp/Vista/win7/8/10;支持 Linux;
支持安卓平板、手機(jī)OTG 連接(部分安卓平板、手機(jī) OTG不支持全速,只支持低速)
支持全鍵盤、組合鍵操作(不能完整支持任意組合鍵)
使用 HID Usage ID
支持讀取 NumLock、CapsLock、ScrollLock LED 的狀態(tài)
支持輸入0x01~0x7F 的ASCII
在 0x01~0x7F之外的字符將不予轉(zhuǎn)換
ASCII 輸入支持多國(guó)語(yǔ)言(2017 年6 月以后發(fā)貨的芯片有此功能)
除了標(biāo)準(zhǔn)美式鍵盤外,還支持德語(yǔ)、英國(guó)英語(yǔ)、法語(yǔ)、西班牙語(yǔ)、葡萄牙語(yǔ)(國(guó)際、巴西)、意大利語(yǔ)
同時(shí)支持ASCII、HID Usage ID兩種輸入方式,可隨意切換。
支持21 個(gè)多媒體按鍵
電源控制3 個(gè):關(guān)閉電源、休眠、喚醒
快捷鍵4 個(gè):打開郵件軟件、打開計(jì)算器、打開資源管理器、打開資
源管理器查找界面
播放器控制 8 個(gè):打開播放器、播放/暫停、停止、音量升高、音量降低、靜音、上一個(gè)文件、下一個(gè)文件
網(wǎng)頁(yè)瀏覽控制 6 個(gè):打開瀏覽器/回到主頁(yè)、后退、前進(jìn)、停止、刷新、打開收藏夾
支持自動(dòng)或不自動(dòng)釋放按鍵,更加靈活
全速芯片支持每秒256 個(gè)字符的輸入速度, 相當(dāng)于不到4ms 就可以在PC上顯示1 個(gè)字符
低速芯片支持每秒50 個(gè)字符
簡(jiǎn)單的外圍電路設(shè)計(jì)
不需要外圍晶體、復(fù)位電路,只需兩顆電容
SOP14/SOP18封裝
注意:以下說(shuō)明中,0x 表示后面的數(shù)據(jù)是十六進(jìn)制。如0x80,表示十六進(jìn)
制的 80。

4.開發(fā)使用指南
UI017 在正常工作時(shí),外圍電路只需要兩顆電容,電腦/平板/手機(jī)上不需要裝任何驅(qū)動(dòng),連接上USB 接口就可以使用。
4.1.引腳定義
UI017 有兩種封裝,請(qǐng)優(yōu)先選擇SOP14封裝。

4.3.UART數(shù)據(jù)幀格式
UART的數(shù)據(jù)幀格式為:9600bps 波特率,8 位數(shù)據(jù)位,無(wú)校驗(yàn)位,1~2位停止位。上電后,UI017 的UART_RDY引腳輸出低,表明 UI017正在等待上位機(jī)初始化,此時(shí),UART_RX引腳不接收任何數(shù)據(jù)。UI017的 UART_RDY 引腳輸出高后,UI017的 UART_RX 引腳就處于監(jiān)聽狀態(tài),一旦接收到數(shù)據(jù),立即轉(zhuǎn)換發(fā)送給上位機(jī)。

4.4.1.ASCII 輸入方式
ASCII輸入方式下,MCU 只需要將需要在 PC 上顯示的ASCII值發(fā)給UI017就可以。ASCII表格請(qǐng)參考附錄1。
ASCII輸入方式下,MCU 輸入1 個(gè)字節(jié)1 個(gè)字符,該方式下不能實(shí)現(xiàn)組合按鍵。
ASCII輸入方式下,如果 MODE0=低時(shí),MCU 只需發(fā) 0x00 就可以釋放當(dāng)前所有正常按鍵。
如果要在電腦上用串口調(diào)試工具發(fā)送命令,請(qǐng)參考“串口調(diào)試工具設(shè)置說(shuō)明”。如果使用單片機(jī)發(fā)命令,請(qǐng)參考“單片機(jī)發(fā)命令 C 語(yǔ)言示例”。

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. typedef unsigned int uint;
  4. typedef unsigned char uchar ;
  5. uchar R_data;
  6. bit R_flag=0;
  7. uchar page_up[] = {0x80,0x4b};
  8. uchar page_down[] = {0x80,0x4e};
  9. uchar f5[] = {0x80,0x3e};
  10. uchar esc[] = {0x80,0x29};
  11. /********************************************************************
  12. * 名稱 : Uart_Init()
  13. * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中斷
  14. * 輸入 : 無(wú)
  15. * 輸出 : 無(wú)
  16. ***********************************************************************/
  17. void Uart_Init(void)
  18. {
  19.      TMOD = 0x20;   //定時(shí)器工作在定時(shí)器1的方式2
  20.      PCON = 0x00;   //不倍頻
  21.      SCON = 0x50;        //串口工作在方式1,并且啟動(dòng)串行接收       
  22.      TH1 = 0xFd;    //設(shè)置波特率 9600
  23.      TL1 = 0xFd;
  24.      TR1 = 1;                //啟動(dòng)定時(shí)器1
  25.          ES = 1;                //開串口中斷
  26.          EA = 1;                //開總中斷               
  27. }
  28. /********************************************************************
  29. * 名稱 : Uart_SendByte(uchar Byte)
  30. * 功能 : 串口發(fā)送1字節(jié)數(shù)據(jù)
  31. * 輸入 : 無(wú)
  32. * 輸出 : 無(wú)
  33. ***********************************************************************/
  34. void Uart_SendByte(uchar Byte)
  35. {
  36.         SBUF =        Byte;
  37.         while(!TI)                   //如果發(fā)送完畢,硬件會(huì)置位TI
  38.         {
  39.                 _nop_();       
  40.         }
  41.         TI = 0;       
  42. }
  43. /********************************************************************
  44. * 名稱 : Main()
  45. * 功能 : 主函數(shù)
  46. * 輸入 : 無(wú)
  47. * 輸出 : 無(wú)
  48. ***********************************************************************/
  49. void main()
  50. {
  51.         uchar i;
  52.         Uart_Init();
  53.         while(1)
  54.         {
  55.                 if(R_flag==1)
  56.                 {
  57.                         switch(R_data)
  58.                         {
  59.                                 case 1:{for(i=0;i<2;i++) Uart_SendByte(page_up[i]);break;}
  60.                                 case 2:{for(i=0;i<2;i++) Uart_SendByte(page_down[i]);break;}
  61.                                 case 3:{for(i=0;i<2;i++) Uart_SendByte(f5[i]);break;}
  62.                                 case 4:{for(i=0;i<2;i++) Uart_SendByte(esc[i]);break;}
  63.                         }
  64.                         //P1 =  R_data;
  65.                         //Uart_SendByte(R_data);
  66.                         R_flag=0;
  67.                 }       
  68.         }               
  69. }
  70. /********************************************************************
  71. * 名稱 : Uart_Int()
  72. * 功能 : 串口中斷子函數(shù)
  73. * 輸入 : 無(wú)
  74. * 輸出 : 無(wú)
  75. ***********************************************************************/
  76. void Uart_Int(void) interrupt 4
  77. {
  78. //        static uchar i = 7;    //定義為靜態(tài)變量,當(dāng)重新進(jìn)入這個(gè)子函數(shù)時(shí) i 的值不會(huì)發(fā)生改變
  79.         EA = 0;
  80.         if(RI == 1)   //當(dāng)硬件接收到一個(gè)數(shù)據(jù)時(shí),RI會(huì)置位
  81.         {
  82.                 R_data= SBUF; //這里減去48是因?yàn)閺碾娔X中發(fā)送過(guò)來(lái)的數(shù)據(jù)是ASCII碼。
  83.                 RI = 0;  
  84.                 R_flag=1;
  85.         }
  86.         EA = 1;
  87. }
復(fù)制代碼

所有資料51hei提供下載:
PPT翻頁(yè)筆.rar (854.49 KB, 下載次數(shù): 61)




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:252657 發(fā)表于 2018-10-24 15:29 | 只看該作者
就這些嗎,都沒(méi)用到
回復(fù)

使用道具 舉報(bào)

板凳
ID:624752 發(fā)表于 2019-10-15 22:26 | 只看該作者
可以可以
回復(fù)

使用道具 舉報(bào)

地板
ID:624752 發(fā)表于 2019-10-15 22:27 | 只看該作者
您好,樓主,可以請(qǐng)你做一款翻頁(yè)筆嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:720798 發(fā)表于 2020-4-2 10:57 | 只看該作者
您好,有Proteus的仿真圖嘛?
回復(fù)

使用道具 舉報(bào)

6#
ID:748894 發(fā)表于 2020-5-11 10:31 來(lái)自手機(jī) | 只看該作者
1095798460 發(fā)表于 2020-4-2 10:57
您好,有Proteus的仿真圖嘛?

你用的什么單片機(jī)?
回復(fù)

使用道具 舉報(bào)

7#
ID:1018233 發(fā)表于 2022-4-30 22:32 | 只看該作者
有原理圖嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:1125031 發(fā)表于 2024-6-13 21:25 | 只看該作者
請(qǐng)問(wèn)樓主有Proteus 8 Professional的仿真圖嗎。新手正在努力學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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