資源簡介
通過PROTEUS 系統的仿真,繪制出數字式電感電容表的電路仿真圖。
2. 將CPU,存儲器,以及I/O接口集成在同一芯片內,基于單片機與555定時器原理進行硬件制作。
3. 根據電路仿真圖,使用多諧振蕩原理測試電容。
技術要求:
4.使用兩片NE555產生標準脈沖和待測脈沖,將電容顯示在數個數碼管上。
5.測量誤差:±10%
代碼片段和文件信息
#include?“reg52.h“
#include?“intrins.h“
#include?“.\Head\LCD1602.h“
#define?LCD_DATA?P0
sbit?RS?=?P1^0; //數據/命令選擇(H/L)
sbit?RW?=?P1^1; //讀/寫選擇(L/H)
sbit?LCD_EN?=?P1^2; //使能信號
sbit?LCD_BUSY?=?P0^7;???//忙信號
unsigned?long?power(unsigned?char?xunsigned?char?n)
{
unsigned?char?i;
unsigned?long?l=1;
if(n==0)
{
return?1;
}
else
{
for(i=0;i {
l?=?l*x;
}
return?l;
}
}
/*----------------------------------------------
???延時n毫秒(誤差極小)
12M晶振,12T模式,一指令周期=1us
-----------------------------------------------*/
void?Delay_ms(unsigned?char?n)
{
unsigned?char?ij;
for(i=0;i {
//1ms??(跳轉等3個指令周期+兩個空指令)*200
for(j=0;j<200;j++)
{
_nop_();
_nop_();
}
}
}
/*-----------------讀取忙標志位-----------------*/
void?Check_busy(void)
{
do
{
LCD_EN=0;
RS=0;
RW=1;
LCD_DATA=0xff;
LCD_EN=1;
}
while(LCD_BUSY==1);
LCD_EN=0;
}
/*--------------------寫指令--------------------*/
void?Write_Command(unsigned?char?cmd)
{
Check_busy();
RS=0;
RW=0;
LCD_DATA?=?cmd;
LCD_EN=0;
LCD_EN=1;
LCD_EN=0;
}
/*--------------------寫數據--------------------*/
void?Write_Data(unsigned?char?dat)
{
Check_busy();
RS=1;
RW=0;
LCD_DATA?=?dat;
LCD_EN=0;//機器周期小于1us時,須加延時
LCD_EN=1;
LCD_EN=0;
}
/*--------------------寫字符串-------------------*/
//x:列(0~15);y:行(01)????
//從指定的位置開始寫,直到超出屏幕顯示
void?LCD_Write_String(unsigned?char?yunsigned?char?xunsigned?char?*Data)
{
if(y==0) //第一行
{
if(x<16)
{
Write_Command(0x80+x); //0x80第一行起始地址
for(;x<16&&*Data!=‘\0‘;x++) //‘\0‘字符串結束標志
{
Write_Data(*(Data++));
}
}
}
if(y==1) //第二行
{
if(x<16)
{
Write_Command(0xc0+x); //0xc0第二行起始地址
for(;x<16&&*Data!=‘\0‘;x++) //‘\0‘字符串結束標志
{
Write_Data(*(Data++));
}
}
}
}
/*--------------------寫長整型數據-------------------*/
//x:列(0~15);y:行(01);截取長整型后length個數字顯示在指定位置(全顯示length=10)
//注意此函數不支持換行,起始列+length>15時后面的顯示不出來,僅能單行顯示???
void?LCD_Write_Long(unsigned?char?yunsigned?char?xunsigned?char?lengthunsigned?long?Data)
{
unsigned?char?ik;
if(length>10)
{
length?=?10;
}
if(length<10)
{
Data?=?Data%power(10length);
}
if(y==0) //第一行
{
Write_Command(0x80+x); //0x80第一行起始地址
for(i=0;i {
k?=?(unsigned?char)(Data/power(10length-1-i));
Data?=?Data%power(10length-1-i);
Write_Data(k+0x30);
}
}
if(y==1) //第二行
{
Write_Command(0xc0+x); //0x80第一行起始地址
for(i=0;i {
k?=?(unsigned?char)(Data/power(10length-1-i));
Data?=?Data%power(10length-1-i);
Write_Data(k+0x30);
}
}
}
/*--------------------寫長整型數據可以指定小數點后數字位數-------------------*/
//x:列(0~15);y:行(01);截取長整型后length個數字顯示在指定位置(全顯示length=10)
//注意此函數不支持換行,起始列+length>15時后面的顯示不出來,僅能單行顯示
//pot:小數點后顯示幾個數字?例:1234567?pot=2時顯示為12345.67???
void?LCD_Write_LongPoint(unsigned?char?yunsigned?char?xunsigned?char?lengthunsigned?char?potunsigned?long?Data
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???36195376??2018-05-28?22:39??功能說明\錄像\VID_20180528_202620_baofeng.mp4
?????文件?????259072??2018-05-26?01:20??功能說明\成品\2.輸出文檔\2.輸出文檔\原理圖與PCB\LC-meter-T01.sch
?????文件??????45105??2018-04-19?18:05??功能說明\成品\2.輸出文檔\2.輸出文檔\原理圖與PCB\LC-meter_Project.PrjPcb
?????文件??????93257??2018-05-29?14:53??功能說明\成品\2.輸出文檔\2.輸出文檔\原理圖與PCB\__Previews\LC?meter-T01.PcbDocPreview
?????文件?????????82??2018-05-11?10:11??功能說明\成品\2.輸出文檔\2.輸出文檔\原理圖與PCB\畫圖軟件altium?designer.txt
?????文件???????4533??2018-04-25?01:07??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\C\LCD1602.c
?????文件???????3906??2018-05-02?20:56??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\C\Main.c
?????文件???????6229??2018-04-25?01:02??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\C\Measure.c
?????文件????????759??2011-07-20?12:09??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Head\define.h
?????文件????????157??2012-07-31?18:04??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\LCF_51.plg
?????文件??????11334??2018-04-25?01:07??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Lst\LCD1602.lst
?????文件??????33999??2018-05-02?20:57??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Lst\LCF_51.m51
?????文件??????10867??2018-05-02?20:57??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Lst\Main.lst
?????文件??????14851??2018-04-25?01:07??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Lst\Measure.lst
?????文件???????6715??2018-04-25?01:07??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\LCD1602.obj
?????文件??????11875??2018-05-02?20:57??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\LCF_51
?????文件???????1238??2018-05-02?20:57??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\LCF_51.build_log.htm
?????文件??????13765??2018-05-02?20:57??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\LCF_51.hex
?????文件????????124??2018-05-02?20:57??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\LCF_51.lnp
?????文件????????889??2012-10-08?18:58??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\LCF_51.plg
?????文件???????4178??2018-05-02?20:57??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\Main.obj
?????文件???????7647??2018-04-25?01:07??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\Obj\Measure.obj
?????文件?????????89??2018-05-11?10:10??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\編程軟件Keil.txt
?????文件?????768910??2018-05-29?15:49??功能說明\成品\2.輸出文檔.rar
?????文件?????268660??2018-05-29?18:16??功能說明\成品\LC?meter-T01.pdf
?????文件?????334894??2018-05-29?18:16??功能說明\成品\LC-meter-T01.pdf
?????文件?????533113??2018-05-29?20:34??功能說明\成品\LC表.pdf
?????文件?????????66??2018-10-14?20:16??功能說明\說明.txt
????..A..H.???????162??2018-10-14?20:46??功能說明\需求\~$功能說明.docx
?????目錄??????????0??2018-05-29?14:49??功能說明\成品\2.輸出文檔\2.輸出文檔\程序\LC-T0.1\C
............此處省略17個文件信息
評論
共有 條評論