完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 yingtao246 于 2015-4-27 16:23 编辑
#include #include #include < intrins.h > ***it RS = P2^4; //定义端口 ***it RW = P2^5; ***it EN = P2^6; ***it P27 = P2^7; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P1 #define uint unsigned int #define uchar unsigned char uchar getdata;//转换后得到数据 uchar qian,bai,shi,ge; uchar code table1[]="0123456789"; uchar getdata=0; void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } ***it EOC=P2^3; /*------------------------------------------------ 判忙函数 ------------------------------------------------ bit LCD_Check_Busy(void) { #ifdef CHECK_BUSY DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort & 0x80); #else return 0; #endif } */ /*------------------------------------------------ 写入命令函数 ----------------- ----------------------------*/ void LCD_Write_Com(unsigned char com) { //while(LCD_Check_Busy()); 忙则等待 RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; } /*------------------------------------------------ 写入数据函数 ------------------------------------------------*/ void LCD_Write_Data(unsigned char Data) { //while(LCD_Check_Busy()); 忙则等待 RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; } /*------------------------------------------------ 清屏函数 ------------------------------------------------*/ void LCD_Clear(void) { LCD_Write_Com(0x01); DelayMs(5); } /*------------------------------------------------ 写入字符串函数 ------------------------------------------------*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0) { LCD_Write_Com(0x80 + x); //表示第一行 } else { LCD_Write_Com(0xC0 + x); //表示第二行 } while (*s) { LCD_Write_Data( *s); s ++; } } /*------------------------------------------------ 写入字符函数 ------------------------------------------------*/ void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0) { LCD_Write_Com(0x80 + x); } else { LCD_Write_Com(0xC0 + x); } LCD_Write_Data( Data); } /*------------------------------------------------ 初始化函数 ------------------------------------------------*/ void LCD_Init(void) { LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(10); LCD_Write_Com(0x38); DelayMs(10); LCD_Write_Com(0x38); DelayMs(10); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*显示关闭*/ LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(10); LCD_Write_Com(0x0C); /*显示开及光标设置*/ LCD_Write_Com(0x01); /*显示清屏*/ DelayMs(10); } void adc0809() { while(1) { P27=1; DelayMs(10); while(!EOC); P27=0; getdata = P0; DelayMs(10); } } void chufa()//将各位数字拆开函数 { qian=(getdata*2)/1000; bai=(getdata*2)%1000/100;//求百位数字 shi=(getdata*2)%100/10;//求十位数字 ge=(getdata*2)%10;//求各位数字 LCD_Write_Com(0x80);//设置显示地址为LCD第一行,一旦首地址确定,显示完第一个数字后,光标会自动加1右移 LCD_Write_Data(table1[bai]);//第一位显示百位 // LCD_Write_Data(table1[10]); //第二位显示小数点 LCD_Write_Data(table1[shi]); //第三位显示十分位 LCD_Write_Data(table1[ge]); //第四位显示百分位 DelayMs(10);//改变数值可以修改数字滚动的速度 } void main() { void LCD_Init(void);//调用液晶初始化函数 while(1)//程序一直循环执行0-999的计数 { adc0809();//启动0809转换,并得到转换后的结果 chufa();//调用将各位数字拆开函数 } } 这个程序为什么不能显示输出?哪里有问题?
|
|
相关推荐
2 个讨论
|
|
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
195 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
172 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
453 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
697 浏览 2 评论
602 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11983 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 06:13 , Processed in 0.712151 second(s), Total 47, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号