智能仪器设计报告——基于单片机和fpga的矩阵键盘控制系统设计(编辑修改稿)内容摘要:
fine LCD_PAGE 0xB8 //页指令 define LCD_COL 0x40 //列指令 //液晶引脚定义 sbit DI = P2^0。 //数据 /命令选择线 sbit RW = P2^1。 //读 /写控制线 sbit E = P2^2。 //使能控制线 sbit CS1 = P2^3。 //片选 1 sbit CS2 = P2^4。 //片选 2 sbit RST = P2^5。 //复位 // // LCD 忙等待 // void LCD_Busy_Wait() { do { LCD_DB_PORT = 0xFF。 //液晶端口置高电平 RW = 1。 _nop_()。 DI = 0。 //设置为读,选择状态寄存器 E = 1。 _nop_()。 E = 0。 //E 置高电平读取,随后置为低电平 } while (P0 amp。 0x80)。 } // // 向 LCD 发送命令 《智能仪器 设计》 大作业 —— 基于单片机和 FPGA的矩阵键盘控制系统设计 14 // void LCD_Write_Command( INT8U c) { LCD_Busy_Wait()。 //液晶忙等待 LCD_DB_PORT = 0xFF。 //液晶端口置高电平 RW = 0。 _nop_()。 DI = 0。 //设置为写,选择命令寄存器 LCD_DB_PORT = c。 //一字节命令放置到液晶端口 E = 1。 _nop_()。 E = 0。 //E 置高电平读取,随后置为低电平 } // // 向 LCD 发送数据 // void LCD_Write_Data(INT8U d ) { LCD_Busy_Wait()。 //液晶忙等待 LCD_DB_PORT = 0xFF。 //液晶端口置高电平 RW = 0。 _nop_()。 DI = 1。 //设置为写,选择数据寄存器 LCD_DB_PORT = d。 //一字节数据放置到液晶端口 E = 1。 _nop_()。 E = 0。 //E 置高电平读取,随后置为低电平 } // // 初始化 LCD // void LCD_Initialize() { CS1 = 1。 CS2 = 1。 //左右半屏片选 LCD_Write_Command(0x3F)。 // 显示开 LCD_Write_Command(LCD_START_ROW)。 // 设置起始行 } // // 《智能仪器 设计》 大作业 —— 基于单片机和 FPGA的矩阵键盘控制系统设计 15 // 通用显示函数 // // 从第 P 页第 L 列开始显 示 W 个字节数据 ,数据在 r 所指向的缓冲 // 每字节 8 位是垂直显示的 ,高位在下 ,低位在上 // 每个 8*128 的矩形区域为一页 // 整个 LCD 又由 64x64 的左半屏和 64x64 的右半屏构成 // void Common_Show(INT8U P,INT8U L,INT8U W,INT8U *r) { INT8U i。 //显示在左半屏还是右半屏 if( L 64) { CS1 = 1。 CS2 = 0。 LCD_Write_Command(LCD_PAGE + P)。 LCD_Write_Command(LCD_COL + L)。 //全部显示在左半屏 if( L + W 64) { for( i = 0。 i W。 i ++) LCD_Write_Data(r[i])。 } //如果越界则跨越左右半屏显示 else { //左半屏显示 for(i = 0。 i 64 L。 i ++) LCD_Write_Data(r[i])。 //右半屏显示 CS1 = 0。 CS2 = 1。 LCD_Write_Command(LCD_PAGE + P)。 LCD_Write_Command(LCD_COL)。 for( i = 64 L。 i W。 i ++) LCD_Write_Data(r[i])。 } } //全部显示在右半屏 else { CS1 = 0。 CS2 = 1。 LCD_Write_Command(LCD_PAGE + P)。 《智能仪器 设计》 大作业 —— 基于单片机和 FPGA的矩阵键盘控制系统设计 16 LCD_Write_Command(LCD_COL + L 64)。 for( i = 0。 i W。 i ++) LCD_Write_Data(r[i])。 } } // // 显示一个 8 16 点阵字符 // void Display_A_Char(INT8U P,INT8U L,INT8U *M) { Common_Show( P, L, 8, M )。 Common_Show( P + 1,L, 8, M + 8 )。 } // // 显示一串 8x16 点阵字符 // void Display_A_Char_String(INT8U P,INT8U L,INT8U C,INT8U *M) { INT8U i。 for(i = 0。 i C。 i ++) Display_A_Char( P, L + i * 8, M + i * 16)。 } // // // 名称 :LGM12864(KS0108)液晶显示程序 // // 说明 :开机时系统从 EPROM 2764 中读取画面并显示到 12864LCD // // include include include define INT8U unsigned char 《智能仪器 设计》 大作业 —— 基于单片机和 FPGA的矩阵键盘控制系统设计 17 define INT16U unsigned int define keyport P1 //12864LCD 相关函数 void LCD_Initialize()。 void Display_A_Char(INT8U,INT8U,INT8U *)。 void Display_A_Char_String(INT8U,INT8U,INT8U,INT8U *)。 //void Display_A_WORD(INT8U,INT8U,INT8U *)。 //void Display_A_WORD_String(INT8U,INT8U,INT8U,INT8U *)。 //void Display_Image(INT8U,INT8U,INT8U,INT8U,INT8U * )。 INT8U code Char_1[]={ /* 文字 : 1 */ /* 宋体 12。 此字体下对应的点阵为:宽 x高 =8x16 */ 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, }。 INT8U code Char_2[]={ /* 文字 : 2 */ /* 宋体 12。 此字体下对应的点阵为:宽 x高 =8x16 */ 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, }。 INT8U code Char_3[]={ /* 文字 : 3 */ /* 宋体 12。 此字体下对应的点阵为:宽 x高 =8x16 */ 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, }。 INT8U code Char_4[]={ /* 文字 : 4 */ /* 宋体 12。 此字体下对应的点阵为:宽 x高 =8x16 */ 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, }。 INT8U code Char_5[]={ /* 文字 : 5 */ /* 宋体 12。 此字体下对应的点阵为:宽 x高 =8x16 */ 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, }。 INT8U code Char_6[]={ /* 文字 : 6 */ /* 宋体 12。 此 字体下对应的点阵为:宽 x高 =8x16 */ 《智能仪器 设计》 大作业 —— 基于单片机和 FPGA的矩阵键盘控制系统设计 18 0x00,0xE0,0x10,0x88,0x88,0x18,0。智能仪器设计报告——基于单片机和fpga的矩阵键盘控制系统设计(编辑修改稿)
相关推荐
示模块的工作。 直接访问方式的接口电路如图 21 所示, 在图中,单片机通过高位地址 A11 控制CSA, A10 控制 CSB,以选通液晶显示屏上各区的控制器;同时用地址 A9 作为R/W 信号控制数据总线的数据流向;用地址 A8 作为 D/I 信号控制寄存器的选择,E(使能 )信号由 RD 和 WE 共同产生,这样就实现了单片机对液晶显示模块的电路边接。 电位器用于显示对比度的调节。 (二
序存储器锁定 (7) 128*8 位内部 RAM (8) 32 条可编程 I/0 线 (9)两个 16 位定时器 /计数器 (10) 5 个中断源 (11)可编程串行通道 (12)低功耗的闲置和掉电模式 (13)片内振荡器和时钟电路 AT89C51 的管脚说明如下 : VCC 端口 :供电电压。 GND 端口 :接地端口。 PO 端口 :PO 端口为一个 8 位漏级开路双向 I/0 端口
在实际应用中,常常会设计到电参数的测量。 LED电参数的测量,与一般二极管的测量方法相同,在规定测试条件下,采用电压表一电流表的方法即可。 只是在反向特性测试时,应该特别注意,反向电压不允许加大到击穿值。 在 LED 显示屏规模较大时,使用晶体管显示仪进行测量更为方便。 ADM3251E ADM3251E 是 ADI( Analogdevice,inc)公司推出基于其专利 iCoupler
件见表。 表 74HC573推荐操作条件表 这个器件带有 保护电路,以免被高的静态电压或电场损坏。 然而,对于高阻抗电路,必须要采取预防以免工作在任何高于最大值范围的条件下工作。 VIN和 VOUT应该被约束在 GND≤( VIN或 VOUT)≤ VCC。 RS232 的介绍 RS232 是 由电子工业协会 (EIA) 所制定的异步传输标准接口。 通常 RS232 接口以 9 个引脚 (DB9)
一一 软软 通通 系系 统统 功功 能能 结结 构构 ““ 列列 一一 软软 通通 管管 理理 系系 统统 ”” 是是 一一 套套 功功 能能 强强 大大 的的 智智 能能 卡卡 管管 理理 系系 统统 , 其其 一一 般般 功功 能能 结结 构构 如如下下 图图 :: 系系 统统 功功 能能 结结 构构 组组 成成 图图 一软 通系统的一般 工作原理 ““ 系系 列列 一一 软软 通通 管管
提供了方便,也大大提高了程序的正确性和可靠性。 基于以上的优点, MFC 在 Windows 应用程序开发中得到广泛应用。 霍尔 1 霍尔 2 霍尔 3 轨迹 磁铁 河北工业大学 2020 届本科毕业设计说明书 10 MFC 测试程序设计 运用 C++的 MFC编写上位机测试程序,其基本过程如下: MFC的可执行程序,输入文件标题,确立该工程的基本属性问题。 、基类名和文件名。