单片机原理及应用课程设计 - 图文

更新时间:2023-11-05 11:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机原理及应用课程设计

24秒倒计时器

姓名:

学号:

专业: 电子信息工程 班级: 电子1106

目录

1. 目的及意义………………………………………………………1 2. 相关技术介绍…….…………………………………….1 3. 设计方案………………………………………………..2 4. 软件设计…………….……………………………….....3 5. 仿真调试………………………………………………..5 6. 总结……………………………………………………..6

6.1

设计总结

7.参考文献…………………………………………………6

一、目的及意义

单片机课程设计是电子技术学习中非常重要的一个环节,是将理论与基础统一的一个环节,是真正锻炼我们能力的一个环节。

24秒倒计时在许多领域中计时器均得到普遍应用,诸如在体育比赛,定时报警器、游戏中的倒时器,交通信号灯、红绿灯、行人灯、交通纤毫控制机,还可以用来做为各种药丸、药片,胶囊在指定时间提醒用药等等,由此可见计时器在现代社会的应用是相当普遍的。 在篮球比赛中,规定了球员的持球时间不能超过24秒,否则就违例了。本课程设计“智能篮球比赛倒计时器的设计”,可用于篮球比赛中,用于对球员持球时间24秒限制。一旦球员的持球时间超过了24秒,它自动的报警从而判定此球员的违例。

二、单片机元件介绍及软件工具介绍

单片机STC89C51:STC89C51RC

Programming)在系统可编程芯片.

是采用8051核的ISP(In System

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

1

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个 TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能

P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

Keil:Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软

件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

2

三、设计方案

24秒计时器如图它包括计数器,译码显示电路,辅助时序控制电路,其中计数器和控制电路是主要模块,计数器完成24秒计时功能,而控制电路完成计数器的直接清零、启动计数、暂停、连续计数、译码显示器的显示与灭灯、定时时间等。

十位显示 个位显示 译码驱动 控制电路 译码驱动 秒脉冲发生器 计数器 计数器 报警器

四、软件设计

#include //C51的库函数头文件 #define uchar unsigned char //宏定义uchar型为无符号字符型 #define uint unsigned int //宏定义uint型为无符号整型 void delay(uint z); //Z ms; //声明延迟函数 void beep(uint z); //声明

uchar code shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0,1,2,3,4,5,6,7,8,9

sbit a1=P2^0; sbit a2=P2^1; sbit clear=P3^2; sbit stop=P3^3; sbit beep1=P3^7;

uint t,t1,t2; void main()

{ EA=1; //系统允许中断 EX0=1;//外部中断0 EX1=1;//外部中断1 3

IT0=1;//定时器计数器中断0 IT1=1;//定时器计数器中断1 while(1) { int k,i,j; sum: t=1;t1=1;t2=1; do { P0=shu[24/10];a1=1;delay(5);a1=0; //P0口输出0xA4 打开段选(或位选) 延时后关闭 P0=shu[24];a2=1;delay(5);a2=0; //P0口输出0x99 打开段选(或位选) 延时后关闭 }while(t1); //定时器未产生中断 t1为1 做上面的do循环 t=0; // 定时器产生中断时t1==0(下面中断函数体现) 跳出上面的循环 for(k=24;k>0;k--) { i=90; do { do { P0=shu[k/10];a1=1;delay(5);a1=0; //数码管从24递减显示 P0=shu[k];a2=1;delay(5);a2=0; if(t2==0) //定时器1产生中断后 t2==0 goto sum; //调到上面的程序 让数码管显示出数字 } while(t%2); if(t2==0) goto sum; }while(i--); } do {P0=shu[0];a1=1;a2=1;beep(10);}while(t2); //清空位和段 防止闪烁重影 } }

//延迟Zms

void delay(uint z) //Z ms; { uint i,j; for(i=0;i

void beep(uint z)

4

{ beep1=0; delay(z); beep1=1; delay(z); }

void int0() interrupt 0 using 0 { t++;t1=0; }

void int1() interrupt 2 { t2=0; }

五、仿真调试

采用的是Proteus软件是英国Lab Center Electronics公司出版的EDA工具。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台它是目前最好的仿真单片机及外围器件的工具。

当按键启动按钮时,译码显示器,从24开始,每秒减少1,期间可以按键暂停按钮,译码显示器停止跳动,否则直到译码显示器为0,按键重置开始从24重新倒计时。

5

六、总结

1、我认为该系统虽然简单,但实用,可以应用到很多的地方。下一步,我希望把它应用到更多地方。

2、我通过这次单片机课程与设计的学习,学到了很多东西,首先我学会了protuse,与Keil等仿真软件的使用以及其功能的了解,然后我通过自己利用这2个软件仿真出这个24秒倒计时器,在程序的编写我遇到了很多的问题,在编译的时候,经常出现很多的错误,而又很难找到,这给我的本次课程设计带来了很多阻力,也使我认识到自己在编程方面还很欠缺。

参考文献

(期刊)

[1] 张毅刚 单片机原理及接口技术[M] 版社

2012年5月河北(第三次)印刷

[2]朱清慧 protuse教程(第二版)[M]. 社、2011年6月第二版

人民邮电出清华大学出版 6

本文来源:https://www.bwwdw.com/article/um82.html

Top