希望大神们给出完整的,能在51单片机上运行的程序,使用C语言编写。
1条回答 默认 最新
- wsnjjq 2019-07-13 11:06关注
这有一个8×8的点阵程序,需要现在是数字的或定义几个数组就行了
//点阵显示 亲 - 桃心(形状)
#include
#include//点阵模块接口定义
sbit LEDARRAY_LAT = P3^6;//储存寄存器时钟
sbit LEDARRAY_CLK = P3^5;//移位寄存器时钟输入端
sbit LEDARRAY_DI = P3^4;//串行数据输入端//二维数组 内含字摸代码,取摸方式和软件都在本目录内
unsigned char code Display_word[2][8] = {
0x00,0x48,0x2A,0x8E,0xFB,0x0E,0x2A,0x48,//亲
0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C //桃心(形状)
};//SPI通信函数 发送一个直接数据给点阵模块
void Send_Byte( unsigned char dat)
{
unsigned char i;//循环次数变量
LEDARRAY_CLK = 0;//拉低移位时钟
nop();
LEDARRAY_LAT = 0;//拉低储存时钟
nop();for( i = 0 ; i < 8 ; i++ ) //循环8次写入一个字节数据 { if( dat&0x01 ) { LEDARRAY_DI = 1; } else { LEDARRAY_DI = 0; } LEDARRAY_CLK = 1; //上升沿发送数据 // _nop_(); LEDARRAY_CLK = 0; // _nop_(); dat >>= 1; }
}
void main()
{
unsigned char k, temp;
unsigned int i;//i的数值越大显示停留的时间就越久
while(1)
{
//亲
for(i = 0 ; i < 1000 ; i++)
{
temp = 0x7f;
for(k = 0 ; k < 8 ; k++) //一个字母8BYTE
{
Send_Byte(temp); //列选择
Send_Byte(Display_word[0][k]); //行数据
LEDARRAY_LAT = 1; //锁存数据
nop();LEDARRAY_LAT = 0; _nop_(); temp = (temp>>1)|0x80; } } //桃心(形状) for(i = 0 ; i < 1000 ; i++) { temp = 0x7f; for(k = 0 ; k < 8 ; k++) //一个字母4BYTE { Send_Byte(temp); //列选择 Send_Byte(Display_word[1][k]); //行数据 LEDARRAY_LAT = 1; //锁存数据 _nop_(); LEDARRAY_LAT = 0; _nop_(); temp = (temp>>1)|0x80; } } }
}
解决 无用评论 打赏 举报
悬赏问题
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
- ¥15 电力市场出清matlab yalmip kkt 双层优化问题