题 目:基AT89C51单片机电子秒表
设计制作
专 业: 计算机科学技术
班 级: 计算机科学技术科班
姓 名:
学 号:
组 长:
时间:2010年X月X日
目录
1 单片机版图模块简介 2
11 LED点阵屏(8*8点阵) 2
12 单片机LED数码显示 3
13 EEPROM模块时钟模块 4
14 串口通信 4
15 电源模块 5
16 载线接口蜂鸣器键模块 5
2 项目组设计 6
21 实验项目求 6
211 项目原理完成功 6
212 模块框图 7
22 电路图绘制 9
212 元件选取元件功简介 9
222 proteus电路图连线原 11
23 程序编写 12
231 程序框图(流程) 12
232 keilc步骤 13
3 印刷板焊接流程 16
4 调试遭遇问题解决方法 16
5 总结体会 17
6 附录 17
61程序代码 17
容提:次实训通电子秒表设计制作学单片机系统概念设计单片机中断定时等功模块进步解利实力单片机编程方法定程度深入解51单片机深入解
关键字:单片机定时中断数码显示
单片机版图模块简介
11 LED点阵屏(8*8点阵)
LED显示屏LED发光二极点阵形式组合成64发光二极排成8*8矩阵形式具LED适动态扫描方式相行列公端阴阳
12 单片机LED数码显示
89c5140引脚芯片中继承运算器控制器存储器高度集成芯片编写编译程序载芯片中实现某功
nLED数码构成n位LED显示器n根位选线(公端)8n段选线LED显示器静态显示动态显示两种方式该系统中采8位动态数码显示控制数码显示数两部分组成部分笔段亮灭控制信号输入A B C D E F G H端口输入控制位显示控制信号S1 S2 S3 S4 S5 S6 S7 S8端口输入时该动态数码显示采阳数码具
体电路原理图图示
13 EEPROM模块时钟模块
EEPROM擦写存储器时钟模块数修改
时钟模块采DS1302芯片含实时时钟日历逻辑通简单串行接口单片机进行通信具计算2100年前秒分时日日期星期月年力闰年调整力秒刷新
14 串口通信
PC机接EIATTL电转换RS232C连接器称COM口单片机串行发送线TXD接收线RXDTTL电PC机COM1COM2等RS232C连接器EIA电单片机需加接MAX232芯片通串行电缆线PC机相连
15 电源模块
电源模块系统板模块提供+5V电源电源输入两种方式种交直流电源电源插座输入输入电压求直流输入应75V交流输入应5V通7805三端稳压器5V直流电源供系统模块工作种USB接口获取+5V电源相应配套USB线电脑机获取+5V直流电源电源模块中加保护电路电路中短路会7805三端稳压
器电脑机电源损害
16 载线接口蜂鸣器键模块
该模块完成源程序代码载AT89S51者AT89S52芯片中需微机ISP载器软件配合完成样功具体电路原理图图示:
声音频谱范围约十千赫兹利程序控制单片机某口线高电低电该口线产生定频率矩形波接喇叭发出定频率声音利延时程序控制高低电持续时间改变输出频率改变音调喇叭发出声音图
开关控制信号K0 K1 K2 K3端口输出具体电路原理图图示
2 项目组设计
21 实验项目求
211 项目原理完成功
1 系统功分析:
次实训设计电子秒表实现功:
开关K0实现秒表启动开关K1实现秒表数保存开关K2实现秒表数翻页查开关K3实现秒表停止数显示数码供者数取
2.系统分析设计
述功涉单片机定时器键盘LED方法 设计采AT89C51单片机核心控制元件结合数码三极发光二极等器件构成显示值达9999电子秒表利单片机延时电路键复位电路定时中断等电路实现电子秒表启动保存翻页查停止功数码动态显示功
212 模块框图
次实训电子秒表模块
1. 键模块
K0:start启动K1:save保存数K2:look查数K3:stop停止四键P10P11P12P13想接通扫描键读取键实现四功控制
2.AT89C51单片机数码显示模块
该部分两四段阳极LED 数码组成显示秒表秒值数码端接P24P25P26P27余8引脚分单片机P1口相连根单片机引脚数码连接关系列出显示数字段选码准确输出秒表正确秒值保存数秒值
3.时钟模块
单片机必须时钟驱动工作单片机部时钟振荡电路需外接振荡源产生定时钟信号送单片机部单元 外接晶体电容C1 C2 构成联谐振电路接放器反馈回路中决定单片机工作速度
般选石英晶体振荡器电路加电约延迟10ms振荡器起振XTAL2引脚产生幅度3V左右正弦波时钟信号振荡频率石英晶振频率确定电路中两电容 C1C2作两帮助振荡器起振二振荡器频率进行微调电容会影响振荡器频率高低振荡器稳定性起振快速性温度稳定性晶体频率1 2MHz~12MHz 间选电容C1 C2 典型值20pF~100pF 间选择C1C2典型值30PF
4.复位模块
89S52复位输入引脚RST 89S52提供初始化手段程序指定处开始执行89S52时钟电路工作RST 引脚出现超两机器周期高电时产生复位操作RST 保持高电单片机循环复位RST 高电变低电89S520000H 址开始执行程序系统采键复位方式复位电路图
22 电路图绘制
212 元件选取元件功简介
AT89C51(图)
89c5140引脚芯片中继承运算器控制器存储器高度集成芯片编写编译程序载芯片中实现某功
LED数码(图)
LED数码采发光二极定结构组合起显示器件次实训采阳极方式A—G脚输入二进制编码显示数字次实训采软件破译方式通译码程序显示数字字段码
三极(图)
三极P24P27相连起位选作
排阻(图)
222 proteus电路图连线原
电子秒表电路图
图:P00——P07作数码显示输入信号作数码A——GDP输入端通软件破译方式根阳极数码成功显示数字时破译数字
Uchar code BCD_7[11]{0x020x9e0xa00x88 0x1c0x480x400x9a0x000x08 0xff} 0 1 2 3456789灭
P24——P27作位选信号数码1234相连事结合三极驱动完成数码位选
P10——P13K0K1K2K3四开关相连时结合程序键盘扫描功实现开关控制功P1口实现IO输入输出
23 程序编写
231 程序框图(流程)
开始
定时器计数器2初始化
显示缓区初始化
开中断
键盘扫描
否键盘输入?
键号送k
判断否start键
判断否stop键
判断否look键
判断否save键
定时计数器2中断
停止计时
数保存
停止查数
显示
显示
Y
Y
Y
Y
N
Y
N
N
N
N
232 keilc步骤
开桌面Keil软件:
(1)新建项目文件点击Project 菜单选择弹出拉式菜单中New Project文件名中输入您第C 程序项目名称 *****uv2保存文件扩展名uv2KEIL uVision2 项目文件扩展名直接点击文件开先前做项目
2)选择单片机常Ateml 公司AT89C51
3)项目中创建新程序文件点击新建文件快捷钮出现新文字编辑窗口操作通菜单File-New 快捷键Ctrl+N 实现现编写程序
4)点击保存新建程序*****c保存项目目录中时会发现程序单词颜色说明KEILC 语法检查生效
5)程序文件加项目中屏幕左边Source Group1 文件夹图标右击弹出菜单里做项目中增加减少文件等操作选Add File to Group Source Group 1’弹出文件窗口选择刚刚保存文件ADD 钮关闭文件窗程序文件加项目中时Source Group1 文件夹图标左边出现+号说明文件组中文件点击展开查
6)设定创建HEX文件选项
步建立单片机C语言项目编译程序通编程器写入51芯片中先编译器生成HEX文件HEX文件格式Intel公司提出址排列数信息数宽度字节数16进制数字表示 常保存单片机处理器目标程序代码保存物理程序存储区中目标代码映象般编程器支持种格式先开项目开目录找****Uv2文件开先前项目然右击项目文件夹弹出项目功菜单选Options for Target’Target1’弹出项目选项设置窗口样先选中项目文件夹图标时Project菜单中样菜单选开项目选项窗口转Output选项页设定:1选择编译输出路径2编译输出生成文件名3决定否创建HEX文件选中3输出HEX文件指定路径中
7)编译运行
8)查错直错误
3 印刷板焊接流程
老师指导首先老师发实验指导熟悉次实训器件应软件硬件设施元器件摆放位置摆放标准印刷版位置弄清楚元器件焊接检查否正确焊接
流程:熟悉印刷版方面情况元器件情况解首先焊接印刷版然全部焊接完测试程序载芯片测试印刷版时候问题问题重新检查直没问题 然制作USB载板先进行焊接然测试印刷版USB载板连接起然编写程序载实验板行调试
4 调试遭遇问题解决方法
项目组编写电子秒表程序载芯片中调试程序
遇问题数码正确显示没正确编写数码显示程序数点显示位置改正时实验板数码采阳数码显示0亮1亮必须严格编写程序终克服困难数码四显示0000—9999完成实训项目反复进行测试四键分进行测试检查否完成预定四功:启动保存数查数停止否实现定时计数器中断
5 总结体会
通期三周单片机实训AT89C51单片机更层深入解时加强动手实践力解印刷版组成器件知识次实训中然遇种困难组员起克服家起完成项目时结合实践进步巩固课理知识学理基础知识加深遍时认识学知识远远够需断学提升力仅仅动手力编程力考虑问题全面性方面
6 附录
61程序代码
#include reg52h
#define uchar unsigned char
#define uint unsigned int
unsigned char key_times
#define start 0xfe
#define save 0xfd
#define look 0xfb
#define stop 0xf7
uint times_10ms
idata uint s[12]
uchar s_ptr
uchar d[4]
void delay()
{uchar ij
for(i0i<10i++)
for(j0j<50j++)
}
void display(uint t)
{uchar i
uchar code BCD_7[11]{0x020x9e0xa00x88 0 1 2 3
0x1c0x480x400x9a0x000x08 0xff}
for(t>0t)
{for(i0i<4i++)
{P0BCD_7[d[i]]
if(i2) P0|0x01
P2|0x80>>i
delay()
P2&0x00
}
}
}
uchar Read_key()
{uchar k
P10xff
kP1
if(k0xff)return 0xff
else
{delay()
kP1
if(k0xff)return 0xff
else return k
}
}
main()
{uchar ik
uint tem
uchar run_sign
TH2RCAP2H(6553610000)256
TL2RCAP2L(6553610000)256
EA1
ET21
EX00
times_10ms0
s_ptr0
for(i0i<12i++)s[i]0
for(i0i<4i++)d[i]0
while(1)
{kRead_key()
if(k0xff)
{switch(k)
{case start
run_sign1
TR21
break
case save
s[s_ptr++]tem
display(5)
while(k0xff)
{kRead_key()
display(1)
}
display(5)
break
case look
tems[s_ptr++]
d[3]tem1000
d[2]tem10010
d[1]tem1010
d[0]tem10
display(2)
while(k0xff)
{kRead_key()
display(1)
}
display(5)
break
case stop
TR20
s_ptr0
run_sign0
break
default
break
}
}
if(run_sign)
{temtimes_10ms
if(tem>9999)
{
times_10ms0
}
d[3]tem1000
d[2]tem10010
d[1]tem1010
d[0]tem10
}
display(1)
}
}
void t2_overFlow(void) interrupt 5 using 3
{if(TF2)
{TF20
times_10ms++
}
EXF20
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档