单片机程序Word文档下载推荐.docx

上传人:b****6 文档编号:16826071 上传时间:2022-11-26 格式:DOCX 页数:24 大小:473.55KB
下载 相关 举报
单片机程序Word文档下载推荐.docx_第1页
第1页 / 共24页
单片机程序Word文档下载推荐.docx_第2页
第2页 / 共24页
单片机程序Word文档下载推荐.docx_第3页
第3页 / 共24页
单片机程序Word文档下载推荐.docx_第4页
第4页 / 共24页
单片机程序Word文档下载推荐.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机程序Word文档下载推荐.docx

《单片机程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机程序Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。

单片机程序Word文档下载推荐.docx

voidmain(void)

{

TMOD=0x02;

TH0=0x06;

TL0=0x06;

TR0=1;

ET0=1;

EA=1;

while

(1)

{

if(P0_0==0)

for(i=5;

i>

0;

i--)

for(j=248;

j>

j--);

second++;

if(second==60)

second=0;

}

dispbuf[0]=second;

dispbuf[1]=second/10;

while(P0_0==0);

if(P0_1==0)

minite++;

if(minite==60)

minite=0;

dispbuf[3]=minite;

dispbuf[4]=minite/10;

while(P0_1==0);

if(P0_2==0)

hour++;

if(hour==24)

hour=0;

dispbuf[6]=hour;

dispbuf[7]=hour/10;

while(P0_2==0);

}

voidt0(void)interrupt1using0

mstcnt++;

if(mstcnt==8)

mstcnt=0;

P1=dispcode[dispbuf[dispbitcnt]];

P3=dispbitcode[dispbitcnt];

dispbitcnt++;

if(dispbitcnt==8)

dispbitcnt=0;

tcnt++;

if(tcnt==4000)

tcnt=0;

}

标题:

多位数码管动态显示定时器中断实现(C51) 

·

作者:

wentao 

日期:

2007.2.22 

软件:

Keil 

C51 

V8.02 

芯片:

AT89X51 

说明:

实验板实测通过,数码管为8位共阳 

声明:

自用存档!

另仅供需要的朋友参考,请勿用做不道德转载及商业用途!

**************************************************************************/ 

#include 

#define 

uchar 

unsigned 

char 

uchar 

code 

dis_code[16] 

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 

//段码表 

// 

//对应内容 

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

data 

0x00;

循环控制变量兼偏移量,初值为0 

0xfe;

位码(选通各位数码管),初值为11111110 

void 

main() 

P2 

0xff;

关所有数码管 

TMOD 

0x01;

定时/计数器0工作于方式1 

TH0 

0xfc;

装载定时常数64536(fc18) 

TL0 

0x18;

EA 

1;

开总中断 

ET0 

定时/计数器0允许中断 

TR0 

启动定时/计数器0 

while

(1);

执行主程序,等待中断 

time0(void) 

interrupt 

T/C0中断服务程序(延时1ms) 

j;

位码送入P2口显示 

P0 

dis_code[i];

段码表中取值送P0口 

_crol_(j,1);

位码循环左移1位选通下一数码管 

i++;

偏移量加1取下一段码(循环控制加1) 

&

0x07;

偏量增到8时自动归0(控制在0~7之间循环) 

重新装载定时常数 

旋转LED——飘在空中的文一.效果:

二.整体结构:

三.制作方法:

1.电机的改装

电路的供电和LED的定位是本制作的一个难点。

装在电机上的电路始终在高速旋转,我们就无法使用通常的方法来给电路供电。

但我们可以通过对电机的改造来解决。

我们都知道,一般的直流电机是线圈作为转子,而永磁体作为定子的。

他是通过电刷来实现给线圈供电的,而且直流电机的旋转需要交变的电流,这是由固定在转子轴上的换向器来巧妙的实现直流变为交流的。

我们的电路是固定在电机的转子上的,它和转子是保持相对静止的。

因此,我们可以从电机的转子中取得电源。

方法很简单,也就是从电机的换向器上用漆包线把电引到电路板上,经整流,滤波后给单片机电路供电。

换向器上的每个电极什么时候变化,是和电机转子的位子有关的,我们正好可以使用其中的一路信号来给LED显示的起始位置定位。

具体改装过程如下:

1)拆开电机(我使用的是录音机上的12V直流电机),注意拆的时候别弄坏了电机的电刷!

2)小心地从电机换向器上的三个电极引出三条漆包线

(由于我改装到这步时忘了拍照了,此图略)

3)取下电机外壳的含油轴承

4)我用原来装在电机上的皮带轮试了一下,正好可以放进拆掉含油轴承的地方,而且可以和外壳之间灵活旋转(运气不错!

大家也可以试试别的)。

于是我在这个上面钻了几个小孔,把那三条漆包线从小孔里穿出来。

从而可以用来保护漆包线在转子和定子结合出的安全。

(注意:

替代上去的部分是和转子保持固定,和外壳之间是可以旋转的)。

5)组装回整个电机,电机改装至此结束

2.电路

电路结构的安排见上面整体结构图,需要注意的是要安排好电机轴两边的电路重量尽量相近。

3.程序

程序很简单,我这里给出一个C51的示例程序,大家可以按自己的需要来改,做成旋转时钟等什么的。

/*******************************************************************

名称:

旋转LED

作者:

章健

日期:

2006.1.5

*******************************************************************/

#include

#defineucharunsignedchar

voiddelay();

ucharzimo[16]={0xff,0x7d,0x00,0x7d,0xff,//字母“I”

0xc7,0x83,0xc1,0x83,0xc7,//心形图案

0xff,//用来搁开心形图案和字母U

0x03,0xfd,0xfd,0xfd,0x03};

//字母“U”

//0xc9,0xb6,0xb6,0xb6,0xc9};

voidmain()

{TCON|=0x01;

//外部中断0下降沿触发

IE=0x81;

//开中断

voiddelay()//延时子程序,延时长短请根据的你的电机转速进行调整

{ucharj;

for(j=0;

j<

255;

j++)

{;

voiddisplay()interrupt0//中断处理

{uchari;

for(i=0;

i<

16;

i++)

{P1=zimo[i];

delay();

P1=0xff;

纯手工打造摇摆LED时钟

看到市场上正在流行的时尚商品——摇摆LED时钟,感觉非常新颖独特,正在玩单片机的我,激起了自己也想DIY一个的冲动。

不就是一个流水灯吗?

有什么难的?

于是,一个单片机项目就这样开始了。

然而动手以后才知道问题并非想象那样简单,因没有任何现成的资料,机械的、电子的和编程的问题一大堆,一个一个需要自己来解决。

经历二十多天的苦战和无数次的修改与调试,作品终于完成,基本达到预先要求。

现将制作资料整理出来,与广大DIY爱好者分享。

一.整体方案

本制作是根据视觉暂留原理,让一排8只LED作往复运动,在空中呈现八个字符的显示屏,可显示数字或英文字符。

开机后先显示“Welcome!

”欢迎字符(见图1),再进入时钟显示状态。

显示屏同时显示“时”、“分”、“秒”信息,用“:

”分隔(见图2)。

图1开机画面 

图2运行状态

显示分“正常运行”、“调分”和“调时”三种状态。

当处于调整状态时,调整的项会闪现,以便识别。

为此,设置三个调整按键,一个为“状态键”,一个为“加法键”,一个为“减法键”。

(见图3)

图3按键的设置 

图4音圈电机组件

摇棒的动力部分采用从废旧硬盘拆下的音圈电机(见图4),驱动采用直流电机驱动方式。

结构方面,将音圈电机直接安装在万用板上,将万用板的四周用四根螺柱与一透明有机板结合成一体,构成支撑摇棒底座。

(见图5,图6)。

图5万用板与有机板构成底座 

图6底座侧面

二.实作要点

1.主板的结构布局见图7。

图7主板布局 

图8摇棒上的LED

2.LED的焊接,将LED两脚跨接在电路板两端的方式进行焊接。

使LED紧密排列在一起。

3.摇棒上的LED与主板上的信号用柔性排线连接,音圈电机供电占2位,LED信号传输占9位,所以至少要11位的排线。

(见图9)

图9排线与拉簧 

图10拉簧

4.为保持摇棒的平衡,在摇棒接近旋转轴的两端加装两只拉簧,这两只拉簧的规格尽量保持一致,弹性强弱要适中,最好可多找几种规格的试试。

(图9,图10)

5.采用驱动直流电机正反转的方式,驱动音圈电机来回摆动。

让电机正、反转的方法很多,最典型的是H桥电路驱动,H桥电路原理见图11,常见的是用三级管代替图中的开关。

图11H桥驱动原理

为了简化电路,最好采用H桥功能的集成电路。

这种IC很多,比如象TA7257,TA8429H,L6203等,这里用的是三菱公司的M54544AL(见图12)。

IC各脚定义见图13。

图12电机驱动IC

图13M56544AL各脚定义

6.电原理图见图14。

图14电原理图

7.完成图见图15。

图15完成图

三.软件设计

1.摇棒的启动

为了使摇棒从静止状态过度到正常运行状态,在正式显示前加一启动程序。

其实质就是逐渐加快驱动的频率,一直到摇棒正常摆动为止。

通过下面的代码实现

do{

mm++;

Delay(120+mm);

put1=~put1;

put2=~put2;

}while(mm<

60);

Delay(20);

//根据实际情况确定延时值

2.秒闪现的实现:

数字或字符的闪现是通过变量Ms和数组w[]实现的,如需要八位字符中的间的第4位闪现,则w[3]=1。

这是通过全局变量Ms在voidtimer0(void)函数中每隔一秒改变一次状态(0或1),打开或关闭显示。

if(Ms*w[ii-3]==1)P2=0xff;

elseP2=~ASCIIDOC[v[ii]*6+jj];

//正向显示

if(Ms*w[10-ii]==1)P2=0xff;

elseP2=~ASCIIDOC[v[13-ii]*6+5-jj];

//反向显示

3.调试中发现,显示屏上的字符并不是一样宽的(见图16),仔细分析是由于摇棒在运动中,一直受力,而且所受的力是随时变化的。

为方便精确调整显示,特别作了一个显示中断表Tr[],改变显示LED的时间段,协调显示效果。

图16调整前的显示

4.按键去抖程序

按键的去抖采用软件编程实现,其方法是当检测到按键的接口出现低电平后,隔一段时间再检测,如还是低电平,则确认为有效,否则无效。

具体的程序是通过函数unsignedcharChKey(bitKey)完成的。

5.显示同步

因没有位置传感器,显示同步完全靠时钟中断来确定。

这样就有一个问题,音圈电机的驱动信号在什么时刻改变,显示才能保持在中间,并能保证正反显示能很好地重合。

经实际观察,音圈电机的驱动信号在显示中部,要根据具体情况细调。

由程序中的变量Ta调试确定。

6.完整C51程序代码

/*

POV摇摆显示LED钟C51程序

周正华编

2008.3.19

*/

/*硬件端口定义*/

sbitset0=P0^1;

sbitset1=P0^0;

sbitset2=P0^2;

sbitput1=P3^6;

sbitput2=P3^7;

/*时钟用数组*/

unsignedcharBUFFER[]={0,0,0,0};

unsignedcharmaxnum[]={59,23};

/*显示数组*/

unsignedintv[14];

unsignedintw[8];

/*显示中断表*/

intcodeTr[]={

2000,2000,2000,2000,2000,2000,

2550,2500,2450,2400,2350,2300,

2250,2200,2150,2100,2050,2000,

1950,1900,1850,1800,1750,1700,

1650,1600,1550,1500,1450,1400,

1400,1450,1500,1550,1600,1650,

1700,1750,1800,1850,1900,1950,

2000,2050,2100,2150,2200,2250,

2300,2350,2400,2450,2500,2550,

};

/*字符字模*/

unsignedcharcodeASCIIDOC[]=//ASCII

{

0x7C,0x8A,0x92,0xA2,0x7C,0x00,//-0-00

0x00,0x42,0xFE,0x02,0x00,0x00,//-1-01

0x46,0x8A,0x92,0x92,0x62,0x00,//-2-02

0x84,0x82,0x92,0xB2,0xCC,0x00,//-3-03

0x18,0x28,0x48,0xFE,0x08,0x00,//-4-04

0xE4,0xA2,0xA2,0xA2,0x9C,0x00,//-5-05

0x3C,0x52,0x92,0x92,0x8C,0x00,//-6-06

0x80,0x8E,0x90,0xA0,0xC0,0x00,//-7-07

0x6C,0x92,0x92,0x92,0x6C,0x00,//-8-08

0x62,0x92,0x92,0x94,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1