[国产单片机] 有没有手机usb与STC单片机通信的例子

[复制链接]
4254|4
 楼主| changle11sdo5 发表于 2015-5-19 20:18 来自手机 | 显示全部楼层 |阅读模式
吊在树上的猫 发表于 2015-5-20 16:57 | 显示全部楼层
手机USB与STC单片机不能直接通信,需要使用CH340芯片,将手机的USB口转为串口和单片机通信,这种模式下手机USB做USB主机;如果要使手机USB做设备可用CH9343这种芯片。用CH340比较方便,安卓驱动厂家都会提供。
 楼主| changle11sdo5 发表于 2015-5-22 15:57 来自手机 | 显示全部楼层
我应该是想STC做USB主机,通过USB数据线,读取插在手机里面的内存卡,手机塞班系统
huarana 发表于 2015-5-24 20:43 | 显示全部楼层
stc还没那么牛x

你的需要要支持 usb otg功能的单片机才行

中低端的都不带。
迹水湾 发表于 2015-5-27 20:47 | 显示全部楼层
新人学习51,该汇编程序不能正常复位,其他程序可以,就是ram空间按下复位不变,pc指针感觉也没有移动到0000h,求大神找下问题所在
  1. ;按键控制数码管显示加减
  2. ;单片机stc89c52rc         12Mhz
  3. ;共阴数码管
  4. ;两片74hc573控制8位数码管
  5. SW0        BIT        P1.0                ;定义SW0为按键加
  6. SW1        BIT        P1.1                ;定义SW1为按键-
  7. D_EN        BIT        P1.2        ;定义段码锁存端
  8. W_EN        BIT        P1.3        ;定义位码锁存端
  9. COM        EQU        P0                        ;将P0定义为数据端
  10. SHIWEI        EQU        40H                ;定义十位存到40h
  11. GEWEI        EQU        41H                ;定义个位存到41h
  12. BUFFER        EQU        42H                ;定义缓存区
  13.         
  14.         ORG        0000H                ;复位初始化地址
  15.         SJMP        START        ;
  16.         ORG        0030H                ;
  17. START:                                ;初始化
  18.         MOV        SP,60H                ;移动堆栈指针
  19.         SETB        SW0                ;按键+置一
  20.         SETB        SW1                ;按键-置一
  21.         SETB        W_EN        ;打开位选使能
  22.         MOV        COM,#0FFH        ;让所有的数码管都不选中
  23.         CLR        W_EN                ;关闭位选使能
  24.         SETB        D_EN        ;打开段选使能
  25.         MOV        COM,#00H        ;熄灭所有的数码管
  26.         CLR        D_EN                ;关闭段选使能
  27.         CLR        BUFFER                ;清空缓冲区
  28.         MOV        DPTR,#TAB        ;让DPTR指向显示表列
  29.         CLR        SHIWEI                ;清空十位
  30.         CLR        GEWEI                ;清空个位

  31. MAIN:                                ;主函数
  32.         CALL        KEYPORT        ;执行按键扫描程序
  33.         CALL        SHOW        ;执行显示程序
  34.         SJMP        MAIN        ;形成主循环

  35. KEYPORT:                                ;按键子程序
  36.                 CALL        DELAY10_MS        ;延时10ms跳过按键抖动区
  37.                 JNB        SW0,JIA                        ;判断按键+是否按下,按下执行加法程序
  38.                 JNB        SW1,JIAN                ;判断按键-是否按下,按下执行减法程序
  39.         HUI:RET                                        ;若未按下返回主循环
  40.         JIA:                                        ;加法程序
  41.                 JNB        SW0,$                        ;判断按键是否释放,未释放pc指针不变
  42.                 INC        BUFFER                        ;缓冲区数据加1
  43.                 SJMP        HUI                        ;返回主程序
  44.         JIAN:                                        ;减法程序
  45.                 JNB        SW1,$                        ;缓冲区数据
  46.                 DEC        BUFFER                        ;缓冲区数据减1
  47.                 SJMP        HUI                        ;返回主程序

  48. SHOW:                                        ;显示子程序
  49.         MOV        A,BUFFER                ;将缓冲区数据给累加器a
  50.         MOV        B,#10                        ;给寄存器b赋值10
  51.         DIV        AB                                ;执行A/b,结果商(十位)自动存到A,余数(个位)存到b
  52.         MOV        SHIWEI,A                ;将累加器a的十位保存
  53.         MOV        GEWEI,B                        ;将寄存器b中的个位保存
  54.                                                 ;显示十位
  55.         MOV        A,SHIWEI                ;将十位的数据给a
  56.         MOVC        A,@A+DPTR        ;将A+DPTR的结果作为地址找到显示的数据
  57.         SETB        W_EN                ;打开位锁存
  58.         MOV        COM,#0FEH                ;设定显示位
  59.         CLR        W_EN                        ;关闭位锁存
  60.         SETB        D_EN                ;打开段锁存
  61.         MOV        COM,A                        ;将显示数据给数码管显示
  62.         CLR                D_EN                ;关闭段锁存
  63.         CALL        DELAY_US        ;延时显示
  64.         SETB        D_EN                ;打开段锁存
  65.         MOV        COM,#00H                ;熄灭数码管,消影
  66.         CLR        D_EN                        ;关闭段锁存
  67.                                                 ;显示个位
  68.         MOV        A,GEWEI                        ;将个位数据给a
  69.         MOVC        A,@A+DPTR        ;将a+DPTR作为地址找到显示数据
  70.         SETB        W_EN                ;打开位锁存
  71.         MOV        COM,#0FDH                ;设定显示位
  72.         CLR        W_EN                        ;关闭位锁存
  73.         SETB        D_EN                ;打开段锁存
  74.         MOV        COM,A                        ;将个位数据送到数码管显示
  75.         CLR                D_EN                ;关闭段锁存
  76.         CALL        DELAY_US        ;延时显示
  77.         SETB        D_EN                ;打开段锁存
  78.         MOV        COM,#00H                ;熄灭数码管
  79.         CLR        D_EN                        ;关闭段锁存
  80.         RET                                        ;返回主程序

  81. DELAY10_MS:                        ;延时大约10ms,跳过按键抖动区
  82.         MOV        R7,#50                ;给外层循环赋值50
  83.         D0:        
  84.         MOV        R6,#100                ;给内层循环赋值100
  85.         DJNZ        R6,$        ;R6-- != 0,PC指针不变
  86.         DJNZ        R7,D0        ;R7-- != 0,        再次进入内层循环
  87.         RET                                ;延时子程序返回按键子程序

  88. DELAY_US:                        ;设定数码管显示时间
  89.         MOV        R7,#6                ;给外层循环赋值6
  90.         D1:        
  91.         MOV        R6,#100                ;给内层循环赋值100
  92.         DJNZ        R6,$        ;6-- != 0,PC指针不变
  93.         DJNZ        R7,D1        ;R7-- != 0,        再次进入内层循环
  94.         RET                                ;返回显示子程序


  95. TAB:                                ;共阴数码管显示表列0->9
  96.         DB        03fH,006H,05bH,04fH,066H
  97.         DB        06dH,07dH,007H,07fH,06fH

  98.         END                                ;汇编结束
  99.                
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

697

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部