欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于AT89c51的16×16點(diǎn)陣設(shè)計(jì)原理圖+程序
[打印本頁(yè)]
作者:
Mr.Ddd
時(shí)間:
2020-5-28 02:35
標(biāo)題:
基于AT89c51的16×16點(diǎn)陣設(shè)計(jì)原理圖+程序
使用四塊8×8的點(diǎn)陣拼成16×16的點(diǎn)陣,用了兩個(gè)譯碼器,只設(shè)置了三個(gè)字(改字可以用字模轉(zhuǎn)換器)按鍵控制左移、右移、暫停、啟動(dòng)。
電路原理圖如下:
51hei.png
(49.31 KB, 下載次數(shù): 41)
下載附件
2020-5-29 01:53 上傳
單片機(jī)源程序如下:
/************************************************
16x16點(diǎn)陣漢字滾動(dòng)顯示
************************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LA=P1^0; //138譯碼器地址選擇引腳
sbit LB=P1^1;
sbit LC=P1^2;
sbit LD=P1^3;
sbit k1=P3^6; //啟動(dòng)或暫停按鍵
sbit k2=P3^7; //改變方向按鍵
bit fx=0; //滾動(dòng)方向
uint index=0; //列掃描索引
uchar code hztab[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x08,0x04,0x10,0x04,0x20,0x24,0x40,0x24,0xfc,0x24,0xa2,0x24,0x22,0xfd,0x22,0x26, //老
0x42,0x24,0x42,0x2c,0x42,0x14,0x82,0x24,0x1e,0x44,0x00,0x04,0x00,0x04,0x00,0x00,
0x00,0x00,0xe1,0x3f,0x02,0x00,0x0c,0x00,0xf0,0xff,0x00,0x00,0x00,0x40,0xf8,0x47, //師
0x00,0x44,0x00,0x44,0xff,0x7f,0x10,0x44,0x08,0x44,0xf0,0x47,0x00,0x40,0x00,0x00,
0x02,0x08,0x44,0x08,0xa8,0x0f,0x10,0xf8,0x68,0x08,0x86,0x0f,0x00,0x00,0x00,0x01, //好
0x02,0x41,0x01,0x41,0xfe,0x47,0x00,0x49,0x00,0x51,0x00,0x61,0x00,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//===================函數(shù)聲明====================
void T0_Init(); //定時(shí)器0初始化
void delayus(uint us); //延時(shí)函數(shù)
void keyscan(); //按鍵掃描函數(shù)
//====================主程序=====================
void main()
{
uchar i,j;
T0_Init(); //定時(shí)器0初始化
while(1)
{
keyscan(); //按鍵掃描
for(i=0;i<16;i++) //點(diǎn)陣16列
{
LA=i&0x01; //用級(jí)聯(lián)138進(jìn)行列選
LB=i&0x02;
LC=i&0x04;
LD=i&0x08;
j=index+i; //定位當(dāng)前要顯示的列
P0=hztab[j*2+1]; //發(fā)送點(diǎn)陣數(shù)據(jù)
P2=hztab[j*2]; //共兩個(gè)字節(jié)
delayus(100); //延時(shí)
P0=P2=0x00; //消影
}
delayus(100); //延時(shí)
}
}
//=================定時(shí)器0初始化=================
void T0_Init()
{
TMOD=0x01; //定時(shí)器0,工作方式1
TH0=(65536-10000)/256; //定數(shù)器初值
TL0=(65536-10000)%256; //10ms定時(shí)
ET0=1; //打開(kāi)定時(shí)器0中斷允許
EA=1; //打開(kāi)總中斷允許
TR0=0; //暫不啟動(dòng)定時(shí)器0
}
//===============定時(shí)中斷0服務(wù)程序===============
void timer0() interrupt 1
{
static uchar tick=0; //嘀嗒計(jì)時(shí)
TH0=(65536-10000)/256; //重裝裝初值
TL0=(65536-10000)%256; //10ms定時(shí)
tick++; //計(jì)數(shù)
if(tick==5) //5次
{
tick=0; //清0
if(fx==0)index=(index+1)%64; //若方向?yàn)樽笠疲瑒t掃描線加1
else index=(index-1+64)%64; //否則掃描線減1
}
}
//===================延時(shí)函數(shù)====================
void delayus(uint us)
{
while(us--);
}
//=================按鍵掃描函數(shù)==================
void keyscan()
{
if(k1==0) //檢測(cè)k1是否按下
{
delayus(100); //延時(shí)消抖
if(k1==0) //確認(rèn)k1被按下
{
TR0=~TR0; //定時(shí)器啟停反轉(zhuǎn)
while(k1==0); //等待按鍵松開(kāi)
}
}
if(k2==0) //檢測(cè)k2是否按下
{
delayus(100); //延時(shí)消抖
if(k2==0) //確認(rèn)k2被按下
{
fx=~fx; //方向反轉(zhuǎn)
while(k2==0); //等待按鍵松開(kāi)
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
16×16點(diǎn)陣.zip
(22.41 KB, 下載次數(shù): 59)
2020-5-28 02:30 上傳
點(diǎn)擊文件名下載附件
源碼+原理圖
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1