语法: lcd_load( buffer_pointer, offset, length);

LCD_LOAD()

语法: lcd_load( buffer_pointer, offset, length);

参数: buffer_pointer指向发送给LCD的用户数据;

offset是用来将该数据写入LCD,用作进入LCD segment memory的偏移量;

length是传送的字节数.

要求: 没有.

功能: 该函数将从CPU的buffer_pointer存储区取length个字节,装载到923/924 LCD的segment data area(段数据区),起始偏移量offset范围为0~15. LCD_symbol( )函数提供一个简易的方法将数据写入LCD segment memory(LCD段码存储区),这样,LCD就可显示数据了.

有效性: 该函数只对带有LCD驱动硬件的CPU器件有效;

要求: 常数被定义在devices.h的头文件中.

例子: lcd_load( buffer, 0, 16 );

例子文件: ex_92lcd.c; 文件ex_92lcd.c如下:

#if defined( PCM ) //若使用了PCM编译器,则defined( PCM)返回值为1

#include <16c924.h> //包含16c924.h头文件

#fuses HS, NOWDT, PUT //HS:高速晶振/谐振器, NOWDT:不使用WDT

// NOPROTECT:程序存储器代码不保护

#use delay(clock=20000000) //使能内置函数的功能:delay_ms()和delay_us()

//#USE DELAY()必须在#use rs232()使用之前出现.

#endif //结束if定义

// LCD Configuration(LCD配置) //

// Digit segments(数字段) A B C D E F G DP

// b7 b6 b5 b4 b3 b2 b1 b0

#define DIGIT4 COM1+26, COM1+17, COM2+17, COM3+26, COM2+25, COM1+25, COM2+26, COM3+17

#define DIGIT3 COM1+24, COM1+16, COM2+16, COM3+24, COM2+23, COM1+23, COM2+24, COM3+16

#define DIGIT2 COM1+22, COM1+19, COM2+19, COM3+22, COM2+21, COM1+21, COM2+22, COM3+19

#define DIGIT1 COM1+20, COM1+18, COM2+18, COM3+20, COM2+28, COM1+28, COM2+20, COM3+18

// character 0 1 2 3 4 5 6 7 8 9

byte const Digit_Map[10] = {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xE6};

#define BLANK 0 //用BLANK代替0

#define DASH 11 //用DASH代替11

byte lcd_pos; //声明字节变量lcd_pos

void lcd_putc(char c) {

byte segments; //声明字节型暂态变量segments

if(c=='\f') // '\f'表示走纸换页

lcd_pos=0; //如果c是'\f'(走纸换页符),则将lcd_pos赋给0;

else {

if( (c>='0') && (c<='9') ) //若c是0~9的ASCII码值,则执行下面语句

segments=Digit_Map[c-'0']; //根据c-'0' 的值查表,求得c对应LCD显示的代码值

else

segments=BLANK; //若c不是0~9的ASCII码值,则将segments赋值为0

switch(lcd_pos) {

case 1 : lcd_symbol( segments, DIGIT4 ); break; // fill 1000s place

case 2 : lcd_symbol( segments, DIGIT3 ); break; // fill 100s place

case 3 : lcd_symbol( segments, DIGIT2 ); break; // fill 10s place

case 4 : lcd_symbol( segments, DIGIT1 ); break; // fill 1s place

}

}

lcd_pos++;

}

void main() {

long number = 0; //声明长整型变量number,并赋值为0

setup_lcd( LCD_MUX14|STOP_ON_SLEEP, 2, ALL_LCD_PINS );

while(TRUE) {

printf(lcd_putc,"\f%4lu",number);

if(number++==10000)

number=0;

delay_ms(100); //延时100ms

}

}

相关推荐
SlientICE3 小时前
TCP是什么?不需要!使用ESP32网络层直接通信!
网络·单片机·网络协议·tcp/ip
BW.SU6 小时前
单片机 + 图像处理芯片 + TFT彩屏 触摸开关控件 v1.2
单片机·人机交互·ra8889·开关控件·触摸屏设计
双叶8366 小时前
(51单片机)点阵屏LED显示图片(点阵屏LED教程)(74Hc595教程)
c语言·开发语言·单片机·嵌入式硬件·51单片机
深圳市青牛科技实业有限公司6 小时前
D3502C:一款高性能降压转换器的技术解析,可替代U3502C采用ESOP8封装
单片机·嵌入式硬件·快充·扫地机器人吸尘·筋膜枪电机·驱动轮电机
Go高并发架构_王工6 小时前
基于 GoFrame 框架的电子邮件发送实践:优势、特色与经验分享
网络·经验分享·golang
顾念`6 小时前
履带小车+六轴机械臂(2)
单片机·嵌入式硬件
努力创造奇迹6 小时前
STM32 HAL库 ADC+TIM+DMA 3路 1S采样一次电压
stm32·单片机·嵌入式硬件
leoFY1237 小时前
STM32 BOOT设置,bootloader,死锁使用方法
stm32·单片机·嵌入式硬件
czhaii8 小时前
单片机任意普通IO引脚使用定时器扩展外部中断的巧妙方法
单片机·嵌入式硬件
二块烧肉10 小时前
STM32 认识STM32
stm32·单片机·嵌入式硬件