找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2213|回复: 0
收起左侧

8086处理器手写笔综合设计(微机实验报告)

[复制链接]
ID:267736 发表于 2017-12-27 14:55 | 显示全部楼层 |阅读模式
手写笔设计报告
【实验目的】
  • 实现基本点哪哪亮的基本功能。
  • 具有图像清除,回放,存储等功能。
  • 掌握8255的用法。
  • 掌握ADC0809的用法
【实验原理】
1.自制手写笔,利用光敏电阻,在接收到不同光照后用电阻的阻值会发生变化,利用其分压的电压电平检测其光照的变化。下图为电路图和电阻的光敏特性。
【实验框图】
核心:要做到实时显示,就必须要记录点亮LED的位置,这时要逐个点亮LED灯,在点亮前读取电平值,在点亮后读取电平值,若两次差值大于某一值(经过示波器测定),则认为该位置应该被点亮,相应的标志位置1,否则不进行处理。

【实验内容】
  • 按照程序框图书写出实验代码。
  • 制作好手写笔
  • 连接实验箱上的电路并进行调试
【实验结果】
  • 基本实现其基本功能,已于2016.12.7日下午14:05分请老师验收。
  • 缺陷在于笔的灵敏度不是特别高偶尔会受到外光源的影响
  • 自制手写笔的与实验箱接口裸露容易引发电路故障
【实验反思】
  • 首先想的是利用ADC0809读取手写笔的绝对电平这就导致其扫描的LED灯亮度必须大于其已经点亮的LED这就导致背景色很亮产生的视觉干扰很大效果不是特别理想后采用其他同学的思想读取电压差,比以往的效果好。这样也给我一个启示:以后要读取变化值都可采用差值读数法。
  • 由于8086处理器的主频不是很高,要是图像稳定,就得扫描速度快,就得使间隔少,要保证代码精简。
  • 每次扫描前后都要进行消影确保不会产生干扰
  • 按键都必须进行软件消抖
【实验代码】
  1. ;-------------------------------------------------------
  2. ;程序功能:综合设计实验——手写笔
  3. ;入口参数:无
  4. ;出口参数:无
  5. ;注意事项:
  6. ;硬件连接:
  7. ;/10/26 CJP
  8. ;-------------------------------------------------------
  9. DATAS SEGMENT
  10.     ADC0809_ADD               EQU 0F000H
  11.     PA_ADD                                          EQU 0E000H
  12.     PB_ADD                                          EQU 0E001H
  13.     PC_ADD                                          EQU 0E002H
  14.     COM_ADD                            EQU 0E003H
  15.     DELAY_DATA              DB              000H,000H,000H,000H,000H,000H,000H,000H
  16.                 COPY_DATA              DB              10              DUP(?)                                         
  17. DATAS ENDS
  18. STACKS SEGMENT stack 'stack'
  19.    STA DW 255 DUP(?)
  20. STACKS ENDS
  21. CODES SEGMENT
  22.     ASSUME CS:CODES,DS:DATAS,SS:STACKS
  23. START:
  24.     MOV               AX,DATAS
  25.     MOV               DS,AX
  26.     CALL              INFO_8255
  27. RE:
  28.     CALL              XIAOYIN
  29.     CALL              LED_PANDUAN
  30.     CALL              XIAOYIN
  31.    CALL                            LED_SCAN
  32.    CALL                            XIAOYIN
  33.     CALL              KEY_CLEAR
  34.     CALL              XIAOYIN
  35.     CALL              KEY_BAOCUN
  36.     CALL              XIAOYIN
  37.     CALL              KEY_HUIFANG
  38.    CALL              XIAOYIN
  39.     JMP     RE
  40.     MOV              AH,4CH
  41.     INT              21H
  42. ;-------------------------------------------------------
  43. ;程序功能:程序消影
  44. ;入口参数:
  45. ;出口参数:无
  46. ;注意事项:
  47. ;2016/9/26 CJP
  48. ;-------------------------------------------------------
  49. XIAOYIN PROC NEAR
  50.               PUSH              AX
  51.               PUSH              DX
  52.               MOV              AL,000H
  53.               MOV              DX,PA_ADD
  54.               OUT              DX,AL
  55.               MOV              AL,0FFH
  56.               MOV              DX,PB_ADD
  57.               OUT              DX,AL
  58.               CALL              DELAY
  59.               POP              DX
  60.               POP              AX
  61.               RET
  62. XIAOYIN ENDP                  
  63. ;-------------------------------------------------------
  64. ;程序功能:延时函数
  65. ;入口参数:无
  66. ;出口参数:无
  67. ;注意事项:无
  68. ;2016/1026 CJP
  69. ;-------------------------------------------------------
  70. DELAY PROC NEAR
  71.               PUSH              AX
  72.               PUSH              CX
  73.               MOV              CX,8
  74.               LOOP              $
  75.               POP              CX
  76.               POP              AX
  77.               RET
  78. DELAY ENDP                    
  79. ;-------------------------------------------------------
  80. ;程序功能:延时函数()毫秒
  81. ;入口参数:DX,将延时时间赋给DX,单位为毫秒
  82. ;出口参数:无
  83. ;注意事项:延时时间不可改变
  84. ;2016/9/26 CJP
  85. ;-------------------------------------------------------
  86. DELAY_ms  PROC NEAR
  87.               PUSH AX
  88.               PUSH              CX
  89.               MOV              CX,DX
  90.               LOOP              [        DISCUZ_CODE_1        ]nbsp;           
  91.               POP              CX
  92.               POP  AX
  93.               RET
  94. DELAY_ms ENDP                 
  95. ;-------------------------------------------------------
  96. ;程序功能:初始化8255
  97. ;入口参数:无
  98. ;出口参数:无
  99. ;注意事项:无
  100. ;2016/9/26 CJP
  101. ;-------------------------------------------------------
  102. INFO_8255  PROC NEAR
  103.               PUSH DX
  104.               PUSH AX
  105.               MOV  AL,10001001B  ;设置PA,PB为普通输出,方式0,PC为输入
  106.               MOV  DX,COM_ADD
  107.               OUT  DX,AL
  108.               POP  AX
  109.               POP  DX
  110.               RET
  111. INFO_8255 ENDP   
  112. ;-------------------------------------------------------
  113. ;程序功能:读取手写笔所在的位置
  114. ;入口参数:
  115. ;出口参数:无
  116. ;注意事项:无
  117. ;2016/12/1 CJP
  118. ;-------------------------------------------------------
  119. LED_PANDUAN PROC NEAR
  120.               PUSH              DX
  121.               PUSH              DI
  122.               PUSH              CX
  123.               PUSH              BX
  124.               PUSH              AX
  125.             
  126.               MOV              DI,OFFSET DELAY_DATA
  127.               MOV              BL,07FH
  128. AGAIN0:
  129.               MOV              DX,PB_ADD
  130.               MOV              AL,BL
  131.               OUT              DX,AL
  132.               MOV              BH,080H
  133.               MOV              CX,8
  134. AGAIN1:
  135.               CALL              DATA_READ1
  136.               MOV              AL,BH
  137.               MOV              DX,PA_ADD
  138.               OUT              DX,AL            
  139.               NOP
  140.               NOP
  141.               NOP
  142.               NOP
  143.               MOV              AL,000H
  144.               MOV              DX,PA_ADD
  145.               OUT              DX,AL
  146.             
  147.               CALL              DATA_READ
  148.               CALL              DELAY
  149.               CALL              DELAY
  150.               MOV              DX,PB_ADD
  151.               MOV              AL,BL
  152.               OUT              DX,AL
  153.             
  154.               ROR              BH,1
  155.               LOOP              AGAIN1
  156.             
  157.               ROR              BL,1
  158.               INC              DI
  159.               CMP              BL,07FH
  160.               JNZ              AGAIN0
  161.             
  162.               MOV              AL,000H
  163.               MOV              DX,PA_ADD
  164.               OUT              DX,AL
  165.             
  166.               MOV              AL,0FFH
  167.               MOV              DX,PB_ADD
  168.               OUT              DX,AL
  169.                            
  170.               POP     AX
  171.               POP              BX
  172.               POP              CX
  173.               POP              DI
  174.               POP              DX
  175.               RET
  176. LED_PANDUAN ENDP
  177. ;------------------------------------------------------------
  178. ;程序功能:点亮之前,从ADC0809读取数据
  179. ;入口参数:
  180. ;出口参数:无
  181. ;注意事项:注意DI的值
  182. ;2016/10/26 CJP
  183. ;------------------------------------------------------------   
  184. DATA_READ1 PROC NEAR
  185.               MOV              DX,ADC0809_ADD
  186.               OUT               DX,AL
  187.               MOV                DX,PC_ADD
  188. WAIT11:
  189.                  IN                AL,DX
  190.               AND               AL,001H
  191.               CMP               AL,001H
  192.               JZ                READ_OK
  193.               JMP               WAIT11
  194. READ_OK:
  195.               MOV                DX,ADC0809_ADD
  196.               IN                 AL,DX
  197.               MOV              AH,AL
  198.                 RET               
  199. DATA_READ1 ENDP   
  200. ;------------------------------------------------------------
  201. ;程序功能:点亮之前,从ADC0809读取数据
  202. ;入口参数:
  203. ;出口参数:无
  204. ;注意事项:注意DI的值
  205. ;2016/10/26 CJP
  206. ;------------------------------------------------------------   
  207. DATA_READ PROC NEAR
  208.                 PUSH              DX
  209.               MOV              DX,ADC0809_ADD
  210.               OUT               DX,AL
  211.               MOV                DX,PC_ADD
  212. WAIT111:
  213.                  IN                AL,DX
  214.               AND               AL,001H
  215.               CMP               AL,001H
  216.               JZ                READ_OK1
  217.               JMP               WAIT111
  218. READ_OK1:
  219.               MOV                DX,ADC0809_ADD
  220.               IN                 AL,DX
  221.             
  222.               SUB              AH,5
  223.               CMP              AH,AL
  224.               JA              NEXTT
  225.             
  226.               POP              DX
  227.                  RET               
  228. NEXTT:                           
  229.               MOV              AL,[DI]
  230.               OR                AL,BH
  231.               MOV              [DI],AL
  232.                  POP              DX
  233.                 RET
  234. DATA_READ ENDP   
  235. ;-------------------------------------------------------
  236. ;程序功能:刷新,稳定位置
  237. ;入口参数:
  238. ;出口参数:无
  239. ;注意事项:无
  240. ;2016/9/26 CJP
  241. ;-------------------------------------------------------
  242. LED_SCAN PROC NEAR
  243.               PUSH              DX
  244.               PUSH              DI
  245.               PUSH              CX
  246.               PUSH              BX
  247.               PUSH              AX            
  248.               MOV              DI,OFFSET DELAY_DATA
  249.               MOV              BL,07FH
  250.               MOV              CX,8
  251. AGAIN000:
  252.               MOV              DX,PB_ADD
  253.               MOV              AL,BL
  254.               OUT              DX,AL
  255.               MOV              AL,[DI]
  256.               MOV              DX,PA_ADD
  257.               OUT              DX,AL
  258.               CALL              DELAY                           
  259.               CALL              XIAOYIN
  260.               INC              DI
  261.               ROR              BL,1
  262.               LOOP              AGAIN000
  263.             
  264.               CALL              XIAOYIN
  265.             
  266.               POP              AX
  267.               POP              BX
  268.               POP              CX
  269.               POP              DI
  270.               POP              DX
  271.               RET
  272. LED_SCAN ENDP
  273. ;---------------------------------------------------------------------
  274. ;程序功能:判断PC5是否按下,按下时,保存数据
  275. ;入口参数:无
  276. ;出口参数:无
  277. ;注意事项:无
  278. ;2016/10/10 CJP
  279. ;---------------------------------------------------------------------
  280. KEY_BAOCUN  PROC NEAR
  281.               PUSH              DI
  282.               PUSH              DX
  283.               PUSH              SI
  284.               PUSH              BX
  285.               PUSH              AX
  286.             
  287.               MOV              DX,PC_ADD
  288.               IN              AL,DX
  289.               AND              AL,020H
  290.               CMP              AL,020H
  291.               JNZ              BAOCUN_END
  292.             
  293.               CALL              DELAY            
  294.             
  295.               MOV              DX,PC_ADD
  296.               IN              AL,DX
  297.               AND              AL,020H
  298.               CMP              AL,020H
  299.               JNZ              BAOCUN_END
  300. BAOCUN_WAIT:
  301.               MOV              DX,PC_ADD
  302.               IN              AL,DX
  303.               AND              AL,020H
  304.               CMP              AL,020H
  305.               JZ              BAOCUN_WAIT
  306.               MOV              CX,8
  307.               MOV              DI,OFFSET              DELAY_DATA
  308.               MOV              SI,OFFSET              COPY_DATA
  309. COPY:
  310.               MOV              AL,[DI]
  311.               MOV              [SI],AL
  312.               INC              SI
  313.               INC              DI
  314.               LOOP              COPY
  315. BAOCUN_END:
  316.               POP              AX
  317.               POP              BX
  318.               POP              SI
  319.               POP              DX
  320.               POP              DI
  321.               RET            
  322. KEY_BAOCUN  ENDP
  323. ;------------------------------------------------------------------
  324. ;程序功能:判断PC2是否按下,按下时,清除数据
  325. ;入口参数:无
  326. ;出口参数:无
  327. ;注意事项:无
  328. ;2016/10/10 CJP
  329. ;--------------------------------------------------------------------
  330. KEY_CLEAR  PROC NEAR
  331.               PUSH              DX
  332.               PUSH              SI
  333.               PUSH              DI
  334.               PUSH              CX
  335.               PUSH              AX
  336.                            
  337.               MOV              DX,PC_ADD
  338.               IN              AL,DX
  339.               AND              AL,040H
  340.               CMP              AL,040H
  341.               JNZ              CLEAR_END
  342.             
  343.               MOV              DX,1
  344.               CALL              DELAY              ;此处延时1ms
  345.             
  346.               MOV              DX,PC_ADD
  347.               IN              AL,DX
  348.               AND              AL,040H
  349.               CMP              AL,040H
  350.               JNZ              CLEAR_END
  351. CLEAR_WAIT:
  352.               MOV              DX,PC_ADD
  353.               IN              AL,DX
  354.               AND              AL,040H
  355.               CMP              AL,040H
  356.               JZ              CLEAR_WAIT
  357.               MOV              CX,8
  358.               MOV              DI,OFFSET              DELAY_DATA
  359. CLEAR:
  360.               MOV              AL,000H
  361.               MOV              [DI],AL
  362.               INC              DI
  363.               LOOP              CLEAR
  364. CLEAR_END:
  365.               POP              AX
  366.               POP              CX
  367.               POP              DI
  368.               POP              SI
  369.               POP              DX
  370.               RET            
  371. KEY_CLEAR  ENDP
  372. ;--------------------------------------------------------------------
  373. ;程序功能:判断PC8是否按下,按下时,回放图像
  374. ;入口参数:无
  375. ;出口参数:无
  376. ;注意事项:无
  377. ;2016/10/10 CJP
  378. ;--------------------------------------------------------------------
  379. KEY_HUIFANG  PROC NEAR
  380.               PUSH              DX
  381.               PUSH              SI
  382.               PUSH              CX
  383.               PUSH              BX
  384.               PUSH              AX
  385.             
  386.               MOV              DX,PC_ADD
  387.               IN              AL,DX
  388.               AND              AL,080H
  389.               CMP              AL,080H
  390.               JNZ              HUIFANG_END
  391.             
  392.               MOV              DX,1
  393.               CALL              DELAY              ;此处延时2ms
  394.             
  395.               MOV              DX,PC_ADD
  396.               IN              AL,DX
  397.               AND              AL,080H
  398.               CMP              AL,080H
  399.               JNZ              HUIFANG_END
  400. HUIFANG_WAIT:
  401.               MOV              DX,PC_ADD
  402.               IN              AL,DX
  403.               AND              AL,080H
  404.               CMP              AL,080H
  405.               JZ              HUIFANG
  406.               JMP              HUIFANG_END
  407. HUIFANG:
  408.               CALL              LED_COPY_SCAN
  409.               JMP              HUIFANG_WAIT
  410. HUIFANG_END:
  411.               POP              AX
  412.               POP              BX
  413.               POP              CX
  414.               POP              SI
  415.               POP              DX
  416.               RET                           
  417. KEY_HUIFANG  ENDP
  418. ;-------------------------------------------------------
  419. ;程序功能:显示保存的图像
  420. ;入口参数:
  421. ;出口参数:无
  422. ;注意事项:无
  423. ;2016/9/26 CJP
  424. ;-------------------------------------------------------
  425. LED_COPY_SCAN PROC NEAR
  426.               PUSH              DX
  427.               PUSH              DI
  428.               PUSH              CX
  429.               PUSH              BX
  430.               PUSH              AX            
  431.               MOV              DI,OFFSET COPY_DATA
  432.               MOV              BL,07FH
  433.               MOV              CX,8
  434. AGAIN000O:
  435.               MOV              DX,PB_ADD
  436.               MOV              AL,BL
  437.               OUT              DX,AL
  438.               MOV              AL,[DI]
  439.               MOV              DX,PA_ADD
  440.               OUT              DX,AL
  441.               CALL              DELAY                           
  442.               CALL              XIAOYIN
  443.               INC              DI
  444.               ROR              BL,1
  445.               LOOP              AGAIN000O
  446.               CALL              XIAOYIN
  447.               POP              AX
  448.               POP              BX
  449.               POP              CX
  450.               POP              DI
  451. …………
  452. …………
  453. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

完整的Word格式文档51黑下载地址(共24页):
手写笔综合设计实验(微机实验报告).doc (83.69 KB, 下载次数: 19)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表