单片机_倒计时电路的设计报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。感谢老师的悉心指导。,
七、程序附录
#include "reg52.h"
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
二、数字时钟的基本原理
数字时钟是用数字集成电路组成,用数码管显示的一种现代化计数器。数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需在电路上加一个校时电路可以对分和时进行校时。
一、设计要求
在实验板上用动态扫描显示00—59
1、6MHZ晶振
2、L9,L10显示00—59十进制数并循环,相隔1S
3、L9显示内寄存内部RAM30H,L10显示内寄存内部RAM31H
4、定时器1产生2。5MS中断,动态扫描显示L9,L10显示数
5、定时器0产生50MS中断,计数20次产生1S时钟
7、要求显示,时、分、秒
四、数字时钟的软件设计
1、程序流程图
开始
清显示缓冲区
初始化定时计数器
赋时钟初值
开定时器
调整时间
数码管显示当前时钟值
五、软件调试
通过WAVE6000编写程序用TOP8052烧写AT89C52芯片中,在上电的情况下,两个LED数码管显示的数值是00,当按键S1有按下的时候,启动时钟,当再次检测到按键S1按下时,就暂停时钟,S1起到一个启动\暂停的功能;可以通过按键S2的切换查看时、分、秒的数值。首次按下S2,就会切换到显示分的数值,第二次按下S2,就会切换到显示时钟的数值,第三次按下S2,就跳回显示秒的数值。
#define uchar unsigned char
#define DECODE_MODE 0x09
#define INTENSITY 0x0A
#define SCAN_LIMIT 0x0B
#define SHUT_DOWN 0x0C
#define DISPLAY_TEST 0x0F
void Init_Max7219(void);
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
这次实验并不是很难,主要的困难来自对程序的理解。功夫不负有心人,经过四个人的合作和努力,我们最后对实验的原理有了清晰的认识。虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
(三)、MAX7219
MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。MAX7221与SPI™、QSPI™以及MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。在应用时要求3V的操作电压或segment blinking,可以查阅MAX6951数据资料。
void write_7219(uchar add, uchar dat);
void send_byte(uchar i);
void short_delay(void);
void delay(int time);
void init_timer();
void display();
sbit CLK = P0^0;
这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
实验中个人的力量是不及群体的力量的,我们四个人分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
write_7219(SCAN_LIMIT, 0x07); //SCAN LIMIT 0~7 0xX0~0xX7
write_7219(INTENSITY, 0x05); //Set Intensity 0xX0~0xXf
}
void short_delay(void)
{
char j;
for(j=0;j<50;j++);
{
TH0=(65535-46080)/256;
TL0=(65535-46080)%256;//定时1ms
D0=!D0;
t_sec++;
}
void display()
{
int ten1,num1,ten2,num2,ten3,num3;
ten1=second/10;num1=second%10;
ten2=minute/10;num2=minute%10;
六、结语
本次课程设计的总结与体会
微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
辽宁工业Leabharlann Baidu学
单片机原理与应用课程设计(论文)
题目:倒计时电路的设计
院(系):
专业班级:
学号:
学生姓名:
指导教师:
教师职称:副教授
起止时间:
单片机电子时钟设计
【内容摘要】单片机技术是一门应用性很强的专业课,其理论与实践技能是从事机电类专业技术工作的人员所不可少的。本次程设计是选择AT89C52为核心控制元件,设计了一个日常生活中用到的电子时钟系统。当功能按键S1按下,时钟运行或停止。当功能按键S2按下,时钟显示转换时,分,秒。经过实践证明,本系统运行稳定,具有一定的实用价值。
TR0=1;//启动定时器0
}
void write_7219(uchar add, uchar dat)
{
LOAD=1;
send_byte(add);
send_byte(dat);
LOAD=0;
short_delay();
LOAD=1;
CLK=0;
short_delay();
CLK=1;
}
void send_byte(uchar i )
}
void delay(int time)
{
int i,j;
for (i=3;i<time;i++)
for (j=0;j<100;j++);
}
【关键词】AT89C52定时器1定时器0按键SW1、SW2
引言
单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而52单片机是个单片机中最为典型和最有代表性的一种。
write_7219(DISPLAY_TEST, 0x00); //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1
write_7219(DECODE_MODE, 0x00); //Decode Mode Select D7~D0 1 B decode 0 No decode
t_sec=0;
second++;
if(second==60) //到了1分
{
second=0;
minute++;
if(minute==60)
{
minute=0;
clock++;
if(clock==24)clock=0;
}
}
}
display();
}
}
void timer0() interrupt 1
{
char k;
for(k=0;k<8;k++)
{
if(0x80&i)
{
DIN =1;
}
else
{
DIN=0;
}
CLK = 0;
short_delay();
CLK = 1;
short_delay();
i*=2;
}
}
void Init_Max7219(void)
{
write_7219(SHUT_DOWN, 0xff); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0
三、硬件电路设计
(一)、电路板原理
89C52的P0、P2口用作键盘/显示接口。用程序扫描的方法进行键盘输入和显示输出。P0口作为字段口,P2作为显示器的置位口以及键盘的输出口。P2.0,P2.1接2个数码管,P2.2,P2.3接2个按钮。
(二)、电路元器件
AT89C52芯片三极管按键发光二极管共阴级七段数码管电阻
}
void init_timer()
{
second=0;minute=0;t_sec=0;t_min=0;
TMOD=0x01;//设置定时器0的工作方式为1
TH0=(65535-46080)/256;
TL0=(65535-46080)%256;//定时50ms
EA=1;//开总中断
ET0=1;//开定时器0中断
sbit DIN = P0^1;
sbit LOAD = P0^2;
sbit D0=P1^0;
sbit D7=P1^7;
int second,minute,clock,t_sec,t_min;
unsigned char dd[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f ,0x70,0x7f,0x7b};
ten3=clock/10;num3=clock%10;
write_7219(1,dd[num1]);
write_7219(2,dd[ten1]);
write_7219(3,dd[num2]);
write_7219(4,dd[ten2]);
write_7219(5,dd[num3]);
write_7219(6,dd[ten3]);
void main()
{
char k=0,i=1;
Init_Max7219();
for(i=0;i<9;i++)
{
write_7219(i,0X00);
}
init_timer();
second=54,minute=59,clock=23;
while(1)
{
if(t_sec==20) //到了1秒
{
D7=!D7;
七、程序附录
#include "reg52.h"
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
二、数字时钟的基本原理
数字时钟是用数字集成电路组成,用数码管显示的一种现代化计数器。数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需在电路上加一个校时电路可以对分和时进行校时。
一、设计要求
在实验板上用动态扫描显示00—59
1、6MHZ晶振
2、L9,L10显示00—59十进制数并循环,相隔1S
3、L9显示内寄存内部RAM30H,L10显示内寄存内部RAM31H
4、定时器1产生2。5MS中断,动态扫描显示L9,L10显示数
5、定时器0产生50MS中断,计数20次产生1S时钟
7、要求显示,时、分、秒
四、数字时钟的软件设计
1、程序流程图
开始
清显示缓冲区
初始化定时计数器
赋时钟初值
开定时器
调整时间
数码管显示当前时钟值
五、软件调试
通过WAVE6000编写程序用TOP8052烧写AT89C52芯片中,在上电的情况下,两个LED数码管显示的数值是00,当按键S1有按下的时候,启动时钟,当再次检测到按键S1按下时,就暂停时钟,S1起到一个启动\暂停的功能;可以通过按键S2的切换查看时、分、秒的数值。首次按下S2,就会切换到显示分的数值,第二次按下S2,就会切换到显示时钟的数值,第三次按下S2,就跳回显示秒的数值。
#define uchar unsigned char
#define DECODE_MODE 0x09
#define INTENSITY 0x0A
#define SCAN_LIMIT 0x0B
#define SHUT_DOWN 0x0C
#define DISPLAY_TEST 0x0F
void Init_Max7219(void);
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
这次实验并不是很难,主要的困难来自对程序的理解。功夫不负有心人,经过四个人的合作和努力,我们最后对实验的原理有了清晰的认识。虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
(三)、MAX7219
MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。MAX7221与SPI™、QSPI™以及MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。在应用时要求3V的操作电压或segment blinking,可以查阅MAX6951数据资料。
void write_7219(uchar add, uchar dat);
void send_byte(uchar i);
void short_delay(void);
void delay(int time);
void init_timer();
void display();
sbit CLK = P0^0;
这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
实验中个人的力量是不及群体的力量的,我们四个人分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
write_7219(SCAN_LIMIT, 0x07); //SCAN LIMIT 0~7 0xX0~0xX7
write_7219(INTENSITY, 0x05); //Set Intensity 0xX0~0xXf
}
void short_delay(void)
{
char j;
for(j=0;j<50;j++);
{
TH0=(65535-46080)/256;
TL0=(65535-46080)%256;//定时1ms
D0=!D0;
t_sec++;
}
void display()
{
int ten1,num1,ten2,num2,ten3,num3;
ten1=second/10;num1=second%10;
ten2=minute/10;num2=minute%10;
六、结语
本次课程设计的总结与体会
微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
辽宁工业Leabharlann Baidu学
单片机原理与应用课程设计(论文)
题目:倒计时电路的设计
院(系):
专业班级:
学号:
学生姓名:
指导教师:
教师职称:副教授
起止时间:
单片机电子时钟设计
【内容摘要】单片机技术是一门应用性很强的专业课,其理论与实践技能是从事机电类专业技术工作的人员所不可少的。本次程设计是选择AT89C52为核心控制元件,设计了一个日常生活中用到的电子时钟系统。当功能按键S1按下,时钟运行或停止。当功能按键S2按下,时钟显示转换时,分,秒。经过实践证明,本系统运行稳定,具有一定的实用价值。
TR0=1;//启动定时器0
}
void write_7219(uchar add, uchar dat)
{
LOAD=1;
send_byte(add);
send_byte(dat);
LOAD=0;
short_delay();
LOAD=1;
CLK=0;
short_delay();
CLK=1;
}
void send_byte(uchar i )
}
void delay(int time)
{
int i,j;
for (i=3;i<time;i++)
for (j=0;j<100;j++);
}
【关键词】AT89C52定时器1定时器0按键SW1、SW2
引言
单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而52单片机是个单片机中最为典型和最有代表性的一种。
write_7219(DISPLAY_TEST, 0x00); //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1
write_7219(DECODE_MODE, 0x00); //Decode Mode Select D7~D0 1 B decode 0 No decode
t_sec=0;
second++;
if(second==60) //到了1分
{
second=0;
minute++;
if(minute==60)
{
minute=0;
clock++;
if(clock==24)clock=0;
}
}
}
display();
}
}
void timer0() interrupt 1
{
char k;
for(k=0;k<8;k++)
{
if(0x80&i)
{
DIN =1;
}
else
{
DIN=0;
}
CLK = 0;
short_delay();
CLK = 1;
short_delay();
i*=2;
}
}
void Init_Max7219(void)
{
write_7219(SHUT_DOWN, 0xff); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0
三、硬件电路设计
(一)、电路板原理
89C52的P0、P2口用作键盘/显示接口。用程序扫描的方法进行键盘输入和显示输出。P0口作为字段口,P2作为显示器的置位口以及键盘的输出口。P2.0,P2.1接2个数码管,P2.2,P2.3接2个按钮。
(二)、电路元器件
AT89C52芯片三极管按键发光二极管共阴级七段数码管电阻
}
void init_timer()
{
second=0;minute=0;t_sec=0;t_min=0;
TMOD=0x01;//设置定时器0的工作方式为1
TH0=(65535-46080)/256;
TL0=(65535-46080)%256;//定时50ms
EA=1;//开总中断
ET0=1;//开定时器0中断
sbit DIN = P0^1;
sbit LOAD = P0^2;
sbit D0=P1^0;
sbit D7=P1^7;
int second,minute,clock,t_sec,t_min;
unsigned char dd[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f ,0x70,0x7f,0x7b};
ten3=clock/10;num3=clock%10;
write_7219(1,dd[num1]);
write_7219(2,dd[ten1]);
write_7219(3,dd[num2]);
write_7219(4,dd[ten2]);
write_7219(5,dd[num3]);
write_7219(6,dd[ten3]);
void main()
{
char k=0,i=1;
Init_Max7219();
for(i=0;i<9;i++)
{
write_7219(i,0X00);
}
init_timer();
second=54,minute=59,clock=23;
while(1)
{
if(t_sec==20) //到了1秒
{
D7=!D7;