当前位置:文档之家› STC89C52实时时钟实验

STC89C52实时时钟实验

STC89C52实时时钟实验
STC89C52实时时钟实验

河南理工大学电工电子实验中心

单片机课程实验报告

实验名称:实时时钟实验实验学时专业电子信息技术与仪器班级姓名学号

指导教师日期实验成绩

一、实验目的

1、数码管动态显示技术

2、定时器的应用

3、按键功能定义

二、实验原理图

三、实验流程图与程序

/*本次试验最大收获是if条件句的使用,学会灵活运用单键多次使用;同时学会了使用推完方式增加数码管亮度*/

#include

#include

#define uint unsigned int /*0~2^16-1*/

#define uchar unsigned char /*0~2^8-1*/

#define N 46080 /*N=50000*f0/12,定时50ms*/

#define M 20 /* 定时M*0.05s */

sbit W1=P0^3;

sbit W2=P0^2; sbit W3=P0^1;

sbit W4=P0^0;

sbit H1=P3^6;

sfr P1M1=0x91;//和后面的main函数中的

sfr P1M0=0x92;//P1M1 P1M0合在一起增加亮度

uint num3=0,num2=0,num1=0,num0=0,k=0,num=0,cnt,cnt1,key; //定义全局变量

uchar code duanxuan[]={0x3f,/*显示0*/0x06,/*显示1*/0x5b,

/*显示2*/0x4f,/*显示3*/0x66,/*显示4*/0x6d,/*显示5*/0x7d,

/*显示6*/0x07,/*显示7*/0x7f,/*显示8*/0x6f,/*显示9*/0x77};

void delay_ms(uint xms) //*延时子函数程序*/

{

uint i,j;

for(i=xms;i>0;i--)

for(j=250;j>0;j--); //*该层循环延时约1ms*/

}

/****************************************************/

/************数码管显示函数ok******************/

void displays()

{

W1=0;P1=duanxuan[num0];delay_ms(5);W1=1;P1=0x00;//消影

W2=0;P1=duanxuan[num1];delay_ms(5);W2=1;P1=0x00;

W3=0;P1=duanxuan[num2];delay_ms(5);W3=1;P1=0x00;

W4=0;P1=duanxuan[num3];delay_ms(5);W4=1;P1=0x00;

}

/**************定时器初始化ok*****************/

void T_initialize() //

{

EA=1; //开放ALL中断允许Enable

ET0=1; //开放T0中断允许Enable*/

TMOD=0x01;//定时器0,工作方式1,仅受TCON中TR0控制*/ TH0=(65536-N)/256;

TL0=(65536-N)%256;

}

/****************************************************/ /************时钟实时时间设置位选+时间设置******************/ void clk_weixuan()//

{uchar temp1;

if(key==1){temp1=(k/4);k++;k=k%5;TR0=0;

if(temp1==1){temp1=0;TR0=1;return;}}

switch(k)

{case 1:{if(key==2) {num0++;if(num0==10)num0=0;} //key1 else if(key==3) {{if(num0==0)num0=10;}num0--;}} //key2

break;

case 2:{if(key==2) {num1++;if(num1==6)num1=0;} //key1 else if(key==3) {{if(num1==0)num1=6;}num1--;} //key2

};break;

case 3:{if(key==2) {num2++;if(num2==10)num2=0;} //key1 else if(key==3) {{if(num2==0)num2=10;}num2--;}} //key2

break;

case 4:{if(key==2) {num3++;if(num3==6)num3=0;} //key1 else if(key==3) {{if(num3==0)num3=6;}num3--;} //key2

};break;

default:break;

}

}

/****************************************************/

/************矩阵键盘扫描,同时可进行数码管各位的+- ******************/ void matrixkeyscan()//如何确定时间设定时数码管显示的数字是否会自动+1 {

uchar temp;

/***扫描第一行**/

H1=0;

//P3=0xbf;//扫描第一行

temp=P0;

temp=temp|0x1f;//读取L1、L2、L3的状态

/***判断哪个键摁下***/

if(temp!=0xff)//判断是否有键摁下

{

delay_ms(20);//延时

H1=0;

//P3=0xbf;//扫描第一行//重新读取

temp=P0;

temp=temp|0x1f;//读取L1、L2、L3的状态

if(temp!=0xff)//消抖

{

switch(temp)//判断哪个键摁下

{

case 0x7f:key=3;break;

case 0xbf:key=2;break;

case 0xdf:key=1;break;

default:break;

} //键1 2 3 分别摁下

clk_weixuan();

while(temp!=0xff)//按键释放才会跳出循环

{

H1=0;

//P3=0xbf;//扫描第一行//重新读取

temp=P0;

temp=temp|0x1f;//读取L1、L2、L3的状态

}

}

}

displays();//

}

/****************************************************/

void main()

{

P1M1=0X00;

P1M0=0XFF;

T_initialize(); //定时器T0初始化

TR0=1; //定时器计时开始

while(1) //开始自动行走

{

matrixkeyscan();//进行一次键盘检测,同时可进行数码管各位的+-设置

}

}

/****************************************************/

void T0_time()interrupt 1

{

TH0=(65536-N)/256;/**/

TL0=(65536-N)%256;

num++; //*全局变量,不赋初值时,默认初值为0*/

if(num==M) /*定时达1s*/{num=0;/*num清零,重新开始计数*/num0++; if(num0==10){num0=0;num1++;

if(num1==6){num1=0;num2++;

if(num2==4){if(num3==2)num2=0; /**/num3=0;}

else if(num2==10){num2=0;num3++;

if(num3==3){ /**/num3=0;}}}}}//自动行走时的进位规则

}

四、调试过程与结果分析

1、K1、K

2、K3为实时时间设置按键,其余按键无效。

K1摁下1次,设置秒的个位;摁下2次,设置秒的十位;

摁下3次,设置分的个位,摁下4次,设置分的十位;

摁下5次(或者一直不摁K1),正常行走。

2、sfr P1M1=0x91;//和后面的main函数中的

sfr P1M0=0x92;//P1M1 P1M0合在一起增加亮度

放在声明部分

P1M1=0X00;

P1M0=0XFF;

放在主函数内

这4句语言可以使数码管增加亮度,利用的是强推挽方式。

3、模块化设计可以大大简化程序的设计难度,同时使程序变得简单易懂。

4、下载hex文件后,程序正常运行:数码管后两位显示秒,每秒+1;前两位显示分,每分钟+1。

实时时钟设计实验报告

实验报告

源代码: #pragma sfr //使用特殊功能寄存器 #pragma EI //开中断 #pragma DI //关中断 #pragma access //使用绝对地址指令 #pragma interrupt INTTM000 Time //定义时间中断函数为Time #pragma interrupt INTKR OnKeyPress //定义按键中断为OnKeyPress #pragma interrupt INTP5 OnKeyOver //定义INT中断为OnKeyOver void Init_Led(); void InitKey_INTKR(); void Init_Lcd(); void Init_Inter(); void LightOneLed(unsigned char ucNum); void LightOff(); int Count_Day(int month); char i=0; //定义变量i,是切换时间的标志 int key=0; //定义key=0 int temp=1; //用于存放当前月的天数 int temp1=1; int second=0; //默认的秒second=0 int minute=0; //默认的分minute=0 int hour=12; //默认的时hour=12 int day=1; //默认的天day=1 int month=5; //默认的月month=5 int year=2014; //默认的年year=2014 int c_hour=1; //默认的闹钟时=1 int c_minute=1; //默认的闹钟分=1 int buffs[2]; //秒的数码显示缓存区 int buffm[2]; //分的数码显示缓存区 int buffh[2]; //时的数码显示缓存区 int buffday[2]; //天的数码显示缓存区 int buffmonth[2]; //月的数码显示缓存区 int buffyear[4]; //年的数码显示缓存区 int buffmd[4]; //月,天的数码显示缓存区 int buffhm[4]; //时,分的数码显示缓存区 int buffms[4]; //分,秒的数码显示缓存区 int buffch[2]; //闹钟时的数码显示缓存区 int buffcm[2]; //闹钟分的数码显示缓存区 unsigned char Que = 0; //INT中断中间变量 int LCD_num[10]={0X070d,0x0600,0x030e,0x070a,0x0603,0x050b,0x050f,0x0700,0x070f,0x070b};// 数字0~~9的显示码 unsigned char Scond; //…………………………延时函数1……………………// void Delay(int k){ i nt i,j; f or(i=0;i

微机原理课程设计数字时钟程序

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 电子信息科学与工程 课程名称:微型计算机原理及应用 学年学期: 2 01 1 —2012 学年第1 学期 指导教师: 20 0 1 1年 1 2月 课程设计成绩评定表

目录 一、课设题目及目的………………………………….4 二、设计任务………………………………………….4 三、总框图及设计流程 (4) 四、?源程序清单 (6) 五、?调试结果及显示 (19) 六、?个人贡献………………………………………….19 七、课程设计总结及体会 (21) 一、课设题目及目的 实习题目:数字时钟程序 实习目的:通过实习,使我们进一步弄懂所学到的课本知识,巩固和深化对8086系统的指令系统、中断系统、键盘/显示系统、程序设计、应用开发等基本理论知识的理解,提高汇编语言应用于技术的实践操作技能,掌握汇编语言应用系统设计、研制的方法,培养利用科技革新、开发和创新的基本能力,为毕业后从事与其相关的工作打下一定的基础。

二、课设任务 本课题为利用汇编语言设置时钟程序,其显示效果为:截取系统时间,能以时、分、秒(其中时为24小时制)的形式显示,并且通过合理的操作能修改时和分的内容来修改时间。再有,可以给它设定一个ALARM时间,到这个时间它就能产生信号,起到定时作用,。除此之外还能显示日期,日期分为年、月、日,其显示方式为xxxx年xx 月xx日。 ' *

DB '***********PRESS ESCBUTTON TO EXIT**************',0AH,0DH,'$' TN DB'PLEASE INPUT THE NEW TIME(HH:MM:SS):',0DH,0AH,'$' TMDB'PLEASE INPUT THE ALARM TIME (HH:MM:SS):',0DH,0AH,'$' MUSICMESS DB'PLEASE CHOOSE THE TYPE OF MUSIC:1(FAST) 2(MIDDLE) 3(SLOW)',0DH,0AH,'$' MESS2DB'TIME IS:',0AH,0DH,'$' MESS3DB 'TODAY IS:',0AH,0DH,'$' DBUFFER1DB20DUP('') T_BUFFD B 40 ;在数据段开一段时间显示缓冲区 DB ? DB 40DUP(?) HOR DB? MIN DB? SEC DB? TEMPHOR DB ? TEMPMIN DB? TEMPSEC DB? MUSIC DW 800;存放音乐的频率数DATA ENDS STACK SEGMENT DB 100 DUP(?) STACK ENDS CODESEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: CALL CLEAR ;调用清屏子程序 DISPLAY:;时间显示部分 MOV AX,DATA MOVDS,AX MOVBX,OFFSETT_BUFF;送T_BUFF的偏移地址到BX MOV AH,2CH;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,CL,DH中 INT 21H ;判断时间是否相等SUB DH,1;秒数+1修正 CALL CHECK ;.........................................................................

高中化学趣味小实验

“可燃冰”的制备 原理 酒精与水可以任意比例混合,醋酸钙却只溶于水而不溶于酒精。当饱和的醋酸钙溶液注入酒精时,饱和溶液的水溶于酒精内,致使醋酸钙溶解速度降低,从酒精溶液中析出,形成半固态的凝胶状,酒精充填在胶状内,点燃胶状时,酒精便燃烧起来。 C2H5OH + 3O2 === 2CO2 + 3H2O 制作方法 (1) 量取酒精20ml,倒到小烧杯中 (2) 量取6ml饱和醋酸钙 (3) 把饱和醋酸钙慢慢加入20ml的酒精中,用玻璃棒不断搅拌,直到变成胶状 (4) 把胶状的“可燃冰”转移到蒸发皿中,点燃 变色溶液 【分子式】CoCl2·6H2O 氯化钴 六水物:红色至深红色单斜结晶;微有潮解性,无水物:浅蓝色粉末。 极易溶于水及乙醇,溶于丙酮、乙醚与甘油。水溶液为桃红色,乙醇溶液为蓝色。

CoCl 2·6H 2O CoCl 2·2H 2O CoCl 2·H 2O CoCl 2 52O 90O 120O (粉红色) (紫红色) (蓝紫色) (蓝色) 【溶解情况】 六水:易溶于水,也溶于乙醇、乙醚和丙酮; 无水物:溶于乙醇、丙酮、硝基苯。 【用途】 在工业上:主要用途是制取氧化钴和金属钴作合金材料的电子材料,少量用于制气压计、比重计、隐显墨水等。氯化钴试纸在干燥时是蓝色,潮湿时转变为粉红色。硅胶中加一定量的氯化钴,可指示硅胶的吸湿程度,常用于干燥存储器中。用于电镀、油漆催干剂、氨气吸收等。在医药上:刺激骨髓促进红细胞的生成。用于再生障碍性贫血、肾性贫血 【制备或来源】 由碳酸钴或氧化钴与盐酸作用而制得。 【其他】 六水物在空气中易潮解,热至120~140℃则失去结晶水而成无水物。 【特殊的颜色】 CoCl 2 呈蓝色, CoCl 2·H 2O 呈蓝紫色, CoCl 2·2H 2O 呈紫红色, CoCl 2·6H 2O 呈粉红色, 利用这一特性可以制作变色水泥

数字时钟程序

#define uchar unsigned char #define unit unsigned int #include #include #include void 1cd_putchar(uchar 1cdchar) void 1cd_putsf(uchar code *chars) uchar code http[ ]={"current time is:"} sbit KEY1=P3^3; // sbit KEY2=p3^4; // ///////////////////////////////////////// uchar t50ms,ts,tm,th; uchar DISP_BUFFER[6]=0; void timer0(void) interrupt 1 using1 { THO=0x3c; TLO=0xbo; //50ms t50ms++; if(t50ms==20) { t50ms=0; ts++; if(ts==60) {tm=0; th++; if(th==24) {th=0; } } } } } void main (void) { p0=OXFF; P1=OXFF; P2=OXFF; P3=OXFF; TMOD=0X01;//T0 THO=0X3C; TLO=0XB0;//50ms EA=1 ETO=1; initialise();

1cd_setxy(0,0); 1cd_putsf(http); TRO=1; while(1) { DISP_BUFFER[0]=th/10; DISP_BUFFER[1]=th%/10; DISP_BUFFER[2]=tm/10; DISP_BUFFER[3]=tm%/10; DISP_BUFFER[4]=ts/10; DISP_BUFFER[5]=ts%/10; 1cd_setxy(1,0); 1cd_putchar(DISP_BUFFER[0]+0X30; 1cd_putchar(DISP_BUFFER[1]+0X30; 1cd_putchar(':'); 1cd_putchar(DISP_BUFFER[2]+0X30; 1cd_putchar(DISP_BUFFER[3]+0X30; 1cd_putchar(':'); 1cd_putchar(DISP_BUFFER[4]+0X30; 1cd_putchar(DISP_BUFFER[5]+0X30; if(!KEY1) {TM++; delay_ms(100);} } } //display one char void 1cd_putchar(uchar 1cdchar) { output(1cdchar); } //display a sting void 1cd_putsf(uchar code *chars) { uchar i=0; while(chars[i]>=0x20&chars[i]<0x7f) {if (i<0x0f) {output (chars[i]); i++; } else { 1cd_setxy(1,0); while( (chars[i]>0x20&chars[i]<0x7f) ) {output(chars[i]);

实时时钟实验报告

嵌入式系统开发实验报告 实验四:实时时钟实验 班级:应电112 姓名:张志可 学号: 110415151 指导教师:李静 实验日期: 2013年9月25日

实验四:实时时钟实验 一、实验目的 1. 了解实时时钟的硬件控制原理及设计方法。 2. 掌握 S3C2410X 处理器的 RTC 模块程序设计方法。 二、实验设备 硬件:Embest ARM 教学实验系统,ULINK USB-JTAG 仿真器套件,PC 机。 软件:MDK 集成开发环境,Windows 98/2000/NT/XP。 三、实验原理 1. 实时时钟(RTC) 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC 具有计时准确、耗电低和体积小等特点,特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,如通信工程、电力自动化、工业控制等自动化程度高的领域的无人值守环境。随着集成电路技术的不断发展,RTC 器件的新品也不断推出,这些新品不仅具有准确的 RTC,还有大容量的存储器、温度传感器和 A/D 数据采集通道等,已成为集 RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 RTC 器件与微控制器之间的接口大都采用连线简单的串行接口,诸如 I2C、SPI、MICROWIRE 和CAN 等串行总线接口。这些串口由2~3 根线连接,分为同步和异步。 2. S3C2410X 实时时钟(RTC)单元 S3C2410X 实时时钟(RTC)单元是处理器集成的片内外设。由开发板上的后备电池供电,可以在系统电源关闭的情况下运行。RTC 发送8 位BCD 码数据到CPU。传送的数据包括秒、分、小时、星期、日期、月份和年份。RTC 单元时钟源由外部32.768KHz 晶振提供,可以实现闹钟(报警)功能。 四、实验内容 学习和掌握 Embest ARM 教学实验平台中 RTC 模块的使用,编写应用程序,修改时钟日期及时间的设置,以及使用 EMBEST ARM 教学系统的串口,在超级终端显示当前系统时间。

电子综合设计-基于单片机多功能数字时钟的设计(附完整程序)

课题:基于51单片机的多功能数字时钟系统设计 一、概述、设计思路 该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天),对闹铃方式与温度调节模块进行了重点设计实现SB0、SB1、SB2、SB3四个键实现时钟正常显示,调时,及闹钟时间设置。本系统设计大部分功能有软件来实现,使电路简单明了,系统稳定性也得大大提高。 二、系统组成与工作原理 1、工作原理: 本设计采用STC89C51单片机作为本次课程设计的控制模块。单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。 2、总是设计框架图:

图二:系统总体电路图 三、单元电路的设计与分析 整个电子时钟系统电路可分为六大部分:中央处理单元(CPU)、复位电路部分、显示部分、键盘输入部分、温度采集部分。 1、MCS-51单片机 VCC: 89S51 电源正端输入,接+5V。 VSS: 电源地端。

XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在XTAL1 和XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: 89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。 EA/Vpp: "EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。 ALE/PROG: 端口3的管脚设置: P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。

嵌入式ARM实时时钟实验报告

嵌入式ARM实时时钟实验报告 实验二实时时钟实验1 实验目的(1) 了解实时时钟在嵌入式系统中的作用;(2) 掌握实时时钟的使用。 2 实验设备(1) S3C2410嵌入式开发板,JTAG仿真器。 (2) 软件:PC机操作系统Win98、Win2000或Windows XP,集成开发环境,仿真器驱动程序,超级终端通讯程序。 3 实验内容(1) 编程实现实时时钟功能,每秒显示实时时钟;(2) 编程实现实时时钟告警功能。 4 实验步骤(1) 参照模板工程,新建一个工程RTC,添加相应的文件,并修改RTC 的工程设置;(2) 创建并加入到工程RTC中;(3) 编写程序每秒钟读取时钟滴答;关键代码如下:old_index=led_index; Uart_Printf; While{ /*每隔1秒更新一次数据*/ if { rtc_get_data;

old_index=led_index; /*实时时钟数据为BCD码格式,以16进制显示*/ Uart_Printf; } }; (4) 编写程序实现时间告警功能;关键代码如下; a.首先设置告警时间,如下例程设置每分钟的第5秒告警m_=0x05; rtc_alalm_set; 模式0x41表示使能RTC告警,以及使能秒时钟告警b.注册中断例程,打开中断install_isr_handlerrtc_int_isr); rINTMSK=; c.中断服务例程中清除中断事件rI_ISPC=BIT_RTC; if *0x20000000=0x0f; else *0x20000000=0xff; alarm_count++; (5) 编译RTC;(6) 运行超级终端,选择正确的串口号,并将串口设置位:波特率、奇偶校验、数据位数和停止位数,无流控,打开串口;(7) 装载程序并运行,如果运行正确,在超级终端中将会显示如图所示内容。图运行结果 5 实验总结通过这次实验我进一步掌握了RTCCON控制

数字时钟设计实验报告

电子课程设计题目:数字时钟

数字时钟设计实验报告 一、设计要求: 设计一个24小时制的数字时钟。 要求:计时、显示精度到秒;有校时功能。采用中小规模集成电路设计。 发挥:增加闹钟功能。 二、设计方案: 由秒时钟信号发生器、计时电路和校时电路构成电路。 秒时钟信号发生器可由振荡器和分频器构成。 计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。 三、电路框图: 图一 数字时钟电路框图 译码器 译码器 译码器 时计数器 (24进制) 分计数器 (60进制) 秒计数器 (60进制) 校 时 电 路 秒信号发生器

四、电路原理图: (一)秒脉冲信号发生器 秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。由振荡器与分频器组合产生秒脉冲信号。 ?振荡器: 通常用555定时器与RC构成的多谐振荡器,经过调整输出1000Hz 脉冲。 ?分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能 扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz标准秒脉冲。其电路图如下: 图二秒脉冲信号发生器 (二)秒、分、时计时器电路设计 秒、分计数器为60进制计数器,小时计数器为24进制计数器。 ?60进制——秒计数器 秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。当计数到59时清零并重新开始计数。秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。其电路图如下:

化学趣味实验大全

化学趣味实验大全文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

化学趣味实验大全(四) 作者:佚名文章来源:本站原创点击数:6259更新时间:2008/4/7 31、火山爆发? 〔实验原理〕? 高锰酸钾与甘油混合激烈反应放出大量热,使重铬酸铵分解生成的固体残渣随生成的气体喷出。?〔实验操作〕? 在木板中央堆一方泥土,上面放一坩埚,坩埚周围用泥围堆成一小“山丘”,丘顶坩埚上方为“火山口”。向埋在山丘内的坩埚中央堆放5 g高锰酸钾和1g硝酸锶的混合物,此混合物周围堆放10g 研细了的重铬酸铵粉末。用长滴管滴加数滴甘油在高锰酸钾上,人离远点,片刻后可见有紫红色火焰喷出,紧接着就有绿色的“火山灰”喷出。 32、自制豆腐 【实验步骤及现象】 (A)浸泡:加300 mL水浸泡24小时(若气温较高时,中间可更换一次水),使黄豆充分膨胀,然后倒掉浸泡水。 (B)研磨:将泡好的大豆放在家用粉碎机内,加入200 mL水,进行粉碎。 (C)制浆:将研磨好的豆浆和豆渣一并倒入放有双层纱布的过滤器中抽滤,另取100 mL水,分多次冲洗滤饼,充分提取豆渣中的豆浆。滤液即为浓豆浆。 (D)凝固变性:将自制的浓豆浆(或直接用市售的袋装浓豆浆)倒入一个洁净的500 mL的烧杯中,用酒精灯加热至80℃左右,然后边搅拌,边向热豆浆中加入饱和石膏水,直至有白色絮状物产生。停止加热,静置片刻后,就会看到豆浆中有凝固的块状沉淀物析出。 (E)成型:将上述有块状沉淀物的豆浆静置20分钟后过滤,再将滤布上的沉淀物集中成一团,叠成长方形,放在洁净的桌面上,用一个盛有冷水的小烧杯压在包有豆腐团块的滤布上,大约30分钟后,即可制成一小块豆腐。若用市售的浓豆浆为原料,制成的豆腐更为细嫩洁白。 (F)保存:为了使制成的豆腐保鲜而不变质,将新制成的豆腐浸于2%~5%的食盐水中,放在阴凉处,可使豆腐数天内保鲜而不变质。 33、豆腐中钙质和蛋白质的检验

数字电子时钟源程序

#include "2407c.h" //数字电子时钟按Key1启动、Key2暂停、Key3复位、Key4调时 #define disable() asm(" setc INTM") //禁止全局中断 #define enable() asm(" clrc INTM") //允许全局中断 unsigned int k=0,s=30,m=59,h=23,j=1; unsigned int d[8] = {0x0100,0x0200,0x030a,0x0400,0x0500,0x060a,0x0700,0x0800}; unsigned int w[8] = {0x0101,0x0204,0x030a,0x0400,0x0503,0x060a,0x0700,0x0804}; //系统初始化子程序 void chushihua (void) { asm (" clrc SXM"); //抑制符号位扩展 asm (" clrc OVM"); //累加器正常溢出 asm (" clrc CNF"); //B0被配置为数据存储空间 *WDCR=0x00E8; //关闭看门狗 *SCSR1=0X00FC; //CLKIN=10M,CLKOUT=CLK*4=40M *IMR=0x0002; //开INT2 *IFR=0xFFFF; //清全部中断,写1清0,参见P43 *MCRB=0xFE3C; //启用SPI功能引脚 *MCRA=0; //IOPA、IOPB配置为一般I/O功能 *MCRC=0; //IOPE、IOPF配置为一般I/O功能 *PFDATDIR=0x00FF; //IOPF设置为输入,并上拉 *SPICCR=0x0F; //SPI软复位、上升沿输出数据、16位数据长度 *SPICTL=0x0E; //禁止过冲中断、允许TALK(发送)数据、主机模式、禁止SPI中断//上升沿有延时 *SPIBRR=0x0F; //SPI波特率=SYSCLK/(SPIBRR+1)=2.5M *SPICCR=*SPICCR|0x80; //SPI恢复操作,准备发送、接收下一个字符 WSGR=0x00; //禁止所有的等待状态 } //延时子程序 void delay(unsigned int pp) { unsigned int k,i; for(k=0;k

嵌入式软件开发基础实验报告 实时时钟

上海电力学院 嵌入式软件开发基础实验报告 题目:【ARM】实时时钟实验 专业:电子科学与技术 年级: 姓名: 学号:

一、实验目的 1、了解实时时钟的硬件控制原理及设计方法。 2、掌握S3C44B0X 处理器的RTC 模块程序设计方法。 二、实验设备 1、硬件:Embest EduKit-III 实验平台,Embest ARM 标准/增强型仿真器套件,PC 机。 2、软件:Embest IDE Pro ARM 集成开发环境,Windows 98/2000/NT/XP。 三、实验内容 学习和掌握 Embest EduKit-III 实验平台中RTC 模块的使用,进行以下操作: 1、编写应用程序,修改时钟日期及时间的设置。 2、使用EMBEST ARM 教学系统的串口,在超级终端显示当前系统时间。 四、实验原理 1. 实时时钟(RTC) 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC 具有计时准确、耗电低和体积小等特点,特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,如通信工程、电力自动化、工业控制等自动化程度高的领域的无人值守环境。随着集成电路技术的不断发展,RTC 器件的新品也不断推出,这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D 数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 RTC 器件与微控制器之间的接口大都采用连线简单的串行接口,诸如I2C、SPI、MICROWIRE和CAN 等串行总线接口。这些串口由2~3 根线连接,分为同步和异步。 2. S3C44B0X 实时时钟(RTC)单元 S3C44B0X 实时时钟(RTC)单元是处理器集成的片内外设。由开发板上的后备电池供电,可以在系统电源关闭的情况下运行。RTC 发送8 位BCD 码数据到CPU。传送的数据包括秒、分、小时、星期、日期、月份和年份。RTC 单元时钟源由外部32.768KHz 晶振提供,可以实现闹钟(报警)功能。 S3C44B0X 实时时钟(RTC)单元特性: BCD 数据:秒、分、小时、星期、日期、月份和年份 1、闹钟(报警)功能:产生定时中断或激活系统 2、自动计算闰年 3、无2000 年问题 4、独立的电源输入 5、支持毫秒级时间片中断,为RTOS 提供时间基准 读/写寄存器 访问 RTC 模块的寄存器,首先要设RTCCON 的bit0 为1。CPU 通过读取RTC 模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 和 BCDYEAR 的值,得到当前的相应时间值。然而,由于多个寄存器依次读出,所以有可能产生错误。比如:用户依次读取年(1989)、月(12)、日(31)、时(23)、分(59)、秒(59)。当秒数为1 到59 时,没有任何问题,但是,当秒数为0 时,当前时间和日期就变成了1990 年1 月1 日0 时0 分。这种情况下(秒数为0),用户应该重新读取年份到分钟的值(参考程序设计)。

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

趣味化学小实验 三例

趣味化学小实验(三例) 1.果皮爆气球 (1)实验器材:气球、橘子皮 (2)实验步骤:将气球吹鼓,向气球上挤出橘子皮汁,观察气球 (3)实验原理: 橘子皮皮的汁液中含有植物性芳香油类物质等可以溶解橡胶,从而使气球爆裂。 讲解: 小朋友们你们好,我接下来要为大家演示的实验叫作橘子汁爆气球,大家看一下,这是这次实验所用到的道具,橘子皮和气球。你们可以想到这两者之间会发生什么化学反应吗将橘子皮的汁液挤到气球上,它就会爆炸,眼见为实,请大家稍微往后站一点,仔细观察啊。正如大家所看到的那样,当气球沾到橘子皮的汁就爆炸了。 是不是感到很诧异呢,这个实验现象包含了一定的化学原理的,我们都知道气球的主要成分是橡胶,而我们橘子皮汁的主要成分则是酯类,当这种化学物质遇到气球时就会将橡胶溶解,这时呢我们的气球就会变薄,所受的压力也会随之增大,当达到一定程度时,气球就会爆炸。 以上就是我为大家演示的实验,希望大家在日常生活中可以注意,一定不要让他们在吃橘子的时候玩气球,会存在危险。希望这个实验会对大家的生活有所帮助哟~ 2.维生素C的检测 (1)实验药品:淀粉、碘酒、水果汁、维生素C溶液

(2)实验器材:烧杯、玻璃棒 (3)实验步骤: 先在4个烧杯内加少量淀粉溶液,分别滴入2~3滴碘酒。向一个烧杯中加入维生素c溶液,观察现象。再向其余烧杯内分别加入不同的水果汁,观察现象并进行对比。 (4)实验原理: 淀粉遇到碘会变成蓝紫色,而维生素C能与蓝紫色溶液中的碘发生作用,使溶液变成白色。 讲解: 小朋友们,你们知道吗生活中我们喝的酸酸甜甜的果汁不一定都是对我们的身体健康有益的哦!真正对身体有益的物质,他的名字叫做“维生素C”,小朋友们听过吗今天,哥哥就要教大家怎么去辨别果汁的真假哦!大家每天都要吃饭,那你们知不知道吃饭吃的是什么吗(拿起淀粉)吃的就是哥哥手上的这个东西——淀粉。现在哥哥要往淀粉中加入水,制成淀粉溶液,然后把它平均的倒到面前的四个小烧杯中。然后,噔。。。(拿起碘酒),有人知道这是什么吗没错,它叫做碘酒,受伤时医生会用它来帮大家清洗伤口的。现在哥哥也把它平均倒到面前的四个小烧杯中。小朋友们告诉哥哥,他们现在是什么颜色呢对,这是蓝紫色。那好,现在哥哥要请三个小朋友来帮哥哥的忙。你们可以选择哥哥这里自己喜欢的果汁,先拿好哦。那大家先看哥哥这,哥哥手里的这杯不是果汁,而是刚刚哥哥告诉你们的对我们身体有益的维生素C。接下来,我们每人选这四个杯子中的一个,把自己手中的果汁到进去。来,一、二、三!噔噔噔噔。。。看看我们被子里溶液

FPGA可调数字时钟实验报告

一、实验要求 1、用vhdl编程,实现10进制计数器 2、用vhdl编程,实现60进制计数器 3、用vhdl编程,实现数字时钟,时、分、秒、毫秒分别显示在数码管上。 4、实现可调数字时钟的程序设计,用按键实现时、分、秒、毫秒的调整。 二、实验原理 用VHDL,行为级描述语言实现实验要求。思路如下: 1、分频部分:由50MHZ分频实现1ms的技术,需要对50MHZ采取500000分 频。 2、计数部分:采用低级影响高级的想法,类似进位加1的思路。对8个寄存器进 行计数,同步数码管输出。 3、数码管输出部分:用一个拨码开关控制显示,当sw0=0时,四位数码管显示 秒、毫秒的计数。当sw0=1时,四位数码管显示时、分得计数。 4、调整部分:分别用四个按键控制时、分、秒、毫秒的数值。先由一个开关控制 计数暂停,然后,当按键按下一次,对应的数码管相对之前的数值加1,,通过按键实现时间控制,最后开关控制恢复计数,完成时间调整。 5、整个实现过程由一个文件实现。 三、实验过程 各个引脚说明: Clk:50MHZ SW:数码管切换,SW=’0’时,数码管显示为秒,毫秒。SW=’1’时,数码管显示为时,分。 SW1:暂停与启动。SW1=’0’时,时钟启动,SW=’1’时,时钟暂停。 SW2:时钟调整接通按钮,当SW2=’0’时,不进行调整,当SW=’1’时,通过按键调整时间。 KEY0:毫秒调整,按一次实现+1功能 KEY1:秒调整,按一次实现+1功能

KEY2:分调整,按一次实现+1功能 KEY3:时调整,按一次实现+1功能 Q0;第一个数码管 Q1; 第二个数码管 Q2: 第三个数码管 Q3: 第四个数码管 1、源代码如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity paobiao is port(clk,sw,key0,key1,key2,key3,sw1,sw2:in std_logic; q0:out std_logic_vector(6 downto 0); q1:out std_logic_vector(6 downto 0); q2:out std_logic_vector(6 downto 0); q3:out std_logic_vector(6 downto 0)); end paobiao; architecture behave of paobiao is signal cntt1 :integer range 0 to 10; signal cntt2 :integer range 0 to 10; signal cntt3 :integer range 0 to 10; signal cntt4 :integer range 0 to 6; signal cntt5 :integer range 0 to 10; signal cntt6 :integer range 0 to 10; signal cntt7 :integer range 0 to 10; signal cntt8 :integer range 0 to 6;

单片机综合实验报告51电子时钟

一、实验内容: 设计一个数字时钟,显示范围为00:00:00~23:59:59。通过5个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过蜂鸣器发声作为闹铃。 选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能。 二、实验电路及功能说明 1602显示器电路(不需接线) 电子音响电路 按键说明: 按键键名功能说明 K1 切换键进入设定状态 K2 校时依次进入闹钟功能是否启用,闹钟时,分秒, 年,月,日及时间时,分,秒的设置,直到退出 设置状态 K3 加1键调整是否起用闹钟和调节闹钟时,分,秒, 年,月,日,时间的时,分,秒的数字三、实验程序流程图:

四、实验结果分析 定时程序设计: 单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果MCS-51采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。MCS-51单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/

计数器两种工作模式和4种工作方式。 定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX. 当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。 实时时钟实现的基本方法: 这次设计通过对单片机的学习、应用,以A T89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它主要通过51单片机综合仿真实验仪实现,通过1602能够准确显示时间,调整时间,它的计时周期为24小时,从而到达学习、设计、开发软、硬件的能力。主要实现功能为显示时间,时间校准调时(采用手动按键调时),闹铃功能(设置定时时间,到点后闹铃发出响声)。通过键盘可以进行校时、定时。闹铃功能使用I/O 口定时翻转电平驱动的无源蜂鸣器。本文主要介绍了工作原理及调试实现。 四个按键K1、K2、K3、K4、一个蜂鸣器。 1602显示时钟、跑表。 时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。 秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。 实时时钟程序设计步骤: 先对系统进行初始化,如:LCD1602初始化,DS1302初始化等,然后才能进入主显示模块,即可在LCD1602上看到相应的信息。对于LCD1602的初始化,主要是对开启显示屏,清屏,设置显示初始行等操作。DS1302的初始化主要是先开启写功能,然后写入一个初始值。 本系统采用的是LCD1602液晶显示器,由于其是本身带有驱动模块的液晶屏,所以对于LCD1602操作程序可分为开显示、设置显示初始行、写数据和清屏等部分。LCD1602的写命令程序和写数据程序分别以子程序的形式写在程序里,以便主程序中的调用。 (1)选择工作方式,计算初值; (2)采用中断方式进行溢出次数累计; (3)计时是通过累加和数值比较实现的; (4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部RAM中要设置显示缓冲区,共6个地址单元。显示缓冲区从左到右依次存放时、分、秒数值; (5)主程序:主要进行定时器/计数器的初始化编程,然后反复调用显示子程序的方法等待中断的到来; (6)中断服务程序:进行计时操作; (7)加1子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、分、时加1时共有三种条调用加1子程序,包括三项内容:合字、加1并进行十进制调整、分字。 程序说明: 按K1按键进入设定状态 按K2,依次进入闹钟功能是否启用,闹钟时,分秒,年,月,日及时间时,分,秒的设置,直到退出设置状态按K3,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字 LCD第二排中间显示小喇叭,表示启用闹钟功能,无则禁止闹钟功能(可在调整状态进行设置)正常状态,LCD上排最前面显示自定义字符,LCD下排最前面闪动"_" 设置状态,LCD上排最前面显示"P",下排最前面在设置闹钟时间时显示"alarm_",其它状态显示

单片机—实时时钟实验(汇编版)

实验二实时时钟实验 一、实验目的 1)数码管动态显示技术 2)定时器的应用 3)按键功能定义 二、实验实现的功能 实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。 三、系统硬件设计

四、系统软件设计 说明:1键进入和退出设置模式,4键选择调分或秒,2键加,3键减。 P1M1 EQU 91H P1M0 EQU 92H SEC0 DA TA 30H ;秒显示 SEC1 DA TA 31H MIN0 DA TA 32H ;分显示 MIN1 DA TA 33H DELAY_1 DA TA 34H ;延时参数 DELAY_2 DA TA 35H ;延时参数 ORG 0000H LJMP 0030H ORG 001BH LJMP INTR0 ORG 0030H MAIN: MOV P1M1,#00000000B MOV P1M0,#11111111B MOV R7,#000 ;记中断次数,R7=100为1秒 MOV R6,#000 ;记秒 MOV R5,#000 ;记分 MOV R4,#0FFH ;按键位置 MOV R1,#000 ;确定是否有按键按下的参数 MOV TMOD,#10H ;定时器初始化 MOV TH1,#0D8H ;定时时间10ms MOV TL1,#0F0H SETB EA SETB ET1 SETB TR1 LOOP0: CJNE R4,#000H,LOOP01 ;实时时钟显示 MOV R4,#0FFH LJMP LOOP1 LOOP01: LCALL TIME

LCALL KEY0 LJMP LOOP0 LOOP1: CJNE R4,#000H,LOOP11 ;调秒MOV R4,#0FFH LJMP LOOP0 LOOP11: CJNE R4,#003H,LOOP12 MOV R4,#0FFH LJMP LOOP2 LOOP12: CJNE R4,#001H,LOOP13 MOV R4,#0FFH INC R6 LOOP13: CJNE R6,#060,LOOP14 MOV R6,#000H LOOP14: CJNE R4,#002H,LOOP16 MOV R4,#0FFH CJNE R6,#000,LOOP15 MOV R6,#060 LOOP15: DEC R6 LOOP16: LCALL TIME LCALL KEY1 LJMP LOOP1 LOOP2: CJNE R4,#000H,LOOP21 ;调分MOV R4,#0FFH LJMP LOOP0 LOOP21: CJNE R4,#003H,LOOP22 MOV R4,#0FFH LJMP LOOP1 LOOP22: CJNE R4,#001H,LOOP24 MOV R4,#0FFH INC R5 LOOP23: CJNE R5,#060,LOOP24 MOV R5,#000H LOOP24: CJNE R4,#002H,LOOP26 MOV R4,#0FFH CJNE R5,#000,LOOP25 MOV R5,#060

相关主题
文本预览
相关文档 最新文档