基于pic单片数字电压表仿真设计.docVIP

  • 5
  • 0
  • 约1.22万字
  • 约 7页
  • 2016-10-07 发布于贵州
  • 举报
基于pic单片数字电压表仿真设计

广州白云技师学院 电子系 技师班单片机课程项目化教学系列 基于PIC16F877A单片机(5v-220v)数字电压表仿真设计 该仿真设计是笔者在教学09技师《智能电子产品开发与应用》指导学生完成的,主要目的是让学员在熟练掌握PIC单片机AD转换功能。可提供给初学PIC单片机的爱好者参考。 功能:1、开机显示选择菜单(table[]= you can choice ; table1[]=check:5v or 220v;) 2、按k1键盘进入子菜单(table2[]= K2:5v K3:220v ; table2[]= K2:5v K3:220v ;) 3、可以通过k2或k3进行5V和220V电压的测试 4、k4键盘返回主菜单 一、仿真效果图: 二、参考代码 /***************************main()****************************/ #includepic.h #includedelay.c #include1602dis.c #includead_change.c #includekeyscan.c __CONFIG(0X3B31); #define uchar unsigned char #define uint unsigned int void main() { AD_init(); init_1602(); lcddis_basic(); while(1) { keyscan(); } } /******************************AD转换******************************/ #define uchar unsigned char #define uint unsigned int uchar a,b,c,d; void AD_init() { TRISA=0x01; ADCON0=0x80; ADCON1=0x80; } void AD_start() { ADON=1; delay(1); ADGO=1; } float AD_zh() { uint adval; float advalf; AD_start(); while(ADGO); adval=ADRESH; adval=adval8|ADRESL; adval=adval+1; if(adval==1)adval=0; advalf=adval/1024.0; //adval=advalf*1000; return (advalf); } /*****************************1602dis******************************/ #define RS RC0 #define RW RC1 #define E RC2 #define lcd_dat PORTD const uchar table[]= you can choice ; const uchar table1[]=check:5v or 220v; const uchar table2[]= K2:5v K3:220v ; const uchar table2[]= K2:5v K3:220v ; void w1602_com(uchar com) { //TRISD=0; RS=0;RW=0; E=0; delay(1); lcd_dat=com; E=1;delay(1); E=0; delay(1); RS=1; } void w1602_date(uchar date) { RS=1;RW=0; E=0; delay(1); E=1;delay(1); lcd_dat=date; E=0; delay(1); RW=0; RS=0; } void init_1602() { TRISC=0;TRISD=0; w1602_com(0x38); w1602_com(0x01); w1602_com(0x06); w1602_com(0x0C); w1602_com(0x80); } void lcddis_basic() { uchar i; w1602_com(0x80); for(i=0;i16;i++) { w1602_date(table[i]);

文档评论(0)

1亿VIP精品文档

相关文档