系统功能
利用STM8内部的SPI通讯总线来驱动LCD12864。
硬件设计
LCD12864电路原理图
软件设计
/*********************************************************************
目标系统: 基于STM8单片机
应用软件: Cosmic CxSTM8
*********************************************************************/
#include #include
void st7920LcdInit(void)
{
u8 i;
SPI_Init();
delay_ms(100);
PE_DDR|=0x20;
PE_CR1|=0x20;
PE_CR2|=0x20;
sendCodeST7920(0x0c);//整体显示
sendCodeST7920(0x01);//清屏
sendCodeST7920(0x02);
for(i=0;i<64;i++)
lcd_buffer[i]=' ';
//memset(lcd_buffer,' ',sizeof(lcd_buffer));
}
void sendCodeST7920(u8 Lcd_cmd)
{
E_CLK
LCD_DELAY()
E_SET
SPI_sendchar(0xF8);
SPI_sendchar(Lcd_cmd & 0xF0);
SPI_sendchar(Lcd_cmd << 4);
LCD_DELAY()
E_CLK
LCD_DELAY()
}
void sendDataST7920(u8 Lcd_data)
{
E_CLK
LCD_DELAY()
E_SET
SPI_sendchar(0xFA);
SPI_sendchar(Lcd_data & 0xF0);
SPI_sendchar(Lcd_data << 4);
LCD_DELAY()
E_CLK
LCD_DELAY()
}
关键字:STM8 SPI驱动 LCD12864
引用地址:
STM8 SPI驱动LCD12864
推荐阅读最新更新时间:2024-11-11 01:45
STM8的学习—LED
无论学习什么都要先从简单的东西入手,驱动小灯都会成为学习者的第一课,让小灯闪烁,通过配置IO口的状态,让IO口隔间隔的输出高低电平,间隔时间为ms级的否则认的肉眼难以设别小灯的亮灭! 程序如下: #include iostm8s105c6.h unsigned int i; //时钟初始化 void CLK_Init(void) { CLK_CKDIVR = 0x00; } //GPIO初始化 void GPIO_Init(void) { PD_DDR|=0x01; //PD0输出,其余保持原功能 PD_CR1|=0x01; //对应位设置为推挽输出 PD_CR2|=0x00; //输出最
[单片机]
LPC2134学习日志(二)-- LCD12864时钟
这两个星期貌似有点忙,弄的懒猫身心疲惫,甚至有时忍不住竟对别人发了火,这一点懒猫很抱歉,在此说一对不起,希望你们能谅解。好了,再忙,懒猫也得抽空学点东东,还是那句老话,学如行舟,不进则退,懒猫虽爱飞,但还没有学会飞,所以为了懒猫能周游世界的梦想,懒猫一定要好好奋斗再好好奋斗! 嗯,好了,不费话,这几天抽空在上篇日志的基础上写,又添加了点东东,做了个实时时钟,当然功能还不全,还没有调时间的功能,还没有定时的功能,LCD12864上也没有添加菜单的功能 反正这个是最简单的实时时钟,主要就是学习一下LPC2134内部的RTC,程序虽然能运行,但是在仿真时出了点小BUG,就是秒值3秒钟才更新一次,这一点让懒猫很郁闷,找了良久也没有找出原因,
[单片机]
单片机写数据到LCD12864点阵型液晶显示器内部ST7920芯片
#include reg52.h #define uchar unsigned char #define uint unsigned int #define LCD12864Data P2//LCD12864点阵型液晶显示器输入输出数据/命令端口 sbit LCD12864_RS=P0^7;//LCD12864点阵型液晶显示器数据/命令选择端 sbit LCD12864_RW=P0^6;//LCD12864点阵型液晶显示器读/写端 sbit LCD12864_EN=P0^5;//LCD12864点阵型液晶显示器使能端 //太阳 uchar code sun ={0x00,0x00,0x00,0x00,0x00,0x00,0x00
[单片机]
STM8单片机无线315&433脉宽自适应_通用解码程序
单片机源程序如下: /* RFINT不能用PA1 要改板 改在PC6 */ /* Includes ------------------------------------------------------------------*/ #define MAIN_C #include ALL.h void Delay(u16 nCount) { /* Decrement nCount value */ while (nCount != 0) { nCount--; } } //10ms定时中断初始 在PWM时可更改 void TIME1_CONFIG(void) { /* Init TIMER 1 *
[单片机]
STM8除法运算的时间及注意事项
STM8单片机在乘除法上的时间大为缩短了!除法运算也只需要2.75us @ 8MHz。 需要注意的是,不要在中断程序中做乘除法运算,会出错。 论坛上的解释是:这是因为做乘法运算时,编译器实际上调用了一个函数,而这个函数用到了几个编译器自定义的全局变量,如果不按照2楼说的去做,在进入中断时不会保存这几个全局变量,而造成这个乘法运算函数为不可重入,导致错误。
[单片机]
STM8 中断控制器(ITC)
STM8中断控制器简介 中断控制器提供如下功能: 硬件中断的管理 所有I/O引脚都具有外部中断能力,每一个端口都有独立的中断向量以及独立的标志。 外设中断能力 软件中断的管理(TRAP) 具有灵活的优先级和中断等级管理,支持可嵌套的或同级中断管理: 多达4个软件可编程的嵌套等级 最多有32个中断向量,其入口地址由硬件固定 2不可屏蔽的事件:RESET,TRAP 1个不可屏蔽的最高优先级的硬件中断(TLI) 基于如下STM8资源的中断管理: 位I1和I0位于CPU的条件代码寄存器(CCR) 软件优先级寄存器(ITC_SPRx) 复位向量地址0x00 8000位于程序空间的起始部分。对于
[单片机]
STM8都支持哪些RTOS操作系统?
一、引伸问题 回答这个问题之前,引伸一个问题:STM8有必要使用操作系统吗? 这个问题其实没有标准答案,我用STM8裸机开发过项目,也在STM8的项目上跑过RTOS。 具体要看项目实际情况:MCU资源情况、功能复杂程度、实时性等。 比如:通过UART通信,简单控制几个IO口,这种或许没必要跑RTOS。 二、回归主题 STM8都支持哪些RTOS操作系统? 我找了下官方资料,共列举4种: 1.AtomThreads 这个RTOS应该是使用STM8跑操作系统的人都了解,或者听说过。 我觉得这个系统应该是目前(在STM8上)用的最多的一个RTOS. 在这4个系统中,我也只在STM8上跑过该操作
[单片机]
8位MCU将消失?你想错了
8位微控制器能否再经历一场复兴?
随着ARM处理器架构的兴起和32位微控制器的广泛应用,人们很容易假设,随着32位处理器芯片的价格和功耗的下降,采用8位MCU进行设计已经变得越来越没有竞争力了。
但现实情况并非如此。Microchip、Atmel和意法半导体等芯片供应商比以往任何时候更致力于完善和升级自己的8位微控制器,并正为其添加高性能外设和扩展开发工具。
微芯科技(Microchip)的Lucio Di Jasio提到:“我们不会将8位微控制器做低价化处理,相反,我们正在加大对8位PIC系列单片机的投资,以把它应用在新的更高性能的应用中”。
对于高端电机控制是否真的需要一个32位ARM微控制器或一个基于M
[单片机]