控制系统各部件的初始化和实现各功能子程序的调用。根据道客巴巴官网查询。单片机程序不是从零开始,而是先对已有的相关程序进行阅读分析。分析程序是设计、修改、优化、维护的重要步骤。因此,掌握单片机程序的分析方法是非常必要的。头文件,变量声明,函数声明,子函数,主函数这几部分组成,头文件其实就是一种声明,将单片机中的一些常用的符号变量进行定义声明,对一些特殊功能寄存器进行声明,对一些关健字进行定义,比如我们常用的P0口,在写程序的时候你就不用在去定义这个符号,不用把它的字节地址给这个符号了。
首先:
一·硬件:单片机1 温度传感器1 继电器 (220V,大电流的)电加热管(若干) 焊锡丝 烙铁 导线若干
二·将上面的硬件连接,用温度传感器测试温度 ->利用单片机读取传感器的内部寄存器的值,一般传感器都有接口(spi,i2c等),程序可以从网上找,很多改一下设置就能读取传感器的数值(比如引脚定义)->根据所测温度可以设置上限与下限的温度值,还有加热的时间。这主要是控制继电器通断就可以实现的。程序很简单。
单片机应用系统设计分为硬件设计与软件设计两部分及系统调试三个部分,大致过程如下:一、硬件电路设计1、根据任务需求规划确定单片机类型及外围接口电路方案;2、根据方案设计具体电路。二、软件设计1、根据目标任务的功能需求,结合硬件电路控制方式,规划设计软件功能模块;2、将功能模块细化成流程图;3、根据流程图编写程序代码;4、将编译后的目标代码下载到实物单片机或虚拟单片机进行软件仿真调试;三、系统调试1、将初调成功的目标的代码下载到单片机目标试验板进行软硬件联调及功能验证;2、验证成功符合设计要求,就可以进入小批量测试了。
定时器T0工作模式的确定。
因定时时间较长,采用哪种方式哪?
可以算出:
模式0:最长16384ms
模式1:最长131072ms
2^17/10^6
ans =
013107200000000
模式2:最长可定时512us
体重要求1s,可选模式1,每隔100ms中断一次,中断十次,就1s了。
步骤:
1 求计数值x:
因为(2^16-x初值)12/610^6=10010^(-3)s
所以:X=15536=3CB0H(用vb的hex$很方便。)
因此:(TL0)=0B0H,(TH0)=3CH
实现方法:
对于中断10次计数,可使T0工作在计数方式,也可以用循环程序的方法实现。本例采用循环程序法。
源程序:
ORG 0000H
LJMP MAIN;上电转向主程序。
ORG 000BH;T0的中断入口地址。
AJMP SERVE;转向中断服务程序。
;主程序
ORG 0030H
MAIN: MOV SP,#60H;设堆栈指针。为什么?
MOV B,#0AH;设循环次数。
MOV TMOD,#01;设置T0工作于模式1
MOV TL0,#0B0H;装入计数值低8位。
MOV TH0,#3CH;装入计数值高8位。
SETB TR0;启动定时器T0;
SETB ET0;允许T0中断。
SETB EA;换允许CPU中断。
SJMP $
;中断程序:
ORG 000BH
SERVE: MOV TL0,#0B0H
MOV TH0,#03CH;重新赋计数值。
DJNZ B,LOOP
CLR TR0;1s定时到,停止T0工作。
CPL P10;试验一下。
LOOP:RETI;中断返回!!
交通信号灯模拟控制系统设计程序流程图
开始
↓
8051初使化
↓
四个路口红灯亮
↓
东西红灯亮,南北绿灯亮,延时
↓
东西红灯亮,南北黄灯闪烁,延时
↓
东西绿灯亮,南北红灯亮,延时
↓
东西黄灯闪烁,南北红灯亮,延时
交通信号灯模拟控制系统主程序
ORG
0000H
SJMP
A3
ORG
0030H
A3:
MOV
SP,#60H
;设栈指针初值
MOV
A,
#24H
MOV
P1,
A
SETB
P32
CLR
P33
CLR
P34
SETB
P35
;全部红灯亮
MOV
R4,#00H
;显示0秒
MOV
R7,#00H
;显示0秒
MOV
R2,#03H
LCALL
XI
;调用子程序
A2
:
MOV
A,#0CH
MOV
P1,A
SETB
P32
SETB
P33
CLR
P34
CLR
P35
;东西红灯,南北绿灯
MOV
R4,#14H
;
显示20秒
LOOP2
:
MOV
R2,#03H
LCALL
XI
DJNZ
R4,LOOP2
;判断20秒显示时间到否
MOV
R2,#03H
LCALL
XI
LOOP8:
MOV
R2,#03H
;南北黄灯闪3次
LCALL
XI
MOV
R4,#05H
;设南北黄灯亮长显示5秒
SETB
P32
CLR
P33
A1:
MOV
A,#14H
MOV
P1
,A
SETB
P34
CLR
P35
;东西红灯,南北黄灯
MOV
R2,#01H
;定时
LCALL
DELAY
;调用延时子程序
MOV
A
,#04H
MOV
P1
,A
CLR
P34
CLR
P35
;东西红灯,南北不亮即意思要南北黄灯闪烁
MOV
R2
,#01H
;定时
LCALL
DELAY
DJNZ
R4,LOOP8
;判断南北黄灯闪烁,显示5秒到否?
MOV
A,
#61H
MOV
P1,A
CLR
P32
CLR
P33
CLR
P34
SETB
P35
;东西绿灯,南北红灯
MOV
R4,#14H
;显示20秒
LOOP3:
MOV
R2,#03H
LCALL
XI
DJNZ
R4,LOOP3
;判断20秒显示时间到否
MOV
R7,#05H
;设东西黄灯亮长显示5秒
SETB
P35
A0:
MOV
A,#0A2H
MOV
P1,A
CLR
P32
CLR
P33
CLR
P34
;东西黄灯,南北红灯
MOV
R2,#01H
;定时
LCALL
DELAY
MOV
A,#20H
;
MOV
P1,A
CLR
P32
CLR
P33
CLR
P34
;南北红灯,东西不亮即意思要东西黄灯闪烁
MOV
R2,#01H
;定时
LCALL
DELAY
DJNZ
R7,A0
;判断东西黄灯闪烁,显示5秒到否?
LJMP
A2
;循环回状态1,即东西红灯,南北黄灯
DELAY:
PUSH
2
PUSH
1
PUSH
0
;进栈
DELAY1:
MOV
1,#00H
DELAY2:MOV
0,#0B2H
DJNZ
0,$
;判断是否运行完0B2H
DJNZ
1,DELAY2
DJNZ
2,DELAY1
POP
0
POP
1
POP
2
;出栈
DJNZ
R2
,DELAY
;
判断R2是否运行完
RET
;返回主程序
XI:
MOV
A,R4
MOV
B,#10
DIV
AB
MOV
R6,A
MOV
DPTR,#TAB
MOV
A,B
MOVC
A,@A+DPTR
MOV
SBUF,A
MOV
R7,#0FH
H55S:
DJNZ
R7,H55S
MOV
A,R6
MOVC
A,@A+DPTR
MOV
SBUF,A
MOV
R7,#0FH
H55S1:
DJNZ
R7,H55S1
LCALL
DELAY
RET
TAB:DB
0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB
0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
END
只要小改一下就行了
A_BIT EQU 20H ;个位数存放处
B_BIT EQU 21H ;十位数存放处
TEMP EQU 22H ;计数器寄存处
STAR: MOV TEMP,#0 ;初始化计数器
STLOP: ACALL DISPLAY ;
INC TEMP
MOV A,TEMP
CJNE A,#100,NEXT ;等于100重来
MOV TEMP,#0
NEXT: LJMP STLOP
;显示子程序
DISPLAY: MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,A
MOV A_BIT,B
MOV DPTR,#NUMTAB
MOV R0,#4
DPL1: MOV R1,#5
DPLOP: MOV A,A_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P27
ACALL D1MS
SETB P27
MOV A,B_BIT
MOVC A,@A+DPTR
MOV P0,A
CLR P26
ACALL D1MS
SETB P26
DJNZ R1,DPLOP
DJNZ R0,DPL1
RET
D1MS:
MOV R7,#50
D1: MOV R6,#20
D2: DJNZ R6,$
DJNZ R7,D1
RET
NUMTAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;013456789字形码
END
这是两位从0到99的,你参考下。
C51开发流程:
第一:必须对C51单片机内部外设和内部寄存器了解,因为写程序需要控制单片机内部寄存器,再去控制外设。
第二:设计单片机的硬件,单片机IO控制你的硬件
第三:画出流程图执行大概的框架
下面就是按照你的流程图去设计程序。
以上就是关于单片机主程序流程图的作用全部的内容,包括:单片机主程序流程图的作用、基于单片机的电烤箱温度控制系统的流程图及程序怎么设计怎么编啊C语言的、请简述单片机系统的设计过程是怎样的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)