心形花样流水灯设计报告.docx
《心形花样流水灯设计报告.docx》由会员分享,可在线阅读,更多相关《心形花样流水灯设计报告.docx(27页珍藏版)》请在冰点文库上搜索。
心形花样流水灯设计报告
《专业方向课程设计》课程
设计报告
题目:
心形花样流水灯与点阵显示
专业:
电子信息工程
班级:
二班
学号:
姓名:
指导老师:
重庆交通大学信息科学与工程学院
设计时间:
2013年9月8日到2013年11月16号
一、设计任务说明
随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。
比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。
本设计是用单片机和点阵加一个小的流水灯电路,这次作品的初衷是希望通过单片机学习,做个生日礼物送给朋友。
二、总体设计
本系统主要有AT89C51单片机、5mm彩色LED灯、74HC245、8*8LED点阵、200欧电阻等元件组成。
1.流水灯设计:
(1)AT89C51单片机:
AT89C51具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,
256bytes的随机存取数据存储器(RAM),
32个外部双向输入/输出(I/O)口,
5个中断优先级2层中断嵌套中断,
2个16位可编程定时计数器,
2个全双工串行通信口,
看门狗(WDT)
AT89C51引脚图
电路,片内时钟振荡器。
此外,AT89S52设计和配置了振荡频率可
为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
引脚图如右图所示。
此次设计把51单片机的4个I/O口与32个5mm高亮LED灯相接,通过单片机控制各I/O引脚的高低电平控制LED的亮灭从而形成各种不同亮灭的花样。
2.点阵显示设计:
(1)8*8点阵原理图:
从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:
对应的列置1,而行则采用扫描的方法来实现。
一根横柱:
对应的行置0,而列则采用扫描的方法来实现。
(2)74HC245:
74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其它的消费类电子产品中增加驱动
主要特性:
☆采用CMOS工艺
☆宽电压工作范围:
3.0V—5.0V
☆双向三态输出
☆八线双向收发器
☆封装形式:
SOP20、SOP20-2、TSSOP20、DIP20
此次设计采用74HC245来驱动8*8点阵,74HC245一端与51单片机的P0口想连,另一端则与点阵的输入端相连,从而通过单片机控制驱动点阵。
三、硬件设计
心型流水灯的硬件设计如下图:
点阵显示的硬件设计图如下:
本次设计通过74HC245来驱动8*8点阵,74HC245的输入端与51单片机的P0口想连,74HC245的输出端则与点阵的行相连,而点阵的列则与单片机的P3口相连,通过单片机控制、74HC245驱动,从而完成了点阵的显示。
四、软件设计
心形花样流水灯的程序如下:
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//逐个点亮0~7
ucharcodetable1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//逐个点亮7~0
ucharcodetable2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//逐个灭0~7
ucharcodetable3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//逐个灭7~0
/***********************************************************/
voiddelay(uintt);//延时
voidzg(uintt,uchara);//两边逐个亮
voidqs(uintt,uchara);//全部闪烁
voidzgxh(uintt,uchara);//逆时针逐个点亮
voiddjs(uintt,uchara);//对角闪
voidlbzgm(uintt,uchara);//两边逐个灭
voidnszgm(uintt,uchara);//逆时针逐个灭
voidsztl(uintt,uchara);//顺时逐个同步亮
voidnztl(uintt,uchara);//逆时逐个同步亮
voidsztm(uintt,uchara);//顺时逐个同步灭
voidnztm(uintt,uchara);//逆时逐个同步灭
voidhwzjl(uintt,uchara);//横往中间亮
voidhwzjm(uintt,uchara);//横往中间灭
voidnzdl(uintt,uchara);//逆时逐段亮
voidnzdgl(uintt,uchara);//逆时逐段一个点亮
voidjgs(uintt,uchara);//间隔闪
/**********************************************************/
voidzg(uintt,uchara)//两边逐个亮
{
uchari,j;
for(j=0;j{P0=P1=P2=P3=0xff;P0=0x7f;delay(t);for(i=0;i<7;i++){P0=table1[i+1];P2=table1[i];delay(t);}P2=0x00;P1=0xfe;delay(t);for(i=0;i<7;i++){P1=table[i+1];P3=table1[i];delay(t);}P3=0x00;delay(t);}} voidqs(uintt,uchara)//全部闪烁{ucharj;for(j=0;j{P0=P1=P2=P3=0xff;delay(t);P0=P1=P2=P3=0x00;delay(t);}} voidzgxh(uintt,uchara)//逆时针逐个点亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}for(i=0;i<8;i++){P1=table[i];delay(t);}for(i=0;i<8;i++){P3=table[i];delay(t);}for(i=0;i<8;i++){P2=table[i];delay(t);}}}voidnszgm(uintt,uchara)//逆时针逐个灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table3[i];delay(t);}for(i=0;i<8;i++){P1=table2[i];delay(t);}for(i=0;i<8;i++){P3=table2[i];delay(t);}for(i=0;i<8;i++){P2=table2[i];delay(t);}}voiddjs(uintt,uchara)//对角闪{ucharj;for(j=0;j{P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}} voidlbzgm(uintt,uchara)//两边逐个灭{uchari,j;for(j=0;j{P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}} voidsztl(uintt,uchara)//顺时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}voidnztl(uintt,uchara)//逆时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=P1=P2=P3=0xff;
P0=0x7f;delay(t);
for(i=0;i<7;i++)
P0=table1[i+1];
P2=table1[i];
delay(t);
}
P2=0x00;P1=0xfe;
P1=table[i+1];
P3=table1[i];
P3=0x00;delay(t);
voidqs(uintt,uchara)//全部闪烁
ucharj;
for(j=0;j{P0=P1=P2=P3=0xff;delay(t);P0=P1=P2=P3=0x00;delay(t);}} voidzgxh(uintt,uchara)//逆时针逐个点亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}for(i=0;i<8;i++){P1=table[i];delay(t);}for(i=0;i<8;i++){P3=table[i];delay(t);}for(i=0;i<8;i++){P2=table[i];delay(t);}}}voidnszgm(uintt,uchara)//逆时针逐个灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table3[i];delay(t);}for(i=0;i<8;i++){P1=table2[i];delay(t);}for(i=0;i<8;i++){P3=table2[i];delay(t);}for(i=0;i<8;i++){P2=table2[i];delay(t);}}voiddjs(uintt,uchara)//对角闪{ucharj;for(j=0;j{P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}} voidlbzgm(uintt,uchara)//两边逐个灭{uchari,j;for(j=0;j{P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}} voidsztl(uintt,uchara)//顺时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}voidnztl(uintt,uchara)//逆时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=P1=P2=P3=0x00;
voidzgxh(uintt,uchara)//逆时针逐个点亮
for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}for(i=0;i<8;i++){P1=table[i];delay(t);}for(i=0;i<8;i++){P3=table[i];delay(t);}for(i=0;i<8;i++){P2=table[i];delay(t);}}}voidnszgm(uintt,uchara)//逆时针逐个灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table3[i];delay(t);}for(i=0;i<8;i++){P1=table2[i];delay(t);}for(i=0;i<8;i++){P3=table2[i];delay(t);}for(i=0;i<8;i++){P2=table2[i];delay(t);}}voiddjs(uintt,uchara)//对角闪{ucharj;for(j=0;j{P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}} voidlbzgm(uintt,uchara)//两边逐个灭{uchari,j;for(j=0;j{P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}} voidsztl(uintt,uchara)//顺时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}voidnztl(uintt,uchara)//逆时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
for(i=0;i<8;i++)
P0=table1[i];
P1=table[i];
P3=table[i];
P2=table[i];
voidnszgm(uintt,uchara)//逆时针逐个灭
for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table3[i];delay(t);}for(i=0;i<8;i++){P1=table2[i];delay(t);}for(i=0;i<8;i++){P3=table2[i];delay(t);}for(i=0;i<8;i++){P2=table2[i];delay(t);}}voiddjs(uintt,uchara)//对角闪{ucharj;for(j=0;j{P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}} voidlbzgm(uintt,uchara)//两边逐个灭{uchari,j;for(j=0;j{P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}} voidsztl(uintt,uchara)//顺时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}voidnztl(uintt,uchara)//逆时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=table3[i];delay(t);
P1=table2[i];delay(t);
P3=table2[i];delay(t);
P2=table2[i];delay(t);
voiddjs(uintt,uchara)//对角闪
for(j=0;j{P0=P1=P2=P3=0xff;P0=P3=0x00;delay(t);P0=P1=P2=P3=0xff;P1=P2=0x00;delay(t);}} voidlbzgm(uintt,uchara)//两边逐个灭{uchari,j;for(j=0;j{P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}} voidsztl(uintt,uchara)//顺时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}voidnztl(uintt,uchara)//逆时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=P3=0x00;
P1=P2=0x00;
voidlbzgm(uintt,uchara)//两边逐个灭
for(j=0;j{P0=P2=0x00;P3=0x01;delay(t);for(i=7;i>1;i--){P1=table[i-1];P3=table1[i-2];delay(t);}P1=0xfe;P3=0xff;delay(t);P1=0xff;P2=0x01;delay(t);for(i=7;i>1;i--){P0=table1[i-1];P2=table1[i-2];delay(t);}P0=0x7f;P2=0xff;delay(t);P0=0xff;delay(t);}} voidsztl(uintt,uchara)//顺时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}voidnztl(uintt,uchara)//逆时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=P2=0x00;
P3=0x01;delay(t);
for(i=7;i>1;i--)
P1=table[i-1];P3=table1[i-2];
P1=0xfe;P3=0xff;delay(t);
P1=0xff;P2=0x01;delay(t);
P0=table1[i-1];
P2=table1[i-2];
P0=0x7f;P2=0xff;delay(t);
P0=0xff;delay(t);
voidsztl(uintt,uchara)//顺时逐个同步亮
for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table[i];P1=P2=P3=table1[i];delay(t);}}}voidnztl(uintt,uchara)//逆时逐个同步亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=table[i];
P1=P2=P3=table1[i];
voidnztl(uintt,uchara)//逆时逐个同步亮
for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];P1=P2=P3=table[i];delay(t);}}}voidsztm(uintt,uchara)//顺时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P1=P2=P3=table[i];
voidsztm(uintt,uchara)//顺时逐个同步灭
for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=table2[i];P1=P2=P3=table3[i];delay(t);}}} voidnztm(uintt,uchara)//逆时逐个同步灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=table2[i];
P1=P2=P3=table3[i];
voidnztm(uintt,uchara)//逆时逐个同步灭
for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table3[i];P1=P2=P3=table2[i];delay(t);}}}voidhwzjl(uintt,uchara)//横往中间亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=table3[i];
P1=P2=P3=table2[i];
voidhwzjl(uintt,uchara)//横往中间亮
for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=P2=P1=table1[i];P3=table[i];delay(t);}}}voidhwzjm(uintt,uchara)//横往中间灭{uchari,j;for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=P2=P1=table1[i];
P3=table[i];delay(t);
voidhwzjm(uintt,uchara)//横往中间灭
for(j=0;j{P0=P1=P2=P3=0x00;for(i=0;i<8;i++){P0=P2=P1=table3[i];P3=table2[i];delay(t);}}}voidnzdl(uintt,uchara)//逆时逐段亮{uchari,j;for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=P2=P1=table3[i];
voidnzdl(uintt,uchara)//逆时逐段亮
for(j=0;j{P0=P1=P2=P3=0xff;for(i=0;i<8;i++){P0=table1[i];delay(t);}P0=0xff;for(i=0;i<8;i++){P1=table[i];delay(t);}P1=0xff;for(i=0;i<8;i++){P3=table[i];delay(t);}P3=0xff;for(i=0;i<8;i++){P2=table[i];delay(t);}P2=0xff;}}voidnzdgl(uintt,uchara)//逆时逐段一个点亮{uchari,j,k,l;for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=0xff;
P1=0xff;
P3=0xff;
P2=0xff;
voidnzdgl(uintt,uchara)//逆时逐段一个点亮
uchari,j,k,l;
for(j=0;j{k=table1[0];P0=k;l=table[0];P1=P2=P3=l;delay(t);for(i=0;i<8;i++){k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);}}}voidjgs(uintt,uchara)//间隔闪{ucharj;for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
k=table1[0];
P0=k;l=table[0];
P1=P2=P3=l;delay(t);
k=_crol_(k,-1);
P0=k;
l=_crol_(l,1);
P1=P2=P3=l;
voidjgs(uintt,uchara)//间隔闪
for(j=0;j{P0=0x55;P1=P2=P3=0xaa;delay(t);P0=0xaa;P1=P2=P3=0x55;delay(t);}} voidmain(){uchari;while(1){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭jgs(300,10);djs(100,20);//对角闪////////////////////////////////////////////P1=P2=P3=0xff;for(i=0;i<3;i++){P0=0x00;delay(800);P0=0xff;delay(800);}P0=0x00;for(i=0;i<3;i++){P1=0x00;delay(800);P1=0xff;delay(800);}P1=0x00;for(i=0;i<3;i++){P3=0x00;delay(800);P3=0xff;delay(800);}P3=0x00;for(i=0;i<3;i++){P2=0x00;delay(800);P2=0xff;delay(800);}qs(500,3);/////////////////////////////////////////////for(i=0;i<6;i++){zgxh(50,1);nszgm(50,1);}djs(100,20);//对角闪for(i=0;i<3;i++){zg(100,1);//两边逐个亮lbzgm(100,1);//两边逐个灭}qs(200,10);djs(100,50);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(300,10);//对角闪nzdgl(300,10);//逆时逐段一个点亮jgs(300,10);//间隔闪for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);}nzdl(200,3);//逆时逐段亮jgs(50,100);//间隔闪//////////////////////////////////////////////////nzdgl(50,40);//逆时逐段一个点亮for(i=0;i<4;i++){zg(100,1);qs(100,10);lbzgm(100,1);}for(i=0;i<3;i++){zgxh(100,1);nszgm(100,1);} djs(1000,10);for(i=0;i<10;i++){hwzjl(200,1);//横往中间亮hwzjm(200,1);//横往中间灭}djs(300,10);//对角闪for(i=0;i<5;i++){zgxh(100,1);nszgm(100,1);}djs(100,20);//对角闪zg(300,1);lbzgm(300,1);for(i=0;i<5;i++){sztl(200,1);//顺时逐个同步亮nztm(200,1);nztl(200,1);sztm(200,1);//顺时逐个同步灭}djs(500,20);//对角闪djs(100,30);//对角闪djs(50,50);//对角闪delay(1000);}} voiddelay(uintt){uintx,y;for(x=t;x>0;x--){for(y=120;y>0;y--);}}点阵显示的程序如下:RS_CNTEQU30HNUMEQU31HTCON_TEQU32HORG00HLJMPSTARTORG0BHLJMPINT_T0START:MOVRS_CNT,#00HMOVNUM,#00HMOVTCON_T,#00HMOVTMOD,#01HMOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVIE,#82HSETBTR0SJMP$INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256MOVDPTR,#TABLEMOVA,RS_CNTMOVCA,@A+DPTRMOVP3,AMOVDPTR,#TABLE1MOVA,NUMMOVB,#8MULABADDA,RS_CNTMOVCA,@A+DPTRCPLAMOVP0,AINCRS_CNTMOVA,RS_CNTCJNEA,#8,NEXTMOVRS_CNT,#00HNEXT:INCTCON_TMOVA,TCON_TCJNEA,#200,RETUNEMOVTCON_T,#00HINCNUMMOVA,NUMCJNEA,#7,RETUNEMOVNUM,#00HRETUNE:RETITABLE:DB080H,040H,020H,010H,008H,004H,002H,001HTABLE1:DB00H,00H,42H,42H,7EH,42H,42H,00HDB30H,48H,44H,22H,44H,48H,30H,00HDB00H,00H,7EH,02H,02H,7EH,00H,00HDB00H,10H,10H,10H,10H,10H,10H,00HDB02H,2AH,2AH,7EH,2AH,6AH,22H,10HDB00H,10H,10H,10H,10H,10H,10H,00HDB00H,22H,7AH,2AH,7AH,22H,7EH,20HEND五、系统测试点阵的测试图:心形花样流水灯测试图:两边逐个点亮花型逆时针熄灭花型顺时针逐个熄灭的花型顺时针逐个点亮的花型对角逐个闪花型竖向中间灭花型六、总结与体会在本次设计中出现了很多问题:第一次焊接好之后,接通电源,没有任何反应。经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
P0=0x55;P1=P2=P3=0xaa;
P0=0xaa;P1=P2=P3=0x55;
voidmain()
uchari;
while
(1)
zg(100,1);//两边逐个亮
lbzgm(100,1);//两边逐个灭
jgs(300,10);
djs(100,20);//对角闪
////////////////////////////////////////////
P1=P2=P3=0xff;
for(i=0;i<3;i++)
P0=0x00;delay(800);
P0=0xff;delay(800);
P0=0x00;
P1=0x00;delay(800);
P1=0xff;delay(800);
P1=0x00;
P3=0x00;delay(800);
P3=0xff;delay(800);
P3=0x00;
P2=0x00;delay(800);
P2=0xff;delay(800);
qs(500,3);
/////////////////////////////////////////////
for(i=0;i<6;i++)
zgxh(50,1);
nszgm(50,1);
qs(200,10);djs(100,50);
for(i=0;i<5;i++)
sztl(200,1);//顺时逐个同步亮
nztm(200,1);
nztl(200,1);
sztm(200,1);//顺时逐个同步灭
djs(300,10);//对角闪
nzdgl(300,10);//逆时逐段一个点亮
jgs(300,10);//间隔闪
zgxh(100,1);
nszgm(100,1);
nzdl(200,3);//逆时逐段亮
jgs(50,100);//间隔闪
//////////////////////////////////////////////////
nzdgl(50,40);//逆时逐段一个点亮
for(i=0;i<4;i++)
zg(100,1);qs(100,10);
lbzgm(100,1);
djs(1000,10);
for(i=0;i<10;i++)
hwzjl(200,1);//横往中间亮
hwzjm(200,1);//横往中间灭
zg(300,1);
lbzgm(300,1);
djs(500,20);//对角闪
djs(100,30);//对角闪
djs(50,50);//对角闪
delay(1000);
voiddelay(uintt)
uintx,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
点阵显示的程序如下:
RS_CNTEQU30H
NUMEQU31H
TCON_TEQU32H
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVRS_CNT,#00H
MOVNUM,#00H
MOVTCON_T,#00H
MOVTMOD,#01H
MOVTH0,#(65536-5000)/256
MOVTL0,#(65536-5000)MOD256
MOVIE,#82H
SETBTR0
SJMP$
INT_T0:
MOVDPTR,#TABLE
MOVA,RS_CNT
MOVCA,@A+DPTR
MOVP3,A
MOVDPTR,#TABLE1
MOVA,NUM
MOVB,#8
MULAB
ADDA,RS_CNT
CPLA
MOVP0,A
INCRS_CNT
CJNEA,#8,NEXT
NEXT:
INCTCON_T
MOVA,TCON_T
CJNEA,#200,RETUNE
INCNUM
CJNEA,#7,RETUNE
RETUNE:
RETI
TABLE:
DB080H,040H,020H,010H,008H,004H,002H,001H
TABLE1:
DB00H,00H,42H,42H,7EH,42H,42H,00H
DB30H,48H,44H,22H,44H,48H,30H,00H
DB00H,00H,7EH,02H,02H,7EH,00H,00H
DB00H,10H,10H,10H,10H,10H,10H,00H
DB02H,2AH,2AH,7EH,2AH,6AH,22H,10H
DB00H,22H,7AH,2AH,7AH,22H,7EH,20H
END
五、系统测试
点阵的测试图:
心形花样流水灯测试图:
两边逐个点亮花型逆时针熄灭花型
顺时针逐个熄灭的花型顺时针逐个点亮的花型
对角逐个闪花型竖向中间灭花型
六、总结与体会
在本次设计中出现了很多问题:
第一次焊接好之后,接通电源,没有任何反应。
经仔细检查之后没有发现什么错误,也向老师和许多同学请教过,结果还是没一点反应,于是第一次的焊接宣告失败,无奈只好在从新开始焊。
第二次焊接的时候吸取了第一次的一些经验与教训,给每个I/O口都加上了200欧的电阻,并不断的纠正了自己的焊接方法,一步一步的,经过一下午的努力终于焊接好了,接通电源,一切正常工作,真是黄土不负有心人。
通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。
这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。
软件方面由于本人的技术有限只是对别人的一些程序进行更改,然后通过不断的调试,一步一步实现单片机的预定功能。
由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2