#include "reg52.h"
sbit LED = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
sbit L = P3^5;
sbit L1 = P3^4;
sbit L2 = P3^3;
int i=0,rcv_bit_number=0,wen,yanshi; // i为内部数据位 w为数据个数i传出的值 rcv_bit_number循环用于发送数据
unsigned char w=0,n,rcv_data[30]=0,HuaMian,Butten,rcv_falg,S_butten;//rcv_da[30]=0,
unsigned wendu_ZhiLin[] = {0xEE,0xB1,0x10,0x00,0x00,0x00,0x04,0x20,0x20,0x30,0xFF,0xFC,0xFF,0xFF };
unsigned code call[]= {0X30,0X31,0X32,0X33,0X34,0X35,0X36,0X37,0X38,0X39};//0 1 2 3 4 5 6 7 8 9{};
void Uart1Init(void);
void send_data(unsigned char i_data);
char putchar(char c);
void fanhui() //按钮判断函数
{
switch(rcv_data[4])
{
case 0X00: HuaMian = 00;break;
case 0X01: HuaMian = 10;break;
case 0X02: HuaMian = 20;break;
case 0X03: HuaMian = 30;break;
case 0X04: HuaMian = 40;break;
case 0X05: HuaMian = 50;break;
}
switch(rcv_data[6])
{
case 0: Butten = 0;break;
case 1: Butten = 1;break;
case 2: Butten = 2;break;
case 3: Butten = 3;break;
case 4: Butten = 4;break;
case 5: Butten = 5;break;
}
n = Butten+HuaMian;
}
send_wendu( unsigned char wendu , unsigned char JieMianID,unsigned char KuangID)
{
unsigned char Gewei,Shiwei,Baiwei;
Gewei = wendu/1%10;
Shiwei = wendu/10%10;
Baiwei = wendu/100%10;
wendu_ZhiLin[4] = JieMianID;
wendu_ZhiLin[6] = KuangID;
wendu_ZhiLin[7] = call[Baiwei];
wendu_ZhiLin[8] = call[Shiwei];
wendu_ZhiLin[9] = call[Gewei];
for( rcv_bit_number=0;rcv_bit_number<=13;rcv_bit_number++)
{
send_data(wendu_ZhiLin[rcv_bit_number]);
}
return 0 ;
}
//unsigned char anniu1()
//{
//unsigned char aa;
//aa = Butten+HuaMian;
//return(aa);
//}
void wendu_INCV()//初始化温度显示
{
for( rcv_bit_number=0;rcv_bit_number<=13;rcv_bit_number++)
{
send_data(wendu_ZhiLin[rcv_bit_number]);
}
}
void main()
{
L=1;
L1=1;
wen = 0;
Uart1Init();
wendu_INCV();
while(1)
{
fanhui(); //返回按钮值,界面+按钮 返回参数为n
// if( L == 0 | rcv_falg == 1 ) //发送接收到的数据
// {
// for( rcv_bit_number=0;rcv_bit_number<=w-1;rcv_bit_number++)
// {
// send_data(rcv_data[rcv_bit_number]);
//
// }
// send_data(n);
// rcv_falg = 0;
// while(L==0);
// }
if( L == 0) //发送接收到的数据
{
send_wendu(wen,0,04);
++wen;
rcv_falg = 0;
// while(L==0);
}
switch(n) //判断哪个按钮按下如
{
case 01: LED=rcv_data[9] ^ 0x01;break;
case 02: LED1=rcv_data[9]^ 0x01;break;
case 03: LED2=rcv_data[9]^ 0x01;break;
case 04: LED3=rcv_data[9]^ 0x01;break;
}
}
}
void Uart1Init(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xFD; //设置定时初始值
TH1 = 0xFD; //设置定时重载值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
ES =1;
EA = 1;
}
void send_data(unsigned char i_data)
{
SBUF = i_data;
while(!TI);
TI = 0;
}
//char putchar(char c)
//{
//send_data(c);
// return(c);
//}
void UART() interrupt 4
{
if(RI)
{
RI=0;
rcv_data[i] = SBUF;
if(rcv_data[0] == 0XEE ) //如果接收到帧头为EE
{
++i;
}
else
{
i=0;
}
}
if( rcv_data[i-4]==0XFF && rcv_data[i-3]==0XFC && rcv_data[i-2]==0XFF && rcv_data[i-1]==0XFF)//判断帧尾是否正确
{
w = i;
i=0;
rcv_falg = 1;
}
}
51单片机与大彩屏幕通讯
需积分: 0 31 浏览量
更新于2023-10-31
收藏 22.69MB RAR 举报
在电子技术领域,51单片机是一种广泛应用的微控制器,尤其在嵌入式系统设计中占据重要地位。本文将详细探讨51单片机如何与大彩屏幕进行通讯,以便实现显示各种信息和图形的功能。
51单片机是Intel公司推出的8位微处理器,因其内部集成的资源丰富、性价比高、易于学习而被广泛采用。其主要组成部分包括CPU、内存(ROM和RAM)、定时器/计数器、并行I/O口、串行通信接口等。在51单片机中,串行通信接口(如UART)是连接外部设备,包括大彩屏幕的关键部分。
大彩屏幕通常指的是具有高分辨率、色彩丰富的液晶显示屏或LED显示屏,常用于广告展示、信息公告、监控等领域。它们通常配备有专门的控制器,支持多种通信协议,如SPI、I2C、UART等,以接收来自单片机的数据并显示。
51单片机与大彩屏幕通讯的过程通常包括以下几个步骤:
1. **选择通讯协议**:需要确定适合的通讯协议。51单片机的串行接口可以支持UART、SPI和I2C,但具体选择哪种协议取决于大彩屏幕的控制器支持。UART通常用于较长距离的通讯,SPI和I2C则适合近距离、高速率的数据传输。
2. **配置接口参数**:一旦选择了通讯协议,就需要配置51单片机的串行接口参数,包括波特率、数据位、停止位和校验位。这些参数需与大彩屏幕控制器一致,以确保数据正确传输。
3. **数据格式化**:根据大彩屏幕的显示需求,51单片机需要将要显示的信息转化为适合的二进制数据。如果是文字,可能需要编码成ASCII码;如果是图像,可能需要进行RGB色彩空间到灰度或索引色的转换。
4. **建立通讯链路**:通过硬件连接,如GPIO引脚,将51单片机与大彩屏幕控制器相连。对于SPI和I2C,还需要设置适当的片选线和时钟线。
5. **发送和接收数据**:51单片机通过串行接口发送命令和数据到大彩屏幕,如初始化屏幕、设置显示位置、写入像素值等。同时,可能需要接收屏幕返回的状态信息,以确认操作是否成功。
6. **控制显示**:51单片机通过发送特定指令控制大彩屏幕刷新显示内容,确保信息准确无误地呈现给用户。
在实际应用中,测试工程文件往往包含代码示例、电路图、配置参数等,帮助开发者理解和实现51单片机与大彩屏幕的通讯。通过调试和优化,可以实现流畅、高效的屏幕显示效果。
总结起来,51单片机与大彩屏幕通讯涉及了硬件接口配置、数据格式转换、通讯协议选择等多个方面,理解并掌握这些知识点对于进行相关项目开发至关重要。在实践中,不断探索和学习,才能更好地利用51单片机实现丰富的显示功能。
qq_44097339
- 粉丝: 3
- 资源: 1
最新资源
- CBT 3847-1999 船用扁圆形焊接钢法兰.pdf
- CBZ 27-1980 船体结构低温焊接.pdf
- CBT 3962-2005 船用焊接异径铜法兰.pdf
- CBZ 258-1989 铝合金船体氩弧焊接工艺规程.pdf
- CBZ 69-1986 铸钢艉柱手工焊接工艺.pdf
- CBZ 66-1987 铜板的焊接.pdf
- CBZ 802-2007 陶质衬垫CO2单面焊焊接工艺.pdf
- CBZ 801-2007 熔嘴电渣焊焊接工艺.pdf
- CBZ39-1987_焊接材料的验收、存放和使用.pdf
- CBZ124-1998_潜艇921A等钢结构焊接技术要求.pdf
- CBZ126-1998潜艇耐压船体可拆板切割、装配和焊接技术要求.pdf
- CECS 330-2013 钢结构焊接热处理技术规程.pdf
- CJT 32-2004 液化石油气钢瓶焊接工艺评定.pdf
- C-HRA-1镍基合金的焊接工艺性能研究.pdf
- CMT焊接在堆焊(包覆)镍基耐蚀合金层中的应用.pdf
- CNG高压储罐焊接制造质量保证.pdf