欢迎来到天天文库
浏览记录
ID:51639263
大小:681.21 KB
页数:13页
时间:2020-03-14
《单片机简易频率计数器报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、简易频率计数器一.单片机课程设计要求单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境KeilC51编程调试,并使用STCISP调试工具采用串口下载方式联调制作的单片机最小系统。单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机内部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能
2、。单片机课程设计分为4个部分:焊接制作占30%,软件编写调试占30%,扩展功能占20%,课程设计报告占20%。二.题目要求自制一个单片机最小系统,包括串口下载、复位电路,采用外部计数器T0或T1作为外部频率输入,外部频率由信号源提供,计算出来的频率显示在四位一体的数码管上。三.最小系统设计1.最小系统电路的组成由电源、复位及振荡电路、RS232串口电路、八段数码管显示电路、按键及LED电路、JTAG下载接口等部分组成。(1)复位及振荡电路复位电路由按键复位和上电复位两部分组成。电阻给电容充电,电容的
3、电压缓慢上升直到vcc,没到vcc时芯片复位脚近似低电平,于是芯片复位,接近vcc时芯片复位脚近高电平,于是芯片停止复位,复位完成。AT89C54系列单片机为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为8.2K和10uF。按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会
4、保持一段时间的高电平来使单片机复位。使用6MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。(2).RS232串口电路RS232串口电路使用MAX232CPE作为电平转换芯片,并通过套件提供的串口电缆连接到计算机背后的COM口(9针D型口),用于MCS51LITE与上位机通信以及和其他串口设备的数据交互。需要注意的是这里在电路板上对TxD和RxD进行了交叉,对应使用的DB9接头类型为Female,使用的线缆为延长线
5、,也叫做直连线,线缆一头为Female一头为Male。如果电路板上不将RxD和TxD交叉,就应该采用Male类型的接头和交叉线缆(两头均为Female)连接。(3).数码显示管两个共阳8段数码管显示器,使用动态扫描方式驱动。共阳极作为位选有PNP三极管驱动连接在P1.0和P1.1口,八位段选在通过330Ω限流后连接在单片机的P0口上。由于数码管是共阳的,所以当驱动信号为0时对应的数码管才点亮。(4).单片机最小系统的调试对单片机最小系统进行测试:将P1.0引脚所接的LED二极譬闪烁程序代码烧写到AT
6、89C54单片机片内ROM中。在单片机最小系统电路板上插上单片机,接通电源,若发光二极管闪烁则说明最小系统电路工作正常。反之则需要检查错误。四.扩展电路设计:按下开关启动频率计数器。外围有数码管驱动等。五.单片机(型号89C54)程序及说明:#include#defineucharunsignedchar#defineuintunsignedintucharcodedsy_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x
7、6f};uchardisp_buffer[]={0,0,0,0};ucharcodedsy_bit[]={0xf7,0xfb,0xfd,0xfe};ucharcount=0;sbitk1=P1^0;//延时//////////////////voiddelay(ucharx){uchari;while(x--)for(i=0;i<120;i++);}///////主程序////////////////////////voidmain(){uchari;P0=0xff;P2=0x00;IE=0x8a;
8、//容许T0、T1中断//TMOD=0x51;//T1为16为计数器,T0为16位定时器//TH0=0x4c;//11.059MHZ50msTL0=0x00;while(1){if(k1==0)//k1键按下启动定时器和计数器//{delay(10);if(k1==0){TR1=TR0=1;}}else//松开k1键后显示频率(1s后才会正常显示)//{for(i=0;i<4;i++){P2=dsy_bit[i];P0=dsy_code[disp_buffer[i]]
此文档下载收益归作者所有