久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2699|回復: 1
打印 上一主題 下一主題
收起左側

基于STC15F2K60S2單片機的stc-b單片機學習板實現導航按鍵測試

[復制鏈接]
跳轉到指定樓層
樓主
ID:226131 發表于 2017-8-9 15:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用頭文件如下:
**************************/
#include "STC15F2K60S2.H"
#include <intrins.h>     //_cror_();
#define uint unsigned int
#define ulint unsigned long
#define uchar unsigned char
#define ADC_FLAG 0x10
/**************************
引腳別名定義如下:
**************************/
sbit SEL0 = P2^0;
sbit SEL1 = P2^1;
sbit SEL2 = P2^2;
sbit LED_SEL = P2^3;
/**************************
定義變量如下:
**************************/
uint global = 0;
uint date_h = 0;
ulint sum = 0;
uint x = 0;
uint y = 0;
uchar seg_flag;
//0123456789-
char duanxuan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//選擇哪一位數碼管
uchar weixuan[] = {0x00,0x06,0x07};
//初始化系統
void InitSYS(){

//P0口推挽輸出,用于給數碼管和發光二極管增加電流
P0M1 = 0x00;
P0M0 = 0xff;
//P2.3(即LED_SEL),P2.2,P2.1為推挽輸出
P2M1 = 0x00;
P2M0 = 0x0E;
seg_flag = 0;

TMOD = 0x00;  //定時器0,工作方式1;
EA = 1;    //打開總中斷;
  TH0 = (65535-1000)/256;   //定時器初值 定時大約1mS
TL0 = (65535-1000)%256;
ET0 = 1;   //打開定時中斷;
TR0 = 1;   //啟動定時器;
}
//初始化ADC
void InitADC()
{
P1ASF = 0x80;   //P1.7作為A/D使用
ADC_RES = 0;   //清零ADC結果寄存器
ADC_CONTR = 0X8F;  //打開ADC電源  540個時鐘周期轉換一次 選擇P1.7作為A/D輸入來用
CLK_DIV = 0X00;   //ADRJ = 0   ADC_RES存放高八位結果
EADC = 1;    //允許ADC中斷
PADC = 1;    //ADC中斷優先級為1
}
//顯示高三位和低五位
void HighThree()
{
  x = date_h&0xE0;     //將八位轉換結果的低五位清零
  x = _cror_(x,5);     //將高三位移到低三位 獲取高三位數值
  y = date_h&0x1F;     //將八位轉換結果的高三位清零
}
void timer0() interrupt 1 {

seg_flag++;
if(seg_flag==4)
  seg_flag = 0;
P0 = 0x00;
switch(seg_flag) {
  case 0:
   LED_SEL = 0;    //選擇數碼管顯示
   P2 = weixuan[seg_flag];
   P0 = duanxuan[x];   //顯示ADC轉換結果高三位的十進制值
   break;
  case 1:
   LED_SEL = 0;    //選擇數碼管顯示
   P2 = weixuan[seg_flag];
   P0 = duanxuan[y/10];  //顯示ADC轉換結果低五位的十進制值的高位
   break;
  case 2:
   LED_SEL = 0;    //選擇數碼管顯示
   P2 = weixuan[seg_flag];
   P0 = duanxuan[y%10];  //顯示ADC轉換結果低五位的十進制值的低位
   break;
  case 3:
   LED_SEL = 1;    //選擇發光二極管顯示
   P0=date_h;
   break;
}

}
//AD中斷
void adc_isr() interrupt 5
{
IE=0x00;      //關閉所有中斷,防止數據沒有采集完就進入新的中斷
ADC_CONTR&=~0X10;    //將ADC_FLAG位清零

global++;
if(global>1000)     //將采集1000次后的數據求出平均值
{
  date_h=(sum+500)/1000;//四舍五入
  HighThree();           //獲取轉換結果高三位和低五位
  global=0;
  sum=0;
}
sum+=ADC_RES;
ADC_CONTR|=0X08;   //將ADC_START進行軟件置位
IE=0xa2;     //開啟中斷
}
void main()        //主函數
{
InitSYS();
InitADC();
while(1)
  ;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:226131 發表于 2017-8-21 19:26 | 只看該作者
我猜你是湖大的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产色综合久久不卡98 | 国产一区二区视频免费在线观看 | 成人二区 | 91视频免费| 视频一区二区中文字幕日韩 | 亚洲欧美视频一区 | 毛片在线免费 | 视频在线一区 | 国产欧美一区二区三区日本久久久 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 久久性av | 亚洲视频一区在线 | 中文字幕欧美日韩 | 国产精品视频不卡 | 中文字幕精品视频 | 欧美一区二区三区在线观看 | 91精品国产麻豆 | 99精品国自产在线观看 | 亚洲激情一区二区 | 久久99精品久久久久久国产越南 | 91免费在线看 | 伊人精品 | 久久亚洲一区 | 国内精品视频一区二区三区 | 免费欧美视频 | 欧美激情在线精品一区二区三区 | 最新国产精品 | 中文字幕爱爱视频 | 一区二区视频 | 超碰精品在线 | 日韩中文字幕在线播放 | 国产亚洲精品综合一区 | 欧美理论在线观看 | 国产精品久久久久久一级毛片 | av官网在线 | 久久亚 | 精品在线看 | 精品久久久久一区二区国产 | 欧美欧美欧美 | 天堂亚洲 | 国产精品精品视频一区二区三区 |