课程名称 | 单片机原理及应用 | 实验课时 | 4 |
实验项目 | 定时器/计数器实验 | 实验时间 | |
指导老师 | 胡国华 | 实验成绩 | |
实验目的(本次上机实验所涉及并要求掌握的知识点) | 1、了解定时器的各种工作方式。 2、掌握定时器/计数器的使用和编程方法。 | ||
实验环境 | Protues仿真软件 KellC51 集成开发环境 微机1台 | ||
实验内容 | 采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示出来。 程序代码: #include<reg51.h> sbit P1_0=P1^0; unsigned char numcode[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88}; unsigned char sepcoed[4]={0x01,0x02,0x04,0x08}; unsigned int num=0; void int1() interrupt 1 { num++; TL0=0xb0; TH0=0x3c; } void DelayMS(unsigned int ms) { unsigned char i; while(ms--) for(i=0;i<120;i++); } | ||
void main() { unsigned char i=0; unsigned char dspcode[4]; unsigned long t; P3=numcode; ET0=1; EA=1; TH0=0x3c; TL0=0xb0; TMOD=0x01; while(1) { if(P1_0==0) { TR0=1; i++; P3=numcode; while(P1_0==0); TR0=0; if(i==10) { t=((TH0<<8)+TL0)/1000; t=(t+50*num)/10; dspcode[0]=numcode[(t/1000)%10]^0x80; dspcode[1]=numcode[(t/100)%10]; dspcode[2]=numcode[(t/10)%10]; dspcode[3]=numcode[t%10]; break; } } } While(1) { for(i=0;i<4;i++) { P2=seqcode; P0=dspcode; DelayMS(5); } } } | |||
总结(对上机实验结果进行分析,上机心得体会及改进意见 | 实验结果: file:///C:/Users/zyt/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 总结: 通过这次单片机设计,我不仅加深了对单片机理论的理解,将理论很好的运用到实际当中去,同时也使我认识到自身存在的不足之处。无论是理论上还是遇到问题的处理能力上都还有待提高。这也激发了我今后学习努力学习的兴趣。发现问题、提出问题、分析问题、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。 |
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |