历史上的今天
返回首页

历史上的今天

今天是:2025年04月18日(星期五)

正在发生

2020年04月18日 | PIC18F4520的ADC与LCD1602显示程序

2020-04-18 来源:eefocus

/*

说明:该程序使用的开发环境为:microchip公司的MPLAB X IDE v1.41、mplabc18-v3.40

      在该环境下编译成功、在proteus7.5中进行仿真成功。

      ADC使用的是通道1,液晶模块的RS、R/W、E、D0~D7与PIC18F4520的C0、C1、C2、RD0~RD7

      相连接。仿真时,RE3需要拉高电平,否则AD转换无法进行。

*/

#include

/*

说明:宏定义液晶模块的RS、R/W、E三个引脚的操作

*/

#define  DATA_OPERATE()    do{ TRISCbits.TRISC0=0; PORTCbits.RC0=1;}while(0)

#define  CMD_OPERATE()     do{ TRISCbits.TRISC0=0; PORTCbits.RC0=0;}while(0)

#define  READ()    do{ TRISD=0xff;TRISCbits.TRISC1=0; PORTCbits.RC1=1;}while(0)

#define  WRITE()   do{ TRISD=0x00;TRISCbits.TRISC1=0; PORTCbits.RC1=0;}while(0)

#define  DISABLE()        do{ TRISCbits.TRISC2=0; PORTCbits.RC2=0;}while(0)

#define  ENABLE()         do{ TRISCbits.TRISC2=0; PORTCbits.RC2=1;}while(0)

/*

液晶所需要显示的数据,由于在液晶模块的字库中包含所要显示的数据,所在可以直接如下所定义;否则,需要自己做欲显示数据的字模,那么显示函数还需要稍做修改,当然这里不需要。

*/

unsigned char  word[] = {"the_ADC_result:"};

unsigned char  ad_data[] = {"0123456789.v"};

/*

函数:延时函数

说明:这里对参数值稍作了调整,修改成20

*/

void delay(unsigned  dly)

{

    unsigned char temp;

    for(;dly>0;dly--)

        for(temp=20;temp>0;temp--);

      

}

/*************************************************************

功能:片上AD转换器初始化设置函数

参数:无

说明:设置使用通道0进行AD转换,转换后的数据采用右对齐的格式

      ADCON1与ADCON2的设置的意义可参看芯片说明书

*/

void init_ad()

{

    ADCON1=0X0C;

    ADCON2=0X94;

    ADCON0bits.ADON=1;

    ADCON0bits.CHS=1;

}

/*************************************************************

功能:获取AD转换结果函数

参数:返回16位转换结果数据--只有低10位是有效的转换数据

*/

unsigned int get_result()

{

    unsigned int dat=0;

    ADCON0bits.GO_DONE=1;

    while(ADCON0bits.GO_DONE);

    PIR1bits.ADIF=0;

    dat=ADRESH;

    dat=dat<<8;

    dat =dat+ADRESL;

    return dat;

}

/*************************************************************

功能:判断模块是否忙碌函数

参数:无

*/

unsigned char is_busy()

{

    unsigned char ret=0;

    CMD_OPERATE();

    READ();

    ENABLE();

    delay(1);

    ret=0x80&PORTD;

    DISABLE();

    return ret;

}

/*************************************************************

功能:向模块写命令函数

参数:8位命令数据,其代表的意义可参看模块说明书

*/

void lcd_write_cmd(unsigned char cmd)

{

    while(is_busy());

    CMD_OPERATE();

    WRITE();

    DISABLE();

    delay(1);

    PORTD=cmd;

    delay(1);

    ENABLE();

    delay(1);

    DISABLE();

}

/*************************************************************

功能:向模块写数据函数

参数:8位数据,其代表的意义可参看模块说明书

*/

void lcd_write_data(unsigned char dat)

{

    while(is_busy());

    DATA_OPERATE();

    WRITE();

    DISABLE();

    delay(1);

    PORTD=dat;

    delay(1);

    ENABLE();

    delay(1);

    DISABLE();

}

/*************************************************************

功能:设置模块显示位置函数

参数:8位数据,其代表的意义可参看模块说明书

*/

void lcd_pos(unsigned char pos)

{

    lcd_write_cmd(pos|0x80);

}

/*************************************************************

功能:模块初始化函数

参数:无

*/

void init_lcd()

{

    lcd_write_cmd(0x38);

    delay(1);

    lcd_write_cmd(0x0c);

    delay(1);

    lcd_write_cmd(0x06);

    delay(1);

    lcd_write_cmd(0x01);

    delay(1);

}

/*************************************************************

功能:主函数

参数:

*/

int main(int argc,char **argv)

{

    unsigned char i;

    unsigned int adc_result=0;

    init_ad();

    init_lcd();

    delay(10);

    lcd_pos(0x01);

    i = 0;

    while(word[i] != '')

    {

        lcd_write_data(word[i]);

        i++;

    }

   

    while(1)

    {

        lcd_pos(0x42);

        adc_result=get_result();

        i=adc_result*50/1024;

        lcd_write_data(ad_data[i/10]);

        lcd_write_data(ad_data[10]);

        lcd_write_data(ad_data[i%10]);

        lcd_write_data(ad_data[11]);

    }

    return 0;

}

推荐阅读

史海拾趣

Advanced Power Solutions公司的发展小趣事

随着公司的发展,Advanced Power Solutions开始寻求与行业内其他企业的合作。通过与一家知名电子设备制造商建立战略合作关系,公司成功将其电源管理解决方案集成到对方的产品中。这一合作不仅扩大了公司的市场份额,也提高了公司的品牌知名度。此后,公司陆续与多家企业建立了合作关系,进一步巩固了其在行业内的地位。

广东华裕(GDHY)公司的发展小趣事

Advanced Power Solutions公司自创立之初,就致力于电源管理技术的研发。在一次偶然的实验中,公司的研发团队发现了一种新的电源转换技术,可以显著提高能源利用效率。公司迅速投入资源,完善这项技术,并成功将其应用于新产品中。这款高效能的产品迅速在市场上获得了认可,为公司带来了可观的收益,也奠定了公司在电源管理领域的领先地位。

富之光(Fujicon)公司的发展小趣事

自成立以来,富致科技始终秉持创新精神,不断投入研发,引进美国最新的PPTC技术,并结合海内外技术专家的智慧,成功开发出多款高性能的自复式保险丝产品。这些产品凭借其出色的安全性能、稳定性和可靠性,迅速在市场上获得了认可。同时,富致科技积极拓展国内外市场,与众多知名企业和行业伙伴建立了长期稳定的合作关系,进一步巩固了其在PPTC保险丝领域的领先地位。

厦门法拉(faratronic)公司的发展小趣事

在追求商业成功的同时,FMI公司也积极履行社会责任,致力于环保和可持续发展。公司制定了一系列环保计划和程序,以确保在所有业务运营中保持环保意识。FMI的产品从设计到生产都遵循环保原则,采用环保材料和工艺,减少对环境的影响。此外,公司还积极参与行业内的环保活动,推动整个电子行业的绿色发展。这种负责任的企业形象为FMI赢得了社会的广泛赞誉和尊重。

Dionics Inc公司的发展小趣事

近年来,随着全球贸易环境的变化和市场竞争的加剧,Dionics Inc也面临着前所未有的挑战。然而,在公司管理层的坚强领导下,全体员工团结一心、共克时艰。公司不仅成功应对了各种挑战和困难,还通过一系列创新举措实现了业务的稳步增长。展望未来,Dionics Inc将继续坚持创新驱动的发展战略,努力成为电子行业的领军企业之一。

屹晶微(EG)公司的发展小趣事

随着业务的不断拓展和市场的不断扩大,屹晶微逐渐意识到与合作伙伴建立长期战略合作关系的重要性。于是,在2023年,他们与电子产业一站式服务平台华秋电子达成了授权代理合作。这一合作不仅为屹晶微提供了更广阔的市场渠道和客户资源,也为其未来的发展奠定了坚实的基础。

在合作过程中,华秋电子为屹晶微提供了全方位的支持和服务。他们共同推广屹晶微的芯片产品,为客户提供更优质的解决方案和服务。同时,华秋电子还利用自身的技术优势和渠道优势,帮助屹晶微拓展海外市场,提升品牌知名度和影响力。

以上两个故事只是屹晶微在电子行业中发展起来的一部分。他们的发展历程充满了挑战和机遇,但黄米龙和他的团队始终保持着坚定的信念和不懈的努力,为中国的芯片产业做出了积极的贡献。

问答坊 | AI 解惑

自制PIC16F84A烧写器

MICROCHIP公司所生產之單晶片微電腦—PIC16F84A是一顆很容易上手的 IC,功能也相當強,可重復燒錄上千次,價格不到NT150元,所以有很多非專業的玩家寫了很多的應用小品公佈在網路上。可惜非電子相關科系出身的人 (就像哦啦!!),有時望著英文的網頁 ...…

查看全部问答>

Sch原理图设计的常见问题

问题1:零件描述和零件标识有什么区别?     答:零件描述(Library Reference)是零件在零件库里的名称,将外形和引脚功能相同的零件取的一个通用名称;零件标识是电路图里用户根据需要自行设计的名称,当然也不能随意乱取。一般情况 ...…

查看全部问答>

EVC下如何加载JPEG图片文件?

EVC下如何加载JPEG图片文件,并且控制图片定位,大小? 有没有相关的库?…

查看全部问答>

采用FSK调制的射频信号是数字信号吗?

无线通信中什么叫数字信号,什么叫模拟信号 听说以前有手机是模拟信号的,现在都是数字的了 我想问,无线电磁波怎么能变成数字信号那样的方波?电磁波是正弦波,是连续的啊 用FSK调制的无线电信号无非是疏密相间的正弦波,这算是连续变化的(模 ...…

查看全部问答>

关于AD转换器AD7731与单片机

谁能提供AD7731的中文资料?网上只搜到了E文的,可惜自己E文不好 目前正想用89C51和AD7731实现直流表的功能 C51开发,很多东西正在整理学习中 希望和这方面有经验的前辈们学习,得到大家的宝贵指导 谢谢 我的邮件和MSN是 janphee@hotmail.com ...…

查看全部问答>

sd卡读写问题,有的文件能写进去,有的文件不能写进去

    如题,sd卡读写问题,有的文件能写进去,有的文件不能写进去。。。     高手指点一下,文件系统用的是EFSL     ARM7---EasyArm2200…

查看全部问答>

菜鸟求助,一段串口小程序困了我好几天了

我用的芯片是at91sam7x256,写了一段串口往上位机发送的小程序,但怎么调也是不通,初步估计是在初始化的时候没弄好,但是找不出问题在哪? #include \"/include/at91sam7S64/at91sam7s64.h\" #include \"/include/at91sam7s64/lib_at91sam7s64 ...…

查看全部问答>

嵌入式工程师必修之路

嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,东雪终将化去,春风定会吹来。具体步骤如下:   1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译机戒工业出版社   你能区分开指针数组和数组 ...…

查看全部问答>

电源问题

图中电感L1起什么作用?它的外形和变压器一样,画法也和变压器一样,是不是它就是变压器呢?本人是菜鸟,请大侠们不要见笑。谢谢!…

查看全部问答>

求助:关于一个设计方案的可行性评估

我新人,现在大二,专业方面仅仅刚开始入门。我这边有一个小的设计方案,不知可行性如何,望各位提供宝贵建议。谢谢!   想做一个装置,可以实现对多点温度、湿度以及光照强度的采样,后通过数据分析,来计算出一个模拟量(可以是模拟供水量 ...…

查看全部问答>