IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机接收ASCII码并实现1602显示 -> 正文阅读

[嵌入式]51单片机接收ASCII码并实现1602显示

??

#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int

uint code tade[]={'0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};?
uint code tade_x[]={'0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
uint code tade_s[]={'0','1','2','3','4','5','6','7','8','9'};
uint code tabe_r[]={'r','e','c','t'};
uint code tabe_c[]={'c','i','r','c','l','e'};
uchar code tabe_y_g[]={'g','r','e','e','n'};
uint code tabe_y_b[]={'b','l','u','e'};
uint code tabe_y_r[]={'r','e','d'};
uint code tabe_t[]={'t','r','i','a','n','g','l','e'};
uchar jieshou[9];

uchar xz,ys;
uchar t;
uchar i,z;
uchar p=' ';
int shou=0;

sbit EN=P2^7; //enable
sbit RS=P2^6;//Command selection side
sbit RW=P2^5;

void delay_2(uint z)//delay
{
?? ?uint x,y;
?? ?for(x=z;x>0;x--)
?? ??? ?for(y=110;y>0;y--);
}

void wite_c(uchar com) // wite order
{
?? ?RS = 0;
?? ?RW = 0;
?? ?P0 = com;
?? ?delay_2(5);
?? ?EN = 1;
?? ?delay_2(5);
?? ?EN = 0;
}

void wite_d(uchar date) //wite date
{
?? ?RS = 1;
?? ?RW = 0;
?? ?P0 = date;
?? ?delay_2(5);
?? ?EN = 1;
?? ?delay_2(5);
?? ?EN = 0;
}


void ?init1602() //1602 init
{
?? ?EN = 0;
?? ?wite_c(0x38);
?? ?wite_c(0x0c);
//?? ?wite_c(0x06);
?? ?wite_c(0x01);?? ?
}

void show()
{
?? ?wite_c(0x01);?? ?
?? ?switch(tade[(jieshou[0]&0X1F)])
?? ?{
?? ??? ?case 'R':
?? ??? ?wite_c(0x80);
?? ??? ?for(i=0;i<4;i++)
?? ??? ?{
?? ??? ??? ?wite_d(tabe_r[i]);
?? ??? ??? ?jieshou[0]=' ';
?? ??? ?}
?? ??? ??? ? ? ? ? ?break;
?? ??? ?case 'C':?? ?
?? ??? ?wite_c(0x80);
?? ??? ?for(i=0;i<6;i++)
?? ??? ?{
?? ??? ??? ?wite_d(tabe_c[i]);
?? ??? ??? ?jieshou[0]=' ';
?? ??? ?}
?? ??? ??? ? ? ? ? ?break;
?? ??? ?case 'T':
?? ??? ?wite_c(0x80);
?? ??? ?for(i=0;i<8;i++)
?? ??? ?{
?? ??? ??? ?wite_d(tabe_t[i]);
?? ??? ??? ?jieshou[0]=' ';
?? ??? ?}
?? ??? ??? ? ? ? ? ?break;
?? ?}
?? ?switch(tade_x[(jieshou[1]&0X1F)])
?? ?{
?? ??? ?case 'r':
?? ??? ?wite_c(0x80+0x08);
?? ??? ??? ?for(i=0;i<3;i++)
?? ??? ?{
?? ??? ?wite_d(tabe_y_r[i]);
?? ??? ??? ?jieshou[1]=' ';
?? ??? ?}
?? ??? ??? ? ? ? ? ?break;
?? ??? ?case 'g':ys=2;
?? ??? ?wite_c(0x80+0x08);
?? ??? ??? ?for(i=0;i<5;i++)
?? ??? ?{
?? ??? ??? ?wite_d(tabe_y_g[i]);
?? ??? ??? ?jieshou[1]=' ';
?? ??? ??? ?
?? ??? ?}
?? ??? ??? ? ? ? ? ?break;
?? ??? ?case 'b':ys=3;
?? ??? ?wite_c(0x80+0x08);
?? ??? ??? ?for(i=0;i<4;i++)
?? ??? ?{
?? ??? ?wite_d(tabe_y_b[i]);
?? ??? ??? ?jieshou[1]=' ';
?? ??? ?}
?? ??? ??? ? ? ? ? ?break;
?? ?}
?
?? ??? ?wite_c(0x80+0x40);
?? ?for(i=2;i<5;i++)
?? ?{
?? ??? ?if(jieshou[i]<0x41)
?? ??? ?{
?? ??? ??? ?wite_d(tade_s[(jieshou[i]&0X0F)]);
?? ??? ??? ?jieshou[i]=' ';
?? ??? ?}
?? ??? ?if(jieshou[i]>0x40&&jieshou[i]<0x60)
?? ??? ?{?? ?
?? ??? ??? ?wite_d(tade[(jieshou[i]&0X1F)]);
?? ??? ??? ?jieshou[i]=' ';
?? ??? ?}
?? ??? ?if(jieshou[i]>0x60)
?? ??? ?{?? ?
?? ??? ??? ?wite_d(tade_x[(jieshou[i]&0X1F)]);
?? ??? ??? ?jieshou[i]=' ';
?? ??? ?}
?? ?}
?? ?wite_c(0x80+0x40+0x04);
?? ?for(i=5;i<9;i++)
?? ?{
?? ??? ?if(jieshou[i]<0x41)
?? ??? ?{
?? ??? ??? ?wite_d(tade_s[(jieshou[i]&0X0F)]);
?? ??? ??? ?jieshou[i]=' ';
?? ??? ?}
?? ??? ?if(jieshou[i]>0x40&&jieshou[i]<0x60)
?? ??? ?{?? ?
?? ??? ??? ?wite_d(tade[(jieshou[i]&0X1F)]);
?? ??? ??? ?jieshou[i]=' ';
?? ??? ?}
?? ??? ?if(jieshou[i]>0x60)
?? ??? ?{?? ?
?? ??? ??? ?wite_d(tade_x[(jieshou[i]&0X1F)]);
?? ??? ??? ?jieshou[i]=' ';
?? ??? ?}
?? ?}
?? ?wite_c(0x80+0X40+0x08);?? ?
?? ??? ?wite_d('c');
?? ?wite_c(0x80+0X40+0x09);?? ?
?? ??? ?wite_d('m');
?? ?t = 0;
?? ?shou = 0;
}
//串口&定时器初始化
void init(void)?? ??? ?//9600bps@11.0592MHz
{
?? ?SCON = 0x50;?? ??? ?//串口初始化
?? ?TMOD = 0x20;
?? ?TH1 ?= 0xFD;
?? ?TL1 ?= 0xFD;
?? ?TR1 ?= 1;
?? ?ES ? = 1;
?? ?EA ? = 1;
}

void send(void)
{?? ?uint wei_fa=0;
?? ?for(wei_fa = 0; wei_fa<9; wei_fa++)
?? ?{
?? ??? ?SBUF = jieshou[wei_fa];
?? ??? ?while(!TI);?? ??? ?//等待是否发送完毕
?? ??? ?TI = 0;
?? ?}
}

void main(void)
{
?? ?t=0;
?? ?init1602();
?? ?init();
?? ?while(1)
?? ?{
?? ??? ?if(t==1)
?? ??? ?{
? ?show();
?? ??? ?}
?}?
}

void interrupt_uart() interrupt 4
{
?? ?if(RI)
?? ?{
?? ??? ?RI = 0;
?? ??? ?jieshou[shou++] = SBUF;
?? ??? ?t=1;
?? ??? ?if(shou >=9)
?? ??? ?{
?? ??? ??? ?shou = 0;
?? ??? ??? ?send();
?? ??? ?}
?? ?}?? ?
}

? 由于时间比较仓促所以程序有写的有点乱。51单片机接收ASCII时会把ASCII转换成相应的十进制和十六进制数字代码,所以要写一个相应的库,通过转换ASCII码的数字代码使其对应相应的字符实现在1602上的显示.还有要注意在与电脑和open MV通信时要注意波特率。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:14:17  更:2021-07-26 12:14:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/19 6:38:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码