单片机课程设计

发布 2022-10-04 21:17:28 阅读 2446

简易二进制转换器说明书。

班级1281024

学号128102425

姓名叶凯。指导老师王振。

目录。1.1课程设计任务3

2.1设计内容及原理4

2.2 数码管动态扫描显示电路原理4

3关键程序说明6

x4矩阵键盘的编程方法6

3.2 8位数码管显示程序方法7

3.3总程序8

3.4程序段说明14

题目 :简易二进制转换器。

1.课程设计任务。

使用4*4键盘输入3位数字组成000-255之内的十进制数,将输入值先用用数码管显示,并通过8个led的亮、灭状态将输入的十进制转换为8位2进制数显示。

总体设计方案。

2设计内容及原理。

1. 矩阵键盘的工作原理。

矩阵键盘又称行列式键盘,它是用4条i/o线作为行线,4条i/o线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样的键盘中按键的个数是4x4个。

这种行列式键盘结构能够有效地提高单片机系统中i/o口的利用率。

图1为me300b矩阵键盘电路图,(图1)

行线接p1.4-p1.7,列线接p1.0-p1.3,2. 数码管动态扫描显示电路原理。

在me300b开发系统中,采用了8位数码管动态扫描显示。它将所有数码管的8个线段相应地并接在一起,并接到at89s51的p0口控制字段输出。而各位数码管的共阳极由at89s51的p2口控制 q20-q27来实现8位数码管的位输出控制。

这样,对于一组数码管动态扫描显示需要由两组信号来控制。一组是字段输出口输出的字形式**;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。

由于数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,同一时刻如果各位数码管的位选线都属于选通状态的话,8位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应地字符,就必须采用扫描显示方式。

即在莫一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字形码。这样同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。

虽然这些字符是在不同时刻出现的,而且同一时刻只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示时间足够短,给人眼的视觉现象就会是连续稳定的显示。

数码管不同位显示的时间间隔可以通过调整延时程序的时间长短来完成。数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示数码管的亮度将亮些,若显示的时间间隔短,显示数码管的亮度将暗些。若显示的时间间隔过长的话数码管显示将产生闪烁现象。

所以在调整显示的时间间隔时,既要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。

连接图见图3

关键程序说明。

3演示程序的编程方法。

x4矩阵键盘的编程方法:

1.1先读取键盘的状态,得到按键的特征编码。

先从p1口的高四位输出低电平,低四位输出高电平,从p1口的低四位读取键盘状态。再从p1口的低四位输出低电平,高四位输出高电平,从p1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。

使用上述方法我们得到16个键的特征编码。

举例说明如何得到按键的特征编码:

假设“1”键被按下,找其按键的特征编码。从p1口的高四位输出低电平,即p1.4-p1.

7为输出口。低四位输出高电平,即p1.0-p1.

3为输入口。读p1口的低四位状态为“1101”,其值为“0dh”。

再从p1口的高四位输出高电平,即p1.4-p1.7为输入口。低四位输出低电平,即p1.0-p1.3为输出口,读p1口的高四位状态为“1110”,其值位“e0h”。

将两次读出的p0口状态值进行逻辑或运算就得到其按键的特征编码为“edh”。

用同样的方法可以得到其它15个按键的特征编码。

1.2根据按键的特征编码,查表得到按键的顺序编码。

将上诉方法的得到的16个按键的特征编码按图2 按键排列的排列顺序排成一张特征编码与顺序编码的对应关系表,然后用当前得到的特征特征编码来查表,当表中有该特征编码时,它所在的位子就是对应的顺序编码。

1.3.矩阵键盘键值查找程序的具体编程这个演示程序的主要功能有:

1.识别键盘有无按键按下,若无按键按下返回。

2.如果有键按下,找出具体的按键值(顺序码)。

矩阵键盘值查找程序。

键值存入30h单元。

key_scan: ;识别键盘有无按下子程序。

mov p1,#0f0h ;置列线为0,行线为1

mov a,p1 ;读p1口。

anl a,#0f0h ;读出高四位。

mov b,a ;暂存到b

mov p1,#0f0h ;置列表线为1,行线为0

mov a,p1 ;读出p1口。

anl a,#0foh ;取出低四位。

orl a,b高四位与低四位逻辑或运算重新组合。

cjne a,#0ffh,key_in1 ;0ffh为无按键下。

retkey_in1: ;识别具体按键值子程序。

mov b,a ;将按键的特征编码暂存于b

mov dptr,#keytable

mov r3,#0ffh

key_in2:

inc r3 ;顺序码加1

mov a,r3

movc a,@a+dptr ;查表。

cjne a,b,key_in3;比较,若相同则找到按键的特征编码。

mov a,r3找到特征编码后,取顺序码。

mov 30h,a ;存入30h单元。

retkey_in3:

cjne a, #00h,key_in2;未完,继续查。

ret00h为结束码。

特征编码与顺序编码的对应关系表。

key_table:

db 0eeh,0edh,0ebh,0e7h,0deh;0,1,2,3,4,顺序码。

db 0ddh,0dbh,0d7h,0beh,0bdh;5,6,7,8,9,顺序码。

db 0bbh,0b7h,07eh,07dh,07bh,077h;a,b,c,d,e,,f,顺序码。

db 00h ;结束码。

2. 8位数码管显示程序方法。

根据要使用的数码的具体位置来确定扫描初值就和扫描方向。

根据使用数码的个数来确定扫描的位数。

准备好要显示子的数据,放入相应的显示单元中。

8位数码管显示子程序;从右至左依次点亮数码管。

display:

mov r1,#07fh ;扫描初值送人r1

mov r2,#08h;扫描位数初值送人r2

mov r0,#30h ;开始填充显示单元。

disp1:mov a,@r0;显示内容送人a

mov dptr,#table ;获得表头。

movc a,@a+dptr ;查表获得显示数据。

mov p0,a显示单元数据。

mov p2,r1开始显示当位。

mov a,r1准备显示下一位。

rr amov r1 ,a

inc r0取下一位单元地址。

lcall delay2ms ;延时2ms

djnz r2,disp1 ;重复延时下一个。

ret显示完成,返回。

3总程序。org 0000h

mov p2,#0ffh

mov 7eh,#11h

mov 7dh,#10h

mov 7ch,#10h

mov 7bh,#10h

mov 7ah,#10h

mov 79h,#10h

mov a,#89h

mov dptr,#0ff23h

movx @dptr,a

mov r0,#59h

mov a,#7eh

movx @r0,a

doj0: mov sp,#53h

doj6: lcall x2 ;!

jnc doj5

lcall x3

mov r1,#7eh

sjmp doj6

doj5: cjne a,#16h,doj6

mov a,7ah

swap a

orl a,79h

mov r6,a

mov a,7ch

swap a

orl a,7bh

mov r7,a

mov a,7eh

cjne a,#00h,doj2

doj1: mov p1,#03h

lcall del0y

lcall ggj0

mov p1,#06h

lcall del0y

lcall ggj0

mov p1,#0ch

lcall del0y

lcall ggj0

mov p1,#09h

lcall del0y

lcall ggj0

sjmp doj1

doj2: mov p1,#09h

lcall del0y

lcall ggj0

mov p1,#0ch

lcall del0y

lcall ggj0

mov p1,#06h

lcall del0y

lcall ggj0

mov p1,#03h

lcall del0y

lcall ggj0

sjmp doj2

del0y: mov a,7dh

swap a

mov r2,a

mov r5,#80h

del1y: djnz r5,del1y

lcall ssee

djnz r2,del1y

retggj0: cjne r7,#00h,ggj1

cjne r6,#00h,ggj1

ajmp doj4

ggj1: djnz r6,doj3

cjne r7,#00h,ddj8

doj4: lcall doj7

sjmp doj4

ddj8: djnz r7,doj3

ajmp doj4

doj3: lcall doj7

retdoj7: mov r0,#79h

mov a,r6

lcall ptds5

mov a,r7

lcall ptds5

lcall ssee

retptds5: mov r1,a

acall ptds6

mov a,r1

swap a

ptds6: anl a,#0fh

mov @r0,a

inc r0ret

单片机课程设计

可变程序控制器是集微机技术 自动化技术 通讯技术于一体的通用工业控制装置。它可靠性强 性能 比高 使用方便,已在工业控制的各个领域里得到了极为广泛的应用,成为实现工业自动化的一种强有力的工具 1 plc的定义有许多种。国际电工委员会 iec 对plc的定义是 可编程控制器是一种数字运算操作的电子系统...

单片机课程设计

目录。内容提要2 关键词2引言3 一 硬件电路设计3 一 电路板原理3 二 电路元器件3 二 软件设计3 一 秒钟设计方案3 二 时钟设计方案4 结语7单片机时钟设计。内容摘要 一 在实验板上用动态扫描显示00 59秒钟,具体要求如下 一 6m晶振 二 l9 l10显示00 59十进制数并循环,间隔...

单片机课程设计

1 选题背景。1.1 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...