单片机课程设计

发布 2022-10-04 22:23:28 阅读 7085

课设题目: 单片机红外发生器

班级: 电气0810

姓名: 彭明聪

合作人: 刘海龙

学号: 08292039

指导老师: 李杏春

一、 电路图。

二、 设计思路。

此次单片机红外实验需要做的是全双工的串行通信制式,即能发送又能接收。整个电路分为四部分——红外接收,数码管显示,按键,红外发送。红外发送由一个发光二极管控制连接到单片机p3.

1——txd端,红外接收由一个发光三极管控制连接到单片机p3.0——rxd端。按键连接到p3.

2,p3.3两个中断端,数码管显示由单片机p1口控制。设计时从这四部分着手,红外频率为38khz,调制成周期为833us的信号。

由于波特率1200b/s,串行口采用方式1,计数器为方式2,根据公式可得初值0e6h。

三、 步骤。

实验时老师要求分步进行,一个步骤一个步骤的走,分析问题解决问题。

第一步:输入程序,在示波器上显示方波,检验硬件的好坏,确保以下步骤的进行。

setb p3.1

nopclr p3.1

nopend

执行此程序,若示波器上有方波显示,则说明硬件能用。

第二步,发送0和1,检验频率和周期。

org 0000h

sdata: lcall send0

lcall send1

sjmp sdata

send0:mov r3,#

sendh:clr p3.1

nopnop

nopnop

nopclr p3.1

nopnop

nopnop

djnz r3,sendh

retsend1:mov r3,#

sendl:setb p3.1

nopnop

nopnop

nopsetb p3.1

nop nop

nopnop

djnz r3,sendl

retend

在sdata中首先执行lcall send0,若在示波器上能观察到38khz的方波,则程序无误;顺序执行lcall send0和lcall send1,在示波器上检测到周期为600us的方波,程序无误。

第三步,发送0和1后,则可发送数据。然后进行按键发送数据,按一个键,发送一个数据。在示波器上检测代表数据的波形。

org 0000h

mov sp,#70h

key: mov a,#0ffh

mov p3,a

mov a,p3

jnb acc.2,sh1

jnb acc.3,sh2

sjmp key

sh1:mov r0,#0ffh

lcall senddata

sjmp key

sh2:mov r0,#0aah

lcall senddata

sjmp key

senddata:mov r7,#

lcall send0

senda:mov a,r0

jnb acc.0,sendb

lcall send1

sjmp sendc

sendb:lcall send0

sendc: rr a

mov r0,a

djnz r7,senda

lcall send1

ret send0:mov r3,#

sendh:clr p3.1

nopnop

nopnop

nopclr p3.1

nopnop

nopnop

djnz r3,sendh

retsend1:mov r3,#

sendl:setb p3.1

nopnop

nopnop

nopsetb p3.1

nop nop

nopnop

djnz r3,sendl

retend

此程序,按下1键,发送ffh,示波器上波形应为。

按下2键,发送aah,示波器上波形应为。

第四步:发送数据的同时,接收到数据,在数码管中显示。发送00到0f,在数码管中显示0到f。

org 0000h

ljmp main

org 0023h

ljmp sint

org 0050h

main:mov sp,#70h

mov a,#03h

mov dptr,#4100h

movx @dptr,a

mov tmod,#20h ;计数器t1方式2

mov th1,#0e6h ;给th1送重装初值。

mov tl1,#0e6h ;波特率为1200b/s

mov pcon,#80h ;令smod=1

mov scon,#50h ;串行口为方式1

setb tr1启动t1

setb ea开cpu中断。

setb es开串行口中断。

;mov p1,#00h

key: lcall delays

mov a,#0ffh

mov p3,a

mov a,p3

jnb acc.2,sh1

jnb acc.3,sh2

sjmp key

sh1:mov 60h,#0ah

lcall senddata

sjmp key

sh2:mov 60h,#0fh

lcall senddata

sjmp key

senddata:mov r7,#08h

lcall send0

senda:mov a,60h

jnb acc.0,sendb

lcall send1

sjmp sendc

sendb:lcall send0

sendc: rr a

mov 60h,a

djnz r7,senda

lcall send1

retsend0:mov r3,#

sendh:clr p3.1

nopnop

nopnop

nopclr p3.1

nopnop

nopnop

djnz r3,sendh

retsend1:mov r3,#

sendl:setb p3.1

nopnop

nopnop

nopsetb p3.1

nop nop

nopnop

djnz r3,sendl

retsint:jb ri,sint1

retisint1:mov a,sbuf

clr ri

mov 50h,a

lcall disply

reti disply: mov a ,#0f0h

mov dptr,#4102h

movx @dptr,a

mov a,50h

mov dptr, #dtab

movc a,@a+dptr

mov dptr,#4101h

movx @dptr,a

retdtab:db 3fh,06h,5bh,4fh,66h

db 6dh,7dh,07h,7fh,6fh

db 77h,7ch,39h,5eh,79h

delays:mov r4,#0ffh

delay:mov r5,#0ffh

delay1:djnz r5,delay1

djnz r4,delay

ret end

按下1键,发送0ah,同时接收到0ah,在数码管上就显示一个a。按下2键,同理,在数码管上显示一个f。

这个红外收发器到这也就算完成了,但老师说我们做的不够专业。做好的程序就是:在数码管上显示两位,比如发送aah,按下键在数码管上就能同时显示aa。

因此把显示程序放入中断里,能得到最终版的红外收发器程序。很遗憾我们未能完成这一步。出来的结果,虽能显示两位,但按下键后显示的数字不稳定,不能同时且稳定的显示出来。

我们没有进行烧程序运行这一步,结果一样,只需把发送0中程序的clr改为setb即可。

四、 实验中遇到的问题。

实验中由于预习工作做的还行,且按照老师的要求,一步一步进行,做的还是比较顺利的。但在数码管显示环节上出了很大的问题,只能显示0到7的数字,我和同学百思不得其解,后来改了发送0和1的程序,32换成了30.结果是出来了,老师说我们这是用错的改错的,不能动发送0和1的程序。

那问题出在哪呢?1200b/s计算出的初值错了,我们引用书上的e8h,导致了错误。经过自己计算得出应为e8h。

修改之后,就能显示和运行了。

五、 实验心得和体会。

这次单片机课程设计收获很大,我们不能一口吃成一个大胖子,同样的一个问题直接解决可能会事倍攻半,收不到预期的效果。但我们可以分成一个步骤去解决,一步一个脚印。同时我们还加深了对分析问题和解决问题的理解,遇到了问题,我们应该如何处理,这不仅是针对此次单片机课程设计,生活中都需要我们这种能力。

还有一点让我感触很深的就是书也不能尽信,引用书上的内容,我们也需要经过大脑的思考。两人一组的实验,我也体会到了合作的重要性,特别是今年,三个课程设计,时间紧迫,合作更具有必要性。

单片机课程设计

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

单片机课程设计

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

单片机课程设计

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