单片机原理实验考试报告
f_temp=temp*0.0625; temp=f_temp*10+0.5; f_temp=f_temp+0.05; return temp; }
void write_com(uchar com) {
RS=0; P1=com; delay(); E=1; delay(); E=0; }
void write_data(uchar date) {
RS=1; P1=date; delay(); E=1; delay(); E=0; }
void display() {
uint t,ad;
write_com(0x80+0x40); for(t=0;t<5;t++) write_data(T[t]); write_com(0x80+0x45); for(ad=0;ad<6;ad++) write_data(a[ad]); }
void dis_temp(uint t) {
uchar i0,i1,i2,i3; i0=t/100; i1=t0/10; i2='.';
i3=t0; a[0]=i0+'0'; a[1]=i1+'0'; a[2]=i2; a[3]=i3+'0'; a[4]=0xdf;
5
单片机原理实验考试报告
a[5]=0x43; display(); }
void init_com(void) {
E=0;
write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); TMOD=0x21; PCON=0x00; SCON=0x50;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; TH1=0xfd; TL1=0xfd; EA=1; ET0=1; TR0=1; TR1=1; }
void comm(char *parr) {
do {
SBUF=*parr++; while(!TI); TI=0;
}while(*parr); }
void keyscan() {
if(k1==0) {
delay(3); if(k1==0){ s++;
if(s==24)s=0; while(!k1); } } if(k2==0) {
delay(3);
6
单片机原理实验考试报告
if(k2==0){ f++;
if(f==60)f=0; while(!k2); } }
if(k3==0) {
delay(3); if(k3==0){ m++;
if(m==60)m=0; while(!k3); } }
if(k4==0) {
delay(3); if(k4==0){ d++;
if(d==7)d=0; while(!k4); } } }
void day(uchar *r) {
while(*r!='\\0') {
write_data(*r); r++; } }
void main() {
init_com(); while(1) {
write_com(0x80);
write_data(s/10+'0'); write_data(s+'0'); write_data('-');
write_data(f/10+'0'); write_data(f+'0'); write_data('-');
7
单片机原理实验考试报告
}
write_data(m/10+'0'); write_data(m+'0'); write_com(0x89); day(Day[d]); tempchange();
dis_temp(get_temp()); }
5. 结语
本次实验涉及的知识基本涵盖了对51单片机操作的主要知识,包括外部时钟电路,复位电路,对任意I/O口进行操作,可调时钟按键,按键去抖,定时器工作方式的设置,定时器中断,以及对波特率的设置。在学习中,通过实验来验证原理可以理解的更加深刻,掌握知识的效率也更高,此次实验主要学到的是利用C语言编程更加的熟练,自己在清楚原件工作原理的基础上能够编写一些简单的操作程序,以及如何对DS18B20D的操作,虽然DS18B20D外部结构简单,但是利用程序对其操作的时序还是比较复杂的。当然,这些都知识电子专业的皮毛,我会在以后的学习里努力去掌握和学习更多更深的知识,不断充实自己。最后,本次实验最终也取得了理想的效果,算是一次比较成功的实验。
参考文献
[1] 郭天祥. 51单片机C语言编程.电子工业出版社 2009年12月. [2] 百度 1602显示字符库
8