AT89C51单片机数码管静态显示从右至左显示FEDCBA1 急求

用单片机控制四位LED数码管显示,先从左至右慢速动_百度知道
用单片机控制四位LED数码管显示,先从左至右慢速动
用单片机控制四位LED数码管显示,先从左至右慢速动态扫描显示数字“1357&,“2468”,然后再从左至右快速动态扫描显示字符“AbCd”,“EFHP”
我有更好的答案
首先你要明确这是要在实验板上实现呢?还是只是画个仿真来实现呢?那要仿真,首先你要画个仿真图,仿真图也不会画吗?如果没有实验板,也没有仿真图,写了程序也没有用,那怎么执行程序呢?
采纳率:85%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求AT89C51单片机和DS18B20温度程序,用四位共阳数码管显示_百度知道
求AT89C51单片机和DS18B20温度程序,用四位共阳数码管显示
我有更好的答案
//DS18B20的读写程序,数据脚P3.3
////温度传感器18B20汇编程序,采用器件默认的12位转化
////最大转化时间750微秒,显示温度-55到+125度,显示精度 ////为0.1度,显示采用4位LED共阳显示测温值
////P0口为段码输入,P24~P27为位选
///***************************************************/#include &reg51.h&#include &intrins.h&
//_nop_();延时函数用#define
Disdata P0
//段码输出口#define
//扫描口#define
uchar unsigned char#define
unsigned intsbit
//温度输入口sbit
//LED小数点控制sbit
k5=P1^4;uchar up_alarm=20; //**************温度小数部分用查表法***********//uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//uchar code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//共阳LED段码表
&9& &不亮& &-&
uchar code scan_con[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
//列扫描控制字uchar data temp_data[2]={0x00,0x00};
//读出温度暂放uchar data display[8];
//显示单元数据,共4个数据和一个运算暂用///////***********11微秒延时函数**********///void ser_init(){ TMOD=0X20; SCON=0X50; TH1=0XFD; TL1=0XFD; TR1=1;}void delay(uint t){for(;t&0;t--);}///***********显示扫描函数**********/scan(){
for(k=0;k&7;k++)
//四位LED扫描控制
Disdata=dis_7[display[k]];
if(k==4){DIN=0;}
discan=scan_con[k];delay(200);
}}/////***********18B20复位函数**********/ow_reset(void){char presence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();DQ=0;
//delay(50); // 550usDQ=1;
// delay(6); // 66uspresence=DQ; // presence=0继续下一步
}delay(45);
//延时500uspresence = ~DQ;}DQ=1;} /////**********18B20写命令函数*********///向 1-WIRE 总线上写一个字节void write_byte(uchar val){for (i=8; i&0; i--) //{DQ=1;_nop_();_nop_(); DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5usDQ = val&0x01;
//最低位移出delay(6);
//66usval=val/2;
//右移一位}DQ = 1;delay(1); }///*********18B20读1个字节函数********///从总线上读取一个字节uchar read_byte(void){uchar value = 0;for (i=8;i&0;i--){DQ=1;_nop_();_nop_();value&&=1;DQ = 0;
//_nop_();_nop_();_nop_();_nop_();
//4usDQ = 1;_nop_();_nop_();_nop_();_nop_();
//4us if(DQ)value|=0x80;delay(6);
//66us}DQ=1;return(value);}///***********读出温度函数**********///read_temp(){ow_reset();
//总线复位write_byte(0xCC); // 发Skip ROM命令write_byte(0xBE); // 发读命令temp_data[0]=read_byte(); //温度低8位temp_data[1]=read_byte(); //温度高8位ow_reset();write_byte(0xCC); // Skip ROMwrite_byte(0x44); // 发转换命令}///***********温度数据处理函数**********/void work_temp(){uchar n=0,th=0,tl=0;int temp=0;uchar flag3=1,flag2=1;
//数字显示修正标记if((temp_data[1]&0xf8)!=0x00){
temp_data[1]=~(temp_data[1]);
temp_data[0]=~(temp_data[0])+1;
flag=1;}//负温度求补码if(temp_data[0]&255){temp_data[1]++; }tl=temp_data[0]&0x0f;display[7]=if(display[7]&0x08)temp+=5000;if(display[7]&0x04)temp+=2500;if(display[7]&0x02)temp+=1250;if(display[7]&0x01)temp+=625;display[0]=temp%10;display[1]=(temp%100)/10;display[2]=(temp%;display[3]=temp/1000;display[7]=((temp_data[0]&0xf0)&&4)|((temp_data[1]&0x07)&&4);display[6]=display[7]/100;display[5]=display[7]/10%10;display[4]=display[7]%10;if(!display[6])
display[6]=0x0a;
if(!display[5])
display[5]=0x0a;
}//最高位为0时都不显示if(n){
display[6]=0x0b;//负温度时最高位显示&-&
flag3=0;}}// ///**************主函数****************/main(){ser_init();Disdata=0
//初始化端口discan=0for(h=0;h&4;h++){display[h]=8;}//开机显示8888ow_reset();
// 开机先转换一次write_byte(0xCC); // Skip ROMwrite_byte(0x4e);write_byte(0x02);write_byte(0x01);write_byte(0x7f);write_byte(0x44); // 发转换命令for(h=0;h&10;h++)
//开机显示&8888&2秒while(1){if(!k5){delay(2000);if(!k5){up_alarm++;display[0]=up_alarm%10;display[1]=up_alarm/10;for(h=0;h&4;h++)display[h+2]=0x0a;for(h=0;h&30;h++)scan();}}read_temp();
//读出18B20温度数据work_temp();
//处理温度数据
//显示温度值2秒}}////*********************结束**************************//
大神谢谢啊有没有protel图现在急需
没有,自己画个,接4个数码管,再接个18b20,这么简单还要原理图啊
采纳率:46%
为您推荐:
其他类似问题
您可能关注的内容
数码管显示的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
《电子表决器设计毕业设计(论文)》.doc 34页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
吉林工程技术师范学院
2011届学士学位论文
电子表决器设计
学位类别:
电子信息工程
指导老师:
中国·吉林·长春
1. 1电路设计的背景 4
1. 2国内外相关领域的研究进展 4
1. 3主要研究内容 5
2. 1单片机概述 6
2. 2单片机介绍 7
2. 3单片机历史 8
2. 4单片机的应用领域 9
2. 5 AT89C51单片机简介 9
电路设计的总体构想与思路 10
3. 1评分表决电路设计的系统框图 10
3. 2评分表决电路的结构 10
评分表决电路设计方法 11
4. 1评分表决电路总的设计图 11
4. 2十六路输入的表决电路的设计 12
10路输入的评分电路 21
5. 1全文总结 28
5. 2心得体会 28
5. 3工作展望 29
参考文献 31
21世纪是数字化的时代,随着数字电路和信息处理技术的飞速发展,数字信号处理技术逐渐发展成为一门主流技术,它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。
本文详细介绍了一种评分表决电路的设计和仿真过程及其结果。表决电路由计数器和数据选择器构成,可以同时实现16路的输入表决,表决结果以及评分结果由单片机控制大屏幕点阵显示汉字或数字。
本电路系统的设计,意在提供一种新型实用的双功能的评分表决电路,一是现场产生表决结果,二是可以同时语音给出结果。也可以根据需要只使用其中的一个功能。该电路主要适用于选拔或考核单一对象的场合使用。本论文通过电路仿真验证了设计方案的可行性。
关键词:表决电路、语音电路、单片机
21 century is the era of digitalization. With the rapid development information processing technology, digital signal processing technology of has developed as a kind of main technology gradually. It has been widely applied in the high-tech fields such as electronic information, communication, software radio, automatic control, instrument technology and information electrical household appliances.
Design, Simulation and the simulation results are presented in detail for an electronic scoring and voting system in the thesis. The system is made up by a microprocessor and the chips for data acquisition and output display. The voting function is realized by a counter and multiplexer. The input signals for the voting and scoring can be as much as 16 ports. The results are displayed in time on a big screen, which can be decimal digits for average scoring or Chinese characters for the voting results.
The system has been verified by the simulation results.
Key words: Electronic voting, Electronic scoring, Microprocessor
1. 1电路设计的背景
21世纪是数字化的时
正在加载中,请稍后...
21页23页28页50页34页11页34页26页30页22页基于AT89C51单片机的2个数码管的10秒秒表(每隔0.1秒递增显示,一开关实现开始停止清零功能)急求程序设计_百度知道
基于AT89C51单片机的2个数码管的10秒秒表(每隔0.1秒递增显示,一开关实现开始停止清零功能)急求程序设计
我有更好的答案
到我的百度空间,看看刚写的文章。 这里,写不了链接的,写上,百度就给屏蔽了。百度,自己都能把自己给屏蔽了。写QQ号,却不屏蔽,呵呵
想加你为好友,QQ:.
向你请教。
采纳率:64%
使用定时器10ms定时,每10次增加1即可实现你的0.1S的功能啦。
有程序和仿真图吗,有的话发给我:
⊙﹏⊙b汗,你这个别人要个多小时才能完成呢。
本回答被网友采纳
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。AT89C51单片机,8位数码管(共阴共阳都行),实现0~7左(右)移循环显示(可能差东西,除单片_百度知道
AT89C51单片机,8位数码管(共阴共阳都行),实现0~7左(右)移循环显示(可能差东西,除单片
AT89C51单片机,8位数码管(共阴共阳都行),实现0~7左(右)移循环显示(可能差东西,除单片机和数码管之外,差的自己加)要有 C语言程序和仿真图都要,谢谢啦
我有更好的答案
/*头文件*/#include&&reg52.h&&&&&&/*端口定义*/#define&sled_dm_port&&P0&&&&&&/*定义LED显示的段码数据脚*/#define&sled_wm_port&&P2&&&&&&/*定义LED显示的位码数据脚*//*1MS为单位的延时程序*/void&delay_1ms(char&x){&&&&char&j;&&&&while(x--){&&&&&&&&for(j=0;j&125;j++)&&&&&&&&&&&&{;}&&&&&&&&}&&&}&/*主程序*/void&main(){&char&i;&char&j;&int&count=0;&char&sled_disp_buff[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,&&&&&&&&&&&&&&&&&&&&&&&&&&&&0xc6,0xa1,0x86,0x8e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};&/*数码管数据*/&&&&&&&&char&sled_bit_table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};/*定义需要点亮的数码管*/&while(1){&&for(j=0;j&100;j++){&/*单次字符显示延时*/&&&for(i=0;i&8;i++){&/*扫描输出8位数码管*/&&&&&sled_wm_port&=&0&/*关闭显示*/&&&&sled_dm_port&=&sled_disp_buff[i+count];&/*输出字符代码*/&&&&sled_wm_port&=&sled_bit_table[i];&/*点亮某位数码管*/&&&&delay_1ms(1);&&&&}&&&}&&count++;&&if(count&=24)&count=0;&/*把数码管数组的数据输出完成后重新开始*/&&}&}
采纳率:53%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 单片机数码管 的文章

 

随机推荐