文档库 最新最全的文档下载
当前位置:文档库 › 单片机原理与应用——时钟与定时器设计

单片机原理与应用——时钟与定时器设计

单片机原理与应用——时钟与定时器设计
单片机原理与应用——时钟与定时器设计

单片机原理及应用时钟与定时器设计

目录

1.设计任务 (2)

2.总体设计 (2)

3.硬件设计 (2)

4.软件设计 (3)

4.1 定时中断模块 (3)

4.1.1 时钟中断 (3)

4.1.2 数码管显示中断 (5)

4.1.3 发声中断 (5)

4.2 数码管动态扫描模块 (6)

4.3 键盘扫描模块 (7)

4.4 按键响应与日期时间设置模块 (9)

4.5 时间表响应模块 (11)

5.综合调试 (12)

5.1 数码管显示 (12)

5.2 设置时间 (12)

5.3 设置日期 (14)

5.4 设置时间表 (15)

5.5 事件响应 (16)

6. 收获与感想 (17)

附录Ⅰ:电路图 (17)

附录Ⅱ:汇编源程序 (18)

设计一个包含时钟的时间控制器,功能如下:

1)、实现精确计时,具有时钟计时和显示功能

2)、可以显示时间和日期,采用一个8位数码管显示日期,一个6位数码管显示时间3)、时钟的时间和日期可由自由设置,即能够自己调整

4)、能够自己设置时间表

5)、可以根据时间表来检测事情的发生并响应事件(LED发光,蜂鸣器发生)

2.总体设计

系统的硬件分为两个大模块,分别为控制模块和显示模块。控制模块为显示模块提供逻辑信号。显示模块用户能够看见的系统外观。包括日期时间的显示单元,矩阵键盘输入单元,独立按键控制单元,LED信号提示单元以及发声单元。

软件系统分为中断模块,数码管动态扫描模块,键盘扫描模块,按键响应模块,时间表响应模块。

系统的设计应该符合模块化的设计思想,各个模块逐步细化,各个模块之间耦合进而完成整个系统的设计。

3.硬件设计

由于时间日期的显示需要使用14个数码管,数码管的段选和位选单独显示,至少需要占用CPU的22个引脚才能完成动态扫描显示。显然这样的方式占用了太多的端口,如果还包括按键的扫描电路,很可能会造成端口不够用的现象。

因此,为了节约端口资源,引入总线分时复用的思想,我们将数码管的段选和位选复用,采用74HC573触发器作为端口,其触发使能信号作为端口的地址,通过这样的方式,单片机的11个引脚就能控制数码管扫描显示所必须的22个引脚,很大程度上节约了IO口资源。

在时间表和时间日期的设计上,采用4*3的键盘来完成数据输入。时间日期的设置需要0-9数字键,取消/确认时间日期的输入控制按键,至少需要12个按键,刚好采用4*3的矩阵键盘,共需7个IO口。

其次,为了单独控制时间日期,设置了时间设置控制按键和日期设置控制按键。为了让电路既能单独设置时间日期,又能设置时间表,设置添加到时间表的功能按键来区分设置的是日期时间还是时间表。

控制器响应时间表事件时蜂鸣器会发生之外,关闭其发生也是一个必不可少的步骤,因此还设置了关闭蜂鸣器发生的功能键,有一个引脚控制。

发生单元采用SOUNDER,CPU只需一个引脚就能控制其发出不同频率的声音。

LED灯采用三色灯,其三个引脚能控制发出8种不同颜色的光,除了时间响应时发光之外,当系统设置日期,按键按下等事件时也能设置发出不同颜色的光来提示正在进行的操作。

4.1定时中断模块

需要使用定时中断的功能有时钟子程序,数码管动态扫描子程序,事件响应时的发声子程序,本程序使用3个定时器T0,T1和T2计时器来实现这三个功能。

三个计时器为了更好的控制,需要设置其执行优先级,如下:

//设置中断的优先级

void set_init()

{

PT2 = 1;

PT1 = 0;

PT0 = 0;

}

发声中断最容易受其他中断影响而干扰发声效果,因此设置其最高优先级。

4.1.1 时钟中断

为了能减少时钟误差,产生1s的过程应当尽量少产生中间结果,即应当使中断的次数尽可能的少,中断服务程序的函数体尽量少占用时钟周期。

基于以上思考,时钟中断采用T0的方式一、16位定时器,设置中断周期为50ms,产生1秒需中断20次,设置计数初始值为15536。当叠加产生1s时,时钟的秒加1,时间和日期依次往上累计。年月日的累计中,日的累计需要分闰年、月份。

为了使定时更加精确,并不将时间累计的函数放入T0的中断服务程序中,以免占用过多的时间周期,影响计时的精确性。

时钟的C语言中断服务程序和时间累计算法如下:

//时间累计

void add_sec()

{

if(num == 20)

{

num = 0;

buf_sec1++;

if(set_date ==0 && set_time == 0)

{

sec1++;

}

}

if(buf_sec1 == 10)

{

buf_sec1 = 0;

buf_sec2++;

if(set_date ==0 && set_time == 0)

{

sec1 = 0;

sec2++;

}

}

if(buf_sec2 == 6)

{

buf_sec2 = 0;

buf_min1++;

if(set_date ==0 && set_time == 0)

{

sec2 = 0;

min1++;

}

}

if(buf_min1 == 10)

{

buf_min1 = 0;

buf_min2++;

4.1.2 数码管显示中断

16位的数码管需要动态扫描显示,刷新的时间间隔因该小于10ms。如果采用延时方式,来达到动态扫描的效果,只能通过主函数循环的方式来实现,这个过程会占用大量的CPU资源,且显示时会出现闪烁的现象。

因此,数码管的扫描显示采用中断的方式来实现。

采用T1的方式一、16位定时器,设置计数初值了63536,中断的周期为2ms。

由于时钟中断比数码管显示中断的周期要长,而且显示中断并不需要精确计时,因此,将时间的累计函数放置在显示的中断服务程序中,既不影响计时的精确性,又不会影响扫描显示。

T1的C语言中断服务程序如下:

//定时器1中断服务程序

//显示

void t1int() interrupt 3 using 0

{

seg++;

display();

add_sec();

TR1 = 0;

TH1 = (65536-2000)/256;

TL1 = (65536-2000)%256;

TR1 = 1;

}

4.1.3 发声中断

发声中断并不需要一直工作,当时间表的事件被响应时才发生。

发声中断采用T2的16位自动重装计时器。但由于需要使其发出不同频率的声音,并且能够更好的控制,因此每次中断都将其重新置数。T2不同于T0和T1,其计时器的溢出标志需要通过程序将其置0.

发声中断和发声子程序的C语言实现如下:

//计时器T2

//发生

void TIM2(void) interrupt 5 using 1//定时器2中断{

TF2=0;//手动将溢出位置0

SOUND = ~SOUND;

num2 ++;

4.2 数码管动态扫描模块

数码管动态扫描模块的关键在于数据总线a-h的分时复用,AT89C52的P0端口作为数据总线,即控制数码管的段选,又要控制数码管的位选。

除了分时复用、还需要设置3个触发器来锁存数据,才能起到分时复用又单独控制段选和位选的效果。

如CPU模块电路所的示,段选和位选分别由3个8D触发器控制,第一个触发器单独控制段选,第二个触发器控制seg1-seg7的位选,即控制显示日期的8个数码管,第三个触发器控制seg11-seg16的位选,即控制显示事件的6个数码管。

显示一位之前,需要将三个触发器的触发使能信号(s1 – s3)都置为0,然后向控制位选的第二个和第三个触发器写入00h,即关闭所有数码管的显示,然后再向需要显示的那个数码管写入数据,向s1写入段选数据,向s2或s3写入位选数据。

其C语言过程实现如下:

//一位数码管显示

void show_s2_seg(uchar dat, uchar seg) {

s1 = 0;

s2 = 0;

s3 = 0;

out = 0x00;

//seg1-8关显示

s2 = 1;

NOP;

s2 = 0;//seg11-18关显示

s3 = 1;

NOP;

s3 = 0;

//打开s1,写入数据out = table[dat];

s1 = 1;

NOP;

s1 = 0;

//数码管动态扫描子程序

void display()

{

//1-8位为日期位

if(seg == 1)

{

show_s2_seg(year/10, 0x01);

}

else if(seg == 2)

{

show_s2_seg(year%10, 0x02);

}

else if(seg == 3)

{

show_s2_seg(11, 0x04);

}

else if(seg == 4)

{

show_s2_seg(month/10, 0x08);

}

else if(seg == 5)

{

show_s2_seg(month%10, 0x10);

}

else if(seg == 6)

{

show_s2_seg(11, 0x20);

}

else if(seg == 7)

{

show_s2_seg(day/10, 0x40);

}

else if(seg == 8)

{

show_s2_seg(day%10, 0x80);

}

//显示时分秒

else if(seg == 9)

{

show_s3_seg(table[hour/10], 0x01);

}

else if(seg == 10)

{

show_s3_seg(table[hour%10], 0x02);

}

else if(seg == 11)

{

show_s3_seg(table[min2], 0x04);

}

else if(seg == 12)

{

show_s3_seg(table[min1]-0x80, 0x08);

}

else if(seg == 13)

{

show_s3_seg(table[sec2], 0x10);

}

else if(seg == 14)

{

show_s3_seg(table[sec1], 0x20);

seg = 0;

}

}

4.3 键盘扫描模块

键盘采用的是4*3的矩阵键盘,其7个引脚由P2控制,其P2.0-P2.3控制行,P2.5-P2.7控制列。

扫描过程如下:

step1: 首先行全输出0;

step2: 列输入,检测输入是否有0,若有0,表示有按键按下

step3: 行扫描,四行依次扫描

step4: 每扫描一行,判断列是否有0,若有0,则根据行列判断键值

step5: 若列全为1,则表示不是改行,扫描下一行,依次循环,直到列输出0 step6: 若扫描到第四行依旧未检测到列输入0,则结束扫描

键盘扫描的C语言实现如下:

//键盘扫描电路

char scan_key_board()

{

uchar COL = 0;

uchar R = 0;

uchar L = 0;

char key;

//行全输出0,列输出1

P2 = 0xE0;

delay(1);

//列输入

COL = P2&0xE0;//取高三位

//如果列输入全为1,表示没有键按下

if(COL == 0xE0)

{

return -1;

}

/*************行扫描******************/

//第一行扫描

P2 = 0xEE;//ROW1=0,其他都为1, 1110,1110

COL = P2&0xE0 ;//取高三位

key = key_judge(1, COL);

if(key != -1)

{

return key;

}

//第二行扫描

P2 = 0xED;//ROW2=0,其他都为1, 1110,1101

COL = P2&0xE0 ;//取高三位

key = key_judge(2, COL);

if(key != -1)

{

return key;

}

//第三行扫描

P2 = 0xEB;//ROW3=0,其他都为1, 1110,1011

COL = P2&0xE0;//取高三位

key = key_judge(3, COL);

if(key != -1)

{

return key;

}

//第四行扫描

P2 = 0xE7;//ROW4=0,其他都为1, 1110,0111

COL = P2&0xE0;//取高三位

key = key_judge(4, COL);

if(key != -1)

{

return key;

}

//未检测到键按下时返回-1

return -1;

}

//判断是否有键按下

char key_judge(uchar R, uchar COL)

{

uchar C = 0;

//列输入全为0,即没有键按下

if(COL == 0xE0)

{

return -1;

}

//COL = 1100_0000,即COL1=0,第一列有键按下

if(COL == 0xC0)

{

C = 1;

return (R-1)*3+C;

}

//COL = 1010_0000,即COL2=0,第二列有键按下

if(COL == 0xA0)

{

C = 2;

return (R-1)*3+C;

}

//COL = 0110_0000,即COL3=0,第三列有键按下

if(COL == 0x60)

4.4 按键响应与日期时间设置模块

按键除了键盘的按键响应外,还有四个BUTTON类型的功能键:设置时间功能键、设置日期功能键,将时间添加到时间表的功能键,取消事件响应的功能键(关发声和灯),键盘的12个键中除了0-9的数字键外,还要*键和#键,其中*用于结束输入状态,即确认输入的日期时间,#用于取消输入。

键盘的键值通过键盘扫描程序获取,其他独立的功能键状态通过主程序循环获取。

日期时间的设置缓冲区和显示区,数码管显示的是显示区的数据,设置时间或日期状态下,将显示区的数据备份置缓冲区,输入的数据先放入显示区,当确认输入后将显示区的数据同步到缓冲区,如果执行取消操作,则将缓冲区的数据同步到显示区,即取消输入。

当处于设置状态下时,显示区的时间被暂停,而缓冲区则继续计时,取消输入后,依旧能显示正确的时间。

C语言算法实现如下:

//其他键按下判断

void set_datetime_down()

{

if(SET_TIME == 0 && set_date == 0 && set_time == 0)

{

set_time = 1;

sec1 = 0;

sec2 = 0;

min1 = 0;

min2 = 0;

hour = 0;

}

if(SET_DA TE == 0 && set_date == 0 && set_time == 0)

{

set_date = 1;

day = 0;

month = 0;

year = 0;

}

}

void set_date_fun()

{

if(key == 11)

{

key = 0;

}if(set_date == 1 && key != -1) {

year = key * 10;

set_date = 2;

delay(60);

return;

}

if(set_date == 2 && key != -1) {

year = year + key;

set_date = 3;

delay(60);

return;

}

if(set_date == 3 && key != -1) {

month = key * 10;

set_date = 4;

delay(60);

return;

}

if(set_date == 4 && key != -1) {

month = month + key;

set_date = 5;

delay(60);

return;

}

4.5 时间表响应模块

时间表中的每一个事件都只有一个时和分,即每个事件占两个字节。

时间表响应模块轮询时间表,当在时间表中找到一个事件,他的时和分等于当前事件的时和分时,响应该事件,即LED闪烁,发声单元发声。默认发声时长为1分钟,发声过程可以通过功能键关闭发声。

在主程序中循环调用时间表响应函数。

时间表表轮询子程序的C语言算法实现如下:

uchar time_judge()

{

uchar i;

uchar _hour;

uchar _min;

uchar _sys_min;

for(i=0;i<6;i++)

{

_hour = time_table[i][0];

_min = time_table[i][1];

_sys_min = min2*10 + min1;

if(_hour == hour && _min == _sys_min)

{

speak(1);

set_LED(1, 0, 0);

delay(200);

return 1;

}

else

{

SOUND = 0;

speak(0);

set_LED(0, 1, 0);

}

}

return 0;

}

5.综合调试

5.1 数码管显示

通过对系统时间的采样与实际时间的对比,当系统计时至一小时时,约产生7s的误差,10分钟产生约1s的误差。

5.2 设置时间

设置时间按钮按下时,显示时间的6位数码管清零,开始重新设置时间。当时间输入结束,按下*号键确认输入,系统开始从设置的时间开始计时。

输入时间从左往右依次输入,输入完一位后自动跳至下一位。

输入过程LED变为灰色,暂停时间表响应。但是系统仍在正常正常计时,当取消输入后,系统仍显示正确的时间。

确认输入后的效果:

取消输入的效果,仍显示正确的时间:

按键响应效果:

当键盘有按键按下时,LED提示为黄色。

5.3 设置日期

设置时间以及设置日期的流程类似,当设置日期的按钮按下时,显示日期的8位数码管清零,等待按键输入,从左往右依次输入,每输入一位自动跳至下一位。

设置日期的过程LED变为灰色,显示时间的6位数码管暂停计时(但实际上缓冲区仍在正常计时,设置日期结束后显示的是正确的时间)。

按下*号键确认输入后,日期才被修改,时间显示恢复。按下#号键取消输入,恢复设置前的日期。

日期被修改:

5.4 设置时间表

同设置时间类似,按下设置时间按钮,从左往右依次输入设置的时间,只是,时间表只需精确到分。

输入结束后,按下添加到时间表按钮,则时间表表中添加一条事件记录。

如添加一个事件如下,设置发生的时间为21点30分:

时间设置成功时,LED提示为绿色。

5.5 事件响应

当计时至设置好的的21:30分时,时间响应。

LED红灯亮,扬声器发声。

当按下关闭发生时,关闭响应,发声单元停止发声。LED提示为蓝色。

6. 收获与感想

通过对本系统的设计,对单片机的应用有了更深层次的理解。在设计本系统的过程中,也遇到过许多问题,比如:如何精确计时?设计伊始,由于在中断服务程序中放入了时间累计和数码管动态扫描显示的模块,因此,计算出来的时间误差特别大,但是如果将这些模块放入主函数的循环体中的话,CPU的负荷太大也会导致时间不精确。因此,采用了多中断的方式来解决该问题。但是此后发现,加入了多中断之后,当时间响应发声时,发出的声音总是断断续续,没法连续,后来发现是因为发声的中断的优先级低于其他两个中断造成的,因此设置了三个中断的执行优先级,问题迎刃而解。

在整个过程中,对多定时器和多中断的问题有了深刻的理解,也掌握了多中断的应用方法。除此之外,也掌握了矩阵键盘的应用。

在对本系统的设计过程中,参考了PC机的总线设计思路,引入了总线分时复用的设计思想,对地址和端口的概念也有了更深入的理解,对如何解决CPU引脚资源问题有了比串口更好的解决方案。

附录Ⅰ:电路图

微控制器模块:

显示模块:

附录Ⅱ:汇编源程序

汇编源程序如下:

;$INCLUDE(STC15.inc)

单片机课程设计 秒表计时器(DOC)

课程设计名称:单片机原理及接口技术 题目:基于单片机的秒表计时器设计 学期:2014-2015学年第一学期 专业:电气技术 班级: 姓名: 学号: 指导教师:

辽宁工程技术大学 课程设计成绩评定表

课程设计任务书 一、设计题目 秒表计时器 二、设计任务 本课题以单片机为核心,设计和制作一个秒表计时器。 三、设计计划 课程设计一周 第1天:查找资料,方案论证。 第2天:各部分方案设计。 第3天:各部分方案设计。 第4天:撰写设计说明书。 第5天:校订修改,上交说明书。 四、设计要求 1、绘制软件流程图并利用汇编语言编写软件程序; 2、绘制系统硬件原理图; 3、形成设计报告。 指导教师: 教研室主任: 2014年5月26 日

本设计利用89C51单片机设计秒表计时器,通过LED显示秒十位和个位,在设计过程中用一个存储单元作为秒计数单元,当一秒到来时,就让秒计数单元加一,通过控制使单片机秒表计时,暂停,归零。设计任务包括控制系统硬件设计和应用程序设计。 关键词:51单片机;74HC573;LED数码管

综述 (1) 1 程序方案 (2) 1.1方案论证 (2) 1.2总体方案 (2) 2部分设计 (3) 2.1 89C51单片机 (3) 2.2晶体振荡电路 (4) 2.3硬件复位电路 (5) 2.4显示电路 (6) 2.5整体电路图 (7) 3程序设计 (8) 3.1程序流程框图 (8) 3.2显示程序流程图 (9) 3.3汇编源程序 (10) 4调试说明 (13) 4.1概述 (13) 4.2电路原理图 (13) 心得体会 (15) 参考文献 (16)

单片机课程设计完整版样本

课程设计( 论文) 课程名称单片机 题目名称简易密码锁的设计学院高等技术学院 专业班级高1 1 0 9 学号3869 学生姓名刘欢 指导教师胡立强 11月28 日 目录

一,任务目的 (3) 二,任务要求 (3) 三,电路与元器件 (4) 四,程序设计 (5) 五,程序运行测试 (6) 六,任务小结 (7) 七,心得体会 (8) 八,参考文献 (9) 1.任务目的

经过对具有四个按键输入和一个数码管显示的简易密码锁的设计与制作, 让读者理解C语言中数组的基本概念和应用技术, 并初步了解单片机与键盘和LED数码管的接口电路设计及编程控制方法。 2.任务要求 在一些智能门控管理系统, 需要输入正确的密码才能开锁。基于单片机控制的密码锁硬件电路包括三部分: 按键、数码显示和电控开锁驱动电路, 三者的对应关系如图表3.16所示。 表3.16 简易密码锁状态 简易密码锁的基本功能如下: 4个按键, 分别代表数字0,1,2,3: 密码在程序中事先设定, 为0-3之间的一个数字; 上电复位后, 密码锁初始状态为关闭, 密码管显示符号”—”; 当按下数字键后, 若与事先设定的密码相同, 则数码管显示字符”P”, 打开锁, 3秒后恢复锁定状态, 等待下一次密码的输入, 否则显示字符”E”持续3秒, 保持锁定状态并等待下次输入。 3.电路与元器件 根据任务要求, 用一位LED数码管作为显示器件, 显示密码锁的状态信息, 数码管采用静态连接方式; 4个按键连接到P0口的低四位

P0.0-P0.3引脚, 设P0.0连接数字”0”按键、P0.1连接数字”1”按键, 依次类推; 锁的开、关电路用P3.0控制的一个发光二极管代替, 发光二极管点亮表示锁打开, 熄灭表示锁定。根据以上分析, 采用如图3.21所示的连接电路。 图3.21 简易密码锁电路 简易密码锁电路所需元器件清单如表3.17所示。 元器件名称参数数量元器件名 称 参数数量 插座DIP40 1 电阻103 1 单片机AT89SC51 1 电解电容22UF 1

51单片机作的电子钟程序及电路图

51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。 时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。 开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。 6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。

以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 中断入口程序 ;; (仅供参考) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口

RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 主程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH ;clr P3.7 ; CLEARDISP: MOV @R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入"熄灭符"数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50M S×20)START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1秒计时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护

单片机原理及应用设计(胡辉主编)

第 第第 第6 66 6章 章章 章 单片机的定时器 单片机的定时器单片机的定时器 单片机的定时器/ // /计数器 计数器计数器 计数器 习题 习题习题 习题 1.MCS-51系列的8051单片机内有几个定时/计数器?每个定时/计数器有几种 工作方式?如何选择? 答:MCS-51系列的8051单片机内有2个定时/计数器,即T0和T1,每个都可以编程为定时器或计数器,T0有四种工作方式(方式0—13位、方式1—16位、方 式2-可自动装入初值的8位、方式3-两个8位),T1有三种工作方式(与T0相 同的前三种),通过对TMOD的设置选择,其高四位选择T1,低四位选择T0。2.如果采用的晶振频率为3MHz,定时/计数器TO分别工作在方式0、1和2下,其最大的定时时间各为多少? 答:如果采用的晶振频率为3MHz,机器周期为12×1/(3*106)=4us,由于定时/ 计数器TO工作在方式0、1和2时,其最大的计数次数为8192、65536和256 所以,其最大定时时间分别是:方式0为8192×4us=32.768ms、方式1为65536 ×4us=262.144ms、方式2为256×4us=1024us。 3.定时/计数器TO作为计数器使用时,其计数频率不能超过晶振频率的多少?答:由于定时/计数器TO作为计数器使用时,是对外部引脚输入的脉冲进行计数,CPU在每个机器周期采样一次引脚,当前一次采样为高电平,后一次采样为低电平,则为一次有效计数脉冲,所以如果晶振频率为fosc,则其采样频率fosc/12,两次采样才能决定一次计数有效,所以计数频率不能超过fosc/24。 4.简单说明定时/计数器在不同工作模式下的特点。 答:方式0为13位的定时/计数器,由THx的8位和TLx的低5位构成、方式1 为16位的定时/计数器,由THx的8位和TLx的8位构成,方式2为8位的定时/ 计数器,TLx为加1计数器,THx为计数初值寄存器。方式3只能用于T0,是将 T0的低8位用作一个独立的定时/计数器,而高8位的TH0用作一个独立的定时

推荐-单片机课程设计多功能定时器 精品 精品

单片机课程设计 多功能定时器 一、设计目的: 1、在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具 有综合功能的小系统目标板的设计与编程应用; 2、能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识, 在软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高; 3、使学生增进对单片机的感性认识,加深对单片机理论方面的理解。使学生掌 握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通信等; 4、使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后 设计和实现单片机应用系统打下良好基础。 二、设计功能说明 数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,本设计可实现如下功能: 1、使用实时时钟芯片写入及读取时间 2、用LCD显示,可显示年、月、日、时、分、秒、星期、农历日期、节日 3、选择蜂鸣器电路,实现两个闹钟设置和事件提示功能 4、实现时钟校正功能,12小时/24小时切换功能 5、显示当前时间为上午时间或下午时间 6、整点报时功能 按键功能如下: 1、对显示时间的设置 按键0:进入设置模式,实现秒(S)、分(M)、时(H)、年(Y)、月(m)、日(D)、星期(W)设置的切换,并在LCD右下角显示所设置的项目,当各项目设置完毕后,再按下按键0则返回主界面正常显示时间; 按键1:每按一次按键1,对所设置的时间加1,当设置的时间超过它的最大值时,该项自动为0,例如:当设置秒为59时,秒自动清零; 按键2:每按一次按键:2,对所设置的时间减1,当设置的时间小于0时,该项自动为它的最大值; 按键3:设置完成后的确认键并可按此键中途退出设置,时间按用户设置值正常计时;

单片机课程设计报告电子密码锁完整版

单片机课程设计报告电 子密码锁 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

山东交通学院 单片机原理与应用课程设计院(部):轨道交通学院 班级:自动化121 学生姓名: 学号: 指导教师: 时间:— 课程设计任务书 题目电子密码锁设计 系 (部) 轨道交通学院 专业班级自动化121 学生姓名 学号 06 月 01 日至 06 月 12 日共 2 周 指导教师(签字) 系主任(签字) 年月日

目录 3.总体设计 (2)

4 密码比较模块 (6) (6) (8) (9) 附录 (10)

摘要 设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。在keil4软件中编程,系统可实现6位密码的处理,并通过控制步进电机控制密码箱门的电子锁,同时还可以修改改密码。利用单片机系统制作的密码箱安全性能更高,更易操作且体积小。 关键词:单片机、密码锁、修改密码 1.设计要求 本实验将实现六位数的电子密码锁。要求使用4X4 行列式键盘作为输入,并用LCD 实时显示。具体要求如下:1. 开机时LCD显示“welcome to use”,初始化密码为“123456”,密码可以更改。 2. 按下“10”,开始则显示“Enter Please:”。3. 随时可以输入数值,并在LCD上实时显示‘*’。当键入数值时,为了保密按从左到右依次显示‘*’,可键入值为0~9。 4. 按下“13”键,则表示确定键按下,进行密码对比。如相符则在LCD第一行显示“Open the door!”,同时指示灯亮起并且步进电机旋转一定的角度;如不符,则LCD第一行显示“Wrong password!”,并且蜂鸣器同时提示一下。如果密码连续三次错误则蜂鸣器连续响5下,并且持续5秒不能进行任何操作 5.在开锁状态下按下“12”键,进入修改密码状态,LCD同时提示“Enter new code!”。为删除按键,出入之后可以进行删除。按键为关闭按键,只有在打开状态下才可以关闭,按下之后LCD显示“Close the door!”。 2.功能概述 此设计分为四个功能模块。 第一模块:按键输入模块,用于密码的输入以及其他的密码操作按键。 第二模块:LCD模块,是与使用者交流的界面,用于显示各种状态下的内容。 第三模块:步进电机模块,用于控制密码锁的打开与关闭。 第四模块:24C08模块,用于储存输入的密码并读出来。 3.总体设计 本次设计作品的主要构成部分包括80C51单片机、LCD1602、24C08、矩阵按键、LED 等、蜂鸣器。如图1总体仿真图,图2实物图。 图1 总体电路图 图2 密码锁实物图 4.硬件设计 矩阵按键设计 如图3所示矩阵按键由P1口控制,了加强密码的保密性,采用一个4×4的矩阵式键盘可以任意设置用户密码(1-16位长度),从而提高了密码的保密性,同时也能减少与单片机接口时所占用的I/O口线的数目,节省了单片机的宝贵资源,在按键比较多的时候,通常采用这种方法。 每一行与每一列的交叉处不相同,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N根行线与M根列线,即可组成具有N × M 个按键的矩阵键盘。 在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确

单片机原理及应用课程简介

《传感器原理及应用》课程简介 传感器是获取自然科学领域信息的主要途径和手段。在现代测控系统中,作为关键环节的传感器处于连接被测控对象和测控系统的接口位置,该课程涉及机械、动力、物理、化学、光学、材料、电子、生物、半导体、信息处理等众多学科领域,应用领域十分广泛,与当前多学科交叉融合的趋势相一致,在专业课程体系中起到重要的承上启下作用,从本课程开始奠定工程设计与应用思想、创新实践能力和创新思维能力基础,在现代高素质专业人才培养中所起的重要作用是不言而喻的。通过本课程的学习学生应掌握以下几方面的知识: (1)测量的基本知识。 (2)各种常用传感器的结构,原理,特性及应用。 (3)工程检测中常用的测量电路及工作原理。 (4)传感器的静,动态特性及其标定方法。 《单片机实用系统设计》课程简介 《单片机实用系统设计》是电子科学与技术专业、电子信息工程技术专业和电气自动化技术专业的一门专业课,是现代电子工程领域一门飞速发展的技术,其在教学及产业界的技术推广仍然是当今科学技术发展的热点。学习单片机并掌握其设计应用技术已经成为电子类学生必须掌握的一门技术,也是现代工科学生就业的一个基本条件。它的后续课程是各专业课如:计算机控制、智能化仪器仪表、数控机床、课程设计、毕业设计,一般都要应用到单片机系统的应用。它可以充分体现学生利用自己所掌握的知识解决实际工程问题的能力。单片机知识在电子类专业整个课程体系中处于承上启下的核心地位。 通过本课程的学习,使学生能更深刻地领会和掌握单片机应用系统设计的基本理论、基本知识与基本技能,掌握单片机应用系统各主要资源的设计、单片机C语言编程方法和调试方法,了解单片机在测量、控制等电子技术应用领域的应用。利用所学知识,独立设计电路、布局印刷电路板、设计应用软件和系统软件、亲自焊接元器件、亲自调试系统。培养学生实

单片机课程设计定时器控制4只LED滚动闪烁系统解析

目录

1设计目的 1.1设计目的 1、通过单片机课程设计,熟练掌握单片机C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。 2、通过定时器控制两个LED显示器显示10秒秒表系统的设计,掌握定时/计数器和LED显示器的使用方法,同时掌握简单程序的编写,最终提高我们的逻辑抽象能力。 1.2设计内容和要求 内容:设计一个能够控制两个LED显示器显示10秒秒表的模拟系统。 要求:利用单片机的定时器定时,控制LED显示器显示。 1.3 设计思路 1.先熟悉实验原理,了解4只LED滚动闪烁系统灯的工作过程,组成滚动闪烁系统需要的组件。 2.了解各个硬件的工作原理, 3.绘制电路原理图,编写程序,并进行仿真,基本实现LED滚动闪烁系统灯的功能。

2设计原理分析 2.1十秒秒表的系统设计 通过编写程序,实现对发光二极管的控制,来4只LED 滚动闪烁灯的管理。每延时一段时间,灯的显示情况都会按LED 灯的显示规律进行状态转换。采用单片机内部的I/O 口上的P0口中的4个引脚即可来控制4个LED 灯。 2.2十秒秒表的功能要求 本设计能模拟基本的LED 滚动闪烁系统,是用中断的方式定时控制LED 定的闪烁及滚动。 2.2.1计时显示 定时/计数器工作方式寄存器,定时器采用T0定时器0工作于模式2 位数:8位计数范围:0-255 具有自动加载功能 2.2.2中断设置 每累计若干次定时器中断才执行一次闪烁。 2.3定时器控制4只LED 滚动闪烁制系统的基本构成及原理 单片机设LED 灯闪烁系统,可用单片机直接控制信号灯的状态变化可以广泛的应用到商业和工业的流程控制测电路当中。 图2.1 系统的总体框图 据此,本设计系统以单片机为控制核心,连接成最小系统。系统的总体框图如上所示。因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。当定时器1被用作波特率发生器时,波特率工作于方式1和方式3是由定时器1 的溢出率和SMOD 的值(PCON.7------双倍速波特率)决定:

单片机课程设计完整版《PWM直流电动机调速控制系统》

单片机原理及应用课程设计报告设计题目: 学院: 专业: 班级: 学号: 学生姓名: 指导教师: 年月日 目录

设计题目:PWM直流电机调速系统 本文设计的PWM直流电机调速系统,主要由51单片机、电源、H桥驱动电路、LED 液晶显示器、霍尔测速电路以及独立按键组成的电子产品。电源采用78系列芯片实现+5V、+15V对电机的调速采用PWM波方式,PWM是脉冲宽度调制,通过51单片机改变占空比实现。通过独立按键实现对电机的启停、调速、转向的人工控制,LED实现对测量数据(速度)的显示。电机转速利用霍尔传感器检测输出方波,通过51单片机对1秒内的方波脉冲个数进行计数,计算出电机的速度,实现了直流电机的反馈控制。 关键词:直流电机调速;定时中断;电动机;波形;LED显示器;51单片机 1 设计要求及主要技术指标: 基于MCS-51系列单片机AT89C52,设计一个单片机控制的直流电动机PWM调速控制装置。 设计要求 (1)在系统中扩展直流电动机控制驱动电路L298,驱动直流测速电动机。 (2)使用定时器产生可控的PWM波,通过按键改变PWM占空比,控制直流电动机的转速。 (3)设计一个4个按键的键盘。 K1:“启动/停止”。 K2:“正转/反转”。 K3:“加速”。 K4:“减速”。 (4)手动控制。在键盘上设置两个按键----直流电动机加速和直流电动机减速键。在

手动状态下,每按一次键,电动机的转速按照约定的速率改变。 (5)*测量并在LED显示器上显示电动机转速(rpm). (6)实现数字PID调速功能。 主要技术指标 (1)参考L298说明书,在系统中扩展直流电动机控制驱动电路。 (2)使用定时器产生可控PWM波,定时时间建议为250us。 (3)编写键盘控制程序,实现转向控制,并通过调整PWM波占空比,实现调速; (4)参考Protuse仿真效果图:图(1) 图(1) 2 设计过程 本文设计的直流PWM调速系统采用的是调压调速。系统主电路采用大功率GTR为开关器件、H桥单极式电路为功率放大电路的结构。PWM调制部分是在单片机开发平台之上,运用汇编语言编程控制。由定时器来产生宽度可调的矩形波。通过调节波形的宽度来控制H电路中的GTR通断时间,以达到调节电机速度的目的。增加了系统的灵活性和精确性,使整个PWM脉冲的产生过程得到了大大的简化。 本设计以控制驱动电路L298为核心,L298是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。可驱动2个电机,OUTl、OUT2和OUT3、OUT4之间分别接2个电动机。5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。 本设计以AT89C52单片机为核心,如下图(2),AT89C52是一个低电压,高性能 8位,片内含8k bytes的可反复擦写的只读程序存储器和256 bytes的随机存取数据存储器(),器件采用的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。 图(2) 对直流电机转速的控制即可采用开环控制,也可采用闭环控制。与开环控制相比,速度控制闭环系统的机械特性有以下优越性:闭环系统的机械特性与开环系统机械特性相比,其性能大大提高;理想空载转速相同时,闭环系统的静差(额定负载时电机转速降落与理想空载转速之比)要小得多;当要求的静差率相同时, 闭环调速系统的调速范

基于51单片机的电子时钟设计源程序

#include unsigned char DispBuf[6]; //时间显示缓冲区 unsigned char Disdate[6]; //日期显示缓冲区 unsigned char DisSec[6]; //秒表缓冲区 struct //设定时间结构体 { unsigned char Hour; unsigned char Min; unsigned char Sec; }Time; struct //设定日期结构体 { unsigned char Year; unsigned char Month; unsigned char Days; }Date; struct //设定毫秒结构体 { unsigned char Minite; unsigned char Second; unsigned char MilliSec; }Millisecond; unsigned char point=0; unsigned char point1=0; unsigned char point2=0; unsigned char Daymount; unsigned char Daymount1; unsigned char T0_Int_Times=0; //中断次数计数变量 unsigned char Flash_flag=0; //闪烁标志,每半秒闪烁 unsigned char Flash_flag1=0; //闪烁标志,每半秒闪烁 unsigned char DisPlay_Back=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char DisPlay_Back1=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char i,j; unsigned char SetMillisecond; //启动秒表 code unsigned char LEDCode[]={0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80}; //数码管显示代码 code unsigned char ErrorLEDCode[]={0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80};//绘制错误图纸的数码管显示代码 void DisPlayBuf(); void ChangeToDispCode(); void ChangeToDispCode1(); void changedate(); // 调日期 void displaydate(); // 显示日期 void makedays(); //确定每个月的日期 void runSec();

单片机的课程设计_30秒定时器

目录 一、篮球计时器作用 (1) 二、设计的具体实现 (1) 1.系统概述 (1) 1.1总体设计思路及方案 (1) 1.2流程图 (3) 1.3计数原理 (3) 1.4定时器工作方式 (4) 2.单元电路设计 (6) 2.1 8051单片机 (6) 2.2两个基本电路 (8) 2.3八段数码管的驱动方式.......................错误!未定义书签。 3.软件程序设计 (9)

单片机的定时器设计 一、篮球计时器的作用 在篮球比赛中,规定了球员的持球时间不能超过24秒,否则就视为犯规。本课程设计的“篮球竞赛24秒定时器”,可用于篮球比赛中对球员持球时间作24秒时间限制。一旦球员的持球时间超过了24秒,它自动报警,从而判定此球员犯规。 二、设计的具体实现 1.系统概述 1.1总体设计思路及方案 图1.1.1 总设计图

流程图:

最小系统,就是最简单的输出/输入构成,并且能实现最基本的运行条件,如应有供电、时钟附属电路等。单片机的最小系统包括晶振电路复位电路和电源,这时最小系统基本组成当然还可以添加矩阵键盘数码管等。 此实验的原理是,利用单片机的最小系统,通过锁存器74HC573控制数码管,来实现30秒定时器的功能。 图1.1.2最小系统 1.2计数原理 80C51单片机部设有两个16位的可编程定时器/计数器。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 1.2.1定时器/计数器的结构 16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过部总线和控制逻辑电路

单片机课程设计——基于C51简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

基于51单片机的电子时钟的设计

目录 0 前言 (1) 1 总体方案设计 (2) 2 硬件电路设计 (2) 3 软件设计 (5) 4 调试分析及说明 (7) 5 结论 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理 (12) 附录2 程序清单 (13)

电子时钟的设计 许山沈阳航空航天大学自动化学院 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0前言 利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。具体要求如下: (1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试;

(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; (5)实现闹钟功能,在设定的时间给出声音提示。 1总体方案设计 该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。 图1 系统结构框图 该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。 2硬件电路设计

《单片机应用设计-基于单片机的433M无线通信系统》廖永斌

课程设计 题目基于单片机的433M无线通信系统学院 专业 班级 姓名 指导教师 2018年 1月 13日

《单片机应用设计》任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 基于单片机的433M无线通信系统 课程设计目的: 1、熟悉单片机应用系统的硬件设计及软件设计的基本方法; 2、将《单片机原理与应用》理论课的理论知识应用于实际的应用系统中; 3、训练单片机应用技术,锻炼实际动手能力 4、提高正确地撰写论文的基本能力。 课程设计内容和要求 1、完成硬件电路的设计,其中包括单片机和CC1101模块的设计; 2、完成无线通信模块的程序设计与实现,上机运行调试程序,记录实验结果(如图表等), 并对实验结果进行分析和总结; 3、课程设计报告书按学校统一规范来撰写,报告主要包括以下内容:目录、摘要、关键 词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论献等; 4、查阅不少于6篇参考文献。 初始条件: 1、STC89C52和CC1100H模块; 2、先修课程:单片机原理与应用。 时间安排: 第19周,安排设计任务,完成硬件设计; 第20周,完成软件设计、撰写报告,答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要 (Ⅰ) Abstract (Ⅱ) 1基本原理 (1) 1.1无线通信系统 (1) 1.2芯片简介 (1) 1.2.1单片机STC89C52 (1) 1.2.2 无线通信CC1101芯片 (3) 2方案论证与设计 (5) 2.1无线通信模块选择 (5) 2.2 单片机最小系统选择 (5) 2.3整体方案设计 (6) 3 硬件电路设计 (6) 4软件程序设计 (8) 4.1发送端编程 (8) 4.2接收端编程 (9) 4.3程序调试与下载 (10) 5硬件仿真 (12) 6实物制作与调试 (12) 6.1 STC89C52单片机最小系统 (12) 6.2无线通信模块CC1101 (13) 6.3稳压电路模块 (13) 7心得体会 (15) 8参考文献 (16) 附录 (17)

单片机课程设计音乐闹钟定时器

目录: 0、任务书 (2) 1、系统总体设计方案规划与选定 (2) 2、硬件设计 (5) 3、软件设计 (6) 4、调试 (8) 5、新增功能及实现方法 (8) 6、小结与体会 (9) 7、参考文献 (9) 8、附录 (10)

0.任务书 基于51单片机设计一个电子数字钟,显示时、分、秒,且具有闹钟功能。用8255接口实现4*8键盘及8位LED显示。 32个键:0~9共10个键,调时(设置当前时间)键;设定闹钟(定时)键;走时键;光标左右移动各一个键。 要求键复位后,应该最后面的LED上显示H(待命状态)。 1. 系统总体设计方案规划与选定 1.1主控制芯片选择 方案一:采用ARM微处理,做主控芯片,计算速度快,缺点;成本高,控制较复杂,不容易焊接。 方案二:采用80C51单片机做主控制器,由单片机来完成采集和信号处理等底层的核心计算,做主控芯片,成本低,易控制,易实现。 经过以上两个方案比较,在此题方案二明显优于方案一,故采用80C51单片机做主控制器。 1.2定时模块选择 方案一:采用时钟芯片DS1302。 DS1302 可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录,且较单片机计时简单节约硬件资源,但存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。 方案二:采用单片机内部的定时系统,外接晶振进行分频脉冲计数。

此系统采用12MHz晶振。 由于方案二使用简单,比方案一更适用该系统设计,所以选择方案二。 1.3 LED显示及计时模块选择 方案一:74LS192计数器——74LS47七点显示译码器 74LS192芯片是一块可预置数可逆计数芯片,功能强大。将74LS192芯片CPU引脚接高电平可实现减法计数,以倒计时显示。可通过74LS47与LED共阳极数字显示器配合使用。 方案二:使用移位寄存器74HC595与译码器相连 74HC595具有8位移位寄存器和一个存储器,使用时可直接与数字显示器相连。 方案三:使用8255扩展LED显示计时模块 8255是一个可编程并行接口芯片,有一个控制口和三个8位数据口,外设通过数据口与单片机进行数据通信,各数据口的工作方式和数据传送方向是通过用户对控制口写控制字控制的。我们用到了A与B口分别进行对数码显示管的片选和段选,且B口同时作为键盘扫描模块的输入口,与数码显示模块分时复用。故采用方案三 1.4蜂鸣器的选择 方案一:电磁式蜂鸣器 电磁式蜂鸣器主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。电磁式由于音色好,所以多用于语音、音乐等设备。对于不同提示音且考虑实际,此种较好。 方案二: 压电式蜂鸣器

单片机课程设计电阻测量(完整版)

课程设计报告课程名称:单片机课程设计 设计题目:电阻测量 院系:通信与控制工程系 专业:通信工程 班级: 学生姓名: 学号: 08409212 起止日期: 指导教师: 教研室主任:

摘要 本设计电阻测量是利用A/D转换原理,将被测模拟量转换成数字量,并用数字方式显示测量结果的电子测量仪表。通常测量电阻都采用大规模的A/D转换集成电路,测量精度高,读数方便,在体积、重量、耗电、稳定性及可靠性等方面性能指标均明显优于指针式万用表。其中,A/D转换器将输入的模拟量转换成数字量,逻辑控制电路产生控制信号,按规定的时序将A/D转换器中各组模拟开关接通或断开,保证A/D 转换正常进行。A/D转换结果通过计数译码电路变换成BCD码,最后驱动显示器显示相应的数值。本系统以单片机AT89C52为系统的控制核心,结合A/D转换芯片ADC0809设计一个电阻测量表,能够测量一定数值之间的电阻值,通过四位数码显示。具有读数据准确,测量方便的特点。 关键词:单片机(AT89C52);电压;A/D转换;ADC0809

目录 设计要求 (1) 1、方案论证与对比 (1) 1.1方案一 (1) 1.2方案二 (1) 1.3方案对比与比较................................... 错误!未定义书签。 2、系统硬件电路的设计 (2) 2.1振荡电路模块 (2) 2.2A/D转换电路模块 (3) 2.2.1主要性能 (3) 2.2.2 ADC0809芯片的组成原理 (4) 2.2.3 ADC0809引脚功能 (4) 2.3主控芯片AT89C52模块 (5) 2.3.1主要功能特性 (6) 2.3.2 主要引脚功能 (6) 2.4显示控制电路的设计及原理 (8) 3、程序设计 (9) 3.1初始化程序 (9) 3.2主程序 (10) 3.3显示子程序 (10) 3.4A/D转换测量子程序 (11) 4、调试及性能分析 (11) 4.1调试与测试 (11) 4.2性能分析 (12) 5、元件清单 (13) 6、总结与思考及致谢............................... 错误!未定义书签。参考文献. (13)

单片机原理及应用设计报告

单片机设计报告 编写:HUBU2015级通信工程xmx 2017年5月23日 一、设计的目的与要求 利用8*8LED点阵动态显示汉字的字样。采用STC89C52单片机作为整个控制搭电路的核心,并编制软件程序,实现汉字的显示。通过此设计来巩固单片机硬件系统的设计及软件系统的编程,通过设计将平时所学知识付诸实践,提高动手能力。 1、设计一个8*8点阵LED电子显示屏。 2、要求在目测条件下LED显示屏各点亮度均匀、充足,可显示一个“大” 字。 二、总体方案设计 2.1硬件电路的总体设计 1、设计总体框图 硬件电路的设计框图如图1所示。硬件电路结构由8个部分组成:时钟电路、复位电路、按键接口电路、电源电路、点阵显示阳极电路、点阵显示阴极电路和 8*8点阵显示电路。 2、工作原理 由于是8*8点阵屏设计,需要端口16个,可采用静态显示模式,用P0 口控制行,P1 口控制列,通过软件编程,即可实现汉字的显示

3、兀器件清单 元件名称规格数量备注 STC89C52单片机一块附底座 晶振12MHZ一块 8*8点阵LED显示器一块SZ411288k 按钮开关一个四脚 极性电容10uF一支 瓷片电容51pF两个 电阻5k Q八个 电阻10k Q一个 2.2系统软件的设计 软件程序主要由开始、初始化、主程序、字库和延时子程序组成 三、系统硬件电路的具体设计 3.1时钟电路 STC89C52单片机内部的振荡电路是一个高增益反向放大器,引线X1和X2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。STC89C52的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。

课程设计-单片机定时器的设计

摘要 单片机是一种集成在电路芯片,是采用超大范畴集成电路技能把具有数据处理本事的中心处理器CPU 随机存储器RAM、只读存储器ROM、多种I/O 口和间断系统、定时器/计时器等成果(大要还包括表现驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完竣的计较机系统。单片机具有特点具有良好的性能价格比;低电压、低功耗;集成度高、体积小、可靠性高;控制成果强等优点。 计算机暂时中止正在执行的主程序,转去执行中断服务程序,并在中断服务程序执行完了之后能自动回到原主程序处继续执行,这个过程叫做“中断”。中断需要解决两个主要问题:一是如何从主程序转到中断服务程序;二是如何从中断服务程序返回主程序。 关键词:单片机,中断,延时

目录 1.设计目的 (1) 2.设计任务的内容和要求 (1) 3.设计原理 (1) 4.程序说明 (3) 5.心得体会 (6)

定时器试验 1.设计目的 (1)熟练运用汇编语言编程,并且掌握键盘查表来运行相应的功能 (2)熟悉启东硬件仿真系统,熟练应用该系统调试软件 (3)熟悉单片机应用系统的组成,并能运用程序控制外部流水灯 2.设计任务的内容和要求 (1)初始化定时器,使之采用定时器0,方式2,定时100us时间 (2)通过设置中断,产生总时间为1秒 (3)1秒时间到,控制发光二极管点亮 3.设计原理 在实际的控制系统中常要求有外部实时时钟,以实现定时或延时控制;还要求有外部计数器,以实现对外界事件进行计数。 MCS-51单片机由两个可编程定时/计数器(以下简称T/C)。T0,T1 T/C的核心是1个加1计数器,它的输入脉冲有两个来源:一个是外部脉冲源,另一个是系统机器周期(时钟振荡器经12分频以后的脉冲信号)。T0,T1是2 个16位寄存器。加1到满溢出产生中断 T0(TH0,TL0);8CH,8AH地址不连续 T1(TH1,TL1);8DH,8BH 都具有定时或者计数功能。 图一 图一有2个模拟的位开关,前者决定了T/C的工作状态:当开关处于上方时为定时状态,处于下方时为计数状态。工作状态的选择由特殊功能寄存器TMOD的C/T位来决定。C/T=0表示定时,C/T=1表示计数。 当T/C处于定时方式时,加1计数器在每个机器周期加1,因此,也可以把它看作在累计机器周期。由于一个机器周期包含12个振荡周期,所以它的计数速率是振荡频率的1/12。 如果主频12M,机器周期为1us,每1us定时寄存器完成1次加1操作。一旦振荡周期确定,机

相关文档
相关文档 最新文档