完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "reg52.h"
#include "intrins.h" typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL ; #define nop() _nop_() #define scan P2 unsigned int disp[]={0,0,0,0}; unsigned char seg[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,0xCE,0x8C,0x8E,0xc1,0xc8}; ***it q1=P2^4; ***it q2=P2^5; ***it q3=P2^6; ***it q4=P2^7; ***it OE = P3^7; ***it STAR = P3^1; ***it EOC = P3^0; ***it sel1=P2^3; ***it sel2=P2^2; ***it flag=P3^6; int up=204; int down=51; ***it jaj=P2^0; ***it led=P2^1; ***it led1=P3^4; ***it led2=P3^5; void delay(BYTE ms) { // 延时子程序 BYTE i; while(ms--) { for(i = 0; i< 50; i++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } void START() //启动转换 { STAR = 0; nop(); STAR = 1; nop(); STAR = 0; nop(); } BYTE work() { BYTE date; START(); //启动转换 while(!EOC); //EOC为0则等待 OE=1; //使能输出数字量 date = P1; return date; } void xianshi() {q1=q2=q3=q4=0; P0=seg[disp[0]]; q1=1; delay(1); q1=q2=q3=q4=0; P0=seg[disp[1]]; q2=1; delay(1); q1=q2=q3=q4=0; P0=seg[disp[2]]; q3=1; delay(1); q1=q2=q3=q4=0; P0=seg[disp[3]]; q4=1; delay(1); q4=0;} void dataproc(unsigned char data_in) { int results; results=data_in*1.96; disp[1]=results/100; disp[2]=(results%100)/10; disp[3]=results%10; // 取得个位数 } void main() {BYTE k1,k2,k3; BYTE i=0; TMOD=0x22; TL0=0x00; TH0=0x00; TL1=0x00; TH1=0x00; ET0=1; ET1=1; TR0=1; TR1=1; IT0=1; IT1=1; EA=1; EX0=1; EX1=1; led=0; led1=0; led2=1; while(1) { if(flag==1) {sel1=0; sel2=0; k1=work(); dataproc(k1); disp[0]=10; for(i=0;i<200;i++) {xianshi();} sel1=1; sel2=0; k2=work(); dataproc(k2); disp[0]=11; for(i=0;i<200;i++) {xianshi();} sel1=0; sel2=1; k3=work(); if(k3>down&&k3 else led=1; dataproc(k3); disp[0]=12; for(i=0;i<200;i++) {xianshi();}} else {dataproc(up); disp[0]=13; for(i=0;i<200;i++) {xianshi();} dataproc(down); disp[0]=14; for(i=0;i<200;i++) {xianshi();}} }} void counter0(void) interrupt 0 { EX0=0; if(jaj==1) up++; else up--; EX0=1; } void counter1(void) interrupt 2 { EX1=0; if(jaj==1) down++; else down--; EX1=1; } void T1zd(void) interrupt 3 //3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断 { led2=~led2 ; } void myint1(void) interrupt 1 //3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断 { led1=~led1; } 这三路信号是同时采集的 循环显示 。。。。只是调节上下限的时候,依然是循环显示的。。。。。可不可以修改一下 不让调节上下限的时候还是循环显示
|
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
4493 浏览 3 评论
5784 浏览 1 评论
6057 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
7797 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1222 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 01:07 , Processed in 0.445300 second(s), Total 45, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号