基于单片机16*16点阵C语言各种方式结合的显示程序

作者&投稿:昌界 (若有异议请与网页底部的电邮联系)
求基于单片机的16*16点阵LED汉字显示屏的C语言程序和仿真图啊~

电子程序给你了,不过现在显示不是“职业技术学院”,你可以改成这个字
另外给你一个原理图


#include
#define uint unsigned int
#define uchar unsigned char
#define BLKN 2 //列锁存器数
sbit G = P1^7; //P1.7为显示允许控制信号端口
sbit RCLK = P2^0; //P2.0为输出锁存器时钟信号端
sbit SCLR = P2^1; //P2.1为移位寄存器清○端
void delay(uint); //延时函数
uchar data display[32]; //显示缓存
uchar code BMP[][32]={{16,0,16,0,37,248,36,64,120,64,8,64,16,64,32,64,124,64,0,64,0,64,12,64,112,64,3,252,0,0,0,0},
{16,0,19,240,32,16,41,240,120,16,19,252,32,64,122,72,1,80,0,224,25,80,102,76,0,64,1,192,0,0,0,0},
{4,64,4,64,63,248,4,64,127,252,1,0,31,240,17,16,31,240,17,16,31,240,8,32,16,16,32,8,0,0,0,0}}; //字模表'红‘’绿‘‘黄’
void main()
{
register uchar i,j;
SCON=0x00; //串口工作模式0:移位寄存器方式
TMOD=0x01; //定时器T0工作方式1:16位方式
P1=0x3f; //P1端口初值:允许接收、锁存、显示
TR0=1; //启动定时器T0
ET0=1; //允许定时器T0中断
EA=1; //开启总中断;
while(1)
{
delay(2000);
for(j=0;j<3;j++)
{
for(i=0;i<32;i++)
{
display[i]=~BMP[j][i];
if (i%2) delay(100);
}
delay(10000);
}
}
}
void delay(uint x)
{
register uchar i,j;
for (i=x;i>0;i--)
for (j=120;j>0;j--);
}
void leddisplay(void) interrupt 1 using 1
{
register uchar i, j=BLKN;
TH0 =(65536-100)/256; //设定显示屏刷新率每秒60帧
TL0 =(65536-100)%256;
i = P1; //读取当前显示的行号
i = ++i & 0x0f; //行号加1,屏蔽高4位
while(j)
{
j--;
SBUF = display[i*BLKN + j]; //送显示数据
while (!TI);
TI = 0;
} //完成一行数据的发送
G = 1; //消隐(关闭显示)
P1 &= 0xf0; //行号端口清○
RCLK = 1; //显示数据打入输出锁存器
P1 |= i; //写入行号
RCLK = 0; //锁存显示数据
G = 0; //打开显示
}

这是我以前写的,给你参考参考,现在懒得再细究了,Keil51的
#include "..\mcu.h"

sbit screenSW = P3 ^ 3;

code unsigned char wordModel[32] = {
0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01
};

code unsigned char wordModel1[32] = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10,
0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08,
0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
};

void Display16x16(unsigned char displayMatrix[]);
void DisplayTop(unsigned char displayBlock[]);
void DisplayBottom(unsigned char displayBlock[]);
void DelayMs(unsigned char ms);

void main(void)
{
while(1)
{
unsigned char i;
for(i = 0; i < 200; i++)
Display16x16(wordModelKe);
Delay(100);

for(i = 0; i < 5; i++)
{
Display16x16(wordModel);
Delay(10);
Display16x16(wordModel1);
Delay(10);
}

for(i = 0; i < 200; i++)
Display16x16(wordModelCheng);
Delay(100);

for(i = 0; i < 5; i++)
{
Display16x16(wordModel);
Delay(10);
Display16x16(wordModel1);
Delay(10);
}
}
}

void Display16x16(unsigned char displayMatrix[])
{
DisplayTop(displayMatrix);
DisplayBottom(displayMatrix + 16);
}

void DisplayTop(unsigned char displayBlock[])
{
unsigned char i, colSelect;

P2 = 0x00;
colSelect = 0x83;

for(i = 0; i < 16; i++)
{
P0 = displayBlock[i];
P3 = colSelect;
DelayMs(10);
screenSW = 1;
colSelect += 0x10;
}
}

void DisplayBottom(unsigned char displayBlock[])
{
unsigned char i, colSelect;

P0 = 0x00;
colSelect = 0x83;

for(i = 0; i < 16; i++)
{
P2 = displayBlock[i];
P3 = colSelect;
DelayMs(10);
screenSW = 1;
colSelect += 0x10;
}
}

void DelayMs(unsigned char ms)
{
unsigned char i;
for(i = 0; i < ms; i++)
;
}


基于单片机原理的16×16LED点阵字符显示屏汉字转换
应用串口大师,发送就可以得到16进制

我想制作一个基于51单片机的16x16的LED广告屏,行扫描和列扫描是不是要...
16×16LED点阵屏显示原理呢,将行或者列内容数据送到数据口显示这一行或者这一列数据,然后选通这一行或者列的位选数据,然后依照上述方法依次显示后15行或者列数据。那么这样一来,又是行又是列数据,就涉及到了32个I\/O口,效率虽高,但资源浪费太大,为了很好的解决这一问题,可用4片锁存器和1...

基于51单片机的16x16 led点阵显示屏设计原理与电路图
MOV R4,#16 DJNZ R3,SCAN16 AJMP END16 SCAN16:MOV A,R2 CLR C SUBB A,#32 MOV R2,A AJMP START END16:INC DPTR INC DPTR MOV A,R2 CLR C SUBB A,#32 MOV R2,A MOV A,R0 MOV R3,A AJMP START SLOW:LCALL DELAY20000 DEC R0 JB P1.0,AJMP BACK SOON:LCALL DELAY20000 INC ...

基于单片机16*16LED汉字点阵显示屏设计的论文怎么写
这肯定没有,除非你花钱定做。免费情况下,你只能在网上找到其它的例子。不过这个并不难,你可以根据你的熟悉芯片构造硬件图,而程序主要分为字库制作和显示控制,由于是静态驱动,很简单。

基于单片机的显示屏,然后我把64*16的屏改成了80*16的,然后改了一点程序...
电子程序给你了,不过现在显示不是“职业技术学院”,你可以改成这个字 另外给你一个原理图

基于单片机的16×64点阵字符控制系统的设计
动态时取决于扫描频率(1\/8或1\/16秒),单点瞬间电流可达 80-160 mA。 16*16点阵静态时16*16*10mA,动态时单点电流80-160mA。实际测试:整机电流700 mA(2) 移位寄存器74HC595图四74HC595内部逻辑图74HC595是带锁存输出的8位移位寄存器,其管脚见下图,其中SI是串行数据的输入端;VCC、GND分别为电源和地;RCK是存储...

基于单片机的数字电压表设计 (请不要完成抄袭)
LCALL PR1 ;调写指令代码子程序 MOV DPTR,#TAB4 MOV R2,#16 MOV R3,#00H WRIN0:MOV A,R3 MOVC A,@A+DPTR MOV DAT,A LCALL PR2 INC R3 DJNZ R2,WRIN0 MOV COM,#0D0H LCALL PR1 MOV DPTR,#TAB5 MOV R2,#16 MOV R3,#00H WRIN1:MOV A,R3 MOVC A,@A+DPTR ...

基于单片机的数字温度计设计好做么
这种设计相对来说比较好做。首先选择用什么系列的单片机。目前常用的有51单片机,AVR单片机,MSP430单片机等等。接下来选择用什么传感器。采用有温敏电阻,通过对直流电压分压,测量其直流电压的变化,也就是AD检测,再把电压值转换成温度值;(这种方式要求单片机具有AD检测功能,否则需要外接AD转换芯片。)...

书上说由于单片机地址总线16根,所以最多可外扩展2^16=65536=64KB。为什 ...
例如,假设某CPU地址总线是2根,那么这款CPU能解析的存储单元地址只有4个:00、01、10、11,即2^2,而如果地址总线是3根,那么这款CPU能解析的存储单元地址只有8个:000、001、010、011、100、101、110、111,以此类推,51单片机的地址总线是16根,其可解析的存储单元个数为2^16=65536=64KB ...

单片机与触摸屏如何通讯
单片机与触摸屏如何通讯?这种屏幕的我做过,显示数值什么的你使用触摸屏上位机设置好需要显示的数据类型,然后通过串口发送对应地址的数据过去就OK了,至于发送的是16进制,显示它自动转化为10进制的,这个不需要您操心,只是初始化的时候需要你去做工作而已,也就是说,你只需要将数据(动态)的,通过...

临西县15152149860: 设计一个16*16的点阵的代码,c语言的 -
包转复方: 很简单啊 #include<stdio.h> void main() {int i,j;for(i=0;i<16;i++){ for(j=0;j<16;j++)printf(" * ");printf("\n");} }

临西县15152149860: 用单片机实现16*16点阵显示,要用C语言编写程序+注释,顺便还要原理图,能帮帮忙么??? -
包转复方: 问题:1.字符串没加结束标志'\0'2. else if(ns>=n&&nt<n) for(i=0;i<n;i++) {m1[i]=s[i]; strcat(m1,t); strcpy(s,m1); } 这段错误#include"iostream.h"#include"string.h"#include"stdio.h" void mystrcat(char s[],char t[],int n) { char m1[100],m2[100]; int...

临西县15152149860: 单片机16乘16点阵原理图与C语言程序,51单片机,可以上移和左移 -
包转复方: 点阵太多,需要使用16+16=32个IO,建议使用LCD驱动IC,如HT1621之类,51单片机通过三线接口与IC通讯. 编程方面,程序需要建立16X16点阵的缓冲,需要修改数据就先修改缓冲数据,然后改变输出.上移可以通过把缓冲按字节移位实现,左移就需要把缓冲数据按位移位,移位完成后再通过LCD Driver更新输出.

临西县15152149860: 单片机中,用点阵怎么实现数字的输出,其程序怎么编写??? -
包转复方: 点阵不管是显示汉字还是数字,一般都是将要显示的汉字或数字用字模提取软件转换出一个数组的内容,然后将这个数组复制到单片机的程序中,以下给你一些C语言程序参考,这个是16*16的点阵,还有就是提醒一下你,你用字模提取软件时...

临西县15152149860: 我想编写16*16点阵的左移程序.用C语言,51单片机.你能否帮我编一个小例程,左移显示“陈”啊?谢谢了~! -
包转复方: #include <reg51.h> #define uchar unsigned char #define uint unsigned int sbit SH_CP=P2^0; sbit DS=P2^1; sbit ST_CP=P2^2; uchar code tab[ ]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00...

临西县15152149860: 16*16点阵LED显示 C语言程 74HC154 -
包转复方: 当初的读点阵显示汉字的程序: int out16hz(int x, int y, int color, char *p) {Word i, QM, WM, f=0;int record, i1, i2, i3;long pointer;char Bit[32];while ((i=*p++) != 0){if (f == 0){if (i < 128) /*显示ascii码*/{pointer = i * 16L;lseek(flagasc, pointer, ...

临西县15152149860: 求一款51单片机16*16点阵显示静态汉字的C例程 -
包转复方: #include<reg52.h> //包含头文件 #define uint unsigned int //预定义一下 #define uchar unsigned char sbit rs=P3^5; //1602的数据/指令选择控制线 sbit rw=P3^6; //1602的读写控制线 sbit en=P3^7; //1602的使能控制线 /*P2口接1602的D0~D7,注意...

临西县15152149860: 用单片机控制的16x16点阵LED循环显示“旋影电子信息协会期待你加入”,这个程序用C语言该怎么写 -
包转复方: 只能给你提供一个思路了!!按照这个思路写程序就可以啦!!首先,你的显示设备是点阵,所以要把你要现实的文字转换成点阵,这个需要一些软件,或者自己用画图程序画出点阵,就可以了.然后,就是显示了!!按照字符点阵的数据,看字符点阵的二进制,是1就点亮LED点阵对应的LED,是0就熄灭对应的LED,这样就出现显示汉字的效果了,以此类推,即可显示所有汉字!!

临西县15152149860: 请您用汇编语言设计一个用单片机控制16*16led点阵显示一个汉字程序,谢谢了!很紧急! -
包转复方: /**** ** Header: ** File Name: 16*16点阵滚动显示汉字 ** Author: ** Date: ****/ #includeunsigned char code digittab[]={ 0x40,0x04,0x47,0xC2,0x44,0x41,0x44,0x42,0xFE,0x7C,0x40,0x00,0x01,0xF2,0x7D,0x22, 0x49,0x22,0x49,0x22,0x4F,0xFE,0x49...

临西县15152149860: 你好,谢谢,我完善一下,主芯片类型89c51采用四个74hc595作为16*16点阵显示芯片,采用c语言编程, -
包转复方: 关键程序如下:uint arr[]={ 0x7fff,0xffff,0xffff,0xffff},*p=arr ;void delay (void) {TMOD=0X01;TR0=1;TH0=0X63;TL0=0X18;while(!TF0);TF0=0;TR0=0; }void ST595(void) {ST=0;_nop_();_nop_();ST=1;_nop_();_nop_();ST=0; }void ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网