-
-
1
-
101115332并口LCD1602用DMA直接刷新@Ai8051U-管脚兼容89C52, 不占CPU时间 Ai8051U,DMA-M6800接口 驱动 LCD1602-字符液晶模块 ===DMA 刷新, 不占用CPU时间 LCD1602字符液晶模块,命令和数据全部由DMA-LCM/M6800接口驱动 ===并口 LCD1602 的访问不能快,CPU会浪费大量时间在等待 ===用I/O口模拟LCD1602的M6800接口方式访问也是浪费CPU大量时间 ===所以这种超级慢速的外设也需要 DMA来支持释放MCU 本程序在Ai8051U实验箱上验证,使用3.3V的LCD1602模块。 本例循环显示两行字符。 实验箱上的背光电阻0C51 MDK https://blog.csdn.net/2401_85774947/article/details/144844599 [UV2] ORGANIZATION="czh" NAME="Administrator", "czh" EMAIL="cz" ARMSEL=1 TOOL_VARIANT=mdk_lite CDB0=UV4\STC.CDB ("STC MCU Database") [ARM] PATH="C:\Keil\ARM\" VERSION=4.12 PATH1="C:\Program Files\CodeSourcery\Sourcery G++ Lite\" TOOLPREFIX=arm-none-eabi- CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV10) # Drivers for ARM7/9 devices CPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV9) # Drivers for Cortex-M devices CPUDLL2=SARMCR4.DLL(TDRV7) # Driv22020#include <REG51.H> #include "intrins.h" #define uchar unsigned char #define uint unsigned int uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //======================== void main(void) { uchar cnt=0; while(1) { P0=0xaa;_nop_(); P0=0x55; _nop_(); for(cnt=0;cnt<10;cnt++) { if(cnt<10)break; //修改 cnt==10 循环显示0-9 P0=SEG7[cnt]; } for(cnt=0;cnt<10;cnt++) { if(cnt==10)break; //修改 cnt==10 循环显示0-9 P0=SEG7[cnt]; } } }

































