由于本人没有参与这次的设计 所以不知道LED显示的调试应该怎么写,请达人帮忙下 ,显示电路是由74LS164所构成的(是数码显示) 存储器芯片为AT89C51 本人只要求LED的显示部分的调试报告 所以请各位Q友看清楚在答,
设计要求:
1 温度设定范围40——90°C 最小区分度1°C 标定误差≤1°C
2 用十进制数码显示水的实际温度(我们的设计中用到3个显示)
3 环境温度降低时,温度控制的静态误差≤1°C
单片机温度控制系统之LED显示调试
答案:3 悬赏:30 手机版
解决时间 2021-04-12 17:58
- 提问者网友:浮克旳回音
- 2021-04-11 20:59
最佳答案
- 五星知识达人网友:不甚了了
- 2021-04-11 21:27
74LS164是一个串行输入并行输出的移位寄存器,并带有清除端。
单片机的两端口模拟串口,数据端和时钟端,
要显示的三位显示码从端口一次传输过去,就可以显示了。
3*8=24位数据,加上时钟数码管就有显示。
单片机的两端口模拟串口,数据端和时钟端,
要显示的三位显示码从端口一次传输过去,就可以显示了。
3*8=24位数据,加上时钟数码管就有显示。
全部回答
- 1楼网友:思契十里
- 2021-04-12 00:06
补充一下,由于看不清图片上RXD上面的端口是多少,假设为P3.3
在程序中判断温度后 若不在 40~90之间给P3.3一个低电平,这样温度就不会显示出来了
而在40~90之间应该给P3.3一个高电平,以便显示温度
- 2楼网友:十鸦
- 2021-04-11 22:54
这个LED显示部分由于74ls164接在了RXD端,也就是要用串行口来发送温度数据到LED.
所以在主程序中要 开串行口中断允许,以下是串行口中断子程序,并假设要 显示的温度已经存到了某个存储器中。。这里 假设温度已经存到了TEM1中,其中TEM1里存的是温度的整数位,TEM0里 存的是温度的小数位。
TRANS:CLR TI ;清中断标志
PUSH A
PUSH PSW
MOV A,TEM1 ;以下程序判断温度时不时在40~90之间,若不在直接退出,否则显示温度
CJNE A,#40,NEXT ;将温度先和40比较
NEXT:JC RETURN ; 小于40直接退出
CJNE A,#90,NEXT1 ;大于40就和90比较
JNC RETURN ;大于90直接退出
CJNE R0,#0,LL1 ;R0是标志位,R0=0,发送小数位。R0=1,发送温度的个位。R0=2,发送温度的十位
MOV DPTR,#TAB ;R0=0,发小数部分
MOV A, TEM0 ;找小数部分的笔段码
MOVC A,@A+DPTR
MOV SBUF,A ;发送
INC R0 ;标志加1
JMP RETURN ;返回
LL1:
MOV A,TEM1 ;下5行为分开整数部分的十位和个位
MOV B,#10 ;十位存在R1中
DIV AB ;个位存在R2中
MOV R1,A
MOV R2,B
CJNE R0,#1,LL2 ;标志位为1发送整数的个位,个位已经存在R2中
MOV DPTR,#TAB ;R0=1,发整数的个位部分
MOV A, R2 ;找整数的 个位的笔段码
MOVC A,@A+DPTR
MOV SBUF,A
INC R0 ;标志加1
JMP RETURN ;返回
LL2:MOV DPTR,#TAB ;R0=2,发整数的十位部分
MOV A, R1 ;找整数的十位的笔段码
MOVC A,@A+DPTR
MOV SBUF,A
MOV R0,#0 ;标志清0
RETURN:POP PSW
POP A
RETI
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;假设LED为共阴极的,若为共阳极 取反即可
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯