07 點陣16X16 四個模塊級連原理圖與內存分配圖.pdf
(111.34 KB, 下載次數: 51)
2021-1-3 20:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
04 點陣16X16 單個模塊原理圖.pdf
(84.31 KB, 下載次數: 39)
2021-1-3 20:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
02 點陣工作原理與焊接制作注意事項.pdf
(14.4 MB, 下載次數: 27)
2021-1-3 20:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
電路原理圖如下:
51hei.png (230.41 KB, 下載次數: 72)
下載附件
2021-1-4 01:26 上傳
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
//1、本程序適用于:由4個595驅動的16*16點陣。先發16位陽極列選信號,再發送陰極字節模數據。
//2、為方便閱讀,使用傳統編程思路編寫,并未使用框架式編程方式,
//3、本程序使用11.0592M晶振,STC89C52RC單片機12T模式工作。
//4、11.0592M晶振,刷新率50幀,太低會閃爍、太高CPU卡頓。
//5、89系列單片機下載的時候,如果“使能6T(雙倍速)模式,可以增加單片機運行速度。
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
#include<REG52.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
//------漢字字模保存數組code
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
uchar code hanzi[10][32]=
{
//五角星
{ 0x00,0x00,0x04,0x00,0x06,0x02,0x07,0x0C,0x07,0xBC,0x07,0xF8,0x0F,0xF8,0x3F,0xF0,0xFF,0xE0,0x3F,0xF0,0x0F,0xF8,0x07,0xF8,0x07,0xBC,0x07,0x0C,0x06,0x02,0x04,0x00 },
//祁
{ 0x10,0x20,0x10,0x40,0x10,0x80,0x91,0x00,0x73,0xFF,0x15,0x00,0x18,0x80,0x00,0x00,0x7F,0xFF,0x40,0x10,0x42,0x08,0x4D,0x04,0x70,0x88,0x00,0x70,0x00,0x00,0x00,0x00 },
//緒
{ 0x04,0x44,0x0C,0xC6,0x35,0x44,0xC6,0x48,0x0C,0x68,0x02,0x48,0x22,0x80,0x23,0xFF,0x22,0x92,0xFE,0x92,0x2A,0x92,0x32,0x92,0x23,0xFF,0x46,0x80,0x02,0x00,0x00,0x00 },
//電
{ 0x00,0x00,0x1F,0xE0,0x12,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0xFF,0xFC,0x12,0x42,0x12,0x42,0x12,0x42,0x12,0x42,0x3F,0xE2,0x10,0x02,0x00,0x0E,0x00,0x00,0x00,0x00 },
//子
{ 0x01,0x00,0x01,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x02,0x41,0x01,0x47,0xFE,0x45,0x00,0x49,0x00,0x51,0x00,0x61,0x00,0x01,0x00,0x03,0x00,0x01,0x00,0x00,0x00 },
//黑桃
{ 0x00,0x00,0x03,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0xF0,0x3F,0xE1,0x7F,0xC3,0xFF,0xFF,0xFF,0xFF,0x7F,0xC3,0x3F,0xE1,0x1F,0xF0,0x0F,0xF0,0x07,0xE0,0x03,0xC0,0x00,0x00 },
//紅心
{ 0x00,0x00,0x07,0x80,0x0F,0xC0,0x1F,0xE0,0x1F,0xF0,0x1F,0xF8,0x0F,0xFC,0x07,0xFE,0x07,0xFE,0x0F,0xFC,0x1F,0xF8,0x1F,0xF0,0x1F,0xE0,0x0F,0xC0,0x07,0x80,0x00,0x00 },
//梅花
{ 0x00,0x00,0x00,0xE0,0x01,0xF0,0x03,0xF8,0x33,0xF8,0x79,0xF1,0xFD,0xE3,0xFF,0xFF,0xFF,0xFF,0xFD,0xE3,0x79,0xF1,0x33,0xF8,0x03,0xF8,0x01,0xF0,0x00,0xE0,0x00,0x00 },
//方片
{ 0x00,0x00,0x01,0x00,0x03,0x80,0x07,0xC0,0x0F,0xE0,0x1F,0xF0,0x3F,0xF8,0x7F,0xFC,0xFF,0xFE,0x7F,0xFC,0x3F,0xF8,0x1F,0xF0,0x0F,0xE0,0x07,0xC0,0x03,0x80,0x01,0x00 },
//花點
{ 0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA,0x55,0x55 }
};
uchar idata Mould[2]; //控制該列的取模值,低電平亮燈,每個模組16行,占2字節
uchar idata upright[2]; //控制某一列,高電平亮燈,每個模組16列,占2字節
uchar idata LED2X64[34]; //開辟緩存空間,被定時器隨時調用。每列兩個字節,多加2個用于移位操作。
sbit HC595_DS=P3^6; //74HC595的數據
sbit HC595_SH=P3^5; //74HC595的時鐘
sbit HC595_ST=P3^4; //74HC595的鎖存
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
//------定時器0配置:16位定時器,1.25ms顯示1列,幀率50幀。
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
void Timer0_Init()
{
TMOD&=0Xf0; //16位定時器模式,需要人工重裝初值
TMOD|=0X01; //16位定時器模式,需要人工重裝初值
TL0=0x80;
TH0=0xf8; //STC89最高刷新率60幀,太高了會占用CPU
ET0=1; //定時器0中斷閉合導通
TR0=1; //定時器0啟動
EA=1; //總中斷閉合導通
}
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
//------發送數據到595芯片
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
void HC595_Write() //74HC595發送數據。
{
uchar value,i,j=1;
value=upright[j*2-1];
for(i=0;i<8;i++) //發送給每個模組的 U4 ,高電平整列可以亮,低電平整列滅。
{
HC595_SH=0; //時鐘拉低
HC595_DS=value&0x80; //從最后一個字節開始,先高位后低位。
value<<=1; //字節左移
HC595_SH=1; //時鐘上升沿拷貝
}
value=upright[j*2-2];
for(i=0;i<8;i++) //發送給每個模組的 U3 ,高電平整列可以亮,低電平整列滅。
{
HC595_SH=0; //時鐘拉低
HC595_DS=value&0x80; //從最后一個字節開始,先高位后低位。
value<<=1; //字節左移
HC595_SH=1; //時鐘上升沿拷貝
}
value=Mould[j*2-1];
for(i=0;i<8;i++) //發送給每個模組的 U2 ,低電平整行可以亮,高電平整行全滅。
{
HC595_SH=0; //時鐘拉低
HC595_DS=value&0x80; //從最后一個字節開始,先高位后低位。
value<<=1; //字節左移
HC595_SH=1; //時鐘上升沿拷貝
}
value=Mould[j*2-2];
for(i=0;i<8;i++) //發送給每個模組的 U1 ,低電平整行可以亮,高電平整行全滅。
{
HC595_SH=0; //時鐘拉低
HC595_DS=value&0x80; //從最后一個字節開始,先高位后低位。
value<<=1; //字節左移
HC595_SH=1; //時鐘上升沿拷貝
}
HC595_ST=1; //鎖存脈沖信號,上升沿。
HC595_DS=0; //延時
HC595_ST=0; //鎖存脈沖信號復位。
HC595_SH=0;
}
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
////定時器中斷處理,16位定時器,控制595函數1.25ms顯示1列,幀率50幀。
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
void Timer0_Routnie (void) interrupt 1
{
static uchar i;
static uint kkk=0x0001; //用于16列輪流控制
TH0=0xfb; //定時器賦初始值65536-(11059200÷6T÷16列÷50幀)
TL0=0x95; //STC89最高刷新率60幀,太高了會占用CPU, 0x95是微調值約等于計算值
Mould[1]=~LED2X64[i+1]; //i=0,把緩存的第01號字節發送到第一個模組的最左邊的下8位。
Mould[0]=~LED2X64[i+0]; //i=0,把緩存的第00號字節發送到第一個模組的最左邊的上8位。
upright[1]=kkk/256; //16位變量KKK,取高8位?刂频谝粋模組的0~7列。
upright[0]=kkk%256; //16位變量KKK,取低8位?刂频谝粋模組的8~15列。
kkk=_irol_(kkk,1); //循環控制0~16列
i++;i++;
i=i%32;
HC595_Write(); //595的緩存Mould[8]、upright[8],得到數據后,立馬發送到芯片
}
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
//------主函數
//------------------------------------------------------------------------------------------------祁緒電子《人人學會單片機》------
void main() //主函數
{
uchar k=0;
for(k=0;k<32;k++)
{
LED2X64[k]=hanzi[k/32+1][k%32]; //把要顯示的內容寫入緩存
}
HC595_DS=0; //初始化595IO口拉低
HC595_SH=0; //初始化595IO口拉低
HC595_ST=0; //初始化595IO口拉低
Timer0_Init(); //初始化定時器
while(1) //大循環
{
}
}
|