单片机程序.doc

上传人:hw****26 文档编号:4048052 上传时间:2019-09-16 格式:DOC 页数:23 大小:541KB
下载 相关 举报
单片机程序.doc_第1页
第1页 / 共23页
单片机程序.doc_第2页
第2页 / 共23页
单片机程序.doc_第3页
第3页 / 共23页
单片机程序.doc_第4页
第4页 / 共23页
单片机程序.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、1.实验任务 (1).开机时,显示 12:00:00 的时间开始计时;(2).P0.0/AD0 控制“秒”的调整,每按一次加 1 秒; (3).P0.1/AD1 控制“分”的调整,每按一次加 1 分; (4).P0.2/AD2 控制“时”的调整,每按一次加 1 个小时; 2.电路原理图3.系统板上硬件连线(1).把“单片机系统”区域中的 P1.0P1.7 端口用 8 芯排线连接到“动态数码显示”区域中的 AH 端口上;(2).把“单片机系统:区域中的 P3.0P3.7 端口用 8 芯排线连接到“动态数码显示”区域中的 S1S8 端口上; (3).把“单片机系统”区域中的 P0.0/AD0、P0

2、.1/AD1、P0.2/AD2 端口分别用导线连接到“独立式键盘”区域中的 SP3、SP2、SP1 端口上; 4.相关基本知识(1).动态数码显示的方法(2).独立式按键识别过程 (3).“时”,“分”,“秒”数据送出显示处理方法7.C 语言源程序 #include unsigned char code dispcode=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00; unsigned char dispbitcode=0xfe,0xfd,0xfb,0xf7, 0x

3、ef,0xdf,0xbf,0x7f; unsigned char dispbuf8=0,0,16,0,0,16,0,0; unsigned char dispbitcnt; unsigned char second; unsigned char minite; unsigned char hour; unsigned int tcnt; unsigned char mstcnt; unsigned char i,j; void main(void) TMOD=0x02; TH0=0x06; TL0=0x06; TR0=1; ET0=1; EA=1; while(1) if(P0_0=0) fo

4、r(i=5;i0;i-) for(j=248;j0;j-); if(P0_0=0) second+; if(second=60) second=0; dispbuf0=second; dispbuf1=second/10; while(P0_0=0); if(P0_1=0) for(i=5;i0;i-) for(j=248;j0;j-); if(P0_1=0) minite+; if(minite=60) minite=0; dispbuf3=minite; dispbuf4=minite/10; while(P0_1=0); if(P0_2=0) for(i=5;i0;i-) for(j=2

5、48;j0;j-); if(P0_2=0) hour+; if(hour=24) hour=0; dispbuf6=hour; dispbuf7=hour/10; while(P0_2=0); void t0(void) interrupt 1 using 0 mstcnt+; if(mstcnt=8) mstcnt=0; P1=dispcodedispbufdispbitcnt; P3=dispbitcodedispbitcnt; dispbitcnt+; if(dispbitcnt=8) dispbitcnt=0; tcnt+; if(tcnt=4000) tcnt=0; second+;

6、 if(second=60) second=0; minite+; if(minite=60) minite=0; hour+; if(hour=24) hour=0; dispbuf0=second; dispbuf1=second/10; dispbuf3=minite; dispbuf4=minite/10; dispbuf6=hour; dispbuf7=hour/10; 标题: 多位数码管动态显示定时器中断实现(C51) * 作者: wentao http:/ http:/ * 日期: 2007.2.22 * 软件: Keil C51 V8.02 * 芯片: AT89X51 * 说明

7、: 实验板实测通过,数码管为 8 位共阳 * 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! */ #include #include #define uchar unsigned char uchar code dis_code16 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, /段码表 / 0 1 2 3 4 5 6 7 /对应内容 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; / 8 9 a b c d e f uchar data i = 0x00; / 循环控制变量兼偏移量,初值为 0

8、 uchar data j = 0xfe; / 位码(选通各位数码管),初值为 11111110 void main() P2 = 0xff; / 关所有数码管 TMOD = 0x01; / 定时/计数器 0 工作于方式 1 TH0 = 0xfc; / 装载定时常数 64536(fc18) TL0 = 0x18; EA = 1; / 开总中断 ET0 = 1; / 定时/计数器 0 允许中断 TR0 = 1; / 启动定时/计数器 0 while(1); / 执行主程序,等待中断 void time0(void) interrupt 1 / T/C0 中断服务程序(延时 1ms) P2 = j

9、; / 位码送入 P2 口显示 P0 = dis_codei; / 段码表中取值送 P0 口 j = _crol_(j,1); / 位码循环左移 1 位选通下一数码管 i+; / 偏移量加 1 取下一段码(循环控制加 1) i / 偏量增到 8 时自动归 0(控制在 07 之间循环) TH0 = 0xfc; / 重新装载定时常数 TL0 = 0x18; 旋转 LED飘在空中的文一效果:二整体结构:三制作方法:1.电机的改装电路的供电和 LED 的定位是本制作的一个难点。装在电机上的电路始终在高速旋转,我们就无法使用通常的方法来给电路供电。但我们可以通过对电机的改造来解决。我们都知道,一般的直流

10、电机是线圈作为转子,而永磁体作为定子的。他是通过电刷来实现给线圈供电的,而且直流电机的旋转需要交变的电流,这是由固定在转子轴上的换向器来巧妙的实现直流变为交流的。我们的电路是固定在电机的转子上的,它和转子是保持相对静止的。因此,我们可以从电机的转子中取得电源。方法很简单,也就是从电机的换向器上用漆包线把电引到电路板上,经整流,滤波后给单片机电路供电。换向器上的每个电极什么时候变化,是和电机转子的位子有关的,我们正好可以使用其中的一路信号来给 LED 显示的起始位置定位。具体改装过程如下:1)拆开电机(我使用的是录音机上的 12V 直流电机),注意拆的时候别弄坏了电机的电刷!2)小心地从电机换向

11、器上的三个电极引出三条漆包线(由于我改装到这步时忘了拍照了,此图略)3)取下电机外壳的含油轴承4)我用原来装在电机上的皮带轮试了一下,正好可以放进拆掉含油轴承的地方,而且可以和外壳之间灵活旋转(运气不错!大家也可以试试别的)。于是我在这个上面钻了几个小孔,把那三条漆包线从小孔里穿出来。从而可以用来保护漆包线在转子和定子结合出的安全。(注意:替代上去的部分是和转子保持固定,和外壳之间是可以旋转的)。5)组装回整个电机,电机改装至此结束2.电路电路结构的安排见上面整体结构图,需要注意的是要安排好电机轴两边的电路重量尽量相近。3.程序程序很简单,我这里给出一个 C51 的示例程序,大家可以按自己的需

12、要来改,做成旋转时钟等什么的。/*名称:旋转 LED作者:章健日期:2006.1.5*/#include#define uchar unsigned charvoid delay();uchar zimo16=0xff,0x7d,0x00,0x7d,0xff, /字母“I”0xc7,0x83,0xc1,0x83,0xc7, /心形图案0xff, /用来搁开心形图案和字母 U0x03,0xfd,0xfd,0xfd,0x03; /字母“U”/0xc9,0xb6,0xb6,0xb6,0xc9;void main()TCON|=0x01; /外部中断 0 下降沿触发IE=0x81; /开中断while

13、(1);void delay() /延时子程序,延时长短请根据的你的电机转速进行调整uchar j;for(j=0;j255;j+);void display() interrupt 0 /中断处理uchar i;for(i=0;i16;i+)P1=zimoi;delay();P1=0xff;纯手工打造摇摆 LED 时钟看到市场上正在流行的时尚商品摇摆 LED 时钟,感觉非常新颖独特,正在玩单片机的我,激起了自己也想 DIY 一个的冲动。不就是一个流水灯吗?有什么难的?! 于是,一个单片机项目就这样开始了。然而动手以后才知道问题并非想象那样简单,因没有任何现成的资料,机械的、电子的和编程的问题

14、一大堆,一个一个需要自己来解决。经历二十多天的苦战和无数次的修改与调试,作品终于完成,基本达到预先要求。现将制作资料整理出来,与广大 DIY 爱好者分享。 一. 整体方案本制作是根据视觉暂留原理, 让一排 8 只 LED 作往复运动, 在空中呈现八个字符的显示屏,可显示数字或英文字符。开机后先显示“Welcome!”欢迎字符(见图 1), 再进入时钟显示状态。显示屏同时显示“时” 、“分” 、“秒”信息,用“:”分隔(见图 2)。图 1 开机画面 图 2 运行状态显示分“正常运行”、“调分”和“调时” 三种状态。当处于调整状态时,调整的项会闪现,以便识别。为此,设置三个调整按键,一个为“状态键”,一个为“加法键”,一个为“减法键”。(见图 3)

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。