实验8 计数器设计
一、实验目的
1.进一步掌握中断系统的应用 2.理解计数器的基本应用
3.掌握单片机使用计数器时设计应用系统的软、硬件方法。
二、实验说明
80C51内部有两个定时/计数器T0和T1,16位是指定时/计数器内的计数器是16位的,由2个8位计数器组成。51的定时/计数器为加法计数器,其计数的方法是在初值的基础上,对计数每有一个脉冲做一次加1。
内部计数器起计数器的作用。外部事件脉冲由P3.4 引入定时器T0。当定时器/计数器对外部事件进行计数时,在每个机器周期对相应引脚进行采样,如在第一个机器周期采样到的是1,而在下一个机器周期采样到的是0,则计数器加1。也就是说至少要两个机器周期才能确认一个外部脉冲。为此,外部脉冲的高电平期间和低电平期间都至少要保持一个机器周期,CPU 才能确认这个计数脉冲。也就是说要24 个振荡周期才可确认一个脉冲,所以,外来脉冲的频率最高为振荡频率的1/24。且高电平和低电平的期间都至少要保证一个机器周期才行。
三、参考实例
单次脉冲模块作为T0计数器的输入,每按一次按键,P1口驱动的发光二极管左移一位。 1.电路图
17
2.流程图及源程序
开 始 timer0
左移一位
声明变量
N 0xff?
设置计数器中断 设置计数初值 Y 启动计数器 重置LED
停滞 返回
主程序 中断子程序
#include
{ IE=0x82; //开TO中断
TMOD=0x06; //设置计数器T0为Mode 2 TH0=0xff;TL0=0xff; //设置T0计数初值 TR0=1; //启动T0 LED=0xfe;
while(1); //无穷循环 }
void timer0(void)interrupt 1 //T0中断子程序 { LED=(LED<<1)|0x01; if(LED==0xff) LED=0xfe; }
四、实验内容
(1)单次脉冲模块作为T1计数器的输入,T1工作在方式1下。 (2)每按一次按键,P1口驱动的发光二极管左移一位。
18
实验9 定时器设计
一、实验目的
1.理解定时器的基本应用
2.掌握单片机使用定时器时设计应用系统的软、硬件方法。
二、实验说明
定时器有关的寄存器有工作方式寄存器TMOD 和控制寄存器TCON。TMOD 用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
三、参考实例
由P1口驱动8个LED,每隔0.25s,这8个LED分为两组,交替闪烁一次,即高四位亮低四位灭,0.25s后高四位灭低四位亮,如此循环下去。
内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12 个振荡器周期。因为实验系统的晶振是11.0592MHZ,工作于方式1,即16 位方式定时器, 以此方式定时,则最长的定时时间为:
1/(11.0592/12) * 65536 *10-6 s ≈ 71.11ms
如果要定时更长的时间,则要对定时次数进行计数。本实例要定时0.25 秒,设置定时器本身定时50ms,定时5 次,则总长为0.25秒。
1.电路图
19
2.流程图及源程序
开 始 timer0 声明变量 重设定时值
声明变量
设置定时器中断 设置定时值 启动定时器 N 5次? Y 切换LED 停滞 返回 中断子程序
主程序
#include
#define count 50000 //T0(Mode 1)的计数值,约0.05s #define TH_M1 (65536-count)/256 //T0(Mode 1)计数高8位 #define TL_M1 (65536-count)%6 //T0(Mode 1)计数低8位
int intcount=0; //声明intcount变量,计算T0中断次数 main()
{ IE=0x82; //启用T0中断
TMOD&=0xf1;TMOD|=0x01; //设置T0为Mode 1
TH0=TH_M1;TL0=TL_M1; //设置T0计数值高8位、低8位 TR0=1; //启动T0 LED=0xf0; //右4灯亮 while(1); //无穷循环 }
void timer0(void)interrupt 1 //T0中断子程序
{ TH0=TH_M1;TL0=TL_M1; //设置T0计数值高8位、低8位 if(++intcount==5) //若T0已中断5次数 { intcount=0; //重新计数 LED^=0xff; //输出相反 } }
3.参考实例接线方法
用8P数据线分别将CPU的P1口接到八位逻辑电平显示模块的JD1E5接口。
四、实验内容
(1)由P1口驱动8个LED,每隔0.25s,这8个LED分为两组,交替闪烁一次,即高四位亮低四位灭,0.25s后高四位灭低四位亮,如此循环下去。 (2)0.25s的间隔时间由定时器T1来实现。
20
实验10 A/D转换设计
一、实验目的
1.掌握A/D转换的基本原理。 2.学习A/D转换器件的使用方法
二、实验说明
本实验是用ADC0804将模拟量转换成数字量并输出,该芯片为8位A/D转换器, CS120VCC(VREF) RD219CLK R WR318DB0(LSB) CLK IN417DB1 INTR516DB2 ADC0804VIN+615DB3 VIN-714DB4 AGND813DB5 VREF/2912DB6 DGND1011DB7(MSB) 三、参考实例 C130pRP1U11912MHzXTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617VCC123456789RESPACK-8X1C230p18XTAL2R110 k9RSTC3GND20uF293031PSENALEEAVCCDB01DB12DB23DB34DB45DB56DB67DB78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51INT0CSWRRDVCCVCC1234INT05810919ADCIN67CSRDWRU2R121kCSRDWRCLK ININTRA GNDD GNDVREF/2CLK RVIN+VIN-ADC0804VCCDB0(LSB)DB1DB2DB3DB4DB5DB6DB7(MSB)201817161514131211DB0DB1DB2DB3DB4DB5DB6DB756%R1410kRV1ADCINC4150pR131k1kGND GND 21 制作一个简易数字电压表
P0口接4位一体共阳极数码管,输出段码,P2口控制数码管的位选,P1口接ADC0804的数据线,P3口接ADC0804控制信号线。模拟电压由线性电位器POT-HG通过5V电压提供。
四、实验内容
设计相关程序,并用Proteus进行仿真
22
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机实验指导书(参考)(6)在线全文阅读。
相关推荐: