;任务:题目1 数据采集系统的第1个小题。
硬件连接:电位器接in0
硬件连接:p3.2接adc0809的eoc
硬件连接:key/led_cs接cs0
硬件连接:adc0809_cs接cs1
操作方法:1、开机后显示班级、学号 h082 31 ;
2、用的是实验箱键盘最后一排的六个键,依次为:“设定” “加一" "减一" "换位” ”确定“ ”运行“;
3、按“设定”键,默认第一位闪烁,此时按“加一”和“减一”键可以调整数值;
4、设定完一位后,按“换位”键可以对下一位进行设定;
5、四位都设定完之后,按“确定”键,去闪烁,并将参数01下设定的值保存;
6、再按下“确定”键,跳至参数02,此时可以依照步骤3对其进行设置;
7、参数设定好之后,可以按“确定”键对设定的值查询;
8、在不同的参数下,按下“运行”键可以将以该设定值为最大值,0为最小值的ad转换结果显示到前四位数码管上;
9、如果运行时还想设置,则可以按下〃设定”键,然后依照步骤3对其设置。
outbit equ 08002h ;位控制器。
outseg equ 08004h ;段控制器。
in equ 08001h ;键盘读入口。
cs0809 equ 09000h
ledbuf equ 30h ;显示缓冲区。
can equ 51h ;参数1234
org 0000h
ljmp start
org 0020h
start:mov 25h,#00h
mov ledbuf,#11h ;班级、学号的序码。
mov ledbuf+1,#00h
mov ledbuf+2,#08h
mov ledbuf+3,#01h
mov ledbuf+4,#01h
mov ledbuf+5,#04h
mov 36h,#00h
mov 40h,#00h ;参数1下的设定值缓冲区。
mov 41h,#00h
mov 42h,#00h
mov 43h,#00h
mov 44h,#00h ;参数2下的设定值缓冲区。
mov 45h,#00h
mov 46h,#00h
mov 47h,#00h
mov 48h,#00h ;参数3下的设定值缓冲区。
mov 49h,#00h
mov 4ah,#00h
mov 4bh,#00h
mov 4ch,#00h ;参数4下的设定值缓冲区。
mov 4dh,#00h
mov 4eh,#00h
mov 4fh,#00h
mov 50h,#00h
mov can,#01h ;参数1234
l2:mov r0,#ledbuf ;显示班级、学号。
lcall displayled1 ;显示子程序,r0为参数。
lcall testkey ;判断“有效键”是否按下?(是-->20h.0=1,否-->20h.0=0)
jnb 20h.0,l2 ;没有键按下,则继续显示班级、学号。
l3:mov 25h,#00h
mov a,can
mov b,#04h
mul ab
add a,#3ch将参数首地址存入r0
mov r0,a第一次有键按下默认显示参数1下设定的值,即:显示从40h单元开始的内容。
lcall displayled2 ;调用设定参数显示子程序。
lcall testkey ;检测是否有键按下。
jnb 20h.0,l3 ;没有键按下,则继续显示参数1下设定的值。
lcall paz有键按下,则判断运行键是否按下。
cjne r5,#05h,qd1
ljmp sdr5=5
qd1:ljmp s44
sd:setb 20h.1 ;20h.1置1
mov 36h,#00h
mov a,can
mov b,#04h
mul ab
add a,#3ch ;通过参数can来选择设定值的缓冲区(can=1,a=40h;can=2,a=44h;can=3,a=48h;can=4,a=4ch)
add a,36h
mov r0,a
mov 70h,@r0 ;将闪值保存至70h单元。
h1:mov a,can
mov b,#04h
mul ab
add a,#3ch
add a,36h
mov r0,ar0指向闪烁寄存字节处。
jb 20h.1,s1
mov @r0,#10h
setb 20h.1
ljmp ds1
s1:mov @r0,70h ;将闪烁字节的值显示出来。
clr 20h.1
ds1:mov a,can
mov b,#04h
mul ab
add a,#3ch
mov r0,ar0指向显示首区。
lcall displayled2
lcall testkey
jnb 20h.0,h1
lcall paz
cjne r5,#02h,s11 ;换位。
mov a,can
mov b,#04h
mul ab
add a,#3ch
add a,36h
mov r0,a
mov @r0,70h
inc 36h
hw1:mov a,can
mov b,#04h
mul ab
add a,#3ch
add a,36h
mov r0,a
mov 70h,@r0
mov a,36h
cjne a,#04h,h1
mov 36h,#00h
ljmp hw1
s11:cjne r5,#04h,s22 ;加1
inc 70h闪烁值加1
mov a,70h
cjne a,#0ah,h1
mov 70h,#00h
ljmp h1
s22:cjne r5,#03h,s33 ;减1
dec 70h闪烁值减1
mov a,70h
cjne a,#0ffh,h2
mov 70h,#09h
h2:ljmp h1
s33:cjne r5,#01h,h2 ;确定1(去掉闪烁,并将该参数下的设定值保存到对应的缓冲区)
mov a,can
mov b,#04h
mul ab
add a,#3ch
add a,36h
mov r0,a
mov @r0,70h
ljmp l3
s44:cjne r5,#01h,w1 ;确定2(将参数加1,并将该参数下的设定值显示到数码管上)
inc can参数加1,指向下一个参数。
mov a,can
cjne a,#05h,l22
mov can,#01h
ljmp l3
w1:cjne r5,#00h,l22
yx:lcall ad采集(调用ad转换子程序,获得ad值)
lcall testkey
jb 20h.0,l22
ljmp yx运行。
l22:ljmp l3
判断"有效按键"子程序。
testkey:mov dptr,#outbit
mov a,#00h
movx @dptr,a ;6条列线全置0
mov dptr,#in
movx a,@dptr ;读入键状态(哪一排有键按下,则对应的位为:0)
anl a,#01h ;若是最后一排有键按下,则anl之后a=0,否则a=1
cjne a,#01,b1 ;判断按下的是否是最后一排的键(有效按键)?
clr 20h.0a=1,则最后一排没有键按下,将20h.0清0
ljmp fh
b1:setb 20h.0 ;a=0,则最后一排有键按下,将20h.0置1
fh:ret
判断键位,通过r5返回,运行--00h,确定-01h,换位--02h,减1--03h,加1--04h,设定--05h
paz:mov r4,#0feh ;1111 1110b
mov r5,#0ffh ;1111 1111b
next:mov dptr,#outbit
mov a,r4
movx @dptr,a ;只将第6列置0
mov dptr,#in
movx a,@dptr ;读入键状态。
anl a,#01h ;若“运行”键按下,则anl之后a=0;否则a=1
cjne a,#01h,qdz ;判断“运行”键是否按下?(依次判断最后一排的键)
mov a,r4
rl a否,则左移一位。
mov r4,a
inc r5执行后,r5=00h
ljmp next
单片机课程设计题目
一 交通灯。要求 1 能实现红绿灯的交替点亮。2 显示点亮时间。3 在绿灯灭的三秒前黄灯闪烁。扩展 可以进行手动调试。二 简易计算器。要求 1 实现多位数加减运算。2 实现单字节的乘除运算。3 实现多字节与单字节的乘除运算。扩展 实现多位十进制数的乘除运算。三 电子抢答器。要求 1 实现多路抢答。2...
单片机课程设计题目
2 编写主程序,当按键按下时,能够在数码显示器上显示与按键的键值对应的数字。2 设计任务。1 以at89s51为核心,设计系统硬件电路,并根据所设计的电路制作实物。2 分析任务要求,绘制程序流程图,编写相应的软件程序。3 编写设计说明书,内容包括 电路原理图 程序流程框图,源程序清单 电路实测波形 ...
单片机课程设计题目
单片机课程设计题目汇总 一 要求 每个小组2 3人,每个题目最多限两个小组选 课程设计考核内容包括 c51源程序 现场显示结果 设计报告文档 文档的格式稍后公布,请注意查收 一 基于单片机的电子时钟设计。设计内容 1 用 液晶作为显示设备 30分 2 可以分别设定小时,分钟和秒,复位后时间为 00 ...