




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录第1章 设计任务及要求11.1课程设计的目的11.2课程设计的基本要求11.3课程设计具体要求11.4 设计任务2第2章 方案设计22.1 设计方案22.2 模块说明22.2.1 at89s51介绍22.2.2 串行接口led驱动器max721922.2.3 74ls273 介绍22.2.4 键盘扫描控制方式2第3章程序及原理图说明23.1 程序流程图23.2 程序23.3 原理图2第4章 调试及仿真结果24.1 仿真2第5章 心得体会2参考文献2第1章 设计任务及要求1.1课程设计的目的1.进一步熟悉和掌握单片机的结构及工作原理。2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。5.通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应开发打下基础。1.2课程设计的基本要求1.认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。3.提高独立分析、解决问题的能力,逐步增强实际应用训练。4.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。1.3课程设计具体要求1 原理图设计1.原理图设计要符合项目的工作原理,连线要正确。2.图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明。3.原理图要完整,cpu、外围器件、外扩接口、输入/输出装置要一应俱全。2 程序调计(1) 根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。(2) 根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流程图。3 程序调试:编写相关程序,并进行仿真。4 设计说明书(1) 原理图设计说明简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。(2) 程序设计说明对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。(3) 画出工作原理图,程序流程图并给出相应的程序清单。1.4 设计任务stc12c5a60s2(引脚排序及基本功能同at89s51)作为主控芯片,设计led灯循环显示速度的控制电路。一是设计74ls273扩展8个led显示;二是设计按键电路,作为led循环显示速度的参数输入;三是设计根据不同的输入参数改变led循环显示速度的程序;四是扩展max7219或lcd1602作为相关输入参数的显示。第2章 方案设计2.1 设计方案本设计中采用at89s51单片机为整个系统的控制核心,设计了一款led灯循环显示速度的按键控制。其主要结构如图2.1所示。74ls273扩展8个led循环显示主控芯片(at89c51)按键控制电路max719显示器(显示延时时间)图2.1 led灯循环显示速度的按键控制原理框图主电路部分包括:(1)at89s51;(2)max7219;(3)74ls273;(4)电阻;(5)电容;(5)led;(6)显示器。2.2 模块说明2.2.1 at89s51介绍如图2.2.1为at89s51引脚图图 2.1.1p0 口:p0 口是一组8位漏极开路型双向i0口,也即地址数据总线复用口。作为输出口用时,每位能驱动 8 个ttl逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在 f1ash 编程时,p0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1 口:pl 是一个带内部上拉电阻的 8 位双向 io 口,pl 的输出缓冲级可驱动(吸收或输出电流)4 个 ttl 逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。flash 编程和程序校验期间,pl 接收低 8 位地址。xtall:振荡器反相放大器及内部时钟发生器的输入端。xtal2:振荡器反相放大器的输出端。2.2.2串行接口led驱动器max7219 max7219引脚如图2.2.2所示 图2.2.2 max7219引脚图 max7219采用串行数据传输方式,由16位数据包发送到din引脚的串行数据在每个clk的上升沿被移入到内部16位移位寄存器中,然后在load的上升沿将数据锁存到数字或控制寄存器中。load信号必须在第16个时钟上升沿同时或之后,但在下一个时钟上升沿之前变高,否则将会丢失数据。din端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在dout端。dout端的数据在clk的下降沿输出。串行数据以16位为一帧,其中d15d12可以任意,d11d8为内部寄存器地 址,d7d0为寄存器数据,工作时序如下:图2.2.2 时序图 max7219的内部寄存器及其地址 2.2.3 74ls273 介绍74ls273的管脚图如图2.2.3所示(1)1脚是复位clr,低电平有效,当1脚是低电平时,输出脚2(q0)、5(q1)、6(q2)、9(q3)、12(q4)、15(q5)、16(q6)、19(q7)全部输出0,即全部复位;(2)当1脚为高电平时,11(clk)脚是锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(q0)、5(q1)、6(q2)、9(q3)、12(q4)、15(q5)、16(q6)、19(q7)上74ls273管脚功能:1d8d为数据输入端,1q8q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。图2.2.3 74ls273的管脚图2.2.4 键盘扫描控制方式 程序控制扫描方式。特点:对cpu工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。 (2) 键抖动及消除 软件去抖动检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。图2.2.4 抖动影响 独立式按键及其接口电路图2.2.5 按键接法 第3章程序及原理图说明3.1 程序流程图3.2 程序clk equ p1.2din equ p1.0load equ p1.1org 0000hajmp keyakeya:orl p1,#7fh ;置p1.0p1.2为输入态 mov a,p1 ;读键值,键闭合相应位为0 cpl a ;取反,键闭合相应位为1 anl a,#11111000b;屏蔽高5位,保留有键值信息的低3位 jz gret ;全0,无键闭合,返回 lcall dl10ms ;非全0,有键闭合,延时10ms,软件去抖动 mov a,p1 ;重读键值,键闭合相应位为0 cpl a ;取反,键闭合相应位为1 anl a,#11111000b;屏蔽高5位,保留有键值信息的低3位 jz gret ;全0,无键闭合,返回;非全0,确认有键闭合key0: mov a,p1 cpl a cjne a,#08h,key1 lcall a0 lcall gokey1:mov a,p1 cpl a cjne a,#10h,key2 lcall a1 lcall go1key2:mov a,p1 cpl a cjne a,#20h,key3 lcall a2 lcall go2key3:mov a,p1 cpl a cjne a,#40h,key4 lcall a3 lcall go3key4:mov a,p1 cpl a cjne a,#80h,keya lcall a4 lcall go4return:retgret:retdl10ms:mov r7,#0ahdl1: mov r6,#0ffh djnz r6,$ djnz r7,dl1 retgo:start:mov r1,#00000001b mov r2,#08loop:mov a,r1 mov p0,a mov dptr,#7fffh movx dptr,a call del1s rl a mov r1,a djnz r2,loop ajmp key0 go1:start1:mov r1,#00000001b mov r2,#08loop1:mov a,r1 mov p0,a mov dptr,#7fffh movx dptr,a call del500 rl a mov r1,a djnz r2,loop1 ajmp key1go2:start2:mov r1,#00000001b mov r2,#08loop2:mov a,r1 mov p0,a mov dptr,#7fffh movx dptr,a call del200 rl a mov r1,a djnz r2,loop2 ajmp key2go3:start3:mov r1,#00000001b mov r2,#08loop3:mov a,r1 mov p0,a mov dptr,#7fffh movx dptr,a call del100 rl a mov r1,a djnz r2,loop3 ajmp key3go4:start4:mov r1,#00000001b mov r2,#08loop4:mov a,r1 mov p0,a mov dptr,#7fffh movx dptr,a call del50 rl a mov r1,a djnz r2,loop3 ajmp key4del1s:mov r3,#08hu1: mov r4,#0f4hu2: mov r5,#0ffh djnz r5,$ djnz r4,u2 djnz r3,u1retdel500:mov r5,#04hl1: mov r6,#0f4hl2: mov r7,#0ffh djnz r7,$ djnz r6,l2 djnz r5,l1 retdel200:mov r5,#02hh1: mov r6,#0f4hh2: mov r7,#0ffh djnz r7,$ djnz r6,h2 djnz r5,h1 retdel100:mov r3,#0c3he2: mov r5,#0ffh djnz r5,$ djnz r3,e2retdel50:mov r3,#63hf1: mov r4,0fbh djnz r4,$ djnz r3,f1reta0:disp: mov a,#09h ;置译码器方式寄存器地址 mov r7,#0ffh ;选择译码方式 lcall max7219 ;写入 mov a,#0ah ;置亮度寄存器地址 mov r7,#05h ;选择占空比 lcall max7219 ;写入 mov a,#0bh ;置max7219显示扫描位数寄存器地址 mov r7,#07h ;选择8位显示方式 lcall max7219 ;写入 mov a,#0ch ;置关闭显示寄存器地址 mov r7,#01h ;选择进入正常工作,00h表示关闭 lcall max7219 ;写入mov 40h,#01hmov 41h,#00hmov 42h,#00hmov 43h,#01h mov 30h,40h mov 31h,41h mov 32h,42h mov 33h,43h main: mov r0,#30h clr p1.1 ; mov r1,#01h ;指向第0位led mov r3,#08h ;显示器个数loopa: mov a,r0 ;取显示缓冲区数据 mov r7,a ;显示2 mov a,r1 ;led显示的位地址给a lcall max7219 ; inc r0 ;指向下一个显示数据 inc r1 ;指向下一位led djnz r3,loopa ; ret;max7219子程序max7219: clr p1.1 ;将load信号拉低 lcall xh1 ;一位字节送入7219 mov a,r7 ; lcall xh1 ; nop nop setb p1.1 ;产生load上升沿,锁存数据 ret xh1: mov r2,#08h ;总共有8位,移8次next: clr p1.2 ;将clk拉低 rlc a ;a中值左移入进位累加器c中 mov p1.0,c ;给din口 nop setb p1.2 ;clk上升沿,移入数据 nop djnz r2,next ;没完成则继续 retshort_delay:mov 10h,#40 ;10msdel1: mov 11h,#125del2: djnz 11h,del2 ;125*2us=0.25ms djnz 10h,del1 ;0.25ms*40=10msreta1:disp1: mov a,#09h ;置译码器方式寄存器地址 mov r7,#0ffh ;选择译码方式 lcall max72191 ;写入 mov a,#0ah ;置亮度寄存器地址 mov r7,#05h ;选择占空比 lcall max72191 ;写入 mov a,#0bh ;置max7219显示扫描位数寄存器地址 mov r7,#07h ;选择8位显示方式 lcall max72191 ;写入 mov a,#0ch ;置关闭显示寄存器地址 mov r7,#01h ;选择进入正常工作,00h表示关闭 lcall max72191 ;写入mov 40h,#00hmov 41h,#05hmov 42h,#00hmov 43h,#00h mov 30h,40h mov 31h,41h mov 32h,42h mov 33h,43h main1: mov r0,#30hclr p1.1 ; mov r1,#01h ;指向第0位led mov r3,#08h ;显示器个数loopa1: mov a,r0 ;取显示缓冲区数据 mov r7,a ;显示2 mov a,r1 ;led显示的位地址给a lcall max72191 ; inc r0 ;指向下一个显示数据 inc r1 ;指向下一位led djnz r3,loopa1 ;ret;max7219子程序max72191: clr p1.1 ;将load信号拉低 lcall xh11 ;一位字节送入7219 mov a,r7 ; lcall xh11 ; nop nop setb p1.1 ;产生load上升沿,锁存数据 ret xh11: mov r2,#08h ;总共有8位,移8次next1: clr p1.2 ;将clk拉低 rlc a ;a中值左移入进位累加器c中 mov p1.0,c ;给din口 nop setb p1.2 ;clk上升沿,移入数据 nop djnz r2,next1 ;没完成则继续 retshort_delay1:mov 10h,#40 ;10msdel11: mov 11h,#125del21: djnz 11h,del21 ;125*2us=0.25ms djnz 10h,del11 ;0.25ms*40=10ms re a2:disp2: mov a,#09h ;置译码器方式寄存器地址 mov r7,#0ffh ;选择译码方式 lcall max72192 ;写入 mov a,#0ah ;置亮度寄存器地址 mov r7,#05h ;选择占空比 lcall max72192 ;写入 mov a,#0bh ;置max7219显示扫描位数寄存器地址 mov r7,#07h ;选择8位显示方式 lcall max72192 ;写入 mov a,#0ch ;置关闭显示寄存器地址 mov r7,#01h ;选择进入正常工作,00h表示关闭 lcall max72192 ;写入mov 40h,#00hmov 41h,#02hmov 42h,#00hmov 43h,#00h mov 30h,40h mov 31h,41h mov 32h,42h mov 33h,43hmain2 mov r0,#30hclr p1.1 ; mov r1,#01h ;指向第0位led mov r3,#08h ;显示器个数loopa2: mov a,r0 ;取显示缓冲区数据 mov r7,a ;显示2 mov a,r1 ;led显示的位地址给a lcall max72192 ; inc r0 ;指向下一个显示数据 inc r1 ;指向下一位led djnz r3,loopa2 ;ret;max7219子程序max72192: clr p1.1 ;将load信号拉低 lcall xh12 ;一位字节送入7219 mov a,r7 ; lcall xh12 ; nop nop setb p1.1 ;产生load上升沿,锁存数据 ret xh12: mov r2,#08h ;总共有8位,移8次next2: clr p1.2 ;将clk拉低 rlc a ;a中值左移入进位累加器c中 mov p1.0,c ;给din口 nop setb p1.2 ;clk上升沿,移入数据 nop djnz r2,next2 ;没完成则继续 retshort_delay2: mov 10h,#40 ;10msdel12: mov 11h,#125del22: djnz 11h,del22 ;125*2us=0.25ms djnz 10h,del12 ;0.25ms*40=10msret a3:disp3: mov a,#09h ;置译码器方式寄存器地址 mov r7,#0ffh ;选择译码方式 lcall max72193 ;写入 mov a,#0ah ;置亮度寄存器地址 mov r7,#05h ;选择占空比 lcall max72193 ;写入 mov a,#0bh ;置max7219显示扫描位数寄存器地址 mov r7,#07h ;选择8位显示方式 lcall max72193 ;写入 mov a,#0ch ;置关闭显示寄存器地址 mov r7,#01h ;选择进入正常工作,00h表示关闭 lcall max72193 ;写入mov 40h,#00hmov 41h,#01hmov 42h,#00hmov 43h,#00h mov 30h,40h mov 31h,41h mov 32h,42h mov 33h,43h main3: mov r0,#30hclr p1.1 ; mov r1,#01h ;指向第0位led mov r3,#08h ;显示器个数loopa3: mov a,r0 ;取显示缓冲区数据 mov r7,a ;显示2 mov a,r1 ;led显示的位地址给a lcall max72193 ; inc r0 ;指向下一个显示数据 inc r1 ;指向下一位led djnz r3,loopa3 ;ret;max7219子程序max72193: clr p1.1 ;将load信号拉低 lcall xh13 ;一位字节送入7219 mov a,r7 ; lcall xh13 ; nop nop setb p1.1 ;产生load上升沿,锁存数据 ret xh13: mov r2,#08h ;总共有8位,移8次next3: clr p1.2 ;将clk拉低 rlc a ;a中值左移入进位累加器c中 mov p1.0,c ;给din口 nop setb p1.2 ;clk上升沿,移入数据 nop djnz r2,next3 ;没完成则继续 retshort_delay3:mov 10h,#40 ;10msdel13: mov 11h,#125del23: djnz 11h,del23 ;125*2us=0.25ms djnz 10h,del13 ;0.25ms*40=10msreta4disp4: mov a,#09h ;置译码器方式寄存器地址 mov r7,#0ffh ;选择译码方式 lcall max72194 ;写入 mov a,#0ah ;置亮度寄存器地址 mov r7,#05h ;选择占空比 lcall max72194 ;写入 mov a,#0bh ;置max7219显示扫描位数寄存器地址 mov r7,#07h ;选择8位显示方式 lcall max72194 ;写入 mov a,#0ch ;置关闭显示寄存器地址 mov r7,#01h ;选择进入正常工作,00h表示关闭 lcall max72194 ;写入mov 40h,#00hmov 41h,#00hmov 42h,#04hmov 43h,#09h mov 30h,40h mov 31h,41h mov 32h,42h mov 33h,43hmain4: mov r0,#30hclr p1.1 ; mov r1,#01h ;指向第0位led mov r3,#08h ;显示器个数loopa4: mov a,r0 ;取显示缓冲区数据 mov r7,a ;显示2 mov a,r1 ;led显示的位地址给a lcall max72194 ; inc r0 ;指向下一个显示数据 inc r1 ;指向下一位led djnz r3,loopa4 ;ret;max7219子程序max72194: clr p1.1 ;将load信号拉低 lcall xh14 ;一位字节送入7219 mov a,r7 ; lcall xh14 ; nop nop setb p1.1 ;产生load上升沿,锁存数据 ret xh14: mov r2,#08h ;总共有8位,移8次next4: clr p1.2 ;将clk拉低 rlc a ;a中值左移入进位累加器c中 mov p1.0,c ;给din口 nop setb p1.2 ;clk上升沿,移入数据 nop djnz r2,next4 ;没完成则继续 retshort_delay4:mov 10h,#40 ;10msdel14: mov 11h,#125del24: djnz 11h,del24 ;125*2us=0.25ms djnz 10h,del14 ;0.25ms*40=10msretend3.3 原理图第4章 调试及仿真结果4.1 仿真 当按下第一个开关时led灯按照1s的延时循环点亮,并且延时时间通过数码管显示出来,当按下第二个开关时循环灯停止循环,松开上一开关后,循环灯将按照开关2的延时时间500ms循环点亮led灯,并且将延时时间显示在数码管上,以此类推分辨按下后三个开关,则会分别显示200ms,100ms,50ms延时的循环点亮,延时时间显示在数码管上。 第5章 心得体会这次实习让我受益匪浅,无论从知识上还是其他的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子配件加工制造项目节能评估报告
- 2025年危重病人护理学题库及答案
- 达标测试人教版八年级上册物理光现象《光的反射》综合练习试卷(含答案详解版)
- 考点攻克苏科版八年级物理下册《压强和浮力》章节测试试题(解析卷)
- 2025年护理专转本实操考试题库及答案
- 伺服电动机说课稿-2025-2026学年中职专业课-智能设备运行与维护-装备制造大类
- 三年级信息技术上册 游园计划我来做说课稿 龙教版
- 2025年全国卷1理综(含答案及解析)
- 七年级道德与法治下册 第二单元 做情绪情感的主人 第四课 揭开情绪的面纱 第1框 青春的情绪说课稿 新人教版
- 船体冷加工创新应用评优考核试卷含答案
- 幼儿园大班科学《玩转扑克牌》课件
- 餐饮食堂竞标标书
- 老年人个案服务第二次访谈记录
- 肛肠科手术及护理课件
- 蚁群算法课件完整版
- 大学数学《实变函数》电子教案
- 乌鲁木齐出租车区域考试题
- YY/T 0640-2008无源外科植入物通用要求
- GB/T 29531-2013泵的振动测量与评价方法
- GB/T 2637-2016安瓿
- FZ/T 13001-2013色织牛仔布
评论
0/150
提交评论