课设题目: 单片机红外发生器
班级: 电气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 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...