《单片机实训》设计报告
题目:可调电子时钟的设计
学 院:交通信息学院
专 业:电气自动化技术
班 级:电气091
姓 名:
学 号:(长号)
指导老师:
一、实验内容
利用CPU的定时器和实验仪上提供的数码显示电路,设计一个可调电子时钟。显示格式如下:XX XX XX ,由左向右分别为:时、分、秒。同时还可以通过键盘(开关)对电子时钟的时间进行加减,达到可调。
二、实验内目的
1、掌握定时器的使用和编程方法;
2、掌握中断处理程序的编程方法;
3、掌握数码显示电路的驱动程序编程方法;
4、掌握键盘电路的程序编程方法;
5、掌握模块子程序的编程方法;
6、掌握硬件的线路的设计及连线方法。
三、实验说明
设计定时器每50ms中断一次,在中断服务程序中,对中断次数进行计数,50ms计数20次,就是1秒,然后再对秒计数得到分的值,对分计数得到小时的值,分别将各值送到相应的段地址端口和位地址端口,通过数码管显示结果,达到电子时钟的效果。在电子时钟的基础上,程序增加了键盘程序,对电子时钟进行可调(对秒/分/时进行加/减,此功能的增加使电子时钟功能更强、更实用。
四、硬件电路设计原理图
图1 总电路图
图2 键盘控制电路
五、软件设计
(一) 程序设计框图
(二)实验程序设计
步骤 1、用定时器编写延迟子程序;
2、编写学号显示子程序;
3、编写从0~9秒用数码管显示子程序;
4、据时分秒的要求,编写定时器0中断服务子程序;
5、结合以上子程序,与主程序相组合成电子时钟程序;
6、编写键盘控制加子程序;
7、组合以上子程序,与主程序相组合成可调电子时钟程序;
#include<reg51.h>
/ /程序定义
typedef unsigned char uchar;
unsigned int number;
void delay(unsigned char);
void display();
void key();
void init();
uchar ledsbuf[8];
uchar ledsbuf1[8];
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
uchar a[4];
uchar b[4];
void chbcd();
//计时器
void init(); //开始
unsigned int number;
void time() interrupt 1
{
if(--number==0) //number=0 1秒钟到
{
number=4000;
if((++a[3])==60)
{
a[3]=0;
if((++a[2])==60)
{
a[2]=0;
if((++a[1])==24)
{
a[1]=0;
if((++b[3])==32)
{
b[3]=01;
if((++b[2])==12)
{
b[2]=01;
if(b[1]++==99)
{
b[1]=0;b[0]++;
}
}
}
}
}
}
}
}
//控制显示数字
code unsigned char ledtab[]={ 0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07,0x7f, 0x6f,
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71,0x40};
void main()
{
uchar i;
a[0]=00,a[1]=23,a[2]=59,a[3]=50;
b[0]=20,b[1]=11,b[2]=03,b[3]=30;
number=4000 ;
init();
chbcd();
while(1)
{
chbcd();
display();
key();
}
}
//控制显示位
void chbcd()
{
uchar i;
for(i=0;i<4;i++)
{
ledsbuf[i*2]=ledtab[a[i]/10];
ledsbuf[i/2]=ledtab[a[0]=16];
ledsbuf[i*2+1]=ledtab[a[i]%10];
ledsbuf1[i*2]=ledtab[b[i]/10];
ledsbuf1[i*2+1]=ledtab[b[i]%10];
}
}
void delay(char n)
{
uchar i;
for(i=0;i<n;i++);
}
//计时器
void init()
{
TMOD=0x02;
TH0=0x08;
TL0=0x08;
EA=1;
ET0=1;
TR0=1;
}
void display ()
{
uchar i;
for(i=0;i<8;i++)
{
P2=~ledsbuf[i];
P0=~ledsbuf1[i];
P3=(0x01<<i);
delay(10);
P3=0x00 ;
}
}
//调整
void key()
{
//分
if(p10==0)
{
while(p10==0)
{
display();
}
a[2]++;
for(;a[2]==60;a[2]=0)
{
if((++a[1])==24)
a[1]=0;
if((++b[3])==32)
{
b[3]=0;
}
}
}
//时
if(p11==0)
{
while(p11==0)
{
display();
}
a[1]++;
for(;a[1]==24;a[1]=0)
{
if((++b[3])==32)
b[3]=0;
}
}
//天
if(p12==0)
{
while(p12==0)
{
display();
}
b[3]++;
for(;b[3]==32;b[3]=0)
{
if((++b[2])==13)
b[2]=0;
++b[1];
}
}
//月
if(p13==0)
{
while(p13==0)
{
display();
}
if( ++b[2]==13)
{
b[2]=01;
if(b[1]++==99)
{
b[1]=0;b[0]++;
}
}
}
//年
if(p14==0)
{
while(p14==0)
{
display();
}
b[1]++;
for(;b[1]==99;b[1]=0)
{
b[1]=01;
b[0]++;
}
}
//复位
if(p15==0)
{
while(p15==0)
{
display();
}
a[0]=a[1]=a[2]=a[3]=0;
b[0]=20;b[1]=11;b[2]=03;b[3]=22;
}
}
四实验结果分析
调试过程的问题及解决方法
五、实验体会
1、编写程序时,知识结构混乱,无从下手。应该加深对书本基本知识的了解,即可解决。
2、脑海没有形成编写程序的思想,像显示子程序、延时程序等,都只是参考课本上的程序,没有个人创作。
3、指导老师够认真、负责,指导到位。
六、建议
学校的硬件设备跟不上,实训过程中由于硬件设备不行而不得不停止实训,而且经常因为病毒破坏程序,导致多次失败告终,大量的浪费了我们的时间。
七参考文献:单片机C语言指导书
桂林电子科技大学职业技术学院
单片机实训I报告
抢答器
学院(系): 电子信息工程系
专 业:
学 号: 10XXXXXXXX
学生姓名: XXXX
指导教师: XXX
目 录
摘 要...................................................................1
1 绪论...................................................................2
2 课题背景...............................................................3
XXXXXXXX................................... .............................4
摘 要
在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。…………
关键词 :信号发生器;方波;三角波;正弦波
1 绪论
信号发生器是信号源的一种,它是具有信号源所具有的特点,更因它高的性能优势而倍受人们青睐。信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。…………
2 课题背景
在高新技术日新月异的今天,科学技术已经成为整个社会发展的源动力,电子领域的发展更是令人目不暇接,在其推动下,现代电子产品几乎渗透了社会的各个领域,遍迹了千家万户,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。…………
2.1设计任务与要求
本设计主要能够完成对制定波形的形成,可以通过电位器来改变幅度。此信号发生器可以很好的运用于有需要的场合。
2.2设计目的
通过该毕业设计对单片机系统要有一个全面的了解、掌握常规芯片的使用方法、掌握简单单片机应用系统软硬件的设计方法,进一步锻炼在单片机应用方面的实际动手能力。…………
2.2.1 设计题目的概述
信号发生器是基于单片机的信号发生电路,数模转换电路和I/V转换电路组合而成。利用89S51单片机外接数模转换器和I/V转换电路,由用户通过按键选择输出实验中经常使用到的几种基本波形:方波、三角波、正弦波。…………
3 总体设计方案
3.1 设计思想
由于要求达到模拟信号波形发生,因此要由D/A转换芯片来完成此项任务,由基准电路来实现输出波形的幅度可调,通过电位器调节波形的变化。经过数模转换电路输出的信号为电流形式,因此需要加电流电压转换电路来改变输出信号的形式。
3.2方案选择与论证
函数信号发生器的实现方法通常有以下几种:
方案一: 用分立元件组成的函数发生器,通常是单函数发生器且频率不高,其工不稳定,不易调试。
方案二: 可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。…………
4 硬件设计
4.1信号发生器的总体硬件结构及原理
信号发生器的硬件结构主要由AT89C51、复位电路、时钟电路、数模转换电路DAC0832及运算放大器4558六部分构成。…………
4.2硬件原理框图
图4.2.1 硬件原理框图
4.3 芯片及作用
4.3.1 单片机
单片机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用。用它来精确地确定波形的两个采样点输出之间的延迟时间。…………
5结论
此电路基本可以完成任务要求的各个功能,具有波形选择功能,电压幅度可调的功能。能产生比较稳定、失真度较小的低频信号,频率和幅值都能较好的满足题目的要求。并且能够较准确的测出输出波形的频率以及幅值。…………
参考文献
[1] 童诗白,华成英.模拟电子技术基础〔M〕.北京:高等教育出版社,2003.345-362
[2] 潘永雄,沙河,刘向阳.电子线路CAD实用教程〔M〕.西安:西安电子科技大学出版社,2001.13-118.
[3] 张毅刚,彭喜源,谭晓昀,曲春波.MCS-51单片机应用设计[M].哈尔滨:哈
尔滨工业大学出版社,1997.53-61.
[4] 刘 骋,高频电子技术,北京:人民邮电出版社,2005
[5] 谭浩强,C程序设计教程,北京:清华大学出版社,2007
[6] 苏士美,模拟电子技术,北京:人民邮电出版社,2005
致 谢
回顾起此次设计过程,我仍然感慨颇多,…………
20##年 XX 月 XX 日
附件
原理图
PCB图
单片机实训报告姓名学号班级指导老师实训时间前言一周的单片机实训很快就结束咯在这一周的时间里我学到了很多关于单片机各方面的知识老师在…
单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实…
目录一概述11设计制作产品的背景目的意义12设计制作产品的设计要求13分工情况工作计划及本人所总结工作14本课题的基本内容重点及难…
广东轻工职业技术学院实训报告实训项目单片机实训系别:电子通信工程系专业:应用电子技术班级:嵌入式091班姓名:**学号:***指导…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
单片机原理实验报告实验一熟悉μ’nSP?IDE集成开发环境下C语言程序的编写【实验目的】1.熟悉μ’nSP?IDE集成开发环境的使…
这次实习我们使用控制电路的单片机是at89s51型号的。通过它实现对八盏双色灯发光二极管的控制p0和p2口控制四盏灯。在at89s…
PIC单片机技术上机实验报告实验项目:定时/计数姓名:专业:班级:学号:学期:1314学年2学期20xx一、实验名称×××二、实验…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
项目一万年历班级学号姓名一任务目的通过对万年历的设计和制作应用了单片机的数码管键盘接口技术以及定时计数器中断等程序设计技术进一步训…
单片机实训报告一周的实训,让我们从另一个角度去发现单片机。期间我学会了很多宝贵的知识和经验,在这次单片机实训中我们巩固了我们平时所…