单片机课程设计 各题目程序

发布 2022-10-05 20:56:28 阅读 2485

;任务:题目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 ...