单片机原理与应项目-电子闹钟课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机原理与应项目-电子闹钟课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 项目 电子 闹钟 课件
- 资源描述:
-
1、项目项目 电子闹钟电子闹钟 主要内容 1、项目介绍 2、相关知识 3、难点、问题分析 4、小结项目介绍 学习内容:动态、静态数码结构、特点与控制;独立、矩阵键盘结构、特点与识别。(在proteus界面上仿真电路,完成C51程序的编制与功能调试。);带8155扩展的键盘系统.24课时 任务一、0-9显示器 任务二、学号显示器 任务三、可控显示器 任务四、可设定显示器 任务五、定时报警钟 任务六、带扩展的电子钟(8155)相关知识 一、显示 1、基础知识 2、静态显示 3、动态显示 二、按键 1、键盘接口 2、独立按键 3、行列按键 三、单片机应用 1、数组 2、中断 3、定时器 四、拓展部分 5
2、1单片机常识 辅助任务难点、问题分析 1、数组 2、地址的形成 3、特殊功能寄存器(SFR)4、中断(定时器)八段LED显示块基础知识-数码显示共阴结构共阴结构共阳结构共阳结构基础知识-数码显示 共阴数码:假定 Px.0-a,Px.1-b,Px.2-c,Px.3-d,Px.4-e,Px.5-f,Px.6-g,Px.7-dp 则从Px口,送0 x3f,显示0,送0 x06,显示1 送0 x5b,显示2,送0 x4f,显示3 送0 x66,显示4,送0 x6d,显示5 送0 x7d,显示6,送0 x07,显示7 送0 x7f,显示8,送0 x6f,显示9a b cd e f Rdpa bcd e
3、f Rdpa b cd e f Rdpa bcd ef Rdpa b cd e f Rdp3.83.83.83.83.8 I/O口位选控制 I/O口段选控制 N位LED显示器基础知识-数码显示 GND/+5VGND/+5VGND/+5VGND/+5VGND/+5VI/O(1)I/O(2)I/O(3)I/O(4)四位静态LED显示器电路静态数码显示每一个数码管的显示笔画都要占用每一个数码管的显示笔画都要占用单独单独的具有锁存功能的的具有锁存功能的I/O接口。即需接口。即需N8个个I/O控制线控制线 静态显示数码管相应笔段一直处于点亮状态,静态显示数码管相应笔段一直处于点亮状态,因此功耗大,而且占
4、用硬件资源多,几乎只因此功耗大,而且占用硬件资源多,几乎只能用在显示位数极少的场合。能用在显示位数极少的场合。优点:优点:LED亮度高,可用在室外显示场合。亮度高,可用在室外显示场合。程序工作量小。程序工作量小。例如:例如:静态显示技术静态显示技术静态显示技术静态显示技术显示显示 60111 1101P2=0X7DDPabcdefg1 在在proteus上画出如下电上画出如下电路图路图.2 在在keil中编制程序中编制程序,要求要求能显示学号最后能显示学号最后4位数位数.3 运行程序运行程序,观察电路中数观察电路中数码管显示码管显示.#include#define uchar unsigned
5、 charuchar xdata*Led_D;void main()Led_D=0 x0800;*Led_D=0 x6f;/9 Led_D=0 x0900;*Led_D=0 x5b;/2 Led_D=0 x0a00;*Led_D=0 x06;/1 Led_D=0 x0b00;*Led_D=0 x3f;/0 while(1);八位LED动态显示器电路 I/O(1)DDDDDDDDI/O(2)75643210动态数码显示所有数码管的所有数码管的8个笔画段个笔画段同名端连同名端连在一起,在一起,公共端公共端各自独立。即需各自独立。即需N+8个个I/O控制线控制线 动态显示是多只数码管共享段码线,通动
6、态显示是多只数码管共享段码线,通过位选线(公共端)逐位逐位过位选线(公共端)逐位逐位分时分时进行进行扫描显示(任时刻只有扫描显示(任时刻只有一只一只点亮)。其点亮)。其优点是占用硬件资源少,功耗小。软件优点是占用硬件资源少,功耗小。软件工作量大工作量大.必须注意:扫描周期必须控制在必须注意:扫描周期必须控制在视觉停顿时间内,一般在视觉停顿时间内,一般在20ms以内,否以内,否则会出现闪烁或跳动现象。则会出现闪烁或跳动现象。最为广泛的一种显示方式。最为广泛的一种显示方式。动态显示技术动态显示技术首先扫描最后扫描动态显示技术动态显示技术1 在在proteus上画出如下电路图上画出如下电路图.2 在
7、在keil中编制程序中编制程序,要求能显示学号要求能显示学号最后最后8位数位数.3 运行程序运行程序,观察电路中数码管显示观察电路中数码管显示.(注意注意:换位前先清段码换位前先清段码)#include#define uchar unsigned char void delay()uchar i;for(i=0;i100;i+);void main()while(1)P2=0Xfe;P0=0X7f;delay();/8 P2=0Xfd;P0=0X06;delay();/1 P2=0Xfb;P0=0X5b;delay();/2 P2=0Xf7;P0=0X4f;delay();/3 P2=0Xef
8、;P0=0X66;delay();/4 P2=0Xdf;P0=0X6d;delay();/5 P2=0Xbf;P0=0X7d;delay();/6 P2=0X7f;P0=0X07;delay();/7 P0=0X00;P0=0X00;P0=0X00;P0=0X00;P0=0X00;P0=0X00;P0=0X00;P0=0X00;消除拖尾消除拖尾重影现象重影现象#include#define uchar unsigned charcode uchar display=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x00
9、;code uchar Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;void delay()uchar i;for(i=0;i100;i+);void main()while(1)P2=Tab7;P0=display 8;delay();/8 P2=Tab6;P0=display 1;delay();/1 P2=Tab5;P0=display 2;delay();/2 P2=Tab4;P0=display 3;delay();/3 P2=Tab3;P0=display 4;delay();/4 P2=Tab2;P0=display 5
10、;delay();/5 P2=Tab1;P0=display 6;delay();/6 P2=Tab0;P0=display 7;delay();/7 P0=display 10;P0=display 10;P0=display 10;P0=display 10;P0=display 10;P0=display 10;P0=display 10;P0=display 10;使用数组使用数组1 在在proteus上画出如下电路图上画出如下电路图.2 在在keil中编制程序中编制程序,要求能显示学要求能显示学号最后号最后8位数位数.3 运行程序运行程序,观察电路中数码管显示观察电路中数码管显示.(
11、注意注意:换位前先清段码换位前先清段码)#include#define uchar unsigned charuchar xdata*Led_D=0 xc000;uchar xdata*Led_W=0 xc800;code uchar display=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x0;code uchar Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;uchar led8;/数组长度要给出数组长度要给出void delay()uchar i;
12、for(i=0;i100;i+);void display()int i;for(i=0;i8;i+)*Led_D=0;*Led_W=Tabi;*Led_D=ledi;delay();void main()led0=display 0;led1=display 1;led2=display 2;led3=display 3;led4=display 4;led5=display 5;led6=display 6;led7=display 7;while(1)display();8个共阴数码管1 根据根据 如上电路图如上电路图.2 在在keil中编制程序中编制程序,要求显示时分秒要求显示时分秒.
13、3 运行程序运行程序,观察电路中数码管显示观察电路中数码管显示.根据实验电路图根据实验电路图.在在keil中编制程序中编制程序,要求能显示学号要求能显示学号.辅助任务 一 设计两位数的十进制减法显示电路原理图并编制程序.二 设计电子时钟显示(时-分-秒)电路原理图并编制程序.三 设计用数码显示8只LED循环次数,显示的范围为0-99.减法运算显示#include#define uchar unsigned charuchar xdata*Led_D=0 xc000;uchar xdata*Led_W=0 xc800;code uchar display_code=0 x3f,0 x06,0 x
14、5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40,0 x48;code uchar Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;bit bzie=1;uchar led8;/数组长度要给出数组长度要给出void delay()uchar i;for(i=0;i100;i+);void display()int i;for(i=0;i8;i+)*Led_D=0;*Led_W=Tabi;*Led_D=ledi;delay();void main()unsigned int X=98,Y=
15、56,Z;Z=X-Y;*Led_D=0;*Led_W=0 xff;led2=display_code10;led5=display_code11;while(1)if(bzie)led0=display_codeX/10;led1=display_codeX%10;led3=display_codeY/10;led4=display_codeY%10;led6=display_codeZ/10;led7=display_codeZ%10;bzie=0;display();X-Y=Z 显示显示#include#include#define uchar unsigned char#define L
16、ed_D XBYTE0 xc000#define Led_W XBYTE0 xc800uchar code display_code=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40,0 x48;uchar code Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;uchar led8;bit bzie=1;void delay()uchar i;for(i=0;i100;i+);void display()int i;for(i=0;i8;i+)Led_D
17、=0;Led_W=Tabi;Led_D=ledi;delay();void main()unsigned int X=98,Y=56,Z;Z=X-Y;Led_D=0;Led_W=0 xff;led2=display_code10;led5=display_code11;while(1)if(bzie)led0=display_codeX/10;led1=display_codeX%10;led3=display_codeY/10;led4=display_codeY%10;led6=display_codeZ/10;led7=display_codeZ%10;bzie=0;display();
18、X-Y=Z 显示显示#include#define uchar unsigned charuchar xdata*Led_D=0 xc000;uchar xdata*Led_W=0 xc800;code uchar display_code=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40,0 x48;code uchar Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;bit bzie=1;int i;uchar led8;void display()in
19、terrupt 1 TH0=(256*256-1*f/12000)/256;TL0=(256*256-1*f/12000)%256;if(i=8)i=0;*Led_D=0;*Led_W=Tabi;*Led_D=ledi;i+;void main()unsigned int X=98,Y=56,Z;Z=X-Y;TH0=(256*256-1*f/12000)/256;TL0=(256*256-1*f/12000)%256;/1ms 时间间隔不能长i=0;IE=0 x82;TMOD=0 x01;TCON=0 x10;led2=display_code10;led5=display_code11;wh
20、ile(1)if(bzie)led0=display_codeX/10;led1=display_codeX%10;led3=display_codeY/10;led4=display_codeY%10;led6=display_codeZ/10;led7=display_codeZ%10;bzie=0;X-Y=Z 显示显示时钟显示#include#define uchar unsigned charuchar xdata*Led_D=0 xc000;uchar xdata*Led_W=0 xc800;code uchar display_code=0 x3f,0 x06,0 x5b,0 x4
21、f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40;code uchar Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;bit bzie=1;unsigned int x=0;uchar led8;/数组长度要给出数组长度要给出void delay()uchar i;for(i=0;i100;i+);if(+x)=1000)x=0;bzie=1;void display()int i;for(i=0;i=60)sec=0;if(+mit)=60)mit=0;if(+hour)=24)hour=0;le
22、d0=display_codehour/10;led1=display_codehour%10;led3=display_codemit/10;led4=display_codemit%10;led6=display_codesec/10;led7=display_codesec%10;bzie=0;display();时分秒时分秒 显示显示#include#include#define uchar unsigned char#define Led_D XBYTE0 xc000#define Led_W XBYTE0 xc800uchar code display_code=0 x3f,0 x
23、06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40,0 x48;uchar code Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;uchar led8;bit bzie=1;unsigned int x=0;void delay()uchar i;for(i=0;i100;i+);if(+x)=1000)x=0;bzie=1;void display()int i;for(i=0;i=60)sec=0;if(+mit)=60)mit=0;if(+hour)=24)hour=
24、0;led0=display_codehour/10;led1=display_codehour%10;led3=display_codemit/10;led4=display_codemit%10;led6=display_codesec/10;led7=display_codesec%10;bzie=0;display();时分秒显示时分秒显示#include#define uchar unsigned charuchar xdata*Led_D=0 xc000;uchar xdata*Led_W=0 xc800;code uchar display_code=0 x3f,0 x06,0
25、x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40,0 x48;code uchar Tab=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;bit bzie=1;int i;uchar led8;unsigned int x=0;void display()interrupt 1 TH0=(256*256-1*f/12000)/256;TL0=(256*256-1*f/12000)%256;if(i=8)i=0;*Led_D=0;*Led_W=Tabi;*Led_D=ledi;i+;if(+x
展开阅读全文