ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:106.21KB ,
资源ID:2319468      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2319468.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机最小系统.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机最小系统.docx

1、单片机最小系统实训一 单片机最小系统 在智能化仪器仪表中,控制核心均为微处理器,而单片机以高性能、高速度、体积小、价格低廉、稳定可靠而得到广泛应用,是设计智能化仪器仪表的首选微控制器,单片机结合简单的接口电路即可构成单片机最小系统,它是智能化仪器仪表的基础,也是测控。监控的重要组成部分。一、 系统功能要求:1、显示位数:6位。2、键盘按键数:16个。3、初始化状态显示P.。3、能输入、显示十六进制数0f。二、 系统整体方案提示:1、单片机可采用AT89C51、AT89C52、AT89S52、fosc=12MHz。2、时钟电路,复位电路的设计。3、系统功能框图如下:4、编写系统初始化主程序、键扫

2、子程序、显示子程序及其他所需要子程序。三、 硬件系统设计:硬件系统原理图如下页图:1、 时钟电路 系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容

3、,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。2、 复位电路复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,如图所示。当时钟频率选用6MHz时,C取22F,Rs约为200,Rk约为1K。3、 键盘电路设计: 矩阵式键盘按键的识别4、 当非编码键盘的按键较多时,若采用独立式键盘占用I/O口线太多,

4、此时可采用矩阵式键盘,键盘上的键按行列构成矩阵,在行列的交点上都对应有一个键。行列方式是用m条I/O线组成行输入口,用n条I/O线组成列输出口,在行列线的每一个交点处,设置一个按键,组成一个mxn的矩阵,如图7-6所示,矩阵键盘所需的连线数为行数+列数,如44的16键矩阵键盘需要8条线与单片机相连,般键盘的按键越多,这种键盘占I/O口线少的优点就越明显,因此,在单片机应用系统较为常见。图7-6 矩阵式键盘矩阵式键盘识别按键的方法有两种: 一是行扫描法, 二是线反转法。这里只说明一下第一种情况, 行扫描法: 先令列线Y0为低电平(0),其余3根列线Y1、Y2、Y3都为高电平,读行线状态。如果X0

5、、X1、X2、X3都为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态;如果Y0这一列上没有键闭合,接着使列线Y1为低电平,其余列线为高电平。用同样的方法检查Y1这一列上有无键闭合,依次类推,最后使列线Y3为低电平,其余列线为高电平,检查Y3这一列有无键闭合。 为了防止双键或多键同时按下, 往往从第 0 行一直扫描到最后 1 行, 若只发现 1 个闭合键, 则为有效键, 否则全部作废。 找到闭合键后, 读入相应的键值, 再转至相应的键处理程序。 关于键盘的抖动问题的分析和解决: 当用手按下一个键时,如图3所示,往往按键在闭合位置和断开

6、位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。 键抖动信号波形 键编码及键值(1) 用键盘连接的I/O线的二进制组合表示键码。例如用4行、4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4位口线的二进制数的组合表示16个键的编码,如图所示。各键相应的键值为88H、84H、82H、81H、48H、44H、42H、41H、28H、24H

7、、22H、21H、18H、14H、12H、11H。这种键值编码软件较为简单直观,但离散性大,不便安排散转程序的入口地址。(2) 顺序排列键编码。如图所示。这种方法,键值的形成要根据I/O线的状态作相应处理。键码可按下式形成:键码=行首键码+列号5、 显示电路设计显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及生产工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如右图。LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位LED显示器,通常都是采用动态扫描的方法进

8、行显示,其硬件连接方式如系统原理图。在动态方式中,逐个地循环地点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果完全一样。四、 系统软件设计 1、键盘扫描程序的设计:假定图中列2行1键被按下,则判定键位置的扫描过程如下:首先是判定有没有键被按下。先使P1口输出0EH(1110),然后输入行线状态,测试行线中是否有低电平的,如果没有低电平,再使输出口输出0DH(1101),再测试行线状态。到输出口输出0BH(1011)时,行线中有状态为低电平者(行1),则闭合键找到,通过此次扫描的列线值和行线值就可以知道闭合键的位置。当经扫描表明

9、有键被按下之后,紧接着应进行去抖动处理。采用软件延时的方法,一般为1020 ms,待行线上状态稳定之后,再次判断按键状态。按键确定之后,下一步是计算闭合键的键码,我们以键的排列顺序安排键号,键码既可以根据行号列号以查表求得,也可以通过计算得到。键码的计算公式为:键码=行首号+列号。 计算键码之后,延时等待键释放,目的是为了保证键的一次闭合仅进行一次处理。 在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序(分支是使用JMP等散转指令实现的),进行字符、数据的输入或命令的处理。这样就可以实现该键所设定的功能。总结上述内容,键处理的流程如图所示。 键盘

10、扫描程序如下:说明:1)设子程序为KS1,供键盘扫描程序中调用。 2)在单片机应用系统中常常是键盘和显示器同时存在,因此可以把键盘扫描程序和显示程序配合起来使用,即把显示程序作为键盘扫描的延时子程序,实现软件去抖动。这样做既省去了一个专门的延时子程序,又能保证显示器常亮的客观效果。假定本系统中显示程序为DIR,执行时间约为10ms,分析以下程序时,可把显示程序DIR当成延时子程序。 AJMP KEY1KS1: MOV A,#0FFH MOV P1,A MOV A,P1 ;读P1口键值 CPL A ;A取反,无键按下则全“0” ANL A,0FH ;屏蔽A高半字节 RET KEY1: ACALL

11、 KS1 ;检查是否有键闭合 JNZ LK1 ;A非“0”则转移 ACALL DISP ;显示一次(延时10 ms) AJMP KEY1 LK1: ACALL DISP ;有键闭合二次消抖延时20 ms ACALL DISP ACALL KS1 ;再检查有键闭合否 JNZ LK2 ;有键闭合,转LK2 ACALL DISP AJMP KEY1 ;经去抖动确认无键闭合,延时10 ms后转K EY1LK2:MOV R2,#0EH ;扫描初值进R2 MOV R4,#00H ;扫描列号送R4 LK4: MOV P1,A ;扫描初值送P1口 MOV A,P1 ;读P1口 JB ACC.0,LONE ;A

12、CC.0=1,第0行无键闭合,转LONE MOV A,#00H ;装第0行行值 AJMP LKPLONE: JB ACC.1,LTWO ;ACC.1=1,第1行无键闭合,转LTWO MOV A,#04H ;装第1行行值 AJMP LKP LTWO:JB ACC.2,LTHR ;ACC.2=1,第2行无键闭合,转LTHR MOV A,#08H ;装第2行行值 AJMP LKP LTHR: JB ACC.3,NEXT ;ACC.3=1,第3行无键闭合则转NEXT MOV A,#0CH ;装第3行行值 LKP: ADD A,R4 ;计算键值 PUSH ACC ;保护键值,将键值入栈 LK3: ACA

13、LL DISP ;延时10ms消抖 ACALL KS1 ;查键是否继续闭合,若闭合再延时 JNZ LK3 POP ACC ;若键起,则键码送A RET NEXT: INC R4 ;扫描列号加1 MOV A,R2 JNB ACC.3,KND ;笫3位为“0”,已扫完最高列则转KEND RLA A ;循环左移一位 MOV R2,A AJMP LK4 ;进行下一列扫描 KEND: AJMP KEY1 ;扫描完毕,开始新的一轮键盘扫描程序的运行结果是把闭合键的键码放在累加器A中,接下来的程序是根据键码进行程序转移,去执行该键对应的操作。流程如图:KEY: MOV R2,#0FFH ;计算键值子程序,初

14、始化键值寄存单元 MOV DPTR,#KEYTABLE ;向DPTR加载键码表CHAZ: INC R2 ;键值加1 MOV A,R2 ;键值送给A MOVC A,A+DPTR ;查出对比键码 CJNE A,#0FFH,CHA ;搜索对比键码结束? 否,跳到CHA RET ;是,最终没找出有效键值,直接返回CHA: CJNE A,R4,CHAZ ;对比键码与当前扫描结果(键码)一致?;否,跳到CHAZ再搜索 LCALL SHOW ;是,显示出来 RET ;返回KEYTABLE: ;键码表DB 07EH,07DH,07BH,077HDB 0BEH,0BDH,0BBH,0B7HDB 0DEH,0DDH,0DBH,0D7HDB 0EEH,0EDH,0EBH,0E7HDB 0FFH2、显示程序设计动态扫描从左到右进行,显示缓冲区首地址为79H。因此各位显示器都扫过一遍之后,就返回监控程序。经过一段时间间隔后,再调用显示扫描程序。通过这种反复调用来实现LED显示器的动态扫描。初始化子程序: DISPP:MOV P1,73H LCALL DELAYTIME RET 显示键值子程序:SHOW: MOV A,R2 MOV B,#10 DIV ABSHOWX: MOV DPTR,#LEDTABLE XCH A,B MOVC

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1