HT89C51单片机编程软件

89C51单片机控制HT1621B驱动LCD(C程序)
23:03:38来源: eefocus 关键字:&&&&&&
//********WAVE-E6000/T***************&//*MCU:&&&&&&&&& AT&&&&&&&&&&& *&//*MCU-crystal:& 12M&&&&&&&&&&&&&&& *&//***********************************&#include&#include&#define uint unsigned int&#define uchar unsigned char&//****************************&sbit P1_0=P1^0;&sbit P1_1=P1^1;&sbit P1_2=P1^2;&sbit P2_0=P2^0;&sbit P2_1=P2^1;&sbit P2_2=P2^2;&sbit P2_3=P2^3;&sbit P2_4=P2^4;&sbit P2_5=P2^5;&sbit P2_6=P2^6;&sbit P2_7=P2^7;&sbit P3_6=P3^6;&sbit P3_7=P3^7;&sbit P0_7=P0^7;&//****************************&//定义LCD的连接端口&//****************************&#define LCD_RS&& P2_5&#define LCD_RW&& P2_6&#define LCD_EN&& P2_7&#define BUSY&&&& P0_7&#define LCDPort0 P0&#define SCL&&&&& P3_6&#define SDA&&&&& P3_7&#define K1&&&&&& P1_0&#define K2&&&&&& P1_1&#define K3&&&&&& P1_2&//********************************&static uchar bdata StateREG;&& //可位寻址的状态寄存器&sbit CY1 = StateREG^1;&&&&&&&&& //状态&//********************************&uchar& Command_C&uchar& Command_Code_No;&uchar& Buf_C&uchar& Buf_A&uchar&&&&uchar& code Table[]={0x48,0x65,0x6c,0x6c,0x6f,0x20,0x52,0x49,&&&&&&&&&&&&&&&&&&&&& 0x53,0x49,0x4f,0x4e,0x00};& //"Hello RISION"&//******************************&//函数原型声明 *****************&//******************************&void& LCDBusy(void);&void& LCDWrite_Command(void);&void& LCDWrite_Command_No(void);&void& INITLCD(void);&void& LCDWrite_Data(uchar Buf_Data);&void& _nop_(void);&void& delay_ms(uchar ms);&void& LCDWrite_String(void);&void& STA(void);&void& STOP(void);&void& Write_DATA();&void& Read_DATA();&void& WRBYT(uchar EEROM_Buf);&//*******************************&//===============================&//延时最大255毫秒&//===============================&void delay_ms(uchar ms)&{& uchar i,j;& for(j=0;j<j++)&& for (i=0;i<124;i++)&& _nop_();&}&//===========================&//写一个命令字节,不进行忙检测&//===========================&void LCDWrite_Command_No()&{&&&&&& LCD_EN=0;&&&&&& LCD_RS=0;&&&&&& LCD_RW=0;&&&&&& LCDPort0=Command_Code_No;&&&&&& LCD_EN=1 ;&&&&&& _nop_();&&&&&& LCD_EN=0;&}&//===========================&//写一个命令字节,进行忙检测&//===========================&void LCDWrite_Command()&{&&&&&& LCDBusy();&&&&&& LCD_EN=0;&&&&&& LCD_RW=0;&&&&&& LCD_RS=0;&&&&&& LCD_EN=1;&&&&&& LCDPort0=Command_C&&&&&& LCD_EN=0;&}&//===========================&//LCD状态检测&//===========================&void LCDBusy()&{&&&& uchar BUSY_A;&& do{&&&&& LCDPort0=0xFF;&&&&& LCD_EN=0;&&&&& LCD_RS=0;&&&&& LCD_RW=1;&&&&& LCD_EN=1;&&&&& BUSY_A=LCDPort0;&&&&& LCD_EN=0;&&&&& }&&&& while ((BUSY_A&0x80)!=0x00);&}&//****************************&void INITLCD()&{&&&& delay_ms(15);&&&& Command_Code=0x38;&&&& LCDWrite_Command_No();&&&& delay_ms(5);&&&& Command_Code=0x38;&&&& LCDWrite_Command_No();&&&& delay_ms(5);&&&& Command_Code=0x38;&&&& LCDWrite_Command_No();&&&& Command_Code=0x38;&&&& LCDWrite_Command();& //设定LCD为16*2显示,5*7点阵,8位数据接口&&&& Command_Code=0x01;&&&& LCDWrite_Command();& //显示清屏。&&&& Command_Code=0x06;&&&& LCDWrite_Command();& //显示光标自动右移,整屏不移动。&&&& Command_Code=0x0C;&&&& LCDWrite_Command();& //开显示,不显示光标&}&//********************************&//===========================&//写一个命令字节,进行忙检测&//===========================&void LCDWrite_Data(uchar Buf_Code)&{&//&&&&& Buf_Code=Buf_Code|0x40;&&&&&& LCDBusy();&&&&&& LCD_EN=0;&&&&&& LCD_RW=0;&&&&&& LCD_RS=1;&&&&&& LCD_EN=1;&&&&&& LCDPort0=Buf_C&&&&&& LCD_EN=0;&}&//****************************&void LCDWrite_String()&{&& Command_Code=0xC2;cont=0;&&&& do{&&&&&&& LCDWrite_Command();&&&&&&& Command_Code++;&&&&&&& LCDWrite_Data(Table[cont]);&&&&&&& cont++;&&&&&&& }&&&&& while(Table[cont]!=0x00);&&&&&&}&//****************************&void STA()&{&&& SDA=1;&&& _nop_();&&& _nop_();&&& SCL=1;&&& _nop_();&&& _nop_();&&& SDA=0;&}&//****************************&void STOP()&{&&& SDA=0;&&& _nop_();&&& _nop_();&&& SCL=1;&&& _nop_();&&& _nop_();&&& SDA=1;&}&//****************************&void main()&{&& INITLCD();&& Command_Code=0x80;&& LCDWrite_Command();& //将数据指针设置到第一行的第一个字符。&& LCDWrite_Data(0x37);&& LCDWrite_String();&& while(1);&& {;}&}
关键字:&&&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。HT89C51单片机编程,_百度知道
HT89C51单片机编程,
HT89C51单片机编程,A/D转换实验
(1)采用16个ADC按键模拟模拟量输入,将转换后结果送数码管显示(0~1023),设计相应程序,对程序进行编辑、编译与调试。
(2)如果AD模块采用查询方式进行转换,编写程序并验证效果。
(3)如果AD模块采...
我有更好的答案
就是一个AD转换程序,通过AD转换的值来判断是哪一个按键按下了,方便留一个联系方式么?
采纳率:56%
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 903|回复: 0
HT1621液晶显示驱动详细原理及程序(共8页)
HT1621 是 128 点内存映象和多功能的 LCD 驱动器 , HT1621 的软件配置特性使它适用于多种 LCD 应用场合,包括 LCD 模块和显示子系统。用于连接主控制器和H T1621 的管脚只有 4 或 5 条, HT1621 还有一个节电命令用于降低系统功耗。
在虎风所做的这个系统中 ht1621 用于驱动一个静态的 LCD 液晶显示器。液晶显示的方式分为静态显示和动态显示 。 静态与动态的区别在于静态显示是持续供电的 , 而动态显示是利用人的视觉停留效果 , 快速扫描数码管各个段 , 让人在视觉上感觉到数码管是同时显示的。
0.png (460.28 KB, 下载次数: 7)
16:54 上传
0.png (141.37 KB, 下载次数: 8)
16:54 上传
完整的pdf格式文档51黑下载地址(共8页):
(609.1 KB, 下载次数: 29)
12:43 上传
点击文件名下载附件
下载积分: 黑币 -5
Powered by

我要回帖

更多关于 单片机c语言编程入门 的文章

 

随机推荐