提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
会使用proteus,会C编程,严格注意版本要一致
资源链接:https://pan.baidu.com/s/1CGxG5vDGphukl-I1xsdt2w?pwd=ctt9
提取码:ctt9
一、电路原理图设计
使用proteus绘制原理图如下
其中红色方框部分不能省略
proteus中没有16x16的点阵屏,需要自己绘制,参考下面链接
Proteus8.6中16x16LED点阵制作教程_proteus16×16点阵-CSDN博客
上面电路原理图绘制完成了,可以进行的程序编写
二、程序编写
1.程序设计
#include <regx52.h>
//延时函数
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
//用字模提取程序生成字模数组
//中
unsigned char data_1[]={0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
//国
unsigned char data_2[]={0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x5F,0xF4,0x41,0x04,0x41,0x04,0x4F,0xE4,
0x41,0x04,0x41,0x44,0x41,0x24,0x5F,0xF4,0x40,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04};
//电路设计时使用P1端口组的低4位来控制行
void Row(unsigned char _row)
{
P1=_row;
}
//输出汉字
void show_lcd_16x16(unsigned char* arrData)
{
static int j=0,i=0;
Row(j);//行扫描
P2=arrData[i++];//点亮对应行低8位
P0=arrData[i];//点亮对应行高8位
//行、列扫描完重置
if(++j>=16)
j=0;
if(++i>=32)
i=0;
Delay(1);
}
void main()
{
int j=0,i=1;
while(1)
{
if(i)
show_lcd_16x16(data_1);
else
show_lcd_16x16(data_2);
if(j++>500)
{
j=0;
i=!i;
P2=0x00;
P0=0x00;
}
}
}
2.汉字取模
解压后直接点击.exe可执行程序
点击选项设置如上图
输入“中国”