12864(ST7902)串口C51程序

发布者:HeavenlyWhisper最新更新时间:2017-12-17 来源: eefocus关键字:ST7902  串口  C51程序 手机看文章 扫描二维码
随时随地手机看文章

/******************************************************************************** 
*program name:st7920.c 
*function: TEST TO st7920(drive) 
*Design: qinhao 
*Date:2009-01-07 
*********************************************************************************/

#include  
#include  
#include  
#include  
#define uchar unsigned char 
#define uint unsigned int


sbit sclk=P3^2; 
sbit sid=P3^1; 
sbit cs=P3^0; 
unsigned char code tab[]={"深圳勤正达液晶显示器"}; 
void delaym(unsigned int n) 
{unsigned int i,j; 
for(j=n;j>0;j--); 
for(i=112;i>0;i--); 
}

void sendbit(uchar dat1, bitcnt) 

unsigned char i; 
for(i=0;i
sclk = 0; 
dat1=dat1<<1; 
sid = CY; 
sclk = 1; 
sclk = 0; 

}

unsigned char receivebyte(void) 

unsigned char i,temp1,temp2; 
temp1=temp2=0; 
for(i=0;i<8;i++) 

temp1=temp1<<1; 
sclk = 0; 
sclk = 1; 
sclk = 0; 
if(sid) temp1++; 

for(i=0;i<8;i++) 

temp2=temp2<<1; 
sclk = 0; 
sclk = 1; 
sclk = 0; 
if(sid) temp2++; 

return ((0xf0&temp1)+(0x0f&temp2)); 
}

void checkbusy( void ) 

do sendbit(0xfc,8); //11111,RW(1),RS(0),0 
while(0x80&receivebyte()); 
}

void senddat(uchar dat1) 

cs=1; 
checkbusy(); 
sendbit(0xfa,8); 
sendbit(dat1&0xf0,8); 
sendbit((dat1<<4)&0xf0,8); 
cs=0;

}

void sendcom(uchar com) 

cs=1; 
checkbusy(); 
sendbit(0xf8,8); 
sendbit(com&0xf0,8); 
sendbit((com<<4)&0xf0,8); 
cs=0;

}

void inti() 

sendcom(0x30); ///////8位MPU控制界面,基本指令集

sendcom(0x03);

sendcom(0x0c); ////// 开显示,关游标,

sendcom(0x01);

sendcom(0x06);


void display(uchar dat1) 

unsigned char i,j; 
sendcom(0x34); 
sendcom(0x36); 
for(i=0;i<32;i++) 

sendcom(0x80|i); 
sendcom(0x80); 
for(j=0;j<32;j++) 
senddat(dat1); 

}

void main() 

uchar i; 
delaym(100); 
inti(); 
for(i=0;i<20;i++) 
{

senddat(tab[i]); 
}; 
display(0xff); 
while(1); 
}

并口:
/********************************************************************************
*program name:并st7920.c
*function: TEST TO FM240128m-12l(drive)
*Design: qinhao
*Date:2009-3-30
*********************************************************************************/
#include
#include
#include
#include
#define uchar unsigned char 
#define uint unsigned int

sbit e=P3^2;
sbit rs=P3^0;
sbit rw=P3^1;
sbit rst=P3^6;
/********************************************************************************
延时N ms
*********************************************************************************/
void delaym(unsigned int n)
{
 unsigned int i,j;
 for(j=n;j>0;j--)
 for(i=112;i>0;i--);
}                         /////// 精确MS,
/********************************************************************************
检查状态,D7为忙状态位,D6~D0为AC地址
*********************************************************************************/
uchar  BusyFlag()
{
 uchar  BF;
 rs=0;
 rw=1;
 e=1;
 _nop_();
 _nop_();
 BF=P1;
 _nop_();
 e=0;
 _nop_();
 return(BF);
}
/********************************************************************************
发送命令
*********************************************************************************/
void SendCommand(uchar command)
{
  // uchar BF;
 while(BusyFlag()&0x80);
 rs=0;
 rw=0;
 e=1;
 _nop_();
 P1=command;
 _nop_();
 _nop_();
 e=0;
 _nop_();
 _nop_();
}
/********************************************************************************
发送数据
*********************************************************************************/
void SendData(uchar dat)
{
   //uchar BF;
 while(BusyFlag()&0x80);
 rs=1;
 rw=0;
 e=1;
 _nop_();
 P1=dat;
 _nop_();
 _nop_();
 e=0;
 _nop_();
 _nop_();
}
/********************************************************************************
读AC地址
*********************************************************************************/
uchar ReaDAC()
{
 uchar AC;
 AC=BusyFlag()&0x07;
 return(AC);
}
/********************************************************************************
读数据
*********************************************************************************/
uchar ReadData()
{
 uchar dat;
 while(BusyFlag()&0x80);
 rs=1;
 rw=1;
 e=1;
 _nop_();
 dat=P1;
 _nop_();
 _nop_();
 e=0;
 _nop_();
 _nop_();
 return(dat);
}

/********************************************************************************
初始化LCD
*********************************************************************************/
void LcdInit()
{
 rst=0;
 delaym(10);
 rst=1;
 SendCommand(0x30);//基本指令集
 delaym(10);
 SendCommand(0x03);//AC回00H
 SendCommand(0x0c);//开显示,关游标
 SendCommand(0x01);//清屏,AC返回00H
 delaym(10);
 SendCommand(0x06);//设定游标显示移位
 delaym(10);
}
/********************************************************************************

*********************************************************************************/

void main()
{
 uchar i;
 LcdInit();
  SendCommand(0x34); 扩充指令
 SendCommand(0x04); 反白00行
 while(1)
 { 
  i++;
  SendData(i);
  delaym(700);
 };


关键字:ST7902  串口  C51程序 引用地址:12864(ST7902)串口C51程序

上一篇:at90s8515单片机驱动t6963c lcd 24064 程序
下一篇:ATmega128并行控制带字库的12864程序

推荐阅读最新更新时间:2024-03-16 15:49

双异步串口经AT89C2051与TMS320VC5402HPI口通信的解决方案
    摘要: 提出了两个微机串口与DSP处理器(TMS320VC5402)HPI(Host Port Interface)口通信问题的解决方案,该方案采用单片机(AT89C2051)实现数据的串/并、并/串转换,并控制DSP的HPI实现共享总线。给出了硬件连接电路和用FPGA作为总线仲裁器的设计思路,介绍HPI口的操作过程,单片机与微机串口之间通信的硬件设计方法。     关键词: DSP 单片机 HPI 串行通信 FPGA 本文所介绍的是我所正在研制的卫星CDMA接收机未端DSP与微机串口通信的接口电路。由于CDMA接收机支持两个独立CDMA信道的接收,并将两路解调后的数据分别经串口送至不同的计算机
[应用]
MSP430F149的串口RS232接口
1、 概述 具有同步串口模式(SPI),异步通信模式(UART)。 作异步通信时,P3.4,P3.5,P3.6,P3.7第二功能分别是UTXD0, URXD0, UTXD1, UTXD2 2、 使用方法概述 2.1 程序架构 配置寄存器设置工作模式 { 设置IO口为第二功能作为串口收发引脚; 使能串口收发功能; 选择每帧数据位为7或8; 选择波特率发生器时钟源; 配置波特率(查表得出值再配置UxBR0, UxBR1,UxMCTL); 软件清除串口复位位(SWRST); 若采用中断方式则使能接受、发送中断 } 编写接受/发送程序,可采用查询方式或中断方式。同51单片机不同的是,UTXIFG,
[单片机]
STM8S003F使用IO口模拟串口(四)正真意义上的模拟串口
在前三篇文章中由简到烦的介绍了模拟串口的设计规则,但是在前三篇文章中所实现的方法并不能满足我们在实际工程中的使用。在这篇文章中,我将详细的描述模拟串口的实现,并提供相关代码来供大家参考。 1 原理 为了书写的方便,我将使用我的模版文件,关于模版文件的详细介绍请参考这篇文章。同样的,我们认为一个字节是10个位【起始位(1bit)+数据位(8bit)+停止位(1bit)】。 同样的为了方便,我们先实现发送功能再实现接收功能。为了扩大本文章所述内容的适用性,我将使用MAX3485芯片,关于这款芯片的使用方法我将进行详细介绍,同时也请参见《》。 1.1 设计逻辑 发送数据:串口调试助手1发送数据——调用模拟串口发送——模拟串口
[单片机]
MSP430学习总结——UART串口
一、MSP430串口 我用的这个单片机是MSP430F5529,这个单片机有两个串口,分别是USCI_A0和USCI_A1,以下是关于MSP430串口的配置以及接收函数和发送函数。 二、串口配置 说到串口,那肯定离不开起始位、数据位、校验位、停止位以及波特率。 先来说一下常用的寄存器。 串口控制寄存器0 这个寄存器可以设置数据位,停止位和校验位等 串口控制寄存器1 这里可以设置时钟源和中断使能等 波特率设置寄存器 波特率设置涉及到三个寄存器UCA0BR,UCA0BR1,UCA0MCTL 具体的设置方法在芯片手册上有写,也可以参考一下这位大佬的博客https://blog.csdn.net/weixin_27070451
[单片机]
MSP430学习总结——UART<font color='red'>串口</font>
一个简单的流水灯c51程序
//代码 #include reg52.h //头文件 #define uchar unsigned char //宏定义 #define uint unsigned int void delay(uint x) //延时函数(控制灯亮与灭的间隔) {  uint i,j; for(i=500;i 0;i--) for(j=x;j 0;j--); } void main() //主函数 {   uchar i; //定义局部变量   P2=0x00; //关闭所有发光二极管   while(1) //死循环   {    P2=0xfe; //第一个二极管亮    delay(100); //延时     fo
[单片机]
基于STM32f030c8t6的spi,iic,串口的初始化源程序
stm32单片机源程序如下: #include spi.h #include uart.h #include stdio.h #include delay.h void SPI1_Init(void) { RCC - AHBENR |=0X01 18; RCC - APB2ENR |=0x01 12; //SCK(pb3) MOSI(pb5)配置为普通功能推挽输出 //端口模式设置 //模式----通用输出模式(01) GPIOB- MODER &=~(0x03 6 |0x03 10); GPIOB- MODER |=0X01 6 | 0
[单片机]
第13章 1602液晶与串口实用例程
理论上的内容要想逐步消化掌握,必须得通过大量的实践进行巩固,否则时间一长,极容易忘掉。尤其是一些编程的算法相关的技巧,就是靠不停的写程序,不停的参考别人的程序慢慢积累成长起来的。这节课带着大家学习一下1602的例程和实际开发中比较实用的串口程序。 13.1 通信时序解析 随着我们对通信技术的深入学习,大家要逐渐在头脑中建立起时序这种概念。所谓“时序”从字面意义上来理解,一是“时间问题”,二是“顺序问题”。 先说“顺序问题”,这个相对简单一些。我们在学UART串口通信的时候,先1位起始位,再8位数据位,最后1位停止位,这个先后顺序不能错。我们在学 1602液晶的时候,比如写指令,RS=L,R/W=L,D0~D7=指令码
[单片机]
第13章 1602液晶与<font color='red'>串口</font>实用例程
嵌入式系统的USB虚拟串口设计
   引 言:   现代嵌入式系统中,异步串行通信接口往往作为标准外设出现在单片机和嵌入式系统中。但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失。于是嵌入式开发人员常常发现自己新买来的计算机上没有串口,或者出现调试现场用户的计算机没有串口的尴尬局面。相反,现在的个人计算机普遍拥有4个以上的USB接口,能不能使用USB接口代替串口,完成PC机和嵌入式系统的通信呢? 1 USB虚拟串口代替物理串口的可行性   首先,越来越多带USB接口的器件涌现出来,如带USB接口的单片机,或独立的USB接口器件,而且这些器件的成本已经很接近于使用RS232电平转换芯片所带来的成本。   其次
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved