历史上的今天
今天是:2025年02月22日(星期六)
2020年02月22日 | P10点阵屏C51单片机程序
2020-02-22 来源:51hei
P10点阵屏C51程序
1/4扫描,四扫下行,1路16行,数据低OE高(04-P16-08)
适用于HUB12接口单色P10
串口模式0,普通左移,亮度速度可调,6个IO口,用的STC8F1K08,最多231个字
制作出来的实物图如下:
单片机源程序如下:
#include #include #include #define DATA P30 // #define CLOCK P31 //↑ ↓ #define ADDR_A P32 //↑ #define ADDR_B P33 // #define LATCH P54 //↓ ↓ #define ENABLE P55 //↓ unsigned char Offset_Bit,Offset_String; unsigned char code String[]= { #include <0.h> }; /*----------------------------延时10us@STC-Y6@11.0592MHz----------------------------*/ void Delay_10us(void) { unsigned char i; i=35; while(--i); } /*----------------------------延时x10us----------------------------*/ void Delay_x10us(unsigned char x) { while(x--) Delay_10us(); } void Line_Driver(unsigned char temp) { switch(temp) { case 0: ADDR_A=0; ADDR_B=0; break; case 1: ADDR_A=1; ADDR_B=0; break; case 2: ADDR_A=0; ADDR_B=1; break; case 3: ADDR_A=1; ADDR_B=1; break; default: break; } ENABLE=1; } void Send_One_Byte(unsigned char temp) { unsigned char i,temp1; for(i=0;i<8;i++) { temp1<<=1; if(temp&0x01) temp1|=0x01; temp>>=1; } SBUF=~temp1; while(!TI); TI=0; } void Send_Display(unsigned char line) { unsigned char i,j,a,b; unsigned int c,d; b=2*line; for(i=0;i<4;i++) { c=(Offset_String+i)*32; for(j=0;j<8;j++) { if(j<4) { a=(3-j)*8; d=a+b+c; if(Offset_Bit<=8) Send_One_Byte((String[d]< else Send_One_Byte((String[d+1]<<(Offset_Bit-8))|(String[d+32])>>(8-(Offset_Bit-8))); } else { a=(7-j)*8; d=a+b+c; if(Offset_Bit<=8) Send_One_Byte((String[d+1]< else Send_One_Byte((String[d+32]<<(Offset_Bit-8))|(String[d+33])>>(8-(Offset_Bit-8))); } } } LATCH=0; LATCH=1; } void Display(unsigned char brightness) { unsigned char line; for(line=0;line<4;line++) { Send_Display(line); Line_Driver(line); Delay_x10us(brightness); ENABLE=0; Delay_x10us(10-brightness); } } void Init(void) { AUXR|=0x20; P3M0=0x0f; P3M1=0x00; P5M0=0x30; P5M1=0x00; Offset_Bit=0; Offset_String=0; } void main(void) { unsigned char i; Init(); while(1) { for(i=0;i<10;i++) { Display(1); } Offset_Bit++; if(Offset_Bit==16) { Offset_Bit=0; Offset_String++; } if(Offset_String==159) { Offset_String=0; } } }
史海拾趣
|
小弟最近在做wince上面的usb转串口驱动,用的是public下面的usbser,编译到系统里面后能识别usb转串口的线了,并模拟为串口1,但是操作的时候用一款usb转串口线只能收,发不出来,用另外一款收发都有数但是数不对现象就像是串口速率不一样,但是这 ...… 查看全部问答> |
|
请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 还有如何提取内置在笔记本中的EASYPORT的驱动? 谢谢!13956302025 heroxgy@163.com&n ...… 查看全部问答> |
|
64位的cpu是地址线的位数是64位,还是数据线的位数是 64位? 64位机呢?问题如上? 是64位机还是64位的cpu可以将内存扩展到2的64次方? 谢谢回答。… 查看全部问答> |
|
判断处理器状态的问题: 书上这样写的,不怎么理解。 ------------------ 原文:当异常发生时,处理器自动切换到ARM状态,所以在异常 ...… 查看全部问答> |
|
ME是叮叮铛铛的雷丝,自认大哥的消息一直收录齐全~那个 呃 ……大家不要误会,我并不是来掏底的,我对大哥那是一个尊重加爱护加珍惜加倾慕!~咦~害羞~一切都是隐私所以不能像广大网民透露!但是大哥最近潜伏在4S店的事,ME却完全没有预料!实在 ...… 查看全部问答> |
|
本想使用LM Flash Programmer 通过串口对LM3S6432下载程序,结果始终波特率不匹配。向大家咨询下,如何使用。在此先谢谢了。… 查看全部问答> |




