历史上的今天
今天是:2025年03月24日(星期一)
2021年03月24日 | 51单片机两点间温度控制设计
2021-03-24 来源:eefocus
1.电路原理图

图4.29.1
2.系统板上硬件连线
a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。
d)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
f)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
g)把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。
h)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。
i)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。
j)把“单片机系统”区域中的P3.6、P3.7用导线分别连接到“八路发光二极管指示模块”区域中的L1、L2上。
k)把“单片机系统”区域中的P3.5用导线连接到“音频放大模块”区域中的SPKIN端口上。
l)把“音频放大模块“区域中的SPKOUT插入音频喇叭。
3.C语言源程序
#include unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}; unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsignedchardispbuf[8]={10,10,10,10,10,10,0,0}; unsignedchardispcount; unsignedchargetdata; unsignedinttemp; unsignedchari; sbitST=P3^0; sbitOE=P3^1; sbitEOC=P3^2; sbitCLK=P3^3; sbitLED1=P3^6; sbitLED2=P3^7; sbitSPK=P3^5; bitlowflag; bithighflag; unsignedintcnta; unsignedintcntb; bitalarmflag; voidmain(void) { ST=0; OE=0; TMOD=0x12; TH0=0x216; TL0=0x216; TH1=(65536-500)/256; TL1=(65536-500)%256; TR1=1; TR0=1; ET0=1; ET1=1; EA=1; ST=1; ST=0; while(1) { if((lowflag==1)&&(highflag==0)) { LED1=0; LED2=1; } elseif((highflag==1)&&(lowflag==0)) { LED1=1; LED2=0; } else { LED1=1; LED2=1; } } } voidt0(void)interrupt1using0 { CLK=~CLK; } voidt1(void)interrupt3using0 { TH1=(65536-500)/256; TL1=(65536-500)%256; if(EOC==1) { OE=1; getdata=P0; OE=0; temp=getdata*25; temp=temp/64; i=6; dispbuf[0]=10; dispbuf[1]=10; dispbuf[2]=10; dispbuf[3]=10; dispbuf[4]=10; dispbuf[5]=10; dispbuf[6]=0; dispbuf[7]=0; while(temp/10) { dispbuf[i]=temp%10; temp=temp/10; i++; } dispbuf[i]=temp; if(getdata<77) { lowflag=1; highflag=0; } elseif(getdata>153) { lowflag=0; highflag=1; } else { lowflag=0; highflag=0; } ST=1; ST=0; } P1=dispcode[dispbuf[dispcount]]; P2=dispbitcode[dispcount]; dispcount++; if(dispcount==8) { dispcount=0; } if((lowflag==1)&&(highflag==0)) { cnta++; if(cnta==800) { cnta=0; alarmflag=~alarmflag; } if(alarmflag==1) { SPK=~SPK; } } elseif((lowflag==0)&&(highflag==1)) { cntb++; if(cntb==400) { cntb=0; alarmflag=~alarmflag; } if(alarmflag==1) { SPK=~SPK; } } else { alarmflag=0; cnta=0; cntb=0; } }
下一篇:51单片机实现红外编码检测
史海拾趣
|
在电子电路中,常可以看到VCC、VDD和VSS三种不同的符号,它们有什么区别呢? 一、解释 VCC:C=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意 ...… 查看全部问答> |
|
请大家有相关经验或者认识的说说串口在线升级的方法,大概有哪些思路? 主要是如何固定一些不需要升级的文件,如何将非升级文件与升级文件在FLASH中分区存放?… 查看全部问答> |
|
at91fr40162s的CPU,晶振用的66M的。用的JTAG线是之前调at91fr40162的CPU的线和JTAG板子,是 20口的,因为at91fr40162s的CPU的JTAG线是直接从MCU接出来,只有四跟,TDI,TDO,TCK,TMS, 再接上两根电源和地线,有六跟,根据网上的说明自己弄了一 ...… 查看全部问答> |
|
大虾们好,以下是我的UART1中断函数 void UART1 (void) interrupt 20 using 2 { unsigned char xdata tChar=0; EIE2 &= 0xBF; RI1Flag=(SCON1 & 0x01); ...… 查看全部问答> |
|
volatile unsigned int *xy=(volatile unsigned int *)0x3401; 编译,这句话报错: erro:"declaration may not appear after executable statement in block" 是什么地方出了问题? #define conval 0x15 .. unsigned int a=conval; 也报 ...… 查看全部问答> |
|
大家好,我是某大学里的一名本科生,马上就毕业了。我学的是机械,以及力学。但我个人却对电路设计和单片机什么的比较有兴趣。最近,也在花相当一部分时间学习嵌入式。我个人觉得,未来机电结合才是王道。大家觉得我的想法怎么样?对于一个外行,非 ...… 查看全部问答> |
|
我们公司以前一直用NEC的单片机,现在改为用TI 28335,刚开始用;想问一个问题,就是看资料说TIMER 0是给用户用的,那是否定时器中断,只能有一个了?若想多定时中断咋办?… 查看全部问答> |
|
【视频分享】SimpleLink WiFi CC3000快速体验 TI工程师Nick为您介绍快速使用CC3000 FRAM开发包的经验。CC3000 FRAM开发包包括了MSP430 FRAM EVM板,CC3000模组EVM板,不含电池的3A电池盒,以及用于接入无线网络的无线路由器。 $(\'swf_ypz\').innerHTML=AC_FL_RunContent(\'width\', \'550\', ...… 查看全部问答> |




