《单片机实验 定时器.docx》由会员分享,可在线阅读,更多相关《单片机实验 定时器.docx(5页珍藏版)》请在三一办公上搜索。
1、单片机实验 定时器实验四 定时器实验 自动化xx班 xx 一实验目的 掌握定时器的工作原理及四种工作方式,掌握定时器计数初始值的计算,掌握如何对定时器进行初始化,以及程序中如何使用定时器进行定时。 二实验仪器 单片机开发板一套,计算机一台。 三实验任务 编写程序,使用单片机开发板上8位共阴极数码管的其中一位来显示09这九个字符,先从“0”开始显示,数字依次递增,当显示完“9”这个字符后,又从“0”开始显示,循环往复,每1秒钟变换一个字符,1秒钟的定时时间必须由定时器T0提供。 开发板上的8位共阴极数码管与单片机的输入输出端口P1的硬件接线如图4-1所示,单片机P1口的8条数据线通过J3端子同时
2、连接到 2片74HC573D锁存器的输入端,数码管的各个同名端分别连接后再与锁存器U2的8个输出端相连,每一位数码管的位选端分别与锁存器U3的8个输出端相连。两片锁存器的输出使能端OE都恒接地,使得锁存器的内部数据保持器输出端与锁存器的输出端保持接通。而U2的锁存使能端LE由P2.1控制,所以P2.1是段锁存;U3的锁存使能端LE由P2.0控制,所以P2.0是位锁存。当锁存使能端为“1”时,则锁存器输入端的数据传送到输出端;当锁存使能端为“0”时,锁存器输入端的数据则不能传送到输出端;因此段码和位码通过锁存器分时输出。 汇编语言程序流程如图4-2: 图4-2 汇编语言程序流程图 中断返回 等待
3、中断 送中断矢量地址 设置定时器的工作方式 开放中断,并允许定时器溢出请求中断 送计数初值 设定中断次数以确保定时时间 赋字型码首地址 赋字型码偏移量 启动定时器定时 重新送计数初值 主程序 中断服务程序 送位码,并锁存 送段码,并锁存 1秒到否? Y 指向下一个字型码 定时下一个1秒钟 N N 是否显示完“9”否? Y 重新显示“0”字符 四实验步骤: 1.数码管的09的字型码表如下: 0 0x3f 2参考图4-2所给的程序流程图编写实验程序。(注:以下程序为两位60秒计数程序) #include sbit wei=P20; sbit duan=P21; char table=0x6d,0x
4、7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66; 1 0x06 2 0x5b 3 0x4f 4 0x66 5 0x6d 6 0x7d 7 0x07 8 0x7f 9 0x6f int i,j,k,num,shi,ge; void delay(int a) for(i=0;ia;i+) for(j=0;j100;j+); void display(int shi,int ge) wei=1; P1=0xfe; wei=0; duan=1; P1=tableshi; duan=0; wei=1; delay(5); P1=0xfd; wei=0; duan=1
5、; P1=tablege; duan=0; void main TMOD=ox01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; num=0; while(1) delay(5); display(shi,ge); void T0_time interrupt 1 TH0=(65536-45872)/256; TL0=(65536-45872)%256; k+; if(k=20) k=0; num+; if(num=60)num=0; shi=num/10; ge=num%10; 3实验接线,如图4-1。 用一条8芯的杜邦线将单片机的P1与开发板的J3端子相连;用2条单芯杜邦线将单片机的P2.0、P2.1分别与开发板的位锁存和段锁存相连;用1个跳线将J50的两个端子连接,用于给数码管提供电源。 4上机调试、运行程序。 5记录实验程序。 6分析实验中出现的问题。 7独立完成实验报告。 五实验总结: 通过本实验,我对定时器有了更深刻的理解。更熟练的应用定时器中断。并且我还额外扩展了本实验,实现了两位计数。收获甚多。
链接地址:https://www.31ppt.com/p-3090155.html