• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 哪位大神来帮我看看这个51单片机实现数字电压表的代码

哪位大神来帮我看看这个51单片机实现数字电压表的代码

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了单片机大神,dnf代码大神吧,代码大神,processing大神代码,酷派大神f2代码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 哪位大神来帮我看看这个51单片机实现数字电压表的代码
描述:

#include <reg52.h>
#include <intrins.h>
#define _Nop() _nop_();//空操作
sbit ST = P3^0; 
sbit OE = P3^1;
sbit EOC = P3^2;
sbit BEEP = P3^3;
sbit V1 = P3^4;
sbit V2 = P3^5;
sbit V3 = P3^6;
sbit V4 = P3^7;
unsigned int h;
unsigned char digit[5];
unsigned char table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//不带小数点编码
                    0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};  //带小数点编码
void delay(unsigned int tc){
    while (tc != 0){
unsigned int i;
for(i = 0; i < 100;i ++)
tc--;
}
}
unsigned char adc0809(){
unsigned char adda;
ST = 0;
OE = 0;
P1 = 0xff;
ST = 1; 
_nop_();_nop_();
ST = 0;
_nop_();_nop_();_nop_();_nop_();
while(EOC == 0);
OE = 1;
adda = P1;
_nop_();
OE = 0;
return(adda);
}
unsigned int dacl(){
int x;
unsigned int dady = 0;
for(x = 0;x < 10;x++)
dady = adc0809() + dady;
dady = dady / 10;
return(dady);
}
void loop(void){
while(h == 1){
BEEP = !BEEP;
delay(100);
BEEP = !BEEP;
}
}
void led_display(float val){
if(V1 == 0){
val = val * 500 /255;
if(val > 200){
//P0.7 = 1;
h = 1;
loop();
}
else if(val < 200 && val >20){
digit[3] = 1;
digit[2] = val / 100;
val = val - 100 * digit[4];
digit[1] = val / 10;
val = val - 10 * digit[3];
digit[0] = val * 10 / 10;
digit[3] = table[digit[3]];
digit[2] = table[digit[2]];
digit[1] = table[digit[1]];
digit[0] = table[table[0]];
}
}
else if(V2 == 0){
val = val * 10 / 255;
if(val > 20 || val < 2 ){
h = 1;
loop();
}
else {
digit[3] = 1;
digit[2] = val / 10;
val = val - 10 * digit[2];
digit[1] = val * 10 / 10;
val = val - digit[1]; 
            digit[0] = val * 10 / 10;
            digit[3] = table[digit[3]];
            digit[2] = table[digit[2]];
            digit[1] = table[digit[1]];
            digit[0] = table[digit[0]];
}
}
else if(V3 == 0){
val =10 * 5 * val / 255 ;
if(val > 20 || val < 2){
h = 1;
loop();
}
else {
digit[3] = 1;
digit[2] = val / 10;
val = val - 10 * digit[2];
digit[1] = val * 10 / 10;
val = val - digit[1]; 
            digit[0] = val * 10 / 10;
            digit[3] = table[digit[3]];
            digit[2] = table[digit[2]];
            digit[1] = table[digit[1]];
            digit[0] = table[digit[0]]; 
}
}
else if(V4 == 0){
val = 500 * val / 255;
if(val > 200){
h = 1;
loop();
}
else {
digit[3] = 1;
digit[2] = val / 100;
val = val - 100 * digit[4];
digit[1] = val / 10;
val = val - 10 * digit[3];
digit[0] = val * 10 / 10;
digit[3] = table[digit[3]];
digit[2] = table[digit[2]];
digit[1] = table[digit[1]];
digit[0] = table[table[0]];
}
}
}
void main(){
int i;
int j = 3;
int k;
unsigned char fuhao[4];
BEEP = 0;
led_display(dacl());
for(i = 3;i >= 0;i--){
if(digit[i] != 0xc0){
fuhao[j--] = digit[i];
}
for(k = 0;k < 4;k++){
P0 = 0x01 << k;
P2 = fuhao[k];
delay(5);
}
}
}

这段代码是用C51和AD0809实现数字电压表的,但是程序烧进去没有结果,哪位大神可以抽空帮我看看。。。感激不尽。个人感觉可能main有问题。或者在adc0809模块有问题。感觉有点晕。求大神帮忙看看,谢谢了!


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 第一次画单片机最小系统PCB板,请大神来看一看
  • 关于通过串口向单片机发送十六进制数组指令,求大神指点!
  • 大神帮我看看!proteus51单片机adc0808转换不准确问题
  • 哪位大神来帮我看看这个51单片机实现数字电压表的代码

相关文章

  • 2017-06-05 在等着做一个项目,请推荐几本DSP快速入门的书
  • 2017-06-05 请问各位师兄有谁知道南望信息产业集团(杭州)吗?
  • 2017-06-05 哪位DX知道往片子里写程序怎么英文翻译呀
  • 2017-06-05 为什么我的传真程序不能接收传真?高分送?
  • 2017-06-05 各位老大:谁告诉我2K下是否可以用API函数访问并口及进行数据I/O
  • 2017-06-05 关于不同编译器的数据结构内存布局问题
  • 2017-06-05 求rtl8019as驱动程序
  • 2017-06-05 PCI设备热插拔问题汇总,欢迎指教,赠送技术资料
  • 2017-06-05 打印机(一体机)驱动开发
  • 2017-06-05 各位大牛都来看看!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Workbench30_VxWorks66如何删除干净
    • 没必要参加嵌入式开发培训班,看完你就知道了
    • GSM/GPRS/WCDMA无线模块推荐的流程
    • GAINSPAN1011M芯片WIFI设置问题
    • stm32f103串口接收字符串的奇怪问题求教
    • 想在虚拟机安装MACOS,如何找到MACOS的IOS文件?
    • win10什么时候可以升级如何让win10可以对大小写敏感?
    • git克隆下的工程出问题了
    • 覆盖上传图片访问得到以前的图片!
    • 我的USBdriver已写好,我想让它通过安装程序预安装好,这样第一次插入USB设备时不要提示用户安装。高手请进。。分数不够可以再加

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有