求助,求AT89C51控制16X16单片机16x16点阵字库的C51程序

AT89C51单片机C语言编程16*16点阵程序_百度知道
AT89C51单片机C语言编程16*16点阵程序
P0,P2口控制列,P1,P3口控制行!共阳的求一段c语言程序,“深圳我爱你”每个字出现一秒,然后一直循环可以的话附上说明谢谢急用!!!!
我有更好的答案
#include&&reg52.h&unsigned&char&code&tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; &//控制列,P2控制,低电平显示unsigned&char&code&digittab[10][8]={{0x俯弧碘旧鄢搅碉些冬氓00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},&//0
控制行,P0控制,高电平显示,八行十个数字{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00},&//1{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},&//2{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},&//3{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},&//4{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00},&//5{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00},&//6{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},&//7{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},&//8{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}&//9};unsigned&int&unsigned&char&a,b;sbit&duan=P3^6;//数码管段显示sbit&wei=P3^7;//数码管位显示/***************************************/&/*&&&&&&&&&&主程序&&&&&&&&&&&&&&&&&&&&&*/&/***************************************/void&main(void){&duan=1;&P0=0X00;&duan=0; &//关闭数码管段显示&wei=1; &//数码管位显示,,点阵行控制TMOD=0x01;//初装中断值TH0=()/256;TL0=()%256;TR0=1;ET0=1;EA=1;while(1)&{;}}/***************************************/&/*&&&&&&&&&&中断子程序&&&&&&&&&&&&&&&&&*/&/***************************************/&void&t0(void)&interrupt&1&using&0 &&//中断{TH0=()/256;TL0=()%256;P2=tab[a];&//共阳点阵,P2控制低电平,P0控制高电平P0=digittab[b][a]; //P0控制锁存器74HC573输出高电平控制行&&a++;if(a==8){&&a=0;}&&time++;if(time==233){&&time=0;&&b++;if(b==10){&&b=0;}}}
我有成套项目和图和程序,功能上要改一下,可代你做调试好
其他类似问题
为您推荐:
c语言编程的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁unsigned char code hanzi[];& & & & & & //汉字字模
Jrm 9,7/
&unsigned char BUFF[18],BUFF2[18];& & //左移显示的缓存
jk-e/C
&void qing(void);& & & & void xianshi(void);
&void fen(void);& & & & void zuo(void);
6im!v&1Qx
&void in_data(void);& & & & & & & & //调整数据
568qdD`PS
&void rxd_data(void);& & & & & & & & //左移发送数据
[mJmT-&
&void out_rxd(unsigned char *d);& & & & //分屏、上移发送数据
^;=L|{Xl
&char code sw[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x00}; /*8行段码*/
E3==gYCe*
&/***********主程序******************/
.,$&waGD
&void main(void)
g&oAa;~o
1YxG&K]
&& & SCON=0;P1=0;yid=0;zimo=0;
BJ,9C.|
&& & while(1)
&& & {& & fen();& & & & & & & & //分屏显示
+dgHl_,i
&& & & & for(ee=30;ee&0;ee--)//清屏幕3秒
swGp{wJ
&& & & & {qing();}
IqW4Q1&f
&& & & & zuo();& & & & & & & & //左移显示
! O~:
&& & & & for(ee=30;ee&0;ee--)
{#o0vWS&
&& & & & {qing();}
q&Sb&M/\,
Q 2mTu[tx
&/**********清屏幕*******************/
&void qing (void)
F).7%YfY
&{& unsigned char zz,xx=0x0
rY,zZR+@
&& & for (zz=33;zz&0;zz--)
&& & {out_rxd(&xx);}
&& & P1=0 P1=0;& & //锁存为高,74HC595锁存信号& &
ZR8%h&
&& & P2=0;& & & & & & & & //清74LS138的使能端
Q*54!^l+_r
Xf%vfAf
&/**********分屏显示***********/
s/\&;g:u^
&void fen(void)
UpSa7F:Uw
&{& & do{& & xianshi();& & }while(xx++&=5);& & //调用单屏显示
&& & xx=0;
}Dx5W9Ri"
$[U:Dk}
&/************单屏显示*************/
Aj{G=AT
&void xianshi(void)
sp7#e%R\
&{& & unsigned char ii,& & unsigned int kk,
/}Ct2w&&k
&& & for (kk=500;kk&0;kk--)& & & & //每屏显示500次
&& & {for(ii=1;ii&16;ii+=2)& & & & //每个汉字分8行扫描
ZK`x(h{p)
&& & & & {for (jj=0;jj&8;jj++)& & //每次要发送8个汉字的2个字节,发送8次
&& & & & & & {& & aa=(xx*8+jj)*32+
&& & & & & & & & out_rxd(&hanzi[aa]);& & //从串口输出第1个字的第1字节。
M5`wfF,j
&& & & & & & & & out_rxd(&hanzi[aa-1]);& & //从串口输出第1个字的第1字节。
&& & & & & & }
&& & & & & & for (jj=0;jj&8;jj++)& & //每次要发送8个汉字的2个字节,发送8次
xz){RkVzP
&& & & & & & {& & aa=(xx*8+jj)*32+
&& & & & & & & & out_rxd(&hanzi[aa+16]);& & //从串口输出第1个字的第17字节。
"FXT8Qxg
&& & & & & & & & out_rxd(&hanzi[aa+15]);& & //从串口输出第1个字的第18字节
p2j=73$
&& & & & & & }
B'KZ &jO
&& & & & & & P2=0x0
NplkhgSj
&& & & & & & P1=0 P1=0;& & & & & & //锁存为高,74HC595锁存信号& &
|^t8ct?x~
&& & & & & & P2=sw[h];& & & & & & & & & //输出行信号
T^.W'
&& & & & & & h++;& & & & & & & & & & & & & //行加一
WHv xBd
&& & & & & & if(h==8)h=0;
I~NQt^sg
&& & & & }
\7A6+[ `fa
~U_,z)&`)c
ee{8C~
&/***************左移显示************/
x@480r
&void zuo(void)
m\?H & o0
&{& & unsigned char i,d=5;& & //d为移动的时候一个汉字的扫描显示次数
&& & xianshi();& & & & & & & & //调用单屏显示
-% Z?rn2
&& & while(zimo&=1450)
C"!k`i=Lj
&& & & & {while(yid&16)& & & & & & & & & & //数据移位。
enJgk(
&& & & & & & {for(i=0;i&d;i++)& & & & & & & & //移动速度
27-GfC=7*
&& & & & & & & & {for(h=0;h&8;h++)& & & & & & & //8行扫描
~i y]X:U
&& & & & & & & & & & {& & in_data();& & & & & & //调整数据
Z&E!m 
&& & & & & & & & & & & & rxd_data();& & & & //串口发送数据
6@[7
&& & & & & & & & & & & & P2=sw[h];& & & & & & //送段码
-*T&^G;rK
&& & & & & & & & & & & & P1=0& & & & & & //锁存为高,595锁存信号
mjtmN0^SR
&& & & & & & & & & & & & P1=0;
yhpeP
&& & & & & & & & & & }
!ENDQ?1
&& & & & & & & & }
QwSYjR:K
&& & & & & & & & yid++;& & & & & & & & & & & & //移动一步
:|tWKA
&& & & & & & }
RU_wr&
&& & & & & yid=0;zimo=zimo+32;& & & & & & & //后移一个字,
v?=y9lEH@%
&& & & & }
y9xvGr[l
&& & zimo=0;
'C2X9/!,
&/*************分屏显示的数据发送************/
QK`5KB(k'
&void out_rxd(unsigned char *d)& & & /*从串口发送数据*/
&{& & SBUF=*d; while(!TI);& & & & & //等待发送完毕
^kO+NH40
&& & TI=0;
w5+H9R6
NZoNsNu*C.
&/*******左移显示读取数据 并调整**************/
0;Oe&Y
&void in_data(void)
Oo0SDWI`(
&{& & char s,w;
&& & for(s=8;s&=0;s--)
&& & {& & w=s+s;
n "bii7h
&& & & & qqq=zimo+h+h+s*32;
2Onp{,'}
&& & & & BUFF[w+1]=hanzi[qqq];
.0Kc|b=w
&& & & & BUFF[w]=hanzi[qqq+1];
@PT([1C
&& & & & BUFF2[w+1]=hanzi[qqq+16];
$&QrV,T
&& & & & BUFF2[w]=hanzi[qqq+17];
Obf RwZh?q
]9N&I/-
RH.qbPjx
&/**********左移显示的数据调整发送***************/
'451H3LC0
&void rxd_data(void)& & & & & & & & & & //串行发送数据
]"&](e6*
&{unsigned char inc,s,tempyid,
&if(yid&8)& & inc=0;
v\[+
&else& & & & inc=1;
Mf2F LrAh
&for(s=0+s&16+s++)& & & & & & & //发送数据
n)~*BpL3
&& & { if(yid&8)& & tempyid=
ae2Q^yLA
&& & & else& & & & & & tempyid=yid-8;
?=ffv]v|
&& & temp=(BUFF[s]&&tempyid)|(BUFF[s+1]&&(8-tempyid));& &
j*5IRzK1%0
&& & SBUF=& & & & & & //把BUFF中的字节从大到小移位相或后发送输出。
sO` oapy
&& & while(!TI);TI=0;& & //等待发送中断
hJ$9Hb
&for(s=0+s&16+s++)& & & & & & & //发送8字节数据
R0}1:1}$Sn
&& & {& if(yid&8)& & tempyid=
&& & & else& & & & tempyid=yid-8;
 ]'`E
&& & temp=(BUFF2[s]&&tempyid)|(BUFF2[s+1]&&(8-tempyid));& &
&& & SBUF=& & & & & & //把BUFF中的字节从大到小移位相或后发送输出。
"~5cz0 H3v
&& & while(!TI);TI=0;& & //等待发送中断
~x^y5[5{
=nGFLH6)
&unsigned char code hanzi[]={/*自己的汉字请放在这里*/};
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670& 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
单片机点阵课程设计--16X16点阵显示屏的设计
下载积分:1000
内容提示:单片机点阵课程设计--16X16点阵显示屏的设计
文档格式:DOC|
浏览次数:97|
上传日期: 17:46:31|
文档星级:
该用户还上传了这些文档
单片机点阵课程设计--16X16点阵显示屏的设计
官方公共微信8*8点阵C51程序_百度知道
8*8点阵C51程序
一.基于51的点阵屏显示:(1)点亮第一个8*8点阵:
1.首先在Proteus下选择我们需要的元件,AT89C51、74LS138、MATRIX-8*8-GREEN(在这里使用绿色的点阵)。在Proteus 6.9中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN,MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE ,MATRIX-8*8-RED。在这里请牢记:红色的为上列选下行选;其它颜色的为上行选下列选!而所有的点阵都是高电平选中列,低电平选中行!也就是说如果某一个点所处的行信号为低,列信号为高,则该点被点亮!此结论是我们编程的基础。
2.在选择完以上三个元件后,我们开始布线,具体如下图:这里P2是列选,P3连接38译码器后作为行选。选择38译码器的原因:38译码器每次可输出相应一个I/O口的低电平,正好与点阵屏的低电平选中行相对,并且节省了I/O口,大大方便了我们的编程和以后的扩展。3.下面让我们把它点亮,先看一个简单的程序:(将奇数行偶数列的点点亮,效果如下图)下面是源代码:/************8*8LED点阵屏显示*****************/#include&reg51.h&void delay(int z) //延时函数 {
for(x=0;x&z;x++)
for(y=0;y&110;y++);}void main(){
//行选,选择第一行
//列选,即该行显示的数据
//延时
/*****下同*****/
//第三行
delay(5);P3=4;
//第五行
delay(5);P3=6;
//第七行
}上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。重点让我们看while循环内,首先是行选P3=0,此时38译码器的输入端为000,则输出端为,即B0端为低电平,此时选中了点阵屏的第一行,接着列选我们给P2口赋0x55,即,此时又选中了偶数列,紧接着延时。然后分别对第三、五、七行进行相同的列选。这样就点亮了此点阵屏奇数行偶数列交叉的点。完成这个程序,我们会发现其实点阵屏的原理是如此简单,和数码管的动态显示非常相似,只不过换了一种方式而已。对不起啦,我传了三次图片都没传上,郁闷哪!希望你能理解哈! 不过我有传一份WORD文档在我的空间里面
其他类似问题
为您推荐:
单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C51_LCD12864 AT89C51/52单片机驱动点阵液晶屏 的程序, 封装好,直接在工程中添加 SCM 开发 238万源代码下载-
&文件名称: C51_LCD12864
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 1 KB
&&上传时间:
&&下载次数: 8
&&提 供 者:
&详细说明:AT89C51/52单片机驱动点阵液晶屏LCD12864的程序,已经封装好,直接在工程中添加LCD12864.C文件,并且在主函数中#include LCD12864.H-AT89C51/52 dot matrix LCD driver chip LCD12864 procedures are packaged well, directly in the project to add LCD12864.C file, and in the main function# include LCD12864.H
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&C51_LCD12864\LCD12864.c&&............\LCD12864.H&&C51_LCD12864
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 51单片机 J12864中文示例程序
THE LCD OF 12864 FOR 51 MCU
&[] - 51单片机驱动液晶显示任意波形,用于冶金界面的显示和做图,人机界面。
&[] - 12864液晶显示头文件,用于keilc软件,51单片机,经测试,向液晶读写数据,显示功能正常}

我要回帖

更多关于 16x16点阵 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信