村网通总站 姬家寨村 455496.nync.com 欢迎您!
//*《姬家寨村电子科技视频网》*/
//硬件设计:姬学瑞;软件编程:姬学瑞;
//版权所有;侵权必究!
//姬家寨村电子科技研究所监制。
/*头文件*/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define NOP() _nop_()
/*端口定义*/
#define ABCD_port P1 //HC138 ABCD端口定义
//sbit D_port = P1^7;
//sbit C_port = P1^6;
//sbit B_port = P1^5;
//sbit A_port = P1^4;
sbit EN_port = P1^3;//定义译码器控制端口
sbit S_IN_port = P1^2;//锁存器串行数据输入端
sbit RCK_port = P1^1;
sbit SRCK_port = P1^0;
uchar code ziku_table[]={
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xFF,0xFF,0xFF,0xE1,0xC0,0x80,0x80,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFF,0x87,0x03,0x01,0x01,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF,//心形
0xFF,0xEF,0xFF,0xB7,0xFF,0xDB,0xFF,0xED,0xFF,0xF6,0x7F,0xFB,0xBF,0xFD,0xDF,0xFE,
0xBF,0xFD,0x7F,0xFB,0xFF,0xF6,0xFF,0xED,0xFF,0xDB,0xFF,0xB7,0xFF,0xEF,0xFF,0xDF,/*"《",0*/
0xF7,0xFF,0x77,0x80,0x77,0xF7,0x77,0xF7,0x40,0xF7,0x5B,0xC1,0x5B,0xDD,0x5B,0xDD,
0x6D,0xDD,0x6B,0xDD,0x77,0xC1,0x77,0xF7,0x6B,0xF7,0x5D,0xF7,0x5E,0x80,0xFF,0xFF,/*"姬",1*/
0xBF,0xFF,0x7F,0xFF,0x03,0x80,0xFD,0xDF,0x05,0xE8,0x7F,0xFF,0xBF,0xFF,0x0F,0xFB,
0xB1,0xF2,0xDF,0xFC,0x67,0xFC,0x99,0xF2,0xE7,0x8E,0xF9,0xDE,0x5F,0xFF,0xBF,0xFF,/*"家",2*/
0x7F,0xFF,0xFF,0xFE,0x01,0x80,0xDD,0xCD,0x06,0xF0,0xDF,0xFD,0x07,0xE0,0xDF,0xFD,
0x01,0x80,0x6F,0xF7,0x13,0x88,0x7C,0xDF,0x6F,0xFB,0x77,0xE7,0x5B,0xF7,0xBF,0xFF,/*"寨",3*/
0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0x40,0x80,0xF7,0xF7,0xE3,0xF7,0x53,0xF7,
0xD5,0xF6,0xF5,0xF6,0xF6,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF5,0xF7,0xFB,/*"村",4*/
0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x03,0xE0,0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0x7B,0xEF,
0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0x7B,0xEF,0x7F,0xBF,0x7F,0xBF,0xFF,0x80,0xFF,0xFF,/*"电",5*/
0xFF,0xFF,0x03,0xF0,0xFF,0xFB,0xFF,0xFD,0xFF,0xFE,0x7F,0xFF,0x7F,0xFF,0x7F,0xDF,
0x00,0x80,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x5F,0xFF,0xBF,0xFF,/*"子",6*/
0x9F,0xEF,0xE1,0xEE,0xEF,0xED,0xEF,0xED,0x80,0xEF,0xE7,0xEE,0xC7,0xED,0xAB,0xED,
0xEB,0x8F,0xED,0xE1,0x2E,0xEE,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,/*"科",7*/
0xF7,0xFB,0xF7,0xFB,0xF7,0xFB,0x40,0x80,0xF7,0xFB,0xD7,0xFB,0x67,0xC0,0x73,0xEF,
0xF4,0xEE,0xF7,0xF6,0xF7,0xF9,0xF7,0xF9,0xF7,0xF6,0x77,0x8F,0x95,0xDF,0xFB,0xFF,/*"技",8*/
0xFB,0xFF,0x67,0xC0,0x77,0xDF,0x40,0xDB,0x5F,0xDB,0x6F,0xDB,0x77,0xDB,0x6B,0xDB,
0x55,0xDB,0x96,0xD5,0xD7,0xF5,0xF7,0xF6,0xF7,0xB6,0x77,0xB7,0xB7,0x8F,0xD7,0xFF,/*"视",9*/
0xEF,0xFF,0xEF,0x80,0x8D,0xFB,0xED,0xFD,0xED,0xC0,0x80,0xDE,0xFF,0xDA,0xEF,0xDA,
0xAD,0xDA,0xAD,0xDA,0xDE,0xDA,0xEF,0xF5,0xF7,0xED,0xFB,0x9E,0x3C,0xBF,0xFF,0xFF,/*"频",10*/
0xFF,0xFF,0x01,0xC0,0xFD,0xDF,0x7D,0xDF,0x75,0xD7,0xAD,0xC6,0xDD,0xD5,0xDD,0xDB,
0xAD,0xDB,0xAD,0xD5,0x75,0xD6,0x79,0xDF,0xFD,0xDF,0xFD,0xC7,0xFD,0xEF,0xFF,0xFF,/*"网",11*/
0xFB,0xFF,0xF6,0xFF,0xED,0xFF,0xDB,0xFF,0xB7,0xFF,0x6F,0xFF,0xDF,0xFE,0xBF,0xFD,
0xDF,0xFE,0x6F,0xFF,0xB7,0xFF,0xDB,0xFF,0xED,0xFF,0xF6,0xFF,0xFB,0xFF,0xFD,0xFF,/*"》",12*/
0xFF,0xFF,0xFF,0xE3,0xDD,0xBE,0xBE,0xBE,0xBE,0xBE,0xB2,0xAC,0xCD,0xE3,0x9F,0xFF,/*"Q",0*/
0xFF,0xFF,0xFF,0xE3,0xDD,0xBE,0xBE,0xBE,0xBE,0xBE,0xB2,0xAC,0xCD,0xE3,0x9F,0xFF,/*"Q",1*/
0xFF,0xDE,0x81,0x9D,0xB7,0xEB,0x80,0x80,0xB7,0xF7,0xB7,0xF7,0x81,0xC1,0xF7,0xF7,
0xFB,0xF7,0x83,0xF7,0xB9,0x80,0xBA,0xF7,0xBB,0xF7,0x83,0xF7,0xBB,0xF7,0xFF,0xF7,/*"群",2*/
0x07,0xF0,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0x07,0xF0,0xFF,0xFF,0x00,0x80,0xEF,0xFF,
0xEF,0xFF,0x07,0xF0,0xEF,0xF7,0xFF,0xF7,0xFF,0xF7,0x7F,0xF7,0xFF,0xFA,0xFF,0xFD,/*"号",3*/
0xFF,0xFF,0x40,0xE0,0xF7,0xEF,0xF7,0xEE,0xF7,0xEE,0xFB,0xEE,0xC3,0xEE,0xD9,0xC0,
0xDA,0xDF,0xDB,0xDF,0x5B,0xD0,0xDB,0xDF,0xC3,0xDF,0xDB,0xDF,0xFB,0xEB,0xFF,0xF7,/*"码",4*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xF3,0xFF,0xF3,0xFF,0xFF,0xFF,0xF3,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,/*":",5*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xDF,0xE7,0xDF,0xBF,0xBF,0xBD,0xDD,0xE3,0xFF,0xFF,/*"3",6*/
0xFF,0xFF,0xFF,0x81,0xDD,0xDD,0xEF,0xEF,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xFF,0xFF,/*"7",7*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xDF,0xE7,0xDF,0xBF,0xBF,0xBD,0xDD,0xE3,0xFF,0xFF,/*"3",8*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",9*/
0xFF,0xFF,0xFF,0xDF,0xCF,0xD7,0xDB,0xDB,0xDD,0xDD,0x81,0xDF,0xDF,0x87,0xFF,0xFF,/*"4",10*/
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0x9B,0xA7,0xBF,0xBF,0xDB,0xE3,0xFF,0xFF,/*"9",11*/
0xFF,0xFF,0xFF,0xC7,0xDB,0xFD,0xFD,0xE5,0xD9,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6",12*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xDF,0xE7,0xDF,0xBF,0xBF,0xBD,0xDD,0xE3,0xFF,0xFF,/*"3",13*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",14*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",15*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF3,0xFF,0xF3,0xFF,0xFF,0xFF,0xF3,0xFF,0xF3,0xFF,0xF7,0xFF,0xFB,0xFF,0xFF,0xFF,/*";",16*/
0xFF,0xC7,0x6D,0xF8,0x6D,0xFF,0x6D,0xFF,0x01,0xFF,0x7D,0xC0,0x7D,0xEE,0x61,0xEE,
0x6D,0xF5,0x6D,0xF5,0x6D,0xFB,0xAD,0xF3,0xAD,0xF5,0xDD,0xEE,0x6E,0x8F,0xBF,0xDF,/*"版",0*/
0xF7,0xFF,0xF7,0xFF,0x77,0xC0,0x80,0xDE,0xF7,0xEE,0xF3,0xEE,0xE3,0xEE,0xD3,0xED,
0xD5,0xF5,0xF5,0xF5,0xF6,0xFB,0xF7,0xFB,0xF7,0xF5,0x77,0x8E,0x97,0xDF,0xF7,0xFF,/*"权",1*/
0x8F,0x87,0xF1,0xF8,0xFD,0xFE,0xFD,0xFE,0xC1,0xFE,0xDD,0x80,0xDD,0xEE,0xDD,0xEE,
0xC1,0xEE,0xFD,0xEE,0x7D,0xEF,0x7D,0xEF,0xBD,0xEF,0xBD,0xEF,0xDE,0xEF,0xEF,0xEF,/*"所",2*/
0x7F,0xFF,0x7F,0xFF,0x01,0x80,0xBF,0xFF,0xDF,0xFF,0x0F,0xF0,0xE7,0xF7,0xEB,0xF7,
0x0D,0xF0,0xEE,0xF7,0xEF,0xF7,0x0F,0xF0,0xEF,0xF7,0xEF,0xF6,0xEF,0xF1,0xEF,0xFB,/*"有",3*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF3,0xFF,0xF3,0xFF,0xFF,0xFF,0xF3,0xFF,0xF3,0xFF,0xF7,0xFF,0xFB,0xFF,0xFF,0xFF,/*";",4*/
0xF7,0xFF,0x27,0xE0,0xF7,0xEF,0x3B,0xE0,0xFB,0xEF,0x31,0xE0,0xFA,0xFF,0x1B,0x80,
0xEB,0xBF,0x2B,0xD0,0x7B,0xF7,0x7B,0xFB,0xFB,0xFC,0x7B,0xF2,0x8B,0x8F,0xFF,0xFF,/*"侵",5*/
0xF7,0xFF,0xF7,0xFF,0x77,0xC0,0x80,0xDE,0xF7,0xEE,0xF3,0xEE,0xE3,0xEE,0xD3,0xED,
0xD5,0xF5,0xF5,0xF5,0xF6,0xFB,0xF7,0xFB,0xF7,0xF5,0x77,0x8E,0x97,0xDF,0xF7,0xFF,/*"权",6*/
0xDF,0xFF,0xBF,0xF7,0x7F,0xE6,0x7F,0xF7,0xCF,0xFB,0xEF,0xFB,0xEB,0xF5,0xEB,0xED,
0xEB,0xDE,0x6D,0x9F,0xAD,0xDF,0xCF,0xEF,0xE7,0xEF,0x0B,0xE0,0xFC,0xFF,0xFF,0xFF,/*"必",7*/
0xBF,0xFF,0x7F,0xFF,0x01,0x80,0xFD,0xDF,0xB7,0xFB,0xBB,0xF7,0xBD,0xEF,0x07,0xFC,
0xBF,0xFD,0xBF,0xFD,0xDF,0xFD,0xDF,0xBD,0xEF,0xBD,0xF7,0xBD,0xFB,0x83,0xFF,0xFF,/*"究",8*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,
0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,/*"!",9*/
0xF7,0xFF,0x77,0x80,0x77,0xF7,0x77,0xF7,0x40,0xF7,0x5B,0xC1,0x5B,0xDD,0x5B,0xDD,
0x6D,0xDD,0x6B,0xDD,0x77,0xC1,0x77,0xF7,0x6B,0xF7,0x5D,0xF7,0x5E,0x80,0xFF,0xFF,/*"姬",0*/
0xBF,0xFF,0x7F,0xFF,0x03,0x80,0xFD,0xDF,0x05,0xE8,0x7F,0xFF,0xBF,0xFF,0x0F,0xFB,
0xB1,0xF2,0xDF,0xFC,0x67,0xFC,0x99,0xF2,0xE7,0x8E,0xF9,0xDE,0x5F,0xFF,0xBF,0xFF,/*"家",1*/
0x7F,0xFF,0xFF,0xFE,0x01,0x80,0xDD,0xCD,0x06,0xF0,0xDF,0xFD,0x07,0xE0,0xDF,0xFD,
0x01,0x80,0x6F,0xF7,0x13,0x88,0x7C,0xDF,0x6F,0xFB,0x77,0xE7,0x5B,0xF7,0xBF,0xFF,/*"寨",2*/
0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0x40,0x80,0xF7,0xF7,0xE3,0xF7,0x53,0xF7,
0xD5,0xF6,0xF5,0xF6,0xF6,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF5,0xF7,0xFB,/*"村",3*/
0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x03,0xE0,0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0x7B,0xEF,
0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0x7B,0xEF,0x7F,0xBF,0x7F,0xBF,0xFF,0x80,0xFF,0xFF,/*"电",4*/
0xFF,0xFF,0x03,0xF0,0xFF,0xFB,0xFF,0xFD,0xFF,0xFE,0x7F,0xFF,0x7F,0xFF,0x7F,0xDF,
0x00,0x80,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x5F,0xFF,0xBF,0xFF,/*"子",5*/
0x9F,0xEF,0xE1,0xEE,0xEF,0xED,0xEF,0xED,0x80,0xEF,0xE7,0xEE,0xC7,0xED,0xAB,0xED,
0xEB,0x8F,0xED,0xE1,0x2E,0xEE,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,/*"科",6*/
0xF7,0xFB,0xF7,0xFB,0xF7,0xFB,0x40,0x80,0xF7,0xFB,0xD7,0xFB,0x67,0xC0,0x73,0xEF,
0xF4,0xEE,0xF7,0xF6,0xF7,0xF9,0xF7,0xF9,0xF7,0xF6,0x77,0x8F,0x95,0xDF,0xFB,0xFF,/*"技",7*/
0xFF,0xFF,0x40,0x80,0xF7,0xEE,0xF7,0xEE,0xFB,0xEE,0xFB,0xEE,0x21,0x80,0xE9,0xEE,
0xEA,0xEE,0xEB,0xEE,0xEB,0xEE,0x6B,0xEF,0x63,0xEF,0xBB,0xEF,0xDF,0xEF,0xEF,0xEF,/*"研",8*/
0xBF,0xFF,0x7F,0xFF,0x01,0x80,0xFD,0xDF,0xB7,0xFB,0xBB,0xF7,0xBD,0xEF,0x07,0xFC,
0xBF,0xFD,0xBF,0xFD,0xDF,0xFD,0xDF,0xBD,0xEF,0xBD,0xF7,0xBD,0xFB,0x83,0xFF,0xFF,/*"究",9*/
0x8F,0x87,0xF1,0xF8,0xFD,0xFE,0xFD,0xFE,0xC1,0xFE,0xDD,0x80,0xDD,0xEE,0xDD,0xEE,
0xC1,0xEE,0xFD,0xEE,0x7D,0xEF,0x7D,0xEF,0xBD,0xEF,0xBD,0xEF,0xDE,0xEF,0xEF,0xEF,/*"所",10*/
0xDF,0xFE,0xDB,0xFC,0xDB,0xFE,0xDB,0x80,0x5B,0xFD,0x9B,0xFB,0xDB,0xF3,0xDF,0xF7,
0xFF,0xFF,0x03,0xE0,0xDB,0xEE,0xDB,0xEE,0xDB,0xEE,0xDB,0xEE,0x00,0x80,0xFF,0xFF,/*"监",11*/
0xDB,0xDF,0xD3,0xDF,0xDB,0xDB,0x03,0xDA,0xDD,0xDB,0xDF,0xDB,0x01,0xDA,0xDF,0xDB,
0x03,0xDA,0xDB,0xDA,0xDB,0xDA,0xDB,0xDA,0xDB,0xDE,0x1B,0xDE,0x5F,0xD7,0xDF,0xEF,/*"制",12*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xED,0xFF,0xED,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,/*"。",13*/
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
};
uchar data disp_buff[32]; //32 个显示数据缓存
//数据格式为 第1级第1行高八位,低八位,第1级第2行高八位。。。。。。
uchar data disp_han; //目前显示到第几行
void T0_Set() /*定义中断方式,中断时间*/
{
TMOD = 0x01; //定时0,工作在方式1
TH0 = (65536-1000)/256;
TL0 = (65536-1000)/256;
TR0 = 1; //启动计数
EA = 1; //开总中断
ET0 = 1; //开定时器0中断
return;
}
void delay_1ms(uchar x)
{
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}
void main()
{
uchar i;
uint data_temp[2];
uint temp,temp1;
uchar hanzi;
uchar han;
uchar shift=1;
for(i=0;i<32;i++) disp_buff[i]=0xff;
T0_Set();
while(1){
for(hanzi=0;hanzi<15;hanzi++){ //最多显示多少个字
for(shift=0;shift<16;shift++){ //一个字移位16位
for(han=0;han<16;han++){ //一个字有16行数据
//取字库里面数据
data_temp[0]=ziku_table[(hanzi*32)+(han*2)+1]*0x100 + ziku_table[(hanzi*32)+(han*2)];
data_temp[1]=ziku_table[((hanzi+1)*32)+(han*2)+1]*0x100 + ziku_table[((hanzi+1)*32)+(han*2)];
//右往左移动
temp = data_temp[0];
temp1 = data_temp[1];
for(i=shift;i>0;i--){
temp = (temp>>1) ;
if((temp1&0x0001)!=0) temp = temp + 0x8000; //将TMEP1的最低位移位到TMEP的最高位
temp1 = (temp1>>1);
}
disp_buff[han*2+1]=temp/0x100;
disp_buff[han*2+0]=temp%0x100;
//------------------------------
}
delay_1ms(20); //移位速度
}
}
}
}
void SLED_Disp() interrupt 1 using 3
{
uchar i;
uchar data_buff;
uchar temp;
uchar han;
TH0 = (65536-1000)/256;
TL0 = (65536-1000)/256;
RCK_port = 0; //HC595锁定输出,避免数据传输过程中,屏数据变化从而显示闪烁
SRCK_port = 0;
han=disp_han;
//74HC595输出数据
temp = disp_han*2+1;
data_buff = disp_buff[temp];
for(i=0;i<8;i++){
if((data_buff&0x80)!=0) S_IN_port = 1;
else S_IN_port = 0;
SRCK_port = 1;
SRCK_port = 0;
data_buff <<= 1;
}
temp = disp_han*2;
data_buff = disp_buff[temp];
for(i=0;i<8;i++){
if((data_buff&0x80)!=0) S_IN_port = 1;
else S_IN_port = 0;
SRCK_port = 1;
SRCK_port = 0;
data_buff <<= 1;
}
//74HC138输出控制
EN_port = 1; //关屏显示,原理为使HC138输出全为1,从而三极管截止,点阵不显示
ABCD_port = (ABCD_port & 0x0f)|(han<<4); //HC138译码输出
RCK_port = 1; //允许HC595数据输出到Q1-Q8端口
EN_port = 0; //HC138输出有效,打开显示
RCK_port = 0; //锁定HC595数据输出
disp_han++; //显示下一行数据
if(disp_han>=16) disp_han=0;
}